It's been a rough day and a half or so. Took some time off on Thanksgiving which was nice but then finished up feeling the pressure of my ending vacation.
Today was a good but painful day of test, fix, rebuild, repeat. The plan was to temporarily stub out all of the 'services' that the client expects that will normally need to be provided by remote services. Like terrain loading, grabbing objects, etc.. The preceding couple of days was building the infrastructure necessary to do that. The plugin system needed a slight overhaul because I'd never fully implemented a design for how to deal with plugins that needed to add different services depending on what mode the game was running (multiplayer server, multiplayer client, or single player). I'd hacked in one approach a year ago or so that I completely yanked out for a better one once the design was improved. Funny how once you start something and put it down for a few months at a time that the train of thought can get derailed. Anyway, things are now more straight forward.
So that last day and a half or so the process has been:
-run the server
-run the client
-connect to the server
-join with a character
-get an error
-fix the error (sometimes with some not insignificant amount of coding)
-rebuild everything
-repeat
The most unfun part of a hard week. But now I've finally connected to the server and walked around. I can't actually see what I'm walking on because I'm not getting real terrain. Also my position on the client only updates once a second (ham-fisted after all) but I can see that the camera moves up and down and so on as I traverse terrain that I can't actually see.
That's a picture of the multiplayer client connected to my local server. The view is of far terrain which I've hard-coded as all water at 0 elevation. The white area is where it cuts off for being too near the player. The actual land is invisible because that data is hard-coded to return empty.
So now I can get to the business of actually implementing the services. Turns out there are only three that need immediate attention before I can at least see what I'm walking on. I'll have to implement at least one more to be able to open my inventory and select my build wand. That will be needed for adding back support for terrain change notification so the client knows to update. Once I have all of the basic stuff working then I will get to networking the physics engine with Sim-ethereal (the networking library I used Espace to test).
Hopefully the boring parts are done and the real work can begin.