forked from Ports/perfect_dark
port: net: ignore UpdateFrames when reliable move is required
This commit is contained in:
1 parent
cbf65e53b9
commit
ee037c10ce
1 file changed
+27
-20
+27
-20
@@ -27,11 +27,13 @@ s32 g_NetMode = NETMODE_NONE;
|
|||||||
u32 g_NetServerUpdateRate = 1;
|
u32 g_NetServerUpdateRate = 1;
|
||||||
u32 g_NetServerInRate = 128 * 1024;
|
u32 g_NetServerInRate = 128 * 1024;
|
||||||
u32 g_NetServerOutRate = 128 * 1024;
|
u32 g_NetServerOutRate = 128 * 1024;
|
||||||
|
u32 g_NetServerPort = NET_DEFAULT_PORT;
|
||||||
|
|
||||||
u32 g_NetClientUpdateRate = 1;
|
u32 g_NetClientUpdateRate = 1;
|
||||||
u32 g_NetClientInRate = 128 * 1024;
|
u32 g_NetClientInRate = 128 * 1024;
|
||||||
u32 g_NetClientOutRate = 128 * 1024;
|
u32 g_NetClientOutRate = 128 * 1024;
|
||||||
|
|
||||||
u32 g_NetInterpTicks = 6;
|
u32 g_NetInterpTicks = 6;
|
||||||
u32 g_NetServerPort = NET_DEFAULT_PORT;
|
|
||||||
char g_NetLastJoinAddr[NET_MAX_ADDR + 1] = "127.0.0.1:27100";
|
char g_NetLastJoinAddr[NET_MAX_ADDR + 1] = "127.0.0.1:27100";
|
||||||
|
|
||||||
u32 g_NetTick = 0;
|
u32 g_NetTick = 0;
|
||||||
@@ -227,6 +229,9 @@ static inline s32 netClientNeedReliableMove(const struct netclient *cl)
|
|||||||
|
|
||||||
static inline s32 netClientNeedMove(const struct netclient *cl)
|
static inline s32 netClientNeedMove(const struct netclient *cl)
|
||||||
{
|
{
|
||||||
|
if (g_NetTick < g_NetNextUpdate) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
const struct netplayermove *move = &cl->outmove[0];
|
const struct netplayermove *move = &cl->outmove[0];
|
||||||
const struct netplayermove *moveprev = &cl->outmove[1];
|
const struct netplayermove *moveprev = &cl->outmove[1];
|
||||||
if (move->tick && cl->outmoveack >= move->tick) {
|
if (move->tick && cl->outmoveack >= move->tick) {
|
||||||
@@ -681,29 +686,31 @@ void netEndFrame(void)
|
|||||||
// send whatever messages have accumulated so far
|
// send whatever messages have accumulated so far
|
||||||
netFlushSendBuffers();
|
netFlushSendBuffers();
|
||||||
|
|
||||||
if (g_NetTick >= g_NetNextUpdate) {
|
if (g_NetLocalClient->state == CLSTATE_GAME && g_NetLocalClient->player && g_NetLocalClient->player->prop) {
|
||||||
if (g_NetLocalClient->state == CLSTATE_GAME && g_NetLocalClient->player && g_NetLocalClient->player->prop) {
|
if (g_NetMode == NETMODE_CLIENT) {
|
||||||
if (g_NetMode == NETMODE_CLIENT) {
|
if (g_NetTick > 100) {
|
||||||
|
netClientRecordMove(g_NetLocalClient, g_NetLocalClient->player);
|
||||||
|
const bool needrel = netClientNeedReliableMove(g_NetLocalClient);
|
||||||
|
if (needrel || netClientNeedMove(g_NetLocalClient)) {
|
||||||
|
netmsgClcMoveWrite(needrel ? &g_NetMsgRel : &g_NetMsg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (g_NetNextUpdate <= g_NetTick) {
|
||||||
g_NetNextUpdate = g_NetTick + g_NetClientUpdateRate;
|
g_NetNextUpdate = g_NetTick + g_NetClientUpdateRate;
|
||||||
if (g_NetTick > 100) {
|
}
|
||||||
netClientRecordMove(g_NetLocalClient, g_NetLocalClient->player);
|
} else {
|
||||||
const bool needrel = netClientNeedReliableMove(g_NetLocalClient);
|
for (s32 i = 0; i < g_NetMaxClients; ++i) {
|
||||||
if (needrel || netClientNeedMove(g_NetLocalClient)) {
|
struct netclient *cl = &g_NetClients[i];
|
||||||
netmsgClcMoveWrite(needrel ? &g_NetMsgRel : &g_NetMsg);
|
if (cl->state >= CLSTATE_GAME && cl->player) {
|
||||||
|
netClientRecordMove(cl, cl->player);
|
||||||
|
const bool needrel = netClientNeedReliableMove(cl);
|
||||||
|
if (needrel || netClientNeedMove(cl)) {
|
||||||
|
netmsgSvcPlayerMoveWrite(needrel ? &g_NetMsgRel : &g_NetMsg, cl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
|
if (g_NetNextUpdate <= g_NetTick) {
|
||||||
g_NetNextUpdate = g_NetTick + g_NetServerUpdateRate;
|
g_NetNextUpdate = g_NetTick + g_NetServerUpdateRate;
|
||||||
for (s32 i = 0; i < g_NetMaxClients; ++i) {
|
|
||||||
struct netclient *cl = &g_NetClients[i];
|
|
||||||
if (cl->state >= CLSTATE_GAME && cl->player) {
|
|
||||||
netClientRecordMove(cl, cl->player);
|
|
||||||
const bool needrel = netClientNeedReliableMove(cl);
|
|
||||||
if (needrel || netClientNeedMove(cl)) {
|
|
||||||
netmsgSvcPlayerMoveWrite(needrel ? &g_NetMsgRel : &g_NetMsg, cl);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user