B-14 DECONSTRUCTED
An event game postmortem
- Irog
- 06/25/2021 11:13 PM
- 1869 views
B-14 deconstructed :
An event game postmortem
Here I'll explain how B14 was build for the RMN 14th birthday event. I'll cover subjects like, why to take part in an event, how to keep the project scope reasonable and what to prioritize.
Participating to an event
First of all, taking part in a event with such short turnover is ideal to test new ideas, new tools or try a skill you don't have much experience at. You'll invest a reasonable amount of time (here it was 14 hours) and, at the end get feedback so you'll know if the ideas are worth expending, the tools suitable for other projects, and if you should further develop the skill you tried your hands at.
Building a game
Don't spend any time to find your game title for now. Give it a temporary name! Here it was RMN 14th birthday so "B14" was a perfect temporary title.
The event had a list of elements from which you must include one or more into your game. Usually theses lists contain a large diversity of elements to choose from so they allow for a wide range of creations. They can also spark innovative ideas.
I picked "A militaristic bird" and "Too many butterflies" to build a shmup where a militaristic bird shoots at too many butterflies coming at him. For a previous birthday event, I built a variant of Pong in 10 hours so I knew what I could potentially create in 14 hours.
The MVP list
If you lack the experience of a previous project or even if you do have experience, you need to write down the list of the key features your game absolutely need to be A game. Note that this A game, not THE game of your dreams. This will be a Minimum Viable Product that once done can be shipped to others so they can play it and give you feedback.
For B14 the Minimum Viable Product list was :
1) a functioning game menu
2) a bird you can move around
3) the ability to shoot
4) butterflies passing from right to left
5) detect collision between bird projectiles and butterfly. Remove the butterfly that got a hit.
6) detect collision between bird and butterfly. Subtract 1 HP to the bird and remove the butterfly.
7) a game over screen to display when bird HP = 0
8) a scrolling background
I did not allow myself to invest any of the 14 hours on something else until this minimum viable product was running.
Unlike the 10th birthday event (where I took the challenge to make the whole game within 10 hours), this time around, the rule "You may edit images and music outside of the 14 hours total however you may only do so during the event timeline." gave me the opportunity to make graphics for the game.
My image search on militaristic bird lead me to this...
... good looking but not practical for the game.
Then I found this:
I had my militaristic bird !!! It was easy to find video of this bird flying but it took me quite a while to build the proper animation for the game. GIMP is a great tool. I'm just not proficient with it YET.
When I had assembled other images for the background, the butterfly and gathered some sound and music, I finally started to spend those precious 14 hours.
It took 3 hours to have a first successful compilation that covered the 2 first items on the MVP list.
I reused a lot of code from my other projects but everything needed some (or many) adaptations to fit the new project. Some parts, like the projectile movement system, were rewritten entirely from scratch because B14 used a very small subset of the feature I developed for a previous game.
10 hours in, I finally had a the MVP up and running !
It wasn't very fun to play: you could shoot continuously and create a barrage of projectiles. None of the butterflies could then approach you and threaten you. I implemented a score penalty for shooting carelessly. It was supposed to prevent the player to build barrage of projectiles. It was also clear I needed a way to force player movement. Enemy projectiles is what force shmup players to move and dodge because enemy projectiles remain a threat even if you shoot at them!
Within 30 minutes I added these features (they should have been included in the MVP):
9) make the butterflies shoot horizontally
10) detect collision between bird and butterfly projectiles. Subtract 1 HP to the bird and remove the projectile.
Duplicating code is a bad programming practice but it was faster and easier to test. And sometimes, what you make in a rush is good enough for the project. But don't turn this dirty trick into a habit for longer projects; you'll just end up being David Goodenough !
Polish your MVP before expanding your game
I spent the remaining time polishing the core gameplay using only the 10 features listed above. I wanted to make sure all these mechanics worked well together before adding anything else.
As you know, butterflies fly very randomly. So I initially gave them the red flying pattern to make it look random while moving to the left. The player could then learn their pattern and shoot them. But those butterflies were hard to hit. So I added 2 horizontal sections in their patterns. The blue line shows the new pattern.
Consistently hitting the butterflies required to be relatively close to exploit the horizontal sections in their patterns. Faster projectiles would allows you to shoot successfully from further. I then implemented an idea more common in action artillery games than shmups: add the player velocity to his projectile. My intention was to create this sweet feeling of moving toward your enemy to lob a chiquita bomb that blows up right on their face.
Adding the player velocity to his projectile also created the ability to shoot diagonally. And moving forwards to boost projectile speed has the added benefit of leading the player to the right, closer to danger and create more exciting dodging situations. This is a bit like mushrooms that force Mario to move fast to the right and expose himself more to danger.
Prioritizing the polish of the MVP led a lot of ideas not being implemented due to the lack of time:
* add explosions
* give spinach to regenerate bird HP
* press a button to dive
* shoot a projectile downwards if the player shoots while diving (like a dive bomber)
* make some butterflies of a different color shoot diagonally
Usually it is beneficial to the project to leave out the features you don't have the time to polish.
Near the end of development, I changed the title to "B-14 Bird Fortress", a reference to the "B-17 Flying Fortress".
Feedback
As you work on your game, all its elements becomes second nature to you and thus it becomes incredibly difficult to notice what damages the "new player" experience. So feedback from new players is vital to make your game approachable.
Events where you don't need to put up a game page increase your chance to receive feedback twice: first on your game at the end of the event and a second time when you put up a download on your game page.
Final thoughts
After I submitted my game to the event I was a bit anxious about meeting the 5 minutes of playtime requirement. I've always thought of myself as being quite different from other developers at RMN : I'm basically a programmer with interest in system design in a community of mostly non-programmer amazing content creators. I've learn over the years that they are talented people in ALL fields of game creation at RMN. I've also learn that we share a common passion for game creation and always feel welcome. So if you think your skill set and skill levels differs a lot from others, don't worry, you're welcome here. And if you're new at making games, just try !
Be different, be yourself, create !
An event game postmortem
Here I'll explain how B14 was build for the RMN 14th birthday event. I'll cover subjects like, why to take part in an event, how to keep the project scope reasonable and what to prioritize.
Participating to an event
First of all, taking part in a event with such short turnover is ideal to test new ideas, new tools or try a skill you don't have much experience at. You'll invest a reasonable amount of time (here it was 14 hours) and, at the end get feedback so you'll know if the ideas are worth expending, the tools suitable for other projects, and if you should further develop the skill you tried your hands at.
Building a game
Don't spend any time to find your game title for now. Give it a temporary name! Here it was RMN 14th birthday so "B14" was a perfect temporary title.
The event had a list of elements from which you must include one or more into your game. Usually theses lists contain a large diversity of elements to choose from so they allow for a wide range of creations. They can also spark innovative ideas.
I picked "A militaristic bird" and "Too many butterflies" to build a shmup where a militaristic bird shoots at too many butterflies coming at him. For a previous birthday event, I built a variant of Pong in 10 hours so I knew what I could potentially create in 14 hours.
The MVP list
If you lack the experience of a previous project or even if you do have experience, you need to write down the list of the key features your game absolutely need to be A game. Note that this A game, not THE game of your dreams. This will be a Minimum Viable Product that once done can be shipped to others so they can play it and give you feedback.
For B14 the Minimum Viable Product list was :
1) a functioning game menu
2) a bird you can move around
3) the ability to shoot
4) butterflies passing from right to left
5) detect collision between bird projectiles and butterfly. Remove the butterfly that got a hit.
6) detect collision between bird and butterfly. Subtract 1 HP to the bird and remove the butterfly.
7) a game over screen to display when bird HP = 0
8) a scrolling background
I did not allow myself to invest any of the 14 hours on something else until this minimum viable product was running.
Unlike the 10th birthday event (where I took the challenge to make the whole game within 10 hours), this time around, the rule "You may edit images and music outside of the 14 hours total however you may only do so during the event timeline." gave me the opportunity to make graphics for the game.
My image search on militaristic bird lead me to this...
... good looking but not practical for the game.
Then I found this:
I had my militaristic bird !!! It was easy to find video of this bird flying but it took me quite a while to build the proper animation for the game. GIMP is a great tool. I'm just not proficient with it YET.
When I had assembled other images for the background, the butterfly and gathered some sound and music, I finally started to spend those precious 14 hours.
It took 3 hours to have a first successful compilation that covered the 2 first items on the MVP list.
I reused a lot of code from my other projects but everything needed some (or many) adaptations to fit the new project. Some parts, like the projectile movement system, were rewritten entirely from scratch because B14 used a very small subset of the feature I developed for a previous game.
10 hours in, I finally had a the MVP up and running !
It wasn't very fun to play: you could shoot continuously and create a barrage of projectiles. None of the butterflies could then approach you and threaten you. I implemented a score penalty for shooting carelessly. It was supposed to prevent the player to build barrage of projectiles. It was also clear I needed a way to force player movement. Enemy projectiles is what force shmup players to move and dodge because enemy projectiles remain a threat even if you shoot at them!
Within 30 minutes I added these features (they should have been included in the MVP):
9) make the butterflies shoot horizontally
10) detect collision between bird and butterfly projectiles. Subtract 1 HP to the bird and remove the projectile.
Duplicating code is a bad programming practice but it was faster and easier to test. And sometimes, what you make in a rush is good enough for the project. But don't turn this dirty trick into a habit for longer projects; you'll just end up being David Goodenough !
Polish your MVP before expanding your game
I spent the remaining time polishing the core gameplay using only the 10 features listed above. I wanted to make sure all these mechanics worked well together before adding anything else.
As you know, butterflies fly very randomly. So I initially gave them the red flying pattern to make it look random while moving to the left. The player could then learn their pattern and shoot them. But those butterflies were hard to hit. So I added 2 horizontal sections in their patterns. The blue line shows the new pattern.
Consistently hitting the butterflies required to be relatively close to exploit the horizontal sections in their patterns. Faster projectiles would allows you to shoot successfully from further. I then implemented an idea more common in action artillery games than shmups: add the player velocity to his projectile. My intention was to create this sweet feeling of moving toward your enemy to lob a chiquita bomb that blows up right on their face.
Adding the player velocity to his projectile also created the ability to shoot diagonally. And moving forwards to boost projectile speed has the added benefit of leading the player to the right, closer to danger and create more exciting dodging situations. This is a bit like mushrooms that force Mario to move fast to the right and expose himself more to danger.
Prioritizing the polish of the MVP led a lot of ideas not being implemented due to the lack of time:
* add explosions
* give spinach to regenerate bird HP
* press a button to dive
* shoot a projectile downwards if the player shoots while diving (like a dive bomber)
* make some butterflies of a different color shoot diagonally
Usually it is beneficial to the project to leave out the features you don't have the time to polish.
Near the end of development, I changed the title to "B-14 Bird Fortress", a reference to the "B-17 Flying Fortress".
Feedback
As you work on your game, all its elements becomes second nature to you and thus it becomes incredibly difficult to notice what damages the "new player" experience. So feedback from new players is vital to make your game approachable.
Events where you don't need to put up a game page increase your chance to receive feedback twice: first on your game at the end of the event and a second time when you put up a download on your game page.
Final thoughts
After I submitted my game to the event I was a bit anxious about meeting the 5 minutes of playtime requirement. I've always thought of myself as being quite different from other developers at RMN : I'm basically a programmer with interest in system design in a community of mostly non-programmer amazing content creators. I've learn over the years that they are talented people in ALL fields of game creation at RMN. I've also learn that we share a common passion for game creation and always feel welcome. So if you think your skill set and skill levels differs a lot from others, don't worry, you're welcome here. And if you're new at making games, just try !
Be different, be yourself, create !