1 |
I think you are confusing some things here, @Shadowfury333.
|
1 |
I think you are confusing some things here, @Shadowfury333.
|
2 |
\n
|
2 |
\n
|
3 |
Spring is not peer-to-peer (so no quadratic scaling of network connections) because every packet is sent from one client to the spring host and then from the host to all clients. The spring server still doesn't run the simulation and so has no clue what's going on until a client says "I won!", so similarly all clients are equally "right" due to a lack of a canonical state.
|
3 |
Spring is not peer-to-peer (so no quadratic scaling of network connections) because every packet is sent from one client to the spring host and then from the host to all clients. The spring server still doesn't run the simulation and so has no clue what's going on until a client says "I won!", so similarly all clients are equally "right" due to a lack of a canonical state.
|
4 |
(I apologize for calling everything "spring server" and "spring host" even if there's special names for them).
|
4 |
(I apologize for calling everything "spring server" and "spring host" even if there's special names for them).
|
5 |
\n
|
5 |
\n
|
6 |
Spring uses synced simulation. In video encoding terms, that's basically purely P frames.
|
6 |
Spring uses synced simulation. In video encoding terms, that's basically purely P frames.
|
7 |
Since
transferring
the
full
game
state
after
every
action
is
infeasible
for
virtually
any
"complex"
multiplayer
game
(
you
can
probably
get
away
with
it
in
chess
or
other
turn
based
games)
,
almost
every
contemporary
multiplayer
game
relies
on
synced
simulation
to
a
certain
extent,
although
most
newer
games
include
having
certain
states
transmitted
for
replay
(
and
anti-desync)
purposes.
Examples
include
SC2,
DotA
2,
Path
of
Exile
and
many
more.
|
7 |
Since
transferring
the
full
game
state
after
every
action
is
infeasible
for
virtually
any
real
time
multiplayer
game
(
you
can
probably
get
away
with
it
in
turn
based
games
like
chess)
,
almost
every
contemporary
multiplayer
game
relies
on
synced
simulation
to
a
certain
extent,
although
most
newer
games
include
having
certain
states
transmitted
for
replay
(
and
anti-desync)
purposes.
Examples
include
SC2,
DotA
2,
Path
of
Exile
and
many
more.
|
8 |
In video encoding terms, that's what I frames are used for.
|
8 |
In video encoding terms, that's what I frames are used for.
|
9 |
\n
|
9 |
\n
|
10 |
Running synced simulations in a peer-to-peer environment sounds like hell to me. If you have a server, then all packets are distributed in a defined order (and are thus received by the clients in a set order). Not sure how P2P would handle that.
|
10 |
Running synced simulations in a peer-to-peer environment sounds like hell to me. If you have a server, then all packets are distributed in a defined order (and are thus received by the clients in a set order). Not sure how P2P would handle that.
|
11 |
(Note that this implies that each client is only allowed to execute actions after the host has received the respective packet and returned it, which means that the game can feel "stiff" to control if your latency is higher. Client prediction is a common technique to work around this).
|
11 |
(Note that this implies that each client is only allowed to execute actions after the host has received the respective packet and returned it, which means that the game can feel "stiff" to control if your latency is higher. Client prediction is a common technique to work around this).
|
12 |
\n
|
12 |
\n
|
13 |
\n
|
13 |
\n
|
14 |
My point is, P2P or dedicated hosting are not directly related to how you run your simulation of the game. But spring does not use P2P, and thus P2P is not the reason for desyncs.
|
14 |
My point is, P2P or dedicated hosting are not directly related to how you run your simulation of the game. But spring does not use P2P, and thus P2P is not the reason for desyncs.
|
15 |
\n
|
15 |
\n
|
16 |
Basically, you can run synced simulations with or without the server also running the simulation (I reckon TF2 hosts would run a simulation of their own, but I'm not sure). Spring (and e.g. Warcraft 3) doesn't, so desync is an issue (and replays can only play forward).
|
16 |
Basically, you can run synced simulations with or without the server also running the simulation (I reckon TF2 hosts would run a simulation of their own, but I'm not sure). Spring (and e.g. Warcraft 3) doesn't, so desync is an issue (and replays can only play forward).
|
17 |
\n
|
17 |
\n
|
18 |
Do you have an example of a game that uses P2P hosting? I'd be interested to learn about how to maintain consistency in that...
|
18 |
Do you have an example of a game that uses P2P hosting? I'd be interested to learn about how to maintain consistency in that...
|