No description
Find a file
2023-08-20 02:28:50 +02:00
lib/libft Convert to system-installed MLX42 2023-08-20 02:28:50 +02:00
maps Add some patrol validation testing maps 2022-12-29 15:52:47 +01:00
sprites Game over screen that locks input 2022-12-30 16:07:22 +01:00
.gitignore add dSYM to gitignore 2022-12-29 15:25:48 +01:00
animations.c Game state, animation on game over 2022-12-30 15:17:20 +01:00
bitmask_helpers.c change check_against_bitmask to have clearer var names 2022-11-25 11:56:42 +01:00
category_pass_helpers.c Refactor render passes 2022-11-25 13:42:59 +01:00
category_pass_updaters.c Fix category pass from going out of bounds 2022-12-02 14:16:39 +01:00
collectible_helpers.c Rendering for collectibles 2022-11-30 21:57:49 +01:00
collectible_rendering.c Movement indicators for patrols 2022-12-29 16:48:13 +01:00
exit_pass.c Exits and render refactoring 2022-11-30 13:50:22 +01:00
floor_pass.c Fill in floors by cycling through patterns 2022-11-29 15:40:52 +01:00
floor_tile_helpers.c Norm comments in floor tile helpers 2022-11-30 09:53:40 +01:00
free_functions.c Better protection on frees, add top row to maps 2022-12-26 02:17:37 +01:00
game_end.c Game over screen that locks input 2022-12-30 16:07:22 +01:00
gameplay_checks.c Game state, animation on game over 2022-12-30 15:17:20 +01:00
gui.c update only dynamic parts of the GUI 2022-12-30 00:06:33 +01:00
helpers.c Rework validations to not use linked lists 2022-11-12 21:28:20 +01:00
key_hook.c Game state, animation on game over 2022-12-30 15:17:20 +01:00
lava_pass.c Lava sprites, temporary floors 2022-11-25 17:12:59 +01:00
main.c Do not print map data 2022-12-30 16:09:17 +01:00
Makefile Convert to system-installed MLX42 2023-08-20 02:28:50 +02:00
map_content_validation.c No more preprocessors, static patrol rendering 2022-12-28 16:36:45 +01:00
map_fitting.c GUI background, standardized offsets 2022-12-26 16:16:01 +01:00
map_name.c WIP GUI 2022-12-22 23:58:01 +01:00
map_parser.c Patrol location validations 2022-12-29 15:53:10 +01:00
map_rendering.c Enums for render layers and movement direction 2022-12-28 23:49:22 +01:00
map_rendering_passes.c Sprinkle walls with candles and missing bricks 2022-12-05 00:21:19 +01:00
map_solvability.c No more preprocessors, static patrol rendering 2022-12-28 16:36:45 +01:00
map_struct_freeing_functions.c Game over screen that locks input 2022-12-30 16:07:22 +01:00
map_struct_functions.c Game over screen that locks input 2022-12-30 16:07:22 +01:00
map_struct_helpers.c Reorganize map struct funcs, auto-spacing on GUI 2022-12-27 17:36:10 +01:00
map_validations.c Make map content validations change if bonus 2022-12-27 21:03:37 +01:00
movement.c Run animations by realtime, not by frames 2022-12-30 13:45:10 +01:00
movement_keys.c Enums for render layers and movement direction 2022-12-28 23:49:22 +01:00
north_walls.c Sprinkle walls with candles and missing bricks 2022-12-05 00:21:19 +01:00
patrol_movement.c Movement indicators for patrols 2022-12-29 16:48:13 +01:00
patrol_movement_helpers.c Movement indicators for patrols 2022-12-29 16:48:13 +01:00
patrol_rendering.c Movement indicators for patrols 2022-12-29 16:48:13 +01:00
patrol_validation.c Patrol location validations 2022-12-29 15:53:10 +01:00
patrols.c Enums for render layers and movement direction 2022-12-28 23:49:22 +01:00
player_rendering.c Enums for render layers and movement direction 2022-12-28 23:49:22 +01:00
README.md Let's fricking go 2022-12-30 16:09:46 +01:00
render_helpers.c Movement indicators for patrols 2022-12-29 16:48:13 +01:00
shadow_pass.c he's got the schmoves 2022-12-19 22:19:38 +01:00
shadow_sprite_helpers.c Shadows that actually work 2022-12-02 14:17:29 +01:00
shadow_sprites_part_two.c Shadows that actually work 2022-12-02 14:17:29 +01:00
so_long.h Convert to system-installed MLX42 2023-08-20 02:28:50 +02:00
sprite_management.c WIP background animations 2022-12-18 23:40:26 +01:00
sprites_parsing.c Remove unused function 2022-12-26 23:15:41 +01:00
text_rendering.c Game over screen that locks input 2022-12-30 16:07:22 +01:00
wall_edge_sprite_functions.c Rendering for walls 2022-11-24 16:54:18 +01:00
wall_pass_helpers.c Fix a bug where exit does not count as open tile 2022-11-30 17:22:09 +01:00
wall_sprite_functions.c Rendering for walls 2022-11-24 16:54:18 +01:00
wall_sprite_functions_part_two.c use the MLX struct for unsigned chars 2022-11-22 21:22:57 +01:00

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