So how'd the thanksgiving development go?
It went ok. It was kind of an emotional roller coaster on some level.
On Tuesday/Wednesday I finally got to the point where I was integrating the SimEthereal networking library. It was incredibly painful and I had to rewrite lots of stuff to convert it over to use some of my other open source projects (a win mostly). I worked like 10 hours straight and I wanted to chuck the whole thing and start over from like 2 hours in. It was a very disheartening day. Fortunately, I felt like it was one of those cases where even if I decided in the end this wasn't going to be the final solution, getting it done would at least teach me what I needed to know to fix it.
And so I got that working. I can log in and move around. Physics is handled by the server and my client is a 100% slave to it. Connecting to my local machine doesn't even feel too laggy. Ultimately, to make this solution the final solution is going to require a lot of changes and it will be very painful... but having something working already is gold.
I did a lot of soul searching during that 10 hours and the next day as I fixed bugs that cropped up. The reason I wanted to chuck it all and start over is because it's only when trying to thread such a complicated thing into an existing complicated thing that we can see that we did everything up side down. In my hurry to clean things up and work on fun new rendering, etc. 3 years ago or whatever, I chose to refactor the whole engine. What I should have done was wait until I had a networking solution and then build a networked game from the ground up. Adding rendering and menus, etc. to a working network base is way easier than doing what I did.
I mean, to be fair, that never would have worked out. I've learned a lot about creating networked games and other tech in this last three years (4 years? ugh). And that was more or less the realization I came to after I had the basics working and was just fixing stuff. If I refactor again, I have to be careful what I know and what I don't know yet and how that will alter what I do. For example, AI is a huge missing piece and that might affect the architecture. (Though never as bad as networking would... just not possible.)
I also realized that whatever I do, it will need to be done in a way that I can make incremental progress even if I don't have solid week blocks of time to work on it.
Fortunately, I'm kind of in a nice place right now. Even to finish networking support to get the missing parts in, I can now do in smaller chunks. For example, right now multiple players can login but can't see each other... though we can see the block changes we make. My current task is to get avatars visible. (Which has a really nice encouraging moment too *) I also need to go back and fix all of the terrain feedback loops... for example, changing a block does not update the larger terrain info summary files that are used for the far terrain. So even though I will probably never be able to show buildings and such in the far terrain, if someone flattens a mountain or makes a new lake, that kind of thing should show up.
Anyway, there are a lot of things that I can work on now in small chunks. Also, because I did do a bunch of things right in the last refactoring, if I start with a blank network base at some point in the future, pulling stuff over is fairly trivial without a total rewrite.
One thing that stuck me is that if I wanted to make an app that used a Mythruna world but displayed it in a different way (say as an isometric view or something), I'd be starting from ground zero. With the old engine, I could easily use the terrain stuff just as a library but the setup required to do this is pretty impossible in the new engine. Open sourcing stuff has been pretty beneficial for me overall. I get bug reports in Lemur and SimEthereal, etc. and those projects are now constantly improving and generate constant motivation to keep moving forward. I will probably take that approach with a variety of Mythruna's subsystems. Even if I don't open source the whole engine, open sourcing the terrain library, the object scripting system, the dialog system, etc. will greatly improve all of those things, let a community of folks potentially help improve them by using them in their own games, and give modders a nice fully open base upon which to build their own Mythruna add-ons. The only down side is literally also a huge up side: it will take me a bit longer to develop them because I have to make them cleaner and document them a bit more.
But really, when I'm having to take the occasional really long breaks... I need all of that for myself, too.
So by the end of the Thanksgiving week, I have a new more optimistic approach to everything. I have an engine that I can continue to work on. I have a dozen ideas for ways to improve the work flow and make it more efficient... and none of them will require large blocks of time. I haven't written up a larger blog post yet because a) not many people read these anymore, and b) the push kind of isn't over yet.
I still have to get some things working before I can give myself my "Can play Fallout 4" reward. Plus, I find myself on the moment at a temporary forced vacation because of some contract-related stuff at my day job... which is a nice little island of respite in a sea of totally-bat-poop-crazy-busy... before my 12 day long winter break.

By new years, I hope to have even more optimistic things to say about the future of the engine.
(*) the nice surprise was that I'd wired a whole bunch of MOB/avatar stuff together already to even include a nice little tester app. It's really nice code and I was able to add a giant-rat pretty easily as another mob type. Discovering this and some of the other nearly-fully-working things I'd already done was a nice surprise after the 10 hour slog I'd done the days before.