Expanded network protocol, read more

Not really doing much, just busywork with the server's handlers.

I've tweaked the TODO tags as well.
This commit is contained in:
Kayne Ruse
2015-02-13 02:05:10 +11:00
parent bad6cc2fab
commit ca2d4c9217
32 changed files with 196 additions and 184 deletions
@@ -34,14 +34,11 @@ struct CharacterPacket : SerialPacketBase {
//the owner
int accountIndex;
//TODO: Authentication token?
//location
int roomIndex;
Vector2 origin;
Vector2 motion;
//TODO: gameplay components: equipment, items, buffs, debuffs...
};
void serializeCharacter(void* buffer, CharacterPacket* packet);
@@ -28,6 +28,7 @@ struct ClientPacket : SerialPacketBase {
int clientIndex;
int accountIndex;
char username[PACKET_STRING_SIZE];
//TODO: (9) password, auth token
};
void serializeClient(void* buffer, ClientPacket* packet);
@@ -44,8 +44,6 @@ void serializeMonster(void* buffer, MonsterPacket* packet) {
serialCopy(&buffer, &packet->origin.y, sizeof(double));
serialCopy(&buffer, &packet->motion.x, sizeof(double));
serialCopy(&buffer, &packet->motion.y, sizeof(double));
//TODO: attack data
}
void deserializeMonster(void* buffer, MonsterPacket* packet) {
@@ -69,6 +67,4 @@ void deserializeMonster(void* buffer, MonsterPacket* packet) {
deserialCopy(&buffer, &packet->origin.y, sizeof(double));
deserialCopy(&buffer, &packet->motion.x, sizeof(double));
deserialCopy(&buffer, &packet->motion.y, sizeof(double));
//TODO: attack data
}
@@ -38,8 +38,6 @@ struct MonsterPacket : SerialPacketBase {
int roomIndex;
Vector2 origin;
Vector2 motion;
//TODO: attack data
};
void serializeMonster(void* buffer, MonsterPacket* packet);
+1 -1
View File
@@ -34,7 +34,7 @@
typedef SerialPacketBase SerialPacket;
//DOCS: NETWORK_VERSION is used to discern compatible servers and clients
constexpr int NETWORK_VERSION = 20150205;
constexpr int NETWORK_VERSION = 20150213;
union MaxPacket {
CharacterPacket a;
+46 -46
View File
@@ -27,10 +27,9 @@
* valid data, but it will still be carried in that packet's format.
*/
//TODO: This needs to be smoothed out
enum class SerialPacketType {
//default: there is something wrong
NONE = 0,
NONE,
//-------------------------
//ServerPacket
@@ -38,12 +37,12 @@ enum class SerialPacketType {
//-------------------------
//heartbeat
PING = 1,
PONG = 2,
PING,
PONG,
//Used for finding available servers
BROADCAST_REQUEST = 3,
BROADCAST_RESPONSE = 4,
BROADCAST_REQUEST,
BROADCAST_RESPONSE,
//-------------------------
//ClientPacket
@@ -51,24 +50,24 @@ enum class SerialPacketType {
//-------------------------
//Connecting to a server as a client
JOIN_REQUEST = 5,
JOIN_RESPONSE = 6,
JOIN_REQUEST,
JOIN_RESPONSE,
//disconnect from the server
DISCONNECT_REQUEST = 7,
DISCONNECT_RESPONSE = 8,
DISCONNECT_FORCED = 9,
DISCONNECT_REQUEST,
DISCONNECT_RESPONSE,
ADMIN_DISCONNECT_FORCED,
//load the account
LOGIN_REQUEST = 10,
LOGIN_RESPONSE = 11,
LOGIN_REQUEST,
LOGIN_RESPONSE,
//unload the account
LOGOUT_REQUEST = 12,
LOGOUT_RESPONSE = 13,
LOGOUT_REQUEST,
LOGOUT_RESPONSE,
//shut down the server
SHUTDOWN_REQUEST = 14,
ADMIN_SHUTDOWN_REQUEST,
//-------------------------
//RegionPacket
@@ -76,32 +75,32 @@ enum class SerialPacketType {
//-------------------------
//map data
REGION_REQUEST = 15, //NOTE: technically a query
REGION_CONTENT = 16,
REGION_REQUEST,
REGION_CONTENT,
//-------------------------
//CharacterPacket
// character index,
// handle, avatar,
// account index (owner),
// room index, origin, motion,
// statistics
// room index, origin, motion
//-------------------------
//character management
CHARACTER_CREATE = 17,
CHARACTER_DELETE = 18,
CHARACTER_LOAD = 19,
CHARACTER_UNLOAD = 20,
CHARACTER_CREATE,
CHARACTER_DELETE,
CHARACTER_LOAD,
CHARACTER_UNLOAD,
//find out info from the server
QUERY_CHARACTER_EXISTS = 21,
QUERY_CHARACTER_STATS = 22,
QUERY_CHARACTER_LOCATION = 23,
QUERY_CHARACTER_EXISTS,
QUERY_CHARACTER_STATS,
QUERY_CHARACTER_LOCATION,
//set the info in the server
CHARACTER_MOVEMENT = 24,
CHARACTER_ATTACK = 25,
CHARACTER_MOVEMENT,
CHARACTER_ATTACK,
CHARACTER_DAMAGE,
//admin control
// ADMIN_SET_CHARACTER_ORIGIN,
@@ -109,20 +108,21 @@ enum class SerialPacketType {
//-------------------------
//MonsterPacket
// monster index,
// handle, avatar, hitbox
// handle, avatar
// bounds
// room index, origin, motion
// TODO: attack data
//-------------------------
MONSTER_CREATE = 26,
MONSTER_DELETE = 27,
MONSTER_CREATE,
MONSTER_DELETE,
QUERY_MONSTER_EXISTS = 28, //a list of monsters in a room
QUERY_MONSTER_STATS = 29, //statistics of a specific monster type or instance
QUERY_MONSTER_LOCATION = 30, //umm...
QUERY_MONSTER_EXISTS,
QUERY_MONSTER_STATS,
QUERY_MONSTER_LOCATION,
MONSTER_MOVEMENT = 31, //monster movement
MONSTER_ATTACK = 32,
MONSTER_MOVEMENT,
MONSTER_ATTACK,
MONSTER_DAMAGE,
//-------------------------
//TextPacket
@@ -130,21 +130,21 @@ enum class SerialPacketType {
//-------------------------
//general speech
TEXT_BROADCAST = 33,
TEXT_BROADCAST,
//rejection/error messages
JOIN_REJECTION = 34,
LOGIN_REJECTION = 35,
REGION_REJECTION = 36,
CHARACTER_REJECTION = 37,
MONSTER_REJECTION = 38,
SHUTDOWN_REJECTION = 39,
JOIN_REJECTION,
LOGIN_REJECTION,
REGION_REJECTION,
CHARACTER_REJECTION,
MONSTER_REJECTION,
SHUTDOWN_REJECTION,
//-------------------------
//not used
//-------------------------
LAST = 40
LAST
};
#endif
+8 -4
View File
@@ -57,12 +57,12 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::JOIN_RESPONSE:
case SerialPacketType::DISCONNECT_REQUEST:
case SerialPacketType::DISCONNECT_RESPONSE:
case SerialPacketType::DISCONNECT_FORCED:
case SerialPacketType::ADMIN_DISCONNECT_FORCED:
case SerialPacketType::LOGIN_REQUEST:
case SerialPacketType::LOGIN_RESPONSE:
case SerialPacketType::LOGOUT_REQUEST:
case SerialPacketType::LOGOUT_RESPONSE:
case SerialPacketType::SHUTDOWN_REQUEST:
case SerialPacketType::ADMIN_SHUTDOWN_REQUEST:
serializeClient(buffer, static_cast<ClientPacket*>(packet));
break;
case SerialPacketType::REGION_REQUEST:
@@ -78,6 +78,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::QUERY_CHARACTER_LOCATION:
case SerialPacketType::CHARACTER_MOVEMENT:
case SerialPacketType::CHARACTER_ATTACK:
case SerialPacketType::CHARACTER_DAMAGE:
serializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
break;
case SerialPacketType::MONSTER_CREATE:
@@ -87,6 +88,7 @@ void serializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::QUERY_MONSTER_LOCATION:
case SerialPacketType::MONSTER_MOVEMENT:
case SerialPacketType::MONSTER_ATTACK:
case SerialPacketType::MONSTER_DAMAGE:
serializeMonster(buffer, static_cast<MonsterPacket*>(packet));
break;
case SerialPacketType::TEXT_BROADCAST:
@@ -117,12 +119,12 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::JOIN_RESPONSE:
case SerialPacketType::DISCONNECT_REQUEST:
case SerialPacketType::DISCONNECT_RESPONSE:
case SerialPacketType::DISCONNECT_FORCED:
case SerialPacketType::ADMIN_DISCONNECT_FORCED:
case SerialPacketType::LOGIN_REQUEST:
case SerialPacketType::LOGIN_RESPONSE:
case SerialPacketType::LOGOUT_REQUEST:
case SerialPacketType::LOGOUT_RESPONSE:
case SerialPacketType::SHUTDOWN_REQUEST:
case SerialPacketType::ADMIN_SHUTDOWN_REQUEST:
deserializeClient(buffer, static_cast<ClientPacket*>(packet));
break;
case SerialPacketType::REGION_REQUEST:
@@ -138,6 +140,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::QUERY_CHARACTER_LOCATION:
case SerialPacketType::CHARACTER_MOVEMENT:
case SerialPacketType::CHARACTER_ATTACK:
case SerialPacketType::CHARACTER_DAMAGE:
deserializeCharacter(buffer, static_cast<CharacterPacket*>(packet));
break;
case SerialPacketType::MONSTER_CREATE:
@@ -147,6 +150,7 @@ void deserializePacket(void* buffer, SerialPacketBase* packet) {
case SerialPacketType::QUERY_MONSTER_LOCATION:
case SerialPacketType::MONSTER_MOVEMENT:
case SerialPacketType::MONSTER_ATTACK:
case SerialPacketType::MONSTER_DAMAGE:
deserializeMonster(buffer, static_cast<MonsterPacket*>(packet));
break;
case SerialPacketType::TEXT_BROADCAST:
-1
View File
@@ -140,7 +140,6 @@ int UDPNetworkUtility::SendToAllChannels(void* data, int len) {
return sent;
}
//TODO: put a void* and int* parameter list here
int UDPNetworkUtility::Receive() {
memset(packet->data, 0, packet->maxlen);
int ret = SDLNet_UDP_Recv(socket, packet);