FlatBuffers is an efficient cross platform serialization library for games and other memory constrained apps. It allows you to directly access serialized data without unpacking/parsing it first, while still having great forwards/backwards compatibility. Features: - Access to serialized data without parsing/unpacking - Memory efficiency and speed. The only memory needed to access your data is that of the buffer. - Flexible. Optional fields provides forwards and backwards compatibility. - Tiny code footprint. Small amounts of generated code, and just a single small header as the minimum dependency. - Strongly typed. Errors happen at compile time. - Convenient to use. Generated C++ code allows for terse access & construction code. - Cross platform code with no dependencies. Protocol Buffers is indeed relatively similar to FlatBuffers, with the primary difference being that FlatBuffers does not need a parsing/unpacking step to a secondary representation before you can access data, often coupled with per-object memory allocation. The code is an order of magnitude bigger, too. Protocol Buffers has neither optional text import/export nor schema language features like unions.