About...
BassWings is an arcade style, flight rail shooter with an audio twist, where you pilot through a dense Urban City while fighting through a gauntlet of an invading enemy ships. The player will have the ability to select any song from their .MP3 library to play in the game. The color of the city lights, and the density of the buildings will change depending on the tempo of the song selected to play for that level. The enemies will generate in time to the music as well, giving the player the ultimate control in the pace and difficulty of each level. The main goal of the game is to successfully fly through each level while racking up as many points as possible.
Features
My Role
Challenges
"Many" is the appropriate word to describe being project lead in a production team, I addressed problems sooner than later.
Problem: Collision detection
Resolve: Collision check optimization
Problem: Dynamically creating and destroying bullets
Resolve: Bullet pool allocator
SampleCode
BassWings is an arcade style, flight rail shooter with an audio twist, where you pilot through a dense Urban City while fighting through a gauntlet of an invading enemy ships. The player will have the ability to select any song from their .MP3 library to play in the game. The color of the city lights, and the density of the buildings will change depending on the tempo of the song selected to play for that level. The enemies will generate in time to the music as well, giving the player the ultimate control in the pace and difficulty of each level. The main goal of the game is to successfully fly through each level while racking up as many points as possible.
Features
- Arcade style Flight Controls
- Use your own Sound Track to play the game
- 2 player Co-op
- You set the pace of the Music
- Full Controller Support
- Mac/PC support
- .mp3 files
My Role
- Project Lead
- All Game logic, Character controller , Xbox Input Code
- Custom Shaders that interpolated to the music
- Monitoring Website, Facebook, Twitter and other social media
- Leading SCRUM meetings with artist and other team members
- Preparing a kick-starter campaign
Challenges
"Many" is the appropriate word to describe being project lead in a production team, I addressed problems sooner than later.
Problem: Collision detection
Resolve: Collision check optimization
- Doto many non static collidable objects that their scale was being constantly manipulated by amplitude waves and frequency, Unitys default collision detection became expensive to use. I resolved it by activating the building box colliders when we entered a city block(Fixed Dimensions), then doing a mesh collision detection check when inside the building box colliders. After I left a city block/or have not entered one I would turn off all the colliders. Simply put it, 3 checks one after the other; 1:N city blocks - > 1: N Buildings (Box Colliders) - > 1:1 Building (Mesh Collision).
Problem: Dynamically creating and destroying bullets
Resolve: Bullet pool allocator
- We noticed a spike drop at a benchmark test that indicated a loss in a performance do to instantiating new bullets and destroying them on the heap in addition to a uncontrolled dynamic garbage collection being called by the engine. I resolved this by pre allocating all the bullets that we will ever need in the scene and then recycling these objects to a standby mode till they are ready to be reactivated again.
SampleCode
Media