R
R
Ruslan Yanberdin2016-07-31 13:30:05
go
Ruslan Yanberdin, 2016-07-31 13:30:05

Go vs Rust for realtime game backend (20 requests per second per client)?

There is a task to make a backend for a realtime game. A la counter-strike, but simpler, the meaning is the same: there are players who shoot in real time, but the whole picture is controlled by the server, as in World Of Tanks.
The server will contact each client every 50ms to notify what is happening (i.e. 20 times per second). It will also receive information from input devices (the direction of the player's movement) with the same frequency. We need 250-500 people per card. Hence. at least 5000 requests per second from the card (room). I suspect that this will be the limit per server.
Problem: there are online games that slow down, twitch, and there are games that work smoothly and clearly despite the ping. So this is typical for Valve games.
Can anyone help with technologies, libs, documentation, which language is better suited?
I don’t want to consider C ++, I need to write a lot of code (to duplicate the functionality of the game on the server)

Answer the question

In order to leave comments, you need to log in

5 answer(s)
R
Ruslan Yanberdin, 2016-08-02
@Duke565

In total, I found out: fuck Go and Rust:
Links about synchronization of the server, client and joys like: interpolation, extrapolation, lag compensation:

  1. Interpolation or the wonderful world of deception
  2. Network programming at Source

Z
Zelimkhan Beltoev, 2016-07-31
@Beltoev

Have you looked towards C# and ASP NET Core?
Here, for example, they talk about how they managed to squeeze out 1.15 million requests per second :
web.ageofascent.com/asp-net-core-exeeds-1-15-milli...
This is about ~ 200-230 cards (rooms ) on the same server.
Here you need to think about synchronization algorithms. There are many articles and discussions covering this issue. For example, here is close on the topic: www.gamedev.ru/code/forum/?id=152443

S
sim3x, 2016-08-01
@sim3x

Rather, it grows
. But your problem is not with RPS, but with predictions.
No matter how often you send out the current state on the server, you will be late by one or two user pings. What is not acceptable for a shooter

V
Vladimir Grabko, 2016-07-31
@VGrabko

I don’t know how to grow, so I can’t say about it, but Golang will hold about 500 rooms on a server with a normal channel if you use a proto buffer

A
Alexey Poimtsev, 2016-08-04
@poimtsev

I would suggest using Websocker + Elixir/Phoenix, performance is ok - www.phoenixframework.org/blog/the-road-to-2-millio...

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question