I recently rewrote and improved some old software of mine, and figured the next step is to put it in the hands of people who might use it.
Protodata lets you write binary data using a textual markup language. I’ve found this really useful in game development when I want a custom format, would rather not use plain text or XML, and don’t want to invest the time to make a good custom editor. Protodata supports signed and unsigned integers, floating-point numbers, and Unicode strings, all with a choice of bit width and endianness.
Edit: here’s an example document describing a cube mesh.
# File endianness and magic number
big u8 "MESH"
# Mesh name, null-terminated
utf8 "Cube" u8 0
# Using an arbitrary-width integer for zero padding
u24 0
# Vertex count
u32 8
# Vertex data (x, y, z)
f32
+1.0 +1.0 -1.0
+1.0 -1.0 -1.0
-1.0 -1.0 -1.0
-1.0 +1.0 -1.0
+1.0 +1.0 +1.0
-1.0 +1.0 +1.0
-1.0 -1.0 +1.0
+1.0 -1.0 +1.0
# Number of faces
u32 6
# Face data (vertex count, vertex indices)
u32
4 { u16 0 1 2 3 } # Back
4 { u16 4 5 6 7 } # Front
4 { u16 0 4 7 1 } # Right
4 { u16 1 7 6 2 } # Bottom
4 { u16 2 6 5 3 } # Left
4 { u16 4 0 3 5 } # Top
Please tell me what you think and offer suggestions for improvement. ![]()