aboutsummaryrefslogtreecommitdiff
path: root/TODO.org
blob: 6ac66cff4fb9a1e4d8ae65a6b3fe4c22ecacf7df (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#+title: 2D Game Engine Development Plan — Mixed & Fun Milestones

* Milestone 1: A World That Moves
** Map & Rendering
*** DONE Update map parser to read layer information.                    :graphics:
*** DONE Render multiple tile layers (simple implementation).            :graphics:

** Input & Player Basics
*** DONE Build a simple input-state map (keys pressed/held).          :input:
*** TODO Create basic player entity (plist data + type).                 :entities:
*** TODO Move the player 1 pixel each frame to test update loop.         :entities:update:

** Scene & Entity System
*** TODO Implement a basic `scene` that holds a list of entities.        :scene:
*** TODO Write `scene-add-entity!` and `scene-foreach-entity`.           :scene:

* Milestone 2: Seeing & Controlling Things
** Sprite Rendering
*** DONE Load a texture and draw a static sprite.                        :graphics:sprites:
*** TODO Add sprite reference to player entity plist.                    :entities:

** Input → Actions
*** TODO Create input→action map (e.g. W→move-up).                       :input:actions:
*** TODO Update player velocity based on actions.                        :physics:

** Entity Utilities
*** TODO Write plist helpers for entity data (ref, set!, update!).       :entities:plist:

* Milestone 3: A Moving Camera, Gravity & Scene Loading
** Camera
*** TODO Implement a basic camera struct with x/y.                       :graphics:camera:
*** TODO Offset rendering by camera position.                            :graphics:camera:

** Basic Physics
*** TODO Implement gravity for entities with :gravity? #t.               :physics:gravity:
*** TODO Update player and camera positions each frame.                  :physics:

** Scene Loading
*** TODO Make a function to load a scene from a tilemap name + prefab list. :scene_management:
*** TODO Add a per-entity :init function for initialization.             :entities:

* Milestone 4: Collisions, Prefabs & Simple Enemies
** Collision
*** TODO AABB overlap function.                                          :physics:collision:
*** TODO Detect collisions between player and solid tiles.               :physics:tilemap:

** Prefabs
*** TODO Write a basic “prefab file” returning plist definitions.        :prefabs:
*** TODO Implement `instantiate-prefab` to produce entities.             :prefabs:

** AI Basics
*** TODO Add simple FSM fields (:state, :next-state) to an enemy entity. :ai:
*** TODO Implement “idle → patrol” logic in enemy update.                :ai:

* Milestone 5: Animated Tiles, Entity Collisions & More Player Feel
** Graphics Polish
*** TODO Add tile animation metadata to tileset.                          :graphics:animation:
*** TODO Draw correct animation frame based on time.                     :graphics:animation:

** Entity × Entity Collision
*** TODO Detect overlaps between dynamic entities.                       :physics:collision:
*** TODO Push colliding entities apart by simple resolution.             :physics:collision:

** Player Polish
*** TODO Add :speed and :jump-strength fields to player plist.           :entities:
*** TODO Make movement feel nicer by tweaking acceleration/velocity.     :physics:

* Milestone 6: Audio, UI & Better Enemy Logic
** Audio
*** TODO Bind essential SDL2_mixer functions via FFI.                    :audio:
*** TODO Initialize mixer and load sound resources.                      :audio:
*** TODO Implement `(play-sound 'jump)` API.                             :audio:

** UI
*** TODO Integrate SDL2_ttf and render debug text.                       :ui:
*** TODO Draw player position as on-screen text.                         :ui:

** Enemy Expansion
*** TODO Implement “patrol direction switch” when hitting tile edges.    :ai:
*** TODO Let enemy react to player proximity (simple check).            :ai:

* Milestone 7: Pathfinding, Better Scenes, More Polish
** Pathfinding
*** TODO Implement A* node structure and open/closed sets.               :ai:pathfinding:
*** TODO Implement basic A* grid search.                                 :ai:pathfinding:

** Rendering Polish
*** TODO Add optional parallax background layer.                         :graphics:
*** TODO Add simple camera smoothing (lerp toward player).               :graphics:camera:

** Scene & Data-Driven Logic
*** TODO Add hot-reloading of prefab files.                              :engine:data:
*** TODO Add level transitions (change scenes).                          :scene_management: