The objective for so_long is to create a small 2D game where the player moves through a maze read from a file, grabbing collectibles and making it to the exit.
- File handling and ingress
- Map validation
- Ensure map meets subject criteria
- Ensure map is solvable
- Set up sprite intake
- Determine what to draw where
- Pick sprites based on surroundings and categories
- Walls
- Lava
- Pillars
- Floors
- Shadows
- Additional walls
- Set up rendering
- Animate stuff
- Characters
- Movement
- Candles
- Lava
- Set up gameplay loop
- Set up win condition
- Add GUI
- Add patrols
- Make sure there are no memory leaks :)
- Add a function on exiting the render loop which detaches all images from their spritesheet pixel buffers, to avoid double frees
- Free the entire map struct on ending the game
- Do not immediately exit the game when winning or losing, stick around for a death animation or a victory screen
- Rework animations to be on a get_time clock instead of a frame clock
- Add an indicator of where each patrol is moving next
- Add a validation for patrols that are "stuck" between two walls or start next to a player
- Rework the GUI to not re-render everything each time and use layered string images instead
- The dungeon sprites are dungeonOld_ and the character sprites are dungeonSprites_, both by analogstudios.
- The GUI font is monogram by datagoblin. To get the font in a good bitmap layout, I used Codehead's Bitmap Font Generator.
- The paper backdrop for the GUI comes from Crusenho's GUI Essential pack with a small coloring update, which is distributed under a CC-BY-ND license.