I’ll give you some background here so you may understand what I am trying to accomplish.
Most of the engines I have studied have always required some form of static data which is required to get the engine initialized. I am currently using BigWorlds Indie which still falls into this category somewhat and only as a personal project now to boot. I can continue but it is a total waste of my time and effort IMHO as you’ll learn later.
You can not access the static data from inside the game but have to make access through an editor and in game it is not modifiable, You can’t select, move, rotate, delete or scale static objects except through external processes which breaks the lighting and causes problems between access of opened files which the game can’t access if you have it opened to read or write. However I CAN create classes of objects which I can make dynamic and persist across server restarts. see the video here.
youtu.be/ILxLwXlZ_co
and implementation of this here.
youtu.be/8hNV_CWuU8A
Now this works OK but access to the terrain is not possible. I can not import the existing static models from the chunk database so everything is purely dynamic. No problem for a few connections but when large amounts of data has to be transmitted every time one enters the AOI is leads to large spikes of lag.
The solution is to be able to write the data out to the chunk database but has to be done at server start and patched to the client. Once it written to the chunk it become no longer useable which is unacceptable so it was my intention to make a fully functional demonstration and seek funding to buy the source and rework the entire thing to fit my sandbox design.
However, low and behold BWT sold the engine out to Wargaming a year ago and they removed the engine not only from the indie but commercial sales too so I stopped working on it since it was doomed to fail.
I recently decided to instead of devote all my free time to just gaming I would spend some of my time setting up a cluster of servers and use Massiv (open source which seems to be abandoned) with the massiv engine as a clustering/streaming engine I can migrate most if the current design since the Massiv engine is very similar to the BW engine. But it lacks a client side engine.
In the current concept design the world is existing in a MySQL database of objects or entities which have their own scripts/classes and own definitions or structures.
The definition (structure) of the object contains a description which may hold the model used or could be a pointer to a list of models and have a second pointer to itself as to which ID of the list to use. The structure of the object most likely will hold position, scale and data which is necessary for its functionality such as which processes and data are allowed public and which processes and data are private . It is literally up to the design as to what the objects can do or what part of the object can be altered and/or accessed.
Because this is now a structured class which self initializes when activated by creation and passes its data to the engine. I have a dynamic class which can be altered through code instead of a static object.
The client needs to conform to the current specification or have a close enough design to allow migration of the current data without major rework of said data.