This is a postmortem of Jekyll, a top-down shooter about a character that is constantly swapping between different forms against their will. You can play/rate it here.
The goal was to force the player to be constantly adapting to the different playstyles of each form, strategically utilizing the strengths of each form to take out enemies, and mitigating each form's weaknesses on the fly.
This will be a recap some of the most useful things learned throughout the jam as well as some of the challenges. I hope it will be useful to some jammer's out there.
An easy recommend for anyone working in 2D. You get an extremely customizable camera with high quality features out of the box. This saved SO much time, and it's a simple package install from the Asset Manager.
Perks:
- Mouse Lookahead
- Deadzones
- Softzones (like deadzones, but gradual)
- Much more
Setup is as easy as creating a 2D camera from the Cinemachine tab and setting your player as the Follow parameter in the inspector.
It hurts my soul that I did any sprite based level development without these tools. Utilizing the tilemap & palette workflow makes map building extremely fast and easy.
Tilemaps are a great way to store 2D terrain data for your levels.
Perks:
- Multiple tilemaps in any grid, which allow them to act as layers for building & sorting complex terrain
- Generate editable colliders for an entire tilemap with one click
Here I've placed only the walls on a separate tilemap, and layered it above the base tilemap, allowing me to generate all my wall collisions in one go.
Tile palettes are exactly what they sound like, they let you "paint" your TileMaps with ease. You can easily turn an entire Spritesheet into a palette.
Setup:
- Splice your spritesheet via the sprite editor, don't worry if you have extra stuff like character sprites in it.
- Open a Tile Palette window via Window -> Tile Palette
- Drag your spliced spritesheet, not the individual frames, into the Tile Palette window, this will create the palette while preserving the original spritesheet order.
- Paint away!
It feels like I just scratched the surface of these, but first impressions are that they're powerful data containers for Unity with a lot of flexibility.
In Jekyll, SO's were used to store all of the stats & information about each of Jekyll's forms. This included animation controllers and other game objects like each form's projectile prefab. These object's made form swapping logic easy to implement once the form objects were built. It also had the added perk of making it super easy to tweak the stats on each form!
I've saved the least technical bit for the end of this section, but planning is so important for a successful jam. Here's a few tips to help you with your next jam.
- When in the idea creation phase, don't wait for inspiration. Sit down and start writing (or doodling). Putting things on paper will help your brain get past the surface thoughts swirling around in your head and really help with brainstorming.
- Make a list of your capabilities. What you've done prior or what you know you can do easily. For some people, like myself, this list may be very short. This list isn't meant to be a hard limit on what you can create, but it will aid in realistic idea generation and help protect against overscoping.
- Use a task management board like Trello. Create small, but meaningful tasks!
- Follow up on 3, create a "Minimum Viable Product" column, this should ideally contain only the tasks that are required for you to have a functioning game.
After review, this jam was probably my most successful of my 4 jams at the planning stage. Even though the game barely scratched the surface of the idea, it (mostly) works; and is a functioning, if barebones representation of the idea. Which in 48hrs is something to be proud of.
Lastly, a few personal challenges and limitations I encountered in the jam. Rapid fire style.
- Math is hard, and my weak background in the subject definitely hurt me when trying to create different shooting patterns for each form. Need to spend some quality time understanding Quaternions and Vector math.
- Hit FX are REALLY important for communicating damage, and neglecting them until the very end was definitely a mistake, I should have prioritized this over the third dragon form.
- Last but not least:
beer + sleep deprivation = messy code.