Tidal Tussle
A small game demo about fighting enemies off of a ship, utilising custom UDP networking with SDL
University grade: 95%
void ServerManager::Send(bitset<32> headerData,
vector<bitset<8>> packetData,
IPaddress address, int length) {
// Allocate packet sized to the data
UDPpacket* packet = SDLNet_AllocPacket(length);
if (!packet) {
std::cerr << "SDLNet_AllocPacket: "
<< SDLNet_GetError() << std::endl;
SDLNet_UDP_Close(socket);
SDL_Quit();
}
// Copy header to start of packet data
memcpy(packet->data, &headerData, 4);
// Iterate, copying each byte
for (int i = 0; i < packetData.size(); i++) {
memcpy(packet->data + 4 + i,
&packetData.at(i), 1);
}
packet->len = length + 1;
packet->address = address;
if (SDLNet_UDP_Send(socket, -1, packet) == 0) {
std::cerr << "SDLNet_UDP_Send: "
<< SDLNet_GetError() << std::endl;
}
}