我在 Proto3 中有一个消息结构,我希望能够发送具有相同类型定义的多个项目。请看以下示例
syntax = "proto3";
message Player {
uint32 id = 1;
uint32 x_pos = 2;
uint32 y_pos = 3;
PlayerColour colour = 4;
}
enum PlayerColour {
colour_unspecified = 0;
colour_green = 1;
colour_white = 2;
colour_gold = 3;
}
message AllPlayers {
Player player_1 = 1;
Player player_2 = 2;
Player player_3 = 3;
Player player_4 = 4;
}
如您所见,此结构预定义了单个消息中可以通信的玩家数量。我很好奇,有没有办法让实例数量可变?
即,如果只有一名玩家的数据发生变化,则发送的消息仅包含玩家参数的一个实例。或者,如果在给定时刻只有 2 名玩家在玩游戏,则不会浪费带宽发送未使用的数据包(空白的 player_3 和 player_4 实例)这将大大减少传输此数据所需的总带宽。
有什么建议吗?