pluginagentmarketplace/custom-plugin-server-side-game-dev · Archived

data-serialization

Efficient data serialization for game networking including Protobuf, FlatBuffers, and custom binary

First seen Feb 17, 2026

Installation

$ npx skills add pluginagentmarketplace/custom-plugin-server-side-game-dev --skill data-serialization

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from pluginagentmarketplace/custom-plugin-server-side-game-dev.

npx skills add pluginagentmarketplace/custom-plugin-server-side-game-dev

Browse all from pluginagentmarketplace/custom-plugin-server-side-game-dev

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 1
License LICENSE
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version2.0.0

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 3,582 B
  • docs SUMMARY.md 125 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 3 installs

SKILL.md

Data Serialization for Games

Implement efficient serialization for low-latency game networking.

Format Comparison

Format Size Speed Schema Use Case
Protobuf Small Fast Required Most games
FlatBuffers Small Fastest Required Real-time
MsgPack Small Fast Optional Flexible
JSON Large Slow None Debug
Custom Binary Smallest Fastest Custom Ultra-low latency

Protocol Buffers

syntax = "proto3";

message PlayerState {
    uint32 player_id = 1;
    float x = 2;
    float y = 3;
    float z = 4;
    uint32 health = 5;
}

message GameUpdate {
    uint64 tick = 1;
    repeated PlayerState players = 2;
}
GameUpdate update;
update.set_tick(current_tick);
auto* player = update.add_players();
player->set_player_id(1);
player->set_x(pos.x);

std::string serialized;
update.SerializeToString(&serialized);

Custom Binary Format

struct PacketHeader {
    uint16_t type;
    uint16_t length;
    uint32_t sequence;
};

struct PlayerUpdate {
    uint32_t player_id;
    float position[3];
    uint16_t angle;  // Compressed rotation
    uint8_t flags;
};

void serialize(Buffer& buf, const PlayerUpdate& p) {
    buf.write_u32(htonl(p.player_id));
    for (int i = 0; i < 3; i++)
        buf.write_float(p.position[i]);
    buf.write_u16(htons(p.angle));
    buf.write_u8(p.flags);
}

Compression Techniques

Technique Savings Complexity
Delta 50-80% Medium
Quantization 30-50% Low
LZ4 50-70% Low

Troubleshooting

Common Failure Modes

Error Root Cause Solution
Parse error Version mismatch Schema versioning
Large packets No compression Enable delta/LZ4
Slow parsing JSON in hot path Use binary format
Corruption Byte order Use htonl/ntohl

Debug Checklist

// Check serialized size
std::string data;
message.SerializeToString(&data);
std::cout << "Size: " << data.size() << " bytes\n";

// Validate roundtrip
Message parsed;
parsed.ParseFromString(data);
assert(parsed.id() == message.id());

Unit Test Template

TEST(Serialization, RoundTrip) {
    PlayerState original{1, 10.0f, 20.0f, 30.0f, 100};

    std::string data;
    original.SerializeToString(&data);

    PlayerState parsed;
    parsed.ParseFromString(data);

    EXPECT_EQ(original.player_id(), parsed.player_id());
    EXPECT_FLOAT_EQ(original.x(), parsed.x());
}

Resources

  • assets/ - Schema templates
  • references/ - Format benchmarks