Part-way through re-adding and rewriting platformer movement and collision detection. Also, temporary stand-in trees.
Work Since Last Devlog
- I learned enough Tkinter to load an image from a file selection dialog, display it within a frame, and add some buttons to zoom in and out. Then I sat down with a pencil and some graph paper and sketched out some ideas for an animation editor, and … I think the time saved from making such an editor wouldn’t negate the effort necessary to build it up to the point where it’s not a hacky one-off thing. Maybe this is something to come back to for the next game. On a similar note, thinking about what I would actually need in-engine widgets for in this game, and all I can really come up with an answer to that is: title screen menu, config screen, pause menu, etc. And those are basically already working, except for chaining them together. Widget-wise, there’s not really any heavy lifting necessary for this game as I’m picturing it currently.
- Added a per-row horizontal offset to the tilemaps. This has no effect on the coordinate system or collision detection, but would be useful for splitting background layers into multiple planes, and then scrolling or anchoring them independently (for example, to slowly offset clouds near the top of the screen, without making a new map layer or using a bunch of one-off actors.)
- For animated tiles, I added timer delay variables that are multiplied by the tile’s X and Y positions on the map. This could be used to make the tile updates appear slightly staggered, like a “wipe” across the screen, or to offset the current frame of a tile by whole frames. Specific use cases I’m thinking of are lapping water for the former, and grass swaying in the wind for the latter.
When I split the codebase off from Hibernator, I removed a lot of Hibernator-specific stuff to make it easier to rewrite portions of the engine. This included all of the platformer movement code. I’m struggling to settle on details of how the game should play, and I think the lack of actual platformer controls is a huge part of the issue. I know a bit more about Lua now, so I’ve started writing a separate module to handle platformer state so that any actor or object can take advantage of the same code.
I’ve just gotten the platformer collision detection working again, but I need a new way to tag terrain attributes to tileset tiles. The codebase unhelpfully refers to “cells”, “tiles”, and “tile_ids” for things ranging from the actual integer value of a given coordinate in a tilemap, to an array of integers representing tileset terrain attributes. The latter of which … no longer exists in the source files? This all needs a thorough rewriting.
Plans For Next Post
- Get platforming again