P-Type P-ost Mortem

paracover

Hey everyone, I’m Jacob and one of the three developers who worked on our first Ludum Dare title P-Type. Working on this project was really fun; we had worked on one title before using Unity engine but this was our first fully-fledged game.

Our game was made in the style of classic sidescrolling and top-down SHMUPs where you’d fight against some unknown alien race. Inspired a bit by enemies like the Bydo I thought it would be a perfect fit for the idea of you being the monster. You would play as the alien constantly hopping from ship to ship, using their own weapons against them. It allows for an interesting gameplay dynamic to emerge while also being fitting to the theme of a parasitic race. Overall I’m really happy with the design of the game from both a theme and gameplay perspective.

What worked?

Extensibility Focused: We’ve managed to create a system that makes it easy to rapidly throw in new ships with different shot patterns by using good OOP-principles. Every ship in the game inherits from a Base Ship class which defines some default behavior and statistics like movespeed as well as basic movement and death functions. Each ship then has an AI script associated with it, so it’s easy to swap out behaviors and ships to create more unique variations.

Core Gameplay: Infesting ships makes sense! You can attach yourself to any ship in the game and gain access to things like how the ship shoots or moves. This allows for emergent gameplay because you can choose to play defensively and retain a good ship, or constantly jump from ship to ship abusing your invincibility and life regen. One of the things we wanted to do was get ship persistence between stages but unfortunately another issue we ran out of time on. Also, there’s a few small secrets (though I don’t know if I should call them that?) in the game but they’re a pretty low chance to occur.

Level Creation: We use simple spawners that create enemies as they approach the outer walls of the playable gamespace. These are attached to another background surface that moves constantly to the left; this keeps the camera consistently in one spot while also making it easy to visually create levels and layouts.

What didn’t?

Length of the Game: There’s unfortunately only three levels. We ran out of time near the end and while we could’ve thrown in more levels it was not worth the potential issues popping up right near the deadline. We were scrambling to fix last-minute issues before the submission!

The File Structure: Our overall game is incredibly messy! Files are kinda just thrown wherever which means it can be difficult to discern what’s still useful or obsolete.

Constant Refactoring: In the beginning we were just throwing code against the wall and seeing what sticks. As a result we ended up having to comb through older code and refactor it a bit in order to make it more consistent as well as extendible. While I’m happy with the end result there are still some minor refactoring problems and we spent a lot of time cleaning up code.

Sound Design: There’s no music in the game and only a handful of sounds. We put that off until the final day and by then it was really too late to get anything in there.

Art Design: None of us are really artists, so most of the ships were just very simple 8×8 sprites put together quickly for testing. A solid piece of artwork even just for the title screen would’ve been a big help.

Conclusion

I’m a big fan of R-Type so the chance to work on something like this with some great friends was incredible.  I think we’re going to leave the game as-is but in the future I might revisit the core concepts and take some of the stuff I learned to apply it to a full experience. Either way, bring on the next Ludum Dare!

If you’d like to try our game click HERE