Brief update, I've had a busy couple of weeks at work which means progress has slowed almost to a stop. That said not much is still needed to make this usable.
- the only major feature the engine still needs is person/map scripts which I will I'm aiming to add today/tomorrow (may drag until Friday/Saturday if things go wrong).
- I also need to fix the sprite drawing order for multiple layers - currently sprite layer is not respected when determining what order to draw them.
Then it will be a case of testing and building out usage examples/documentation for it to be in a usable and sharable state.
Other features I still want to add that may be for a version 2:1. Custom formats that load faster + cell script to produce said format (note these formats will likely have a larger file size but we're not on dial up anymore)
2. Animated tiles, you can fake it with a sprite, but I'd like sphere v1 style tiles that animate to be able to be set in a map, my current rmp loader will ignore this information - it won't be hard to add a handler for it though.
3. Zones - again these are currently ignored - won't be too hard to implement though.
4. HUD/interface system - as far as I know sphere v2 has no api for .rws or any equivalent BUT further than that there should be system a system that lets you design an interface/HUD that then draws every frame if wanted, this system should set up the shapes and textures it needs (including pre-drawing any fixed text to a surface and turning that to a texture) then should just draw them every frame.
5. Extensive Tiled Support, my current Tiled loader is rather limited, it works for maps with tile based collisions only and doesn't load entities or scripts or custom properties
6. Repeating maps - currently the map scrolling locks nicely at the edge of the map, I need to write the algebra for an alternate mode where the map and the sprites and the collisions repeat
7. Re-factored ES6 codebase, I wrote all of this in ES5 as I wanted it to be includable at run time and miniSphere was on Duktape at the time, it would probably make sense to re-factor it with ES6 now miniSphere uses Chakra, but I'm going to put this at the bottom of the list for now.
Other NoteThe current plan is to initially test/build out features by porting Kefka's Revenge - no guarantees on how successful this will be but