ich spiele gerade ein bischen mit RakNet rum und habe mir zum Test mal eine Server App und Client App gebaut.
Der Server soll alle 15ms die Simulation updaten, funzt mitm Timer auch ganz gut (ich mache ja noch nix :P ).
Nun sieht meine Hauptschleife im Moment wie folgt aus:
Code: Alles auswählen
_timer.Start();
RakNet::Packet *packet = 0;
DOUBLE timeElapsed = 0;
while(true)
{
#if _DEBUG
// um anwendung anzuhalten wenn ein Client kein heartbeat gesendet hat, um den Client zu debuggen ohne timeout zu bekommen
this->sendHeartbeat();
#endif
//! eingehende Packete verarbeiten
for(packet = _peer->Receive(); packet; _peer->DeallocatePacket(packet), packet = _peer->Receive())
{
this->handlePackets(packet);
}
// alle 15ms simulation und clients updaten
timeElapsed += _timer.GetElapsedTimeInMS();
if (timeElapsed >= 15)
{
#if _DEBUG
gf_ODS(gf_ToString(timeElapsed) + L"\r\n");
#endif
this->updateSimulation(timeElapsed);
this->updateClients(timeElapsed);
timeElapsed = 0;
}
}
Das heisst ich müsste alle eingehenden Pakete sowieso erstmal in ne Queue packen und dann verarbeiten?
Oder ist es unrealistisch das so fix gelesen wird?
Oder macht man das grundsätzlich anders?