Want to play the game?
I am woefully behind in writing the pre-requisite posts about my Game-a-Week challenges. Sorry about that folks! I actually have completed two full weeks of game development, and am only just now getting around to posting about the first. I hope to catch up before this third week ends.
If you’re unfamiliar with the Game-a-Week thing I’m doing, you can check out my original post about it. Go on, I’ll wait.
I once tried to envision how I would implement the mechanics of a good bullet hell shmup. Having played a number of CAVE’s offerings on the iPad, I knew that what enticed me about the genre was the fine line you often needed to walk between risk and reward. The risk/reward system that formed in my head consisted of a power gauge that would slowly drain as you fired your weapon. In addition to being drained slowly by firing, you would also lose a chunk of it whenever you were hit. In order to refill the gauge, you would need to deploy an absorption shield. Having this shield deployed would attract all the bullets on screen towards you, and each that hit your shield would charge your gauge. But you’d need to be careful to not overcharge or else your ship would short out, leaving you stunned for a few moments with no shield left.
- Absorbing felt good – When attempting to absorb bullets, I intentionally programmed it so that acted as if they were under the effects of a strong gravitational effect. As such, you’d often see bullets come speeding in towards you, and then whip around you in what can only really be described as a bullet hell gravity assist. I found that once you cut the absorption shield, you had numerous bullets flying off in wild directions just as menacing as they were before.
- Appearance – A week is not a long time to make a game, and as such, you don’t have a lot of time to make it seem flashy. But irregardless of this, I still was committed to attempting to make the game in 3D and that meant making 3D models. While the enemy model was nothing more than a simply diamond shape, I am quite proud of how the player ship looks, especially considering it was something I just did freehand in the span of about thirty minutes. It may not be the prettiest thing in the world, but I felt quite proud for such a quick job and how little experience I have with 3D modeling.
- Too much time prototyping – I didn’t fully complete implementing the basic core mechanics of the game until the weekend was nearly upon me. As such, I had very little time for actual polish. While the mechanics felt pretty solid, there was still a lot of work that needed to be done in order to make this actually feel like a full on game
- Enemy waves are hard – As I was running out of time towards the end of the week, I found myself just coding a bunch of randomly generated enemy waves. They would come in at random generated angles, firing at randomly generated rates (that grew stronger and stronger as the game went on), using randomly assigned bullet spreads. Playing this, I soon realized that a lot of the appeal of a bullet hell shooter is in the formation of the bullets you must dodge. All the bullet systems I programmed in this game aimed in the general vicinity of the player. Though it would take research, I’m under the impression this is not the case in most shmups. Most enemies actually fire in a pattern, that is then up to you to dodge. The latter – at least from my experience with shmups – feels much, much better
- No core loop – In a perfect universe in which I had as much time as I needed, this game would have followed the same basic loop of most shmups: fly through a level, shooting down minor enemies, until you finally encounter the boss of the level. Rinse, repeat. If you consider this level structure, it follows the same dynamic discussed in this Extra Credits pacing video. You build, build, build up to the boss, beat the boss, and then it ramps back down for the start of the next level to only repeat. As my weekend sailed past me, I realized this was not going to be an option. And my game suffered heavily for it.
- Poor time management – If any of the previous mentioned failings are any indication, one of my largest hurdles was running out of time. This was due to poor planning on my part, and was extremely unfortunate.
So how to improve? Prototype faster. Get that core mechanic down, and try to get the basic game loop in before you move on to other endeavors. Getting faster at prototyping with hopefully come with experience. At least, I most certainly hope so.