No description
| lib/libft | ||
| maps | ||
| sprites | ||
| .gitignore | ||
| animations.c | ||
| bitmask_helpers.c | ||
| category_pass_helpers.c | ||
| category_pass_updaters.c | ||
| collectible_helpers.c | ||
| collectible_rendering.c | ||
| exit_pass.c | ||
| floor_pass.c | ||
| floor_tile_helpers.c | ||
| free_functions.c | ||
| game_end.c | ||
| gameplay_checks.c | ||
| gui.c | ||
| helpers.c | ||
| key_hook.c | ||
| lava_pass.c | ||
| main.c | ||
| Makefile | ||
| map_content_validation.c | ||
| map_fitting.c | ||
| map_name.c | ||
| map_parser.c | ||
| map_rendering.c | ||
| map_rendering_passes.c | ||
| map_solvability.c | ||
| map_struct_freeing_functions.c | ||
| map_struct_functions.c | ||
| map_struct_helpers.c | ||
| map_validations.c | ||
| movement.c | ||
| movement_keys.c | ||
| north_walls.c | ||
| patrol_movement.c | ||
| patrol_movement_helpers.c | ||
| patrol_rendering.c | ||
| patrol_validation.c | ||
| patrols.c | ||
| player_rendering.c | ||
| README.md | ||
| render_helpers.c | ||
| shadow_pass.c | ||
| shadow_sprite_helpers.c | ||
| shadow_sprites_part_two.c | ||
| so_long.h | ||
| sprite_management.c | ||
| sprites_parsing.c | ||
| text_rendering.c | ||
| wall_edge_sprite_functions.c | ||
| wall_pass_helpers.c | ||
| wall_sprite_functions.c | ||
| wall_sprite_functions_part_two.c | ||
so_long
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.
Checklist of doom:
- 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 :)
The Home Stretch
- 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
Asset Credits
- 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.