I have a sort of mental roadmap of where I want to take Hypatia Engine. It’s nothing formal, but I thought it’d be good to put out there.
I feel like a lot of focus went into bigger picture stuff, but what I really want to focus on are the CORE graphical utilities before getting into game state, or any of that stuff. These utilities should be usable independent from the core game logic. I want a solid foundation before going forward, and I really want to avoid accruing technical debt.
Enhance the ability and ease of processing image assets through functions which manipulate image data. Currently, palette cycling is the only effect, and that can only be applied to tiles.
I feel like there is a current error in the architecture. There should be an Effect object which is capable of applying an effect to a single sprite or an animation. This could be accomplished by implementing BaseEffect, which provides a model for applying the same function which creates an “effect” by manipulating an image.
To elaborate on the aforementioned, the palette cycle effect would simply rotate the palette on one image, returning one image, but this effect could be ran on all frames to produce the desired effect, without elongating time.
I also want effects to be able to be applied to tilemaps (the layers are an image each).
- Parallax between tilemap layer
- Optional loose constraint for walkabout chaining
Generic enemy AI structures. Pathfinding which works in conjunction with the tilemap system. A generic path/course system for pacing or looping.
Better Coordinate System
All visually represented objects (or even sometimes invisible ones!) must have a Coordinate object. This should supply an absolute coordinate, and should also be used in walkabout chaining. The Coordinate object must be created referencing the viewport, in order to extrapolate the object’s position on screen. This will be useful for effects, paths, and more!
Pixel-perfect, efficient hit detection
I feel like the name says it all, but I feel it’s important that we use auto-generated masks and really good collision detection. Every pixel counts!