Lately I've been tinkering on some stuff that is either related to the recent world engine changes or was blocked on those changes. I have been waiting a long time to add some concept of "entity regions" into the game, and having that done basically means that the entire game world is no longer regarded as one large room with all players within it. As entities move around the island, they are discretely sorted and swapped between regions, syncing themselves (or the removal of themselves) to any players that need it. Players that are in an entirely different region than some other entity are no longer required to keep track of it, and will no longer be sent any packets it may generate. Only the entities relevant to a client are streamed to that client.
I think I consider this a major milestone for the game. Systems are starting to come together more and I think the editor is even capable of creating some interesting scenes, regardless of the fact that I only have a handful of props and textures. Antorum is starting to feel like a place that is worth exploring. I also realized that this is dev log 20! Antorum has come a long way since I first started working on it over a year ago. I am not bored of it yet, so I guess I'll keep chipping away.
Something else I finally did was finally replace the garbage main menu that I have been tolerating since the start of this project. Not pictured here is the screen allowing the client to specify a game server hostname, and the world download screen which makes the process of connecting, downloading resources, and logging in a bit nicer.
I also ripped out the minimap rendering code and replaced it with a much cooler solution that renders a nicer looking map, in tiles. You can patch together the tiles to get the full world map - here is a small portion of it:
The shadows look a little messed up because I have smooth normal calculations for the terrain turned off. It's an expensive bit of processing which I haven't had time to optimize yet.
- Implemented the EntityRegionSystem to spatialize entities a bit more
- Refactored client/server world sync to support entity regions
- Refactored packet sending to support entity regions
- Fixed bug that allowed stacking of non-stackable items
- Fixed bug causing movement desync (especially during combat)
- Added 4 new props
- Added 2 new items
- Tweaked drop tables for various NPCs
- Refactored in-game user interface to be window-based and less obtrusive
- Refactored main menu to be a bit more robust and nice to look at
- Fixed some scary race conditions in the async networking bits
- Tweaked in-game lighting settings & turned on fog
- Increased default shadow draw distance
- Refactored minimap rendering to be camera based
- Fixed an editor bug where props and entities would duplicate themselves
- Added hop animation to moving characters
- Added drop animation to dropped items
The next thing that I work on will be NPC shopkeepers and the bartering system. Should be fun.