#28 Uso Unity en forma headless porque es una solución fiable, testada, y que tiene muy buen rendimiento, manteniendo mi background en C# para cosas complejas que hay en server side. No uso el Networking de unity como supone #29, sólo uso Unity para tener una copia física del mundo y poder hacer las comprobaciones necesarias cuando un player mata a otro, cuando se consumen powerups, o cuando pasa casi cualquier cosa lógica en el juego. De esta forma tienes una solución autoritativa sin invertir mucho tiempo, y encima solución completa porque si eres un ex Unity Dev como es mi caso sabrás cómo estrujar al máximo todas las características de Unity y cómo sacar el máximo rendimiento.
Y sí, es de las soluciones más correctas por su fiabilidad. Ten en cuenta que juegos tan enormes como Rocket League usan una copia de su cliente como servidor. En el caso de Rocket League, Unreal Engine tiene también un modo servidor. PUBG más de lo mismo, los dos usan Unreal como backend.
Hace tres años, cuando empecé en esto del webgaming multiplayer probé NodeJS con WebSockets como todo el mundo, pero la verdad es que no me gusta nada tener JS en backend ya que es un lenguaje en el que muchas cosas pueden estar yendo mal sin darte ni cuenta hasta que el GC empieza a petar y te das cuenta de que tienes CPU o Memory leaks.
Para el que desarrolle apps de mierda le vale de sobra nodejs, pero para juegos en tiempo real y que estén pensados para ser jugados por cientos de forma simultánea, no vale.
Como ejemplo: blastarena.io en su día, cuando aún era yo el dueño, quizá era capaz de mantener 150-200 players simultáneos en un servidor de 30€ mensuales (era nodejs con websockets). Con Netgain (sin lógica alguna server side), habrían sido más de 400. Y con lógica depende de a qué ritmo estés simulando el mundo.
A nivel de networking estoy usando una librería que StackOverflow diseñó para sus sistemas desarrollados en C#. Se llama Netgain. Junto a una pequeña lib que me hice para leer y escribir paquetes binarios rápidamente.
Así que sinceramente, es una ridiculez ponerte a picar todo de 0 en 2019, donde hay librerías y motores que están hyper testados y que usan juegos AAA.