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.