|
@ -1,55 +1,100 @@ |
|
|
# TODO |
|
|
|
|
|
TODO of TODOs: move these into issues |
|
|
|
|
|
|
|
|
## ~~Boilerplate ~~ |
|
|
|
|
|
* ~~Project setup ~~ |
|
|
|
|
|
* ~~Input engine ~~ |
|
|
|
|
|
|
|
|
## Player |
|
|
|
|
|
* Jumping |
|
|
|
|
|
* Climbing and ladders/ropes |
|
|
|
|
|
* Metasprite animations (walking, jumping, climbing) |
|
|
|
|
|
* Inventory |
|
|
|
|
|
* Combat statistics |
|
|
|
|
|
* Basic attack by pressing A |
|
|
|
|
|
|
|
|
## Maps |
|
|
|
|
|
* ~~Player-background collision ~~ |
|
|
|
|
|
* ~~32x32 maps ~~ |
|
|
|
|
|
* ~~Map scrolling through SCX/SCY ~~ |
|
|
|
|
|
* 127x127 maps |
|
|
|
|
|
* Update background collision to be aware of map changes |
|
|
|
|
|
* Portals between maps |
|
|
|
|
|
* Write editor for collision maps |
|
|
|
|
|
* Update map generation script to use new collision map format |
|
|
|
|
|
* New collision map flag |
|
|
|
|
|
* Load new map on collision |
|
|
|
|
|
* Ladders/ropes |
|
|
|
|
|
* New collision map flag |
|
|
|
|
|
* Play climbing animation when player collides |
|
|
|
|
|
* Allow movement up/down without gravity |
|
|
|
|
|
|
|
|
## Items |
|
|
## Items |
|
|
* Item entity type |
|
|
* Item entity type |
|
|
* Render item on map |
|
|
* Render item on map |
|
|
|
|
|
* Create data structure for storing items on the map |
|
|
|
|
|
* Copy item OAM data to shadow OAM on each frame |
|
|
|
|
|
* Make items float up and down a little bit |
|
|
|
|
|
|
|
|
|
|
|
## Player |
|
|
|
|
|
* ~~Movement ~~ |
|
|
|
|
|
* ~~Jump physics ~~ |
|
|
|
|
|
* Velocity should not exceed 7px per frame |
|
|
|
|
|
* Animations |
|
|
|
|
|
* Keep track of animation state |
|
|
|
|
|
* Update metasprite tile indexes on new frame |
|
|
|
|
|
* Add jumping animation |
|
|
|
|
|
* Add walking animation |
|
|
|
|
|
* Create inventory data structure |
|
|
|
|
|
* Add inventory item |
|
|
|
|
|
* Remove inventory item |
|
|
|
|
|
* Check for having at least N of an item |
|
|
* Player item pickup to inventory |
|
|
* Player item pickup to inventory |
|
|
* Player pickup (press B? collide?) |
|
|
|
|
|
|
|
|
* Remove item from map |
|
|
|
|
|
* When pickup button pressed and player colliding with item, pick up item |
|
|
|
|
|
* Combat statistics type |
|
|
|
|
|
* Basic attack by pressing A |
|
|
|
|
|
* Display attack animation |
|
|
|
|
|
* Implement battle formula |
|
|
|
|
|
* Connect to button press |
|
|
|
|
|
|
|
|
|
|
|
## Menu |
|
|
|
|
|
* Menu UI |
|
|
|
|
|
* Render start menu |
|
|
|
|
|
* Select menu item |
|
|
|
|
|
* Switch between menu and game states |
|
|
|
|
|
* Render statistics screen |
|
|
|
|
|
* Render equipment screen |
|
|
|
|
|
* Player inventory |
|
|
|
|
|
* Render inventory screen |
|
|
|
|
|
* Allow selecting an inventory item |
|
|
|
|
|
* Equip/use/drop item |
|
|
|
|
|
|
|
|
## Monsters |
|
|
## Monsters |
|
|
* Monster entity type |
|
|
* Monster entity type |
|
|
* Render monster |
|
|
* Render monster |
|
|
* Metasprite |
|
|
|
|
|
* Take damage if attacked |
|
|
|
|
|
* Death |
|
|
|
|
|
* Attacks (animations + closed curve movement + speed) |
|
|
|
|
|
|
|
|
* Create data structure for storing monsters on the map |
|
|
|
|
|
* Generalize player metasprite code |
|
|
|
|
|
* Update player attack routine to check for monster collision |
|
|
|
|
|
* Death |
|
|
|
|
|
* Play death animation |
|
|
|
|
|
* Drop items from drop table |
|
|
|
|
|
* Remove monster from map |
|
|
|
|
|
* Player experience / level up routines |
|
|
|
|
|
* Allow point distribution in stats menu |
|
|
|
|
|
* Attacks |
|
|
|
|
|
* Play attack animation |
|
|
|
|
|
* Check for player collision and damage player |
|
|
|
|
|
* Translate monster position along a closed curve |
|
|
|
|
|
* Randomly pace to the left/right |
|
|
|
|
|
|
|
|
## NPC |
|
|
## NPC |
|
|
* NPC entity type |
|
|
* NPC entity type |
|
|
* Read NPC description from file |
|
|
|
|
|
* Render NPC |
|
|
* Render NPC |
|
|
|
|
|
* Create data structure for NPCs on map |
|
|
|
|
|
* Use metasprite code for NPCs |
|
|
* Scrolling text display engine |
|
|
* Scrolling text display engine |
|
|
* Render NPC dialogue |
|
|
* Render NPC dialogue |
|
|
* Dialogue prompt |
|
|
* Dialogue prompt |
|
|
* Prompts should present themselves as a modal containing a set of buttons |
|
|
|
|
|
corresponding to a provided set of replies |
|
|
|
|
|
|
|
|
* Render modal with yes/no answer buttons |
|
|
* Cursor to select button |
|
|
* Cursor to select button |
|
|
* Clicking button updates NPC state with response |
|
|
|
|
|
|
|
|
* Run NPC dialogue handler when answer given |
|
|
|
|
|
|
|
|
## Quests |
|
|
## Quests |
|
|
* Extend dialogue to display item requests |
|
|
* Extend dialogue to display item requests |
|
|
* Keep track of completed quests |
|
|
* Keep track of completed quests |
|
|
|
|
|
* Display icon above NPC when a quest is available |
|
|
|
|
|
|
|
|
## Maps |
|
|
|
|
|
* 32x32 maps |
|
|
|
|
|
* Implement map scrolling through SCX/SCY |
|
|
|
|
|
* Update collision routine to fetch new index |
|
|
|
|
|
* NxM maps (where N, M > 32) |
|
|
|
|
|
* Long way off, may not make it |
|
|
|
|
|
* Portals between maps |
|
|
|
|
|
* New collision map flag |
|
|
|
|
|
* Transition between maps on collision |
|
|
|
|
|
|
|
|
|
|
|
## General |
|
|
|
|
|
* Generalize metasprites to work across monsters, players, NPCs |
|
|
|
|
|
|
|
|
## Nice to have |
|
|
* Metasprites of different sizes? (Could enable boss monsters) |
|
|
* Metasprites of different sizes? (Could enable boss monsters) |
|
|
* Battle formula |
|
|
|
|
|
|
|
|
* Animated damage number for attacks |
|
|
|
|
|
* Player name select |