Enigma Server Core - Update

I have finally created a new server for Enigma which uses the transmission and session layers I wrote about previously. The functionality is largely based on the previous server this is more of an architectural change than a functionality change, however even so I have run into a few bugs here and there. The core server is almost on par with the old server in terms of functionality authentication with a database and configuration from xml files are the only two parts missing that I'm aware of at this point. Both of those will likely be in their own libraries. The reason is that the I'm using the xml parsing functionality of Irrlicht & one of my goals was to decouple all but the client from Irrlicht or any graphics engine for that matter. This will be possible however because irrxml is also a separate library. That means I can use my existing configuration code more or less and just link & include irrxml without including the whole Irrlicht engine.

As for the database that should have been it's own library from the start and honestly I normally do that on all of my medium and large projects. However due to the fact it was simply a backing store and the server is maintaining state I underestimated the complexity that would be needed. As a result this will have to be decoupled just like the session and transmission logic was. However this is good because with the new architecture the only functionality that really needs called from the server logic is initial loading and authentication. Persisting data back to the database could be done by giving the data access layer a const reference to the realm object and potentially an update queue to reduce wasted database calls. Might also need some object locking so the entities don't get corrupt data persisted.

At any rate I'm working on one blocking bug that remains in the new server core which is that multiple clients cause the server to crash. I haven't pinned down exactly where it is coming from and as usual the stack trace basically gives me the try catch block in main.cpp and a bunch of memory addresses ... thanks visual studio that's so helpful. Darn c++ hardware exceptions.


Popular posts from this blog

VK9 - Milestone8 Completed

VK9 - Milestone13 Completed

VK9 - Milestone16 Completed