How that-sky-project/that-sky-colorsky-udp works
ColorSky is an ENet-based UDP server for Sky: Children of the Light. Clients connect and join a level; the server tracks peers and room membership, routes packet and game-message types, and relays multiplayer updates. A periodic tick synchronizes movement, level data, and snapshot acknowledgments. The graph reflects the documented host event dispatch and sampled packet/message dispatch; internal wiring for unsampled handlers is left out.
Main entry points: state.rs Server state · packet/mod.rs Packet dispatch · game_msg/mod.rs Game message dispatch · host.rs ENet host loop
Components 17
Transport
- ENet host loop
src/server/host.rs - Server state
src/server/state.rs - Peer tracking
src/server/peer.rs - Receive handling
src/server/receive.rs
Wire Protocol
- Packet codec
src/protocol/packet.rs - Game message codec
src/protocol/game_msg/mod.rs
Room Handling
- Packet dispatch
src/server/packet/mod.rs - Join handling
src/server/packet/join.rs - Level changes
src/server/packet/level_update.rs
Multiplayer Sync
- Game message dispatch
src/server/game_msg/mod.rs - RPC relay
src/server/game_msg/net_rpc.rs - Player state
src/server/game_msg/player_state.rs - Level data
src/server/game_msg/level.rs - Snapshot acknowledgments
src/server/game_msg/snapshot_ack.rs - Snapshot compression
src/utils/snapshot.rs
Other components
- Game clients
- ENet library
Connections 20
- Game clients → ENet library: send datagrams
- ENet library → ENet host loop: deliver events
- ENet host loop → ENet library: create and flush
- ENet host loop → Server state: dispatch events
- ENet host loop → Server state: run sync ticks
- Server state → Receive handling: receive packets
- Receive handling → Packet codec: parse packets
- Server state → Peer tracking: track peers
- Server state → Packet dispatch: handle packets
- Packet dispatch → Join handling: handle joins
- Packet dispatch → Level changes: handle level changes
- Packet dispatch → Game message codec: parse game messages
- Packet dispatch → Game message dispatch: dispatch messages
- Game message dispatch → RPC relay: handle RPCs
- Game message dispatch → Player state: handle player state
- Game message dispatch → Level data: handle level data
- Game message dispatch → Snapshot acknowledgments: handle acknowledgments
- Player state → Snapshot compression: compress state
- Level data → Snapshot compression: compress level data
- Server state → Game clients: send updates