As many of you may know, one of the core requirements of Mythruna is a physics engine that can handle an infinite world and block objects. The "infinite world" thing turns out to be quite tricky... and we essentially impossible to thread into the existing engine. That's why some time ago (commit history seems to indicate 2+ years ago), I start taking a different approach.
The theory behind the approach was that it would be easier to build a block world game on top of a solid infinite-world capable networked physics engine than it would be to try to integrate such a beast into an existing game. Because I already failed at that twice.
Also given that my available time comes and goes, I need to avoid giant monolithic things wherever possible.
So I came up with the approach to start building small libraries that someday might be open sourced. For example, block-based geometry would be one, a generic zone-based physics engine another, layers to network and integrate those another, and so on. Let me say that just splitting it up like that was not without its own design challenges... but they are totally worth it in the end because each piece is separately testable.
For example, out of that I was able to build a simple BlockEd application for making 3D block sprites that my kids and I could use in game prototypes. Also, the physics engine was initially testable with just simple sphere and cube primitives on a simple ground plane. It was the better part of a year just to get the 'zones' working to support the infinite world part.
I wish I had videos of all of that but I did post some imgur links at one time.
Culminating in block shape integration here:
Since Thanksgiving break, I've been trying to shore things up and integrate all of that with the SimEthereal open source networking library I created way back. (Over the spring/summer I took a break to try to create a demo FPS with another developer but he got busy doing other things.) I took Thanksgiving week off and did some major coding which included:
* patching and releasing updates for all of my active open source projects for the JME community
* finally integrating the physics engine into an Entity System (ES).
* starting the network demo that ties blocks, physics, ES, etc. together
Post-Thanksgiving, I've been trying to put an average of an hour a day into continuing to move things along. (One of the nice things about smaller, easily tested, pieces.)
Well, this weekend I finally have something working end to end. Don't get me wrong. Some of this is duck-taped together and much of it needs a LOT of cleanup... but the hardest integration parts are done and working.
Here is a video:
https://www.youtube.com/watch?v=6JlVCa0641wI'm really excited to have this working. I'm not sure you even know. (It may not be obvious from the video since I clicked "Single Player" but it's actually running an autowired server and client. At least for now, single player is a networked game that creates a local hosted game and automatically logs you into it... keeping me honest.)
Next will be cleaning this up. Figuring out what I can remove to trim it down to the essentials, etc... but it feels so good to have a working foundation to iterate upon.
I hope over Christmas break that I can get to the point where I feel like I'm directly implementing Mythruna again.
Note: if you don't follow @MythrunaGame or @Simsilica on twitter but want to stay the most up-to-date on progress, that's where I'm most likely to post stuff until I start having more official announcements again. I'm cautiously optimistic about 2019... but don't let the universe hear me saying that.
P.S.: the daily chart mentioned
http://mythruna.com/forum/index.php?topic=2373.0 is certainly working.