Questions about SRB2's netcode

Status
Not open for further replies.

Kaysakado

Member
(Can't be arsed to look through the source, and I want to see if something is possible before attempting it)

1. SRB2's netcode basically works by the client sending the button-press (and any relevant console commands) to the host, and then the host sending it to all the clients, right? (If the answer to this is no, ignore the rest of my post)

2. And so clag is caused because it takes time for the button-press to go to the host and back to the client, and the client doesn't actually move until they recieve the button-press they originally sent, right?

3. If so, would it be possible for a modified server-side EXE to stop a player from moving, for example, by ignoring the data sent by the client? If so, would this cause C-Fails?

4. In that case, what about even modifying the button-press sent back to the client so that they move differently? Would this cause c-fails?

Of course, I wouldn't use it for something like that, more like stuff like coloring names and muting people.

EDIT: Also, how does randomized stuff work? Does it come out differently for everyone and cause cfails, or is it just randomized server-side and sent out to all the clients?
 
Kaysakado said:
1. SRB2's netcode basically works by the client sending the button-press (and any relevant console commands) to the host, and then the host sending it to all the clients, right? (If the answer to this is no, ignore the rest of my post)
It's not exactly the button-press that's sent, but that's broadly right.

Kaysakado said:
2. And so clag is caused because it takes time for the button-press to go to the host and back to the client, and the client doesn't actually move until they recieve the button-press they originally sent, right?
Pretty much. Remember that everything is synchronised into tics, though.

Kaysakado said:
3. If so, would it be possible for a modified server-side EXE to stop a player from moving, for example, by ignoring the data sent by the client? If so, would this cause C-Fails?
Should be okay, although I haven't checked in detail.

Kaysakado said:
4. In that case, what about even modifying the button-press sent back to the client so that they move differently? Would this cause c-fails?
Ditto.

Kaysakado said:
Of course, I wouldn't use it for something like that, more like stuff like coloring names and muting people.
You probably wouldn't want to do those things at such a low level.

Kaysakado said:
EDIT: Also, how does randomized stuff work? Does it come out differently for everyone and cause cfails, or is it just randomized server-side and sent out to all the clients?
There's a table of 'random' numbers, and everyone agrees which one comes next.
 
Oogaland said:
Kaysakado said:
Of course, I wouldn't use it for something like that, more like stuff like coloring names and muting people.
You probably wouldn't want to do those things at such a low level.
What do you mean?

Oogaland said:
Kaysakado said:
EDIT: Also, how does randomized stuff work? Does it come out differently for everyone and cause cfails, or is it just randomized server-side and sent out to all the clients?
There's a table of 'random' numbers, and everyone agrees which one comes next.
What do you mean?
 
Computers are not capable of generating truly random numbers.
 
Kaysakado said:
Oogaland said:
Kaysakado said:
Of course, I wouldn't use it for something like that, more like stuff like coloring names and muting people.
You probably wouldn't want to do those things at such a low level.
What do you mean?
Don't mix game logic in with the network logic. For example, muting should be handled by the code that currently handles chat, not the packet-processing stuff.

Kaysakado said:
Oogaland said:
Kaysakado said:
EDIT: Also, how does randomized stuff work? Does it come out differently for everyone and cause cfails, or is it just randomized server-side and sent out to all the clients?
There's a table of 'random' numbers, and everyone agrees which one comes next.
What do you mean?
Code:
static byte rndtable[256] =
{
	0,   8, 109, 220, 222, 241, 149, 107,  75, 248, 254, 140,  16,  66,
	74,  21, 211,  47,  80, 242, 154,  27, 205, 128, 161,  89,  77,  36,
	95, 110,  85,  48, 212, 140, 211, 249,  22,  79, 200,  50,  28, 188,
	52, 140, 202, 120,  68, 145,  62,  70, 184, 190,  91, 197, 152, 224,
	149, 104,  25, 178, 252, 182, 202, 182, 141, 197,   4,  81, 181, 242,
	145,  42,  39, 227, 156, 198, 225, 193, 219,  93, 122, 175, 249,   0,
	175, 143,  70, 239,  46, 246, 163,  53, 163, 109, 168, 135,   2, 235,
	25,  92,  20, 145, 138,  77,  69, 166,  78, 176, 173, 212, 166, 113,
	94, 161,  41,  50, 239,  49, 111, 164,  70,  60,   2,  37, 171,  75,
	136, 156,  11,  56,  42, 146, 138, 229,  73, 146,  77,  61,  98, 196,
	135, 106,  63, 197, 195,  86,  96, 203, 113, 101, 170, 247, 181, 113,
	80, 250, 108,   7, 255, 237, 129, 226,  79, 107, 112, 166, 103, 241,
	24, 223, 239, 120, 198,  58,  60,  82, 128,   3, 184,  66, 143, 224,
	145, 224,  81, 206, 163,  45,  63,  90, 168, 114,  59,  33, 159,  95,
	28, 139, 123,  98, 125, 196,  15,  70, 194, 253,  54,  14, 109, 226,
	71,  17, 161,  93, 186,  87, 244, 138,  20,  52, 123, 251,  26,  36,
	17,  46,  52, 231, 232,  76,  31, 221,  84,  37, 216, 165, 212, 106,
	197, 242,  98,  43,  39, 175, 254, 145, 190,  84, 118, 222, 187, 136,
	120, 163, 236, 249
};
If you just called rand() for things that affect gameplay, you would indeed get c-fails.
 
Status
Not open for further replies.

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top