Bolero Planning (Old)

From Kangaroo Effects
Jump to navigation Jump to search

Parent: Bolero Planning

2019

September

[Planning] Get this roadmap started :)

[GFX/Windowing] The engine has rudimentary support for multiple per-scene viewports with their own scrolling rules, but I don't think I can fully flesh that out right now and also get a game finished. So turn that stuff off.

[Scenes/Actors] Finish generic actor-to-tilemap collision and platform movement handling

  • 'Finish' probably isn't the right word, but there is now a generic platformerTick() that multiple actors can now use.

[Scenes/Actors] Fix issues with sloped terrain

  • This required rewriting the collision and platformer movement systems, and implementing a navigation layer / cache.

[Scenes/Actors] Get the spinnyboys rolling up and down the hills

[Scenes/Actors] Build up method calls for actors to simplify programming them.

  • Started doing this, and also added methods to scenes as well.

[Scenes/Actors] Make a camera / scrolling / scene transition manager.

  • ✅ Target-to-follow
  • ✅ Scroll boundaries
  • ✅ Fade-in / Fade-out transitions
    • The functionality is in, but it really needs to be refactored.
    • 1/Oct/2019: Didn't get this done in September, will have to roll it over to October.

[Scenes/Actors] Revisit actor creation and removal functions, with respect to how they affect Lua garbage collection, and how the order of actors in the array can cause subtle bugs.

  • ✅ Stat order: Run actors according to a separate sorted array.
    • Done! There is now an actor_order list which is used as a stat order. Now when an actor is initialized in a recycled table in the middle of the pool, it's still added to the end of the stat list for processing and drawing.
  • ❌ Garbage accumulation: I'm thinking I probably shouldn't worry about this right now. I'll come back to it if I suspect it's causing performance problems.

[GFX/Window] Fix sprite-to-actor alignment issues when sprites are flipped horizontally or vertically

[Scenes/Actors] Fix issue where scene can be rendered for one tick before it has been properly initialized. When this happens, the top-left of the map is displayed with no actors.

  • Mitigated by forcing scene creation to run one tick before returning.

[Scenes/Actors] I need some way to cache or memoize handles to other actors.

  • Added a way to refresh handles on a per-tick basis by verifying the target actor's serial number. It won't scale well if hundreds of actors search for an actor that isn't present in the list, but should be OK for now.

[Scenes/Actors] Need a system to automate actor-to-actor collision checking.

  • 29/Sept/2019 Actors can now opt into a per-tick overlap check. The scene tick function informs each opted-in actor of which other opted-in actors were overlapping it at start-of-tick. It's lacking spatial partitioning, so it won't scale well, and it has no context for how the collisions should be resolved.

[Scenes/Actors] Early versions of the engine had a simple message stack system for sending messages between actors. Re-enable and finish this, and add support for sending messages across scene boundaries.

    • 1/Oct/2019: Didn't get this done in Sept, rolling over to October. The stuff I had written previously was not up to par. Working on rewriting now.

[Widgets] Full options menu tree. Need to improve the widget system in order to do this. Selection boxes, "OK/apply/cancel" buttons, scroll boxes, etc.

    • 1/Oct/2019: Also did not complete though I didn't really think I'd make headway on it in September. Rolling over to Oct.

[GFX/Window] Functional fullscreen (canvas needs centering IIRC)

    • 1/Oct/2019: Also not complete, moving to October.


October

[Scenes/Actors] Make a camera / scrolling / scene transition manager. Target-to-follow, Scroll boundaries, Fade-in / Fade-out transitions.

  • The functionality is in, but it really needs to be refactored.
  • 1/Oct/2019: Brought in from September.
  • 23/Oct/2019: Moved the camera logic out of a test actor and into the existing camera toolkit. I turned off fade-out / fade-in a while back and haven't missed it too much. Comfortable with marking this complete for now.

[Scenes/Actors] Early versions of the engine had a simple message stack system for sending messages between actors. Re-enable and finish this, and add support for sending messages across scene boundaries.

  • 1/Oct/2019: Brought in from September.
  • 1/Oct/2019: So I looked at the old commented-out code, and there wasn't much to it, certainly not usable in its present state. I've rewritten the basic queue / stack structure, added a simple name resolution system for addressing actors in different ways, and started on application-wide message definition and message handler hashmaps. I've gotten the player to send a message outside of its scene, back into its scene, and handle the message/event with a handler function. So this is technically working in the absolute barest sense, but it's not really plugged into anything or doing anything useful yet.

[Widgets] Full options menu tree. Need to improve the widget system in order to do this. Selection boxes, "OK/apply/cancel" buttons, scroll boxes, etc.

  • 1/Oct/2019: Brought in from September.
  • 10/Oct/2019: Chipping away at this. Rewrote the widget system and created a top-level state controller widget to support navigating through nested menus. Need to plug engine config into the settings once again. Input binding and resolution settings will likely need their own custom scenes + widgets.
  • 14/Oct/2019: So the basic menu layout is in. Took a short break, and now currently working on an ad hoc scene / widget for configuring input bindings. Once that is functional, I need to do the same for video mode / resolution settings in windowed and fullscreen modes.
  • 19/Oct/2019: Menu tree is in and about 90% functional, except for saving/loading config and resetting everything to defaults. Input binding and resolution settings work. I'm comfortable with marking this complete, and coming back to it near the end of production.

[GFX/Window] Functional fullscreen (canvas needs centering IIRC)

  • 1/Oct/2019: Brought in from September.
  • 19/Oct/2019: Borderless and exclusive fullscreen now working with scaling and resolution selection for exclusive mode.

[Game State] Implement the following: Game-start + restart, loss of life, Game Over, Continuing, and tie actor spawnpoints to difficulty settings.

  • 21/Oct/2019: Seems like the logical next step after cleaning up state + transition handling.
  • 21/Oct/2019: Implemented all of the items on this task.