We are now using udp again

This commit is contained in:
Jocke
2016-03-07 16:06:10 +01:00
parent 078d6eb712
commit 68a88ed756
4 changed files with 60 additions and 58 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ public:
void Connect(std::string address, int port); void Connect(std::string address, int port);
void Update() override; void Update() override;
private: private:
//UDPClient m_Unreliable; UDPClient m_Unreliable;
TCPClient m_Reliable; TCPClient m_Reliable;
std::vector<Events::PlayerSpawned> m_PlayerSpawnEvents; std::vector<Events::PlayerSpawned> m_PlayerSpawnEvents;
void parseSpawnEvents(); void parseSpawnEvents();
+1 -1
View File
@@ -36,7 +36,7 @@ public:
private: private:
// Network channels // Network channels
TCPServer m_Reliable; TCPServer m_Reliable;
//UDPServer m_Unreliable; UDPServer m_Unreliable;
UDPServer m_ServerlistRequest; UDPServer m_ServerlistRequest;
// dont forget to set these in the childrens receive logic // dont forget to set these in the childrens receive logic
boost::asio::ip::address m_Address; boost::asio::ip::address m_Address;
+16 -14
View File
@@ -49,16 +49,17 @@ void Client::Connect(std::string address, int port)
void Client::Update() void Client::Update()
{ {
m_EventBroker->Process<Client>(); m_EventBroker->Process<Client>();
//while (m_Unreliable.IsSocketAvailable()) { while (m_Unreliable.IsSocketAvailable()) {
// // Packet will get real data in receive // Packet will get real data in receive
// Packet packet(MessageType::Invalid); Packet packet(MessageType::Invalid);
// m_Unreliable.Receive(packet); m_Unreliable.Receive(packet);
// if (packet.GetMessageType() == MessageType::Connect) { if (packet.GetMessageType() == MessageType::Connect) {
// parseUDPConnect(packet); parseUDPConnect(packet);
// } else { } else {
// parseMessageType(packet); parseMessageType(packet);
// } }
//} }
while (m_Reliable.IsSocketAvailable()) { while (m_Reliable.IsSocketAvailable()) {
// Packet will get real data in receive // Packet will get real data in receive
Packet packet(MessageType::Invalid); Packet packet(MessageType::Invalid);
@@ -162,6 +163,7 @@ void Client::parseMessageType(Packet& packet)
void Client::parseUDPConnect(Packet& packet) void Client::parseUDPConnect(Packet& packet)
{ {
// Map ServerEntityID and your PlayerID // Map ServerEntityID and your PlayerID
// TODO: If this is not received send a new connect message.
LOG_INFO("I be connected PogChamp"); LOG_INFO("I be connected PogChamp");
} }
@@ -179,12 +181,12 @@ void Client::parseTCPConnect(Packet& packet)
m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id
// parse player id and other stuff // parse player id and other stuff
m_PlayerID = packet.ReadPrimitive<int>(); m_PlayerID = packet.ReadPrimitive<int>();
m_PlayerID = packet.ReadPrimitive<int>();
LOG_INFO("A Player connected"); LOG_INFO("A Player connected");
// TODO: If this is not received send a new connect message.
Packet UnreliablePacket(MessageType::Connect, m_SendPacketID); Packet UnreliablePacket(MessageType::Connect, m_SendPacketID);
// Add player id and other stuff // Add player id and other stuff
packet.WritePrimitive(m_PlayerID); packet.WritePrimitive(m_PlayerID);
// m_Unreliable.Send(packet); m_Unreliable.Send(packet);
// LOG_INFO("Sent UDP Connect Server"); // LOG_INFO("Sent UDP Connect Server");
} }
@@ -483,7 +485,7 @@ bool Client::OnInputCommand(const Events::InputCommand & e)
if (e.Command == "ConnectToServer") { // Connect for now if (e.Command == "ConnectToServer") { // Connect for now
if (e.Value > 0) { if (e.Value > 0) {
m_Reliable.Connect(m_PlayerName, m_Address, m_Port); m_Reliable.Connect(m_PlayerName, m_Address, m_Port);
// m_Unreliable.Connect(m_PlayerName, m_Address, m_Port); m_Unreliable.Connect(m_PlayerName, m_Address, m_Port);
} }
//LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID); //LOG_DEBUG("Client::OnInputCommand: Command is %s. Value is %f. PlayerID is %i.", e.Command.c_str(), e.Value, e.PlayerID);
return true; return true;
@@ -620,7 +622,7 @@ void Client::sendLocalPlayerTransform()
packet.WritePrimitive((int)cAssaultWeapon["Ammo"]); packet.WritePrimitive((int)cAssaultWeapon["Ammo"]);
} }
m_Reliable.Send(packet); m_Unreliable.Send(packet);
} }
void Client::identifyPacketLoss() void Client::identifyPacketLoss()
+42 -42
View File
@@ -47,19 +47,19 @@ void Server::Update()
} }
} }
//PlayerDefinition pd; PlayerDefinition pd;
//while (m_Unreliable.IsSocketAvailable()) { while (m_Unreliable.IsSocketAvailable()) {
// // Packet will get real data in receive // Packet will get real data in receive
// Packet packet(MessageType::Invalid); Packet packet(MessageType::Invalid);
// m_Unreliable.Receive(packet, pd); m_Unreliable.Receive(packet, pd);
// m_Address = pd.Endpoint.address(); m_Address = pd.Endpoint.address();
// m_Port = pd.Endpoint.port(); m_Port = pd.Endpoint.port();
// if (packet.GetMessageType() == MessageType::Connect) { if (packet.GetMessageType() == MessageType::Connect) {
// parseUDPConnect(packet); parseUDPConnect(packet);
// } else { } else {
// parseMessageType(packet); parseMessageType(packet);
// } }
//} }
while (m_ServerlistRequest.IsSocketAvailable()) { while (m_ServerlistRequest.IsSocketAvailable()) {
Packet packet(MessageType::Invalid); Packet packet(MessageType::Invalid);
@@ -164,7 +164,7 @@ void Server::unreliableBroadcast(Packet& packet)
{ {
for (auto& kv : m_ConnectedPlayers) { for (auto& kv : m_ConnectedPlayers) {
packet.ChangePacketID(kv.second.PacketID); packet.ChangePacketID(kv.second.PacketID);
// m_Unreliable.Send(packet, kv.second); m_Unreliable.Send(packet, kv.second);
} }
} }
@@ -174,7 +174,7 @@ void Server::sendSnapshot()
Packet packet(MessageType::Snapshot); Packet packet(MessageType::Snapshot);
addInputCommandsToPacket(packet); addInputCommandsToPacket(packet);
addPlayersToPacket(packet, EntityID_Invalid); addPlayersToPacket(packet, EntityID_Invalid);
reliableBroadcast(packet); unreliableBroadcast(packet);
} }
void Server::addInputCommandsToPacket(Packet& packet) void Server::addInputCommandsToPacket(Packet& packet)
@@ -322,30 +322,30 @@ void Server::checkForTimeOuts()
} }
} }
//void Server::parseUDPConnect(Packet & packet) void Server::parseUDPConnect(Packet & packet)
//{ {
// Pop packetSize, sequenceNumber and packetsInSequence. //Pop packetSize, sequenceNumber and packetsInSequence.
//packet.ReadPrimitive<int>(); packet.ReadPrimitive<int>();
//packet.ReadPrimitive<int>(); packet.ReadPrimitive<int>();
//packet.ReadPrimitive<int>(); packet.ReadPrimitive<int>();
// int messageType = packet.ReadPrimitive<int>(); int messageType = packet.ReadPrimitive<int>();
// // Read packet ID // Read packet ID
// m_PreviousPacketID = m_PacketID; // Set previous packet id m_PreviousPacketID = m_PacketID; // Set previous packet id
// m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id m_PacketID = packet.ReadPrimitive<int>(); //Read new packet id
// // parse player id and other stuff // parse player id and other stuff
// PlayerID playerID = packet.ReadPrimitive<int>(); PlayerID playerID = packet.ReadPrimitive<int>();
// if (!EntityWrapper(m_World, playerID).Valid()) { if (!EntityWrapper(m_World, playerID).Valid()) {
//
// } }
// // Do something here? // Do something here?
// boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port); boost::asio::ip::udp::endpoint endpoint(m_Address, m_Port);
// m_ConnectedPlayers.at(playerID).Endpoint = endpoint; m_ConnectedPlayers.at(playerID).Endpoint = endpoint;
// LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str()); LOG_INFO("parseUDPConnect: Spectator \"%s\" connected on IP: %s", m_ConnectedPlayers.at(playerID).Name.c_str(), m_ConnectedPlayers.at(playerID).Endpoint.address().to_string().c_str());
// // Send a message to the player that connected // Send a message to the player that connected
// Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID); Packet connnectPacket(MessageType::Connect, m_ConnectedPlayers.at(playerID).PacketID);
// m_Unreliable.Send(connnectPacket); m_Unreliable.Send(connnectPacket);
// LOG_INFO("UDP Connect sent to client"); LOG_INFO("UDP Connect sent to client");
//} }
void Server::parseTCPConnect(Packet & packet) void Server::parseTCPConnect(Packet & packet)
{ {
@@ -656,9 +656,9 @@ bool Server::shouldSendToClient(EntityWrapper childEntity)
return true; return true;
} }
} }
return childEntity.HasComponent("Player") return childEntity.HasComponent("Player")
|| childEntity.FirstParentWithComponent("Player").Valid() || childEntity.FirstParentWithComponent("Player").Valid()
|| childEntity.HasComponent("CapturePoint") || childEntity.HasComponent("CapturePoint")
|| childEntity.HasComponent("HealthPickup") || childEntity.HasComponent("HealthPickup")
|| childEntity.HasComponent("AmmoPickup") || childEntity.HasComponent("AmmoPickup")
|| childEntity.HasComponent("ScoreScreen") || childEntity.HasComponent("ScoreScreen")
@@ -681,7 +681,7 @@ PlayerID Server::getPlayerIDFromEndpoint()
PlayerID Server::getPlayerIDFromEntityID(EntityID entityID) PlayerID Server::getPlayerIDFromEntityID(EntityID entityID)
{ {
for(auto& kv : m_ConnectedPlayers) { for (auto& kv : m_ConnectedPlayers) {
if (entityID == kv.second.EntityID) { if (entityID == kv.second.EntityID) {
return kv.first; return kv.first;
} }