# Ion-extras: game engine utilities

**URL:** <https://ziggit.dev/t/ion-extras-game-engine-utilities/6671>\
**Category:** Showcase\
**Tags:** game\
**Created:** [November 4, 2024, 2:21am UTC](https://ziggit.dev/t/ion-extras-game-engine-utilities/6671 "2024-11-04T02:21:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![kcbanner](https://ziggit.dev/user_avatar/ziggit.dev/kcbanner/32/1955_2.png) [@kcbanner](https://ziggit.dev/u/kcbanner)\
**Post date:** [November 4, 2024, 2:21am UTC](https://ziggit.dev/t/ion-extras-game-engine-utilities/6671/1 "2024-11-04T02:21:42Z")

</div>

I’ve been working on a game engine called `ion`, which isn’t ready to open source yet - mostly because the game code is somewhat intertwined with the engine as both are being built together.

However, many of the utilties in the engine I feel are mature enough to publish. I’ve published them here:

> **[GitHub - kcbanner/ion-extras: Open-source portions of the work-in-progress ion...](https://github.com/kcbanner/ion-extras)**
>
> Open-source portions of the work-in-progress ion game engine

- `relative`: Data structures that point to data that is relative to their own storage. Useful for creating memory-mappable variable length data structures.
- `serialize`: Mappable and non-mappable binary serialization with versioning support.
- `extra_data`: A similar concept to relative, but with all the trailing fields declared together, and a bit-packed lengths field.

Here are some real-world examples of it in use. The texture resource shows how the serialization / deserialization works, and the `RenderBundle` example demonstrates `ExtraData`: [ion-extras usage examples · GitHub](https://gist.github.com/kcbanner/6cd1c02eb7680019c108fa2b89376ced)

Here’s a preview of the engine that this code is used in:

[https://imgur.com/a/jk1IKVu](https://imgur.com/a/jk1IKVu)
