PAF... It's The End!
It’s over. Today marks the last day of our end-of-year project for Télécom Paris… and what a day (and, for part of our team, night) it was!
Time to ship and integrate the final features (preferably non-game-breaking ones :’) ) for a little demo in front of students and teachers. We can definitely be proud of our playable game (albeit somewhat buggy, but pssh… just don’t mind the half-pears!), which came to life in less than two weeks!
Here’s a little demo (with sound!):
- @PaulVez’s vertical chainsaw animation!
- @AdameBf’s enemy logic - thanks to him, demonic pears now roam the chunks in search of the player, driven by ever-present hunger for some tasty pineapple…
- …but fear not, our dear Piney now has the means to defend himself, because his chainsaw finally works and does damage to his opponents!
- @RoussyE’s sound effects had been lying dormant so far, but now some of them are actually used (for dashing, the chainsaw attack, falling in holes,, taking damage)!
- @yberreby created a minimalistic UI using @Ametheek’s sprites for the health and stamina bar, and @ChatPion integrated it with the game logic
Failur… uh, I mean, setbacks
The title screen (see above) oozes cuteness and psychopathy, thanks to
@Ametheek artistic touch, and was supposed to double as a way to initialize
our random number generator by counting the frames before the player presses
Start. Unfortunately, that plan turned sour when every single one of our
attempts at writing the said title screen corrupted the game’s memory.
The blaster sound was awesome, especially considering the limitations of the Game Boy sound system:
but we could not implement projectiles in time to make use of it :’(
On sound design
Thanks to the sound features of the Game Boy, every sound is implemented as a single C function. These functions contain inline ASM, assembled and inserted as-is in the generated machine code. They modify the sound controller register of the Game Boy (addresses FF10 to FF26) and use the sound input 1 (tone and sweep) and 4 (white noise). Because of the many weird behaviors of the Game Boy, the only way to create these sounds was: testing… and testing… and mind fucking… and testing. So this was pretty horrible but through this, I could create many funny sounds, like the Star Wars blaster sound, which is not used in-game but is still in the code ;P
The last few hours since my last post were rich in features for Pear Jaw (or Jaw Pear, I’m feeling tolerant today)! This little thing can now move, and it automatically decides to walk towards Piney, and will sort of take into account terrain obstacles while doing so (this just needs further fine-tuning for it to be consistent!).
And in fact, I should be talking about multiple Jaw Pears now. @ChatPion implemented proper internal management for multiple foes, and that includes handling enemy spawning for each room in the map! And while these foes are mostly harmless, you are locked with them in your room until you take them out with your chainsaw. And really, don’t get fooled by how harmless Jaw Pear seems to be for now. There is only so much this soft fruit of destruction can learn about close combat with some practice!
Last words… till we meet again!
This project was not easy. We all had to sacrifice something to make it word, be
it commitment to good coding practices, sleep, sanity, or any of the many other
things we lost along the way; but we also gained a great deal, and I’m not
only talking about our freshly-minted knowledge of the Game Boy hardware
architecture. I think I speak for the entire Team Kirby when I say that this project
was exhilarating; it pushed us to our limits, and showed us just how much we
could achieve, together, with focus and dedication. So to all members of Team
Kirby, of Team Rocket (our friends and competitors - check out their
game if you like low-level stuff, it should satisfy anyone’s craving for
GBZ80 ASM and clever hacks), and to our supervising teacher
@Aunsiels… so long, and thank you for all the
fish glitches :)