We are now using udp again
This commit is contained in:
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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)
|
||||||
{
|
{
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user