Expand the buffers implementation.

Reporter: fundies  |  Status: open  |  Last Modified: March 05, 2023, 05:36:16 am
# Better (de)serialization support for objects

The ENIGMA project uses a hierarchy of objects starting with object_basic, and
ending with the object the user creates to be used in-game to represent
entities. These objects have (de)serialization routines implemented for them,
with the compiler automatically generating the routines for the auto-generated objects
as well as user-defined ones. As it stands, the serialization framework
supports the builtin types (like int, bool, long, float) and a few custom
ones (like string, var and variant). However, the method used to implement
support for these is not very clean as it checks at compile time the type of each
argument against an if-else ladder, which is difficult to read and extend.

  • The project would make the serialization framework easier to use and extend by
    changing the way the serialize, serialize_into and deserialize functions
    work to dispatch to supported types implicitly without the need for an if-else
    ladder. This would mean that adding support for types would be as simple as
    implementing the three functions for them which would then be picked up by the
    system automatically.
  • The contributor would then implement support for additional data types like
    generic routines for map, vector and complex numbers. This would enable
    more easily serializing ENIGMA's internal state for use in sending state
    either across a network or into a file.

Mentors: Greg, Robert
Difficulty: Medium
Expected size: 175h
Skills required: C++ fundamentals (especially familiarity with templates and
template metaprogramming)


@fundies I am interested in it...

@fundies I am intrested in this one
@fundies i'm interested in this
@fundies I think I can do this.
Please sign in to post comments, or you can view this issue on GitHub.