125
votes
Accepted
Is UDP still better than TCP for data-heavy realtime games?
No, UDP is still superior in terms of performance latency, and will always be faster, because of the philosophy of the 2 protocols - assuming your communication data was designed with UDP or any other ...
66
votes
What's the performance benefit of saving all logged in characters in MMOs in regular intervals?
This is not for performance. This is a failsafe. If the world saves every few minutes, then if something happens to the server and it shuts down everyone will only lose a few minutes' progress.
By ...
49
votes
Accepted
How to handle a large number of pickups in a MMO game
By simply only loading those parts of the world into memory which are close to the player. Anything else is suspended to hard drive. When there is a tiny object laying around two kilometers away, then ...
44
votes
How does delta compression reduce the amount of data sent over the network?
There are times when you cannot avoid sending the full game state - such as on load of a saved multiplayer game, or when a resync is needed. But sending full state is usually avoidable, and that's ...
32
votes
Accepted
Acknowledgement reliability using UDP
This is a form of the Two Generals Problem, and you're right - no number of retries is enough to perfectly guarantee receipt.
In practice in games, there's usually a time horizon beyond which the ...
24
votes
How does delta compression reduce the amount of data sent over the network?
You have the wrong delta. You're looking at the delta of the individual elements. You need to think of the delta of the entire scene.
Suppose you have 100 elements in your scene, but only 1 of them ...
22
votes
How to handle a large number of pickups in a MMO game
You have two very different things to manage:
The server must manage the entire world, in an authorative manner. For that, communication with N clients (where N is "massive") is necessary.
The client ...
19
votes
Is UDP still better than TCP for data-heavy realtime games?
We agree upon both TCP and UDP being protocols built on top of IP, don't we? IP specifies how messages are delivered across the internet, but nothing is about the messages structure, format.
Here come ...
12
votes
Accepted
What is the difference between a "ping" and "RTT" (round-trip time)?
A ping is a method to measure round trip time.
The process of "pinging" is to send a "ping". A "ping" is a network message which serves no other purpose than to get an immediate response from the ...
12
votes
Should damage calculation in a competitive multiplayer game be done client-sided or server-sided?
Rule number one for multiplayer netcode design: Anything that matters for gameplay should be calculated server-sided. Never trust the client. The client is in the hands of the enemy. You can not ...
11
votes
Should damage calculation in a competitive multiplayer game be done client-sided or server-sided?
Option 3: The client sends a click event to the server, the server decides where this click event has landed, decides if there is a hit or a miss, then applies the damage and sends the updated world ...
9
votes
Is UDP still better than TCP for data-heavy realtime games?
TCP <- Transmission Control Protocol. It's made to control transmission.
TCP was created to be a good and diplomatic network citizen. It focuses on making the networking a good experience for ...
9
votes
Accepted
Does it make sense to use both TCP and UDP at once?
It results in packet loss for UDP due to contention between the two protocols - remember that UDP is not guaranteed delivery, while TCP is. More TCP packets will get through while UDP suffers - TCP ...
9
votes
Accepted
How to compensate for moving objects with client side prediction?
During the 6 months since I asked this question, I ended up developing a complete open source game server to deal with this exact issue (and many others!): https://lance-gg.github.io/
The R&D ...
9
votes
How does delta compression reduce the amount of data sent over the network?
Very often another compression mechanism will in combination with delta encoding like for example arithmetic compression.
Those compression schemes work much better when the possible values are ...
9
votes
Acknowledgement reliability using UDP
The approach TCP uses is that the sender will keep resending the packet until it receives an acknowledgement. The receiver will ignore duplicate packets, but still send acknowledgements for them. The ...
8
votes
Accepted
Why do multiplayer games/chat services ever need to be able to open all NAT ports?
Just to make sure we're all on the same page in terms of terminology:
What is NAT?
NAT is an acronym for "Network Address Translation". It's a system designed to allow a router to allow a ...
8
votes
Accepted
Where should multiplayer games start? Client or server?
You develop both at the same time, inside the same executable or a DLL loaded by the game executable.
The game always run on a server, even when running single-player.
When running single player ...
8
votes
How does delta compression reduce the amount of data sent over the network?
You are right that a naïve delta calculation on its own, with the result stored in the same size data structure as the operands and transmitted without any further processing would not save any ...
8
votes
How does delta compression reduce the amount of data sent over the network?
You are broadly correct, but missing one important point.
Entities in a game are described by many attributes, of which position is only one.
What kind of attributes? Without having to think too ...
7
votes
Solution for lightweight LAN peer discovering?
As many people have been saying, the solution would be to use UDP broadcast, but there's a lot of implementation details involved. I recently ran into the same problem, and after working out a ...
7
votes
Accepted
Client side prediction physics
Client-side prediction depends very heavily on a deterministic physics model that exactly replicates the way the game object behaves on both the client and the server. Even small floating point errors,...
7
votes
Determing winning on the server side or client side?
Hello visitors of Jindsay's Card Game Forum. Here is your friend xXx_GameH4x0rPhilipp_xXx with another cheat for you. Do you want to win every game? Here is a simple hack which works with every web ...
7
votes
Acknowledgement reliability using UDP
If you want to reinvent TCP, it makes sense to look at TCP first, which deals with the exact problem you describe (part of the solution is to use user defined values for retry attempts and timeouts).
...
7
votes
Accepted
Architecture of networked game engine
TLDR - start simple and build up. Getting to AAA quality networking in an action game is complicated but may not even be necessary for your game.
So basically: When client connects to the server, ...
6
votes
How can I minimise data sent through a network in a modern FPS?
When we implemented our networking engine we exploited a number of compression techniques:
First we write all of our snapshot bit-wise: bools are only 1 bit
instead of 1 byte (or more depending on ...
6
votes
Accepted
How to design a server for a multiplayer game?
Depending on what language you are using, the answer can vary.
However, if you know any Java, or can at least get the gist of it, here's some old code I wrote to handle something like this.
https://...
6
votes
Accepted
Resolving prediction error from client side prediction and server reconciliation
I solved the problem on my own. My previous implementation of the networking engine made reconciliation impossible. The code I am using is private, though I plan on open sourcing the Box2D server/...
6
votes
Accepted
Networked projectiles in an authoritative server
This is what we ended up doing:
Client side
Detect player clicks button to shot missile
Immediatley simulate rocket visuals on client
In parallel, send command to server
Once predict hit something, ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
networking × 889multiplayer × 255
unity × 178
client-server × 146
c# × 87
server × 66
synchronization × 66
mmo × 65
udp × 56
java × 53
unity-networking × 52
architecture × 48
c++ × 43
physics × 32
interpolation × 30
xna × 27
peer-to-peer × 23
rts × 22
security × 22
movement-prediction × 22
latency × 22
socket × 21
mobile × 19
javascript × 18
online × 17