[25.07.2016]
After two months of intense labour, I have finally launched Hypersomnia again!
Throughout this seemingly neverending treatment, the following has been achieved:
Still, the underlying concepts are so orderly that I am destined to once write a treatise thereupon.
I carry out this architecture in hopes that it works in favour of knowledge of all.
I shall also announce that Linux port of Hypersomnia is on the way!
My dear high school friend [Adam], who happens to be a profound enthusiast of the OS, has bravely undertaken this task of migration.
He delved promptly into my inscrutable codebase and flicked through semantics recondite to say the least;
as a result, around half of the framework compiles successfully with GCC.
I plan to support both the server and the client on Windows and Linux systems.
Last but not least, I can already save and load the entire game state!
(Profiler view enabled)
I did some testing and it occurs that loading a 52 MB universe takes around 0.64s,
whereas saving it can be as fast as 0.25s.
Additionally, duplication of the entire cosmos is a trivial operation in the new architecture: in particular, it ain't some brutal serialization/deserialization cycle.
This is important for frequent backups server-side, for delta compression and for client-side prediction.
All of these mechanisms need to maintain a single or multiple copies of the cosmos, perhaps for further manipulation.
Since serialization is up and running, I may now revisit the world of networking.
[Some of the 3rdparties changed!]
I made heavy use of Git Submodules to properly link the repos and now the project compiles from scratch using no prebuilt libraries.
We Carried An Entire Universe Across A Bridge Tonight.
Stay tuned for more.
Throughout this seemingly neverending treatment, the following has been achieved:
- Made significant state of the simulation devoid of pointers and references (except containers), enabling trivial duplication and serialization.
- Provided constness guarantees for access to entities and components, ensuring that the model stays unalterable during rendering-time, further enforcing determinism of the simulation.
- The concerns of an entity and definition thereof were gracefully disentangled owing to my paradigm.
- Practically the whole entity-component-system became type-safe (on the fundamental level).
- I learned a whole lot of metaprogramming which may or may not be considered an advantage.
- Unfortunately, GUI is only partially refactored. Static polymorphism turns out to be a handful, so GUI is temporarily disabled. I will come back later to it.
Still, the underlying concepts are so orderly that I am destined to once write a treatise thereupon.
I carry out this architecture in hopes that it works in favour of knowledge of all.
I shall also announce that Linux port of Hypersomnia is on the way!
My dear high school friend [Adam], who happens to be a profound enthusiast of the OS, has bravely undertaken this task of migration.
He delved promptly into my inscrutable codebase and flicked through semantics recondite to say the least;
as a result, around half of the framework compiles successfully with GCC.
I plan to support both the server and the client on Windows and Linux systems.
Last but not least, I can already save and load the entire game state!
(Profiler view enabled)
I did some testing and it occurs that loading a 52 MB universe takes around 0.64s,
whereas saving it can be as fast as 0.25s.
Additionally, duplication of the entire cosmos is a trivial operation in the new architecture: in particular, it ain't some brutal serialization/deserialization cycle.
This is important for frequent backups server-side, for delta compression and for client-side prediction.
All of these mechanisms need to maintain a single or multiple copies of the cosmos, perhaps for further manipulation.
Since serialization is up and running, I may now revisit the world of networking.
[Some of the 3rdparties changed!]
I made heavy use of Git Submodules to properly link the repos and now the project compiles from scratch using no prebuilt libraries.
We Carried An Entire Universe Across A Bridge Tonight.
Stay tuned for more.