diff options
| author | untodesu <kirill@untode.su> | 2025-09-12 16:15:32 +0500 |
|---|---|---|
| committer | untodesu <kirill@untode.su> | 2025-09-12 16:15:32 +0500 |
| commit | 522a7514012da86f7b9643179f0763746f3b232e (patch) | |
| tree | 7c4ea8f03b6778572d59784dc28b600e3f8f2268 /game/shared | |
| parent | f210a86c1406ccc6dfd6f14181dd7a1274ee0de4 (diff) | |
| download | voxelius-522a7514012da86f7b9643179f0763746f3b232e.tar.bz2 voxelius-522a7514012da86f7b9643179f0763746f3b232e.zip | |
Protocol and versioning changes
Diffstat (limited to 'game/shared')
| -rw-r--r-- | game/shared/protocol.cc | 20 | ||||
| -rw-r--r-- | game/shared/protocol.hh | 11 |
2 files changed, 21 insertions, 10 deletions
diff --git a/game/shared/protocol.cc b/game/shared/protocol.cc index 576502e..7115807 100644 --- a/game/shared/protocol.cc +++ b/game/shared/protocol.cc @@ -21,7 +21,7 @@ ENetPacket* protocol::encode(const protocol::StatusRequest& packet, enet_uint32 {
write_buffer.reset();
write_buffer.write<std::uint16_t>(protocol::StatusRequest::ID);
- write_buffer.write<std::uint32_t>(packet.version);
+ write_buffer.write<std::uint32_t>(packet.game_version_major);
return write_buffer.to_packet(flags);
}
@@ -29,10 +29,12 @@ ENetPacket* protocol::encode(const protocol::StatusResponse& packet, enet_uint32 {
write_buffer.reset();
write_buffer.write<std::uint16_t>(protocol::StatusResponse::ID);
- write_buffer.write<std::uint32_t>(packet.version);
+ write_buffer.write<std::uint32_t>(packet.game_version_major);
write_buffer.write<std::uint16_t>(packet.max_players);
write_buffer.write<std::uint16_t>(packet.num_players);
write_buffer.write<std::string_view>(packet.motd);
+ write_buffer.write<std::uint32_t>(packet.game_version_minor);
+ write_buffer.write<std::uint32_t>(packet.game_version_patch);
return write_buffer.to_packet(flags);
}
@@ -40,11 +42,13 @@ ENetPacket* protocol::encode(const protocol::LoginRequest& packet, enet_uint32 f {
write_buffer.reset();
write_buffer.write<std::uint16_t>(protocol::LoginRequest::ID);
- write_buffer.write<std::uint32_t>(packet.version);
+ write_buffer.write<std::uint32_t>(packet.game_version_major);
write_buffer.write<std::uint64_t>(packet.voxel_registry_checksum);
write_buffer.write<std::uint64_t>(packet.item_registry_checksum);
write_buffer.write<std::uint64_t>(packet.password_hash);
write_buffer.write<std::string_view>(packet.username.substr(0, protocol::MAX_USERNAME));
+ write_buffer.write<std::uint32_t>(packet.game_version_minor);
+ write_buffer.write<std::uint32_t>(packet.game_version_patch);
return write_buffer.to_packet(flags);
}
@@ -268,26 +272,30 @@ void protocol::decode(entt::dispatcher& dispatcher, const ENetPacket* packet, EN switch(id) {
case protocol::StatusRequest::ID:
status_request.peer = peer;
- status_request.version = read_buffer.read<std::uint32_t>();
+ status_request.game_version_major = read_buffer.read<std::uint32_t>();
dispatcher.trigger(status_request);
break;
case protocol::StatusResponse::ID:
status_response.peer = peer;
- status_response.version = read_buffer.read<std::uint32_t>();
+ status_response.game_version_major = read_buffer.read<std::uint32_t>();
status_response.max_players = read_buffer.read<std::uint16_t>();
status_response.num_players = read_buffer.read<std::uint16_t>();
status_response.motd = read_buffer.read<std::string>();
+ status_response.game_version_minor = read_buffer.read<std::uint32_t>();
+ status_response.game_version_patch = read_buffer.read<std::uint32_t>();
dispatcher.trigger(status_response);
break;
case protocol::LoginRequest::ID:
login_request.peer = peer;
- login_request.version = read_buffer.read<std::uint32_t>();
+ login_request.game_version_major = read_buffer.read<std::uint32_t>();
login_request.voxel_registry_checksum = read_buffer.read<std::uint64_t>();
login_request.item_registry_checksum = read_buffer.read<std::uint64_t>();
login_request.password_hash = read_buffer.read<std::uint64_t>();
login_request.username = read_buffer.read<std::string>();
+ login_request.game_version_minor = read_buffer.read<std::uint32_t>();
+ login_request.game_version_patch = read_buffer.read<std::uint32_t>();
dispatcher.trigger(login_request);
break;
diff --git a/game/shared/protocol.hh b/game/shared/protocol.hh index 3133275..f0bdff6 100644 --- a/game/shared/protocol.hh +++ b/game/shared/protocol.hh @@ -14,7 +14,6 @@ constexpr static std::size_t MAX_USERNAME = 64; constexpr static std::size_t MAX_SOUNDNAME = 1024;
constexpr static std::uint16_t TICKRATE = 60;
constexpr static std::uint16_t PORT = 43103;
-constexpr static std::uint32_t VERSION = 15;
constexpr static std::uint8_t CHANNEL = 0;
} // namespace protocol
@@ -107,22 +106,26 @@ ENetPacket* make_dimension_info(const world::Dimension* dimension); } // namespace protocol::utils
struct protocol::StatusRequest final : public protocol::Base<0x0000> {
- std::uint32_t version;
+ std::uint32_t game_version_major; // renamed from 'version' in v16.x.x
};
struct protocol::StatusResponse final : public protocol::Base<0x0001> {
- std::uint32_t version;
+ std::uint32_t game_version_major; // renamed from 'version' in v16.x.x
std::uint16_t max_players;
std::uint16_t num_players;
std::string motd;
+ std::uint32_t game_version_minor { UINT32_MAX }; // added in v16.x.x
+ std::uint32_t game_version_patch { UINT32_MAX };
};
struct protocol::LoginRequest final : public protocol::Base<0x0002> {
- std::uint32_t version;
+ std::uint32_t game_version_major; // renamed from 'version' in v16.x.x
std::uint64_t voxel_registry_checksum;
std::uint64_t item_registry_checksum;
std::uint64_t password_hash;
std::string username;
+ std::uint32_t game_version_minor; // added in v16.x.x
+ std::uint32_t game_version_patch;
};
struct protocol::LoginResponse final : public protocol::Base<0x0003> {
|
