voxelize 0.7.11

A fast multiplayer voxel engine.
Documentation
syntax = "proto3";
package protocol;

message Geometry {
  repeated float positions = 1 [ packed = true ];
  repeated float uvs = 2 [ packed = true ];
  repeated int32 indices = 4 [ packed = true ];
  repeated int32 lights = 5 [ packed = true ];
}

message Mesh {
  int32 level = 1;
  Geometry opaque = 2;
  Geometry transparent = 3;
}

message Chunk {
  int32 x = 1;
  int32 z = 2;
  string id = 3;
  repeated Mesh meshes = 4;
  repeated uint32 voxels = 5 [ packed = true ];
  repeated uint32 lights = 6 [ packed = true ];
}

message Vector3 {
  float x = 1;
  float y = 2;
  float z = 3;
}

message Peer {
  string id = 1;
  string username = 2;
  Vector3 position = 3;
  Vector3 direction = 4;
}

message Entity {
  string id = 1;
  string type = 2;
  string metadata = 6;
}

message Update {
  int32 vx = 1;
  int32 vy = 2;
  int32 vz = 3;
  uint32 voxel = 4;
  uint32 light = 5;
}

message ChatMessage {
  enum Type {
    ERROR = 0;
    SERVER = 1;
    PLAYER = 2;
    INFO = 3;
  }

  Type type = 1;
  string sender = 2;
  string body = 3;
}

message Message {
  enum Type {
    INIT = 0;
    JOIN = 1;
    LEAVE = 2;
    ERROR = 3;
    PEER = 4;
    ENTITY = 5;
    LOAD = 6;
    UNLOAD = 7;
    UPDATE = 8;
    METHOD = 9;
    CHAT = 10;
  }

  Type type = 1;
  string json = 2;
  string text = 3;

  ChatMessage chat = 4;

  repeated Peer peers = 5;
  repeated Entity entities = 6;
  repeated Chunk chunks = 7;
  repeated Update updates = 8;
}