Remaining Tasks for Version 3.0:
- Android platform functionality must be caught up to the SE-compatible code.
- When my Android development environment quit working, I continued to work on the PC platform. It's time to get the Android code up to speed with those advancements.
- More testing of existing engine cores on all supported platforms is necessary.
- The current demo program includes a lot, but some of the cores aren't addressed. Also, it has only been tested on the PC/Windows platform.
- The configuration management plan needs to be finished and validated.
- The only reason this isn't done yet is because I've been experimenting with project setup alternatives in an effort to simplify the cross-platform development and testing.
- Javadoc documentation needs to be completed and made more consistent.
- Most of the existing engine is documented, but hasn't been updated to reflect recent changes. Also, the documentation was never very consistent across packages.
- The rest of the planned features need to be completed or formally moved to a later phase of development.
- For instance, sprite sheets, textured particles, and predefined physics behaviors are all "wishlist" features that have yet to be implemented.
Proposed Changes to Existing Code:
MHGame should be renamed to MHGameLoop (or maybe MHGameCore). In MHF 2.x and earlier, the MHGame class was a software controller that manipulated user-defined objects to run the game. In MHF 3, however, the class is responsible only for the concerns of the game loop. Therefore, it is still the very heart of the engine, but it no longer represents all of the other gameplay support functions such as message pumping. It also has no direct association with user-created code or assets.
MHVector's arithmetic functions should apply directly to the vector object instead of always generating a copy. I originally designed it for maximum flexibility, but the performance of these objects is super critical, and this change in priority demands changes in interface and functionality.
The steering calculations in the Artificial Intelligence core should be simplified to be more cohesive. As they are at the moment, they cannot be used in an independent, atomic way, so their reusability is unnecessarily limited.
The AI core's finite state machine support should be updated to use generics. This way, the MHState interface could be generalized to eliminate dependency on the rest of the core, allowing states to be used independently of any particular owner without the need for explicit type casting.
This may not require a change, but the relationship between tile map data classes and viewer classes should be revisited simply because I don't remember exactly how I divided these responsibilities, and this is a crucial element to virtually all upcoming projects.
No comments:
Post a Comment