Multiplayer en Engines

Jastro

Tengo 0 conocimiento en cuanto a multiplayer y me gustaria adentrarme, me da igual cual de los motores (UE5, Unreal, Godot...), cual es el que lo pone "mas facil" para empezar en el mundillo?

Me gustaria empezar haciendo el tipico juego por turnos,

X jugador tiene un turno, hace sus cosas, cierra el turno, le toca al otro jugador. Tengo entendido, que este seria el multiplayer mas "simple" para empezar que me recomendais?

1
neZbo

Yo en Unity en su día trasteé con Mirror y con Photon, el segundo era mucho más fácil de implementar pero es o era de pago (con un tier gratuíto con sus limitaciones)

En Godot lo único que sé es que estábamos haciendo una jam con un juego super chorra @Ridote @kidandcat y yo. Rido y yo nos fuimos a dormir y al día siguiente el juego tenía online... ¬_¬

EDIT: Todo esto lo digo asumiendo que te refieres a multiplayer online, aquí tienes un video breve de como implementar Photon en Unity:

1 respuesta
adriancin

El año pasado Unity compró el plugin MLAPI (que funcionaba bastante bien) para integrarlo en el entorno y lo transformaron en Unity Networking . Según leo de la gente parece que va bien y lo actualizan bastante (esto puede ser bueno o malo jeje), acaban de sacar la versión 1.0 hace no mucho por lo que sería interesante probarlo.

También hay un excel que recoge lo bueno y lo malo de los diferentes plugins que hay para Unity, aunque esta bastante desactualizado.

Yo estoy trabajando en esto ahora mismo y hemos implementado nuestro propio sistema porque no es algo grande pero quiero probar el de Unity/MLAPI cuando tenga un rato largo.

Si tienes dudas me puedes preguntar :smile:

1 respuesta
PaCoX

Unity es de lo mas facil, creo que cambiaron el engine del multy hace unos años... tmb puedes irte por la tangente y probar con roblox o byond xd

1 respuesta
Jastro

#2 Si, si, me refiero a multiplayer online, local es sencillo xD

#3 le echare un ojo

#4 nah, la idea es usar un engine y hacer un juego desde 0, roblox me da pereza y byond ni lo conozco xD

gracias por las respuestas

1 respuesta
Hukha
#1Jastro:

X jugador tiene un turno, hace sus cosas, cierra el turno, le toca al otro jugador. Tengo entendido, que este seria el multiplayer mas "simple" para empezar que me recomendais?

Si ese es tu objetivo, la verdad que lo que veo más factible es tener un servidor dedicado, que no sea motor de juego. Especialmente si tienes más experiencia en eso. Tiraría por hacer un WebAPI y vas que chutas

Si uno de los clientes tiene que ser también host o quieres hacerlo dentro de un motor para pillar la copla;
Aquí puedes encontrar info: https://blog.unity.com/technology/choosing-the-right-netcode-for-your-game

Esta imagen no es reciente, pero sigue siendo muy acertada (Quitando DOTS y Custom)

1 1 respuesta
carra

Muy bien Jastro, dando ejemplo y creando un poco de movimiento por aquí jeje. A ver si llega a algo esta idea

Ridote

Yo hace poco hice un juego de cartas en Godot con websockets, que imagino que podrás hacerlo en cualquier motor y no tiene misterio. También puedes usar rpcs, que más fácil imposible. Como dice nezbo, hicimos un juego para una jam y nos fuimos a dormir y al día siguiente el cabrón de kidandcat le había metido multiplayer online.

Jastro

#6 hay dos cosas que me gustaria aprender

  • 1 -> Hacer un sistema de matchmaking
  • 2 -> Hacer un sistema de turnos sin lag, mi idea se acercaria mas a un estilo heartstone (pero nada que ver), cartas, 1 vs 1 por turnos, matchmaking.

A ser posible, prefiero hacerlo por el motor, por lo que veo, la mayoria recomienda Unity y usar Unity Networking

2 respuestas
kidandcat

#5 #9 Pero quieres aprenderlo a nivel del cliente o del servidor?
Quieres implementar un matchmaking y otras cosas en tu juego, y ver como manejar todo eso y demás? o quieres meterte en el servidor, y montarte el sistema en sí?

1 respuesta
Jastro

#10 Desconozco si existe una opción que sea solo cliente, entiendo que tengo que gestionar el servidor si o si, dudo que algo te venga todo hecho.

La idea es hacerlo todo, porque entiendo que no queda de otra, si me dices que hay algo que lo hace solo, y solo debo preocuparme por el cliente, pls guide me

1 respuesta
starfucker

En Unreal viene integrado todo el sistema de replicacion y online. Para luego hacer el tema del matchmaking, usa un sistema de puntuacion rollo elo. Nosotros lo integramos en AWS y funcionaba bastante bien, el tema de lag era casi nulo :O

1
kidandcat

#11 Claro, hay un monton de opciones que te dan el servidor hecho, un ejemplo es https://heroiclabs.com

Y ya que estamos, si no quieres meterte en la parte de servidor, yo estoy desarrollando un servicio multiplayer :)
Básicamente lo mismo que Nakama, pero en vez de montártelo tu, es un servicio, te registras, pillas tus tokens, y tienes todos esos servicios.
Si te apuntas a la pre-alpha y me ayudas a testearlo, mejor que mejor :D

Ahora mismo solo he hecho la libreria cliente para godot, pero quiero hacer para unity, unreal y javascript también.

2 respuestas
Jastro

#13

Heroic Cloud Pricing:
Cost: $600 /month

pos va a ser que no xD

#13 Pos si quieres pasame acceso y miramos, de momento ando mirando opciones supongo que se quedara entre Unity o Godot, supongo que tirare por Unity al paso que voy

2 respuestas
kidandcat

#14 Nakama es open source, es para que te lo montes tu. El servicio que dan es para empresas

1 respuesta
Jastro

#15 ah joder, me habia cagado xDDD

Pos le echare un ojo, mil gracias

kidandcat

#14 Pero por preferencia tu que quieres, Unity o Godot?
Que yo me saco la libreria para unity en un rato, que al final es exponer una API websockets

1 respuesta
Jastro

#17 Probablemente, me decante mas por Unity

1 1 respuesta
kidandcat

#18 No me importa hacer la libreria para unity, pero no voy a hacer un juego de demo como con Godot xD

Si mas o menos has hecho algo con Godot, aqui tienes la demo:
https://github.com/kidandcat/SakuraTopDown

Básicamente la libreria es el net.gd, en la demo llevo realtime, posicion, acciones, etc. Amigos (lista, invites, etc) e invitacion a partida. Osea puedes agregar a otro player como amigo, y luego invitarlo a tu partida.

Es una demo del multiplayer, la interfaz es un mojon por defecto, y tiene poco curro.

Hukha
#9Jastro:

Hacer un sistema de matchmaking

Esto es cosa del backend o servicio que uses(Propio o 3rd party), no tendría nada que ver con el cliente o servidor (Más allá de la implementación para hacer solicitudes)

#9Jastro:

Hacer un sistema de turnos sin lag, mi idea se acercaria mas a un estilo heartstone (pero nada que ver), cartas, 1 vs 1 por turnos, matchmaking.

Lo bueno de los juegos por turnos es que es muy fácil esconder problemas de conexión. En el mismo HS puedes ver el "lag" que hay al finalizar turnos por tiempo.
Con lo que cualquier cosa que uses te serviría

#13 Como mola, por qué razón te ha dado por hacerte un servicio habiendo tantos y tan grandes?

2 respuestas
Ridote
#20Hukha:

Como mola, por qué razón te ha dado por hacerte un servicio habiendo tantos y tan grandes?

Creo que cuando probamos nakama le dio un poco de cáncer de sida y quiso hacer el suyo propio y ahí anda

1 respuesta
kidandcat

#20 Porque creo que es algo que puede tener mucha demanda. Nakama ofrece un montón de funcionalidades, pero tanto desplegarlo en tu servidor, como meterle la lógica personalizada son dos marrones increíbles.

Luego he visto a gente como el Alva Majo o Aikon tirando de los rankings de steam, y al menos al alva majo le ha petado por todas partes.

Si saco un servicio para nosotros Indie developers que sea sencillo de usar (librerias sencillas para los game engines), donde puedas crear tu propia lógica fácilmente (JS o programacion con nodos) y que sea asequible (tengo que hacer cálculos, pero algo tipo "hasta 1000k usuarios concurrentes 15€/mes) yo creo que puede tener una buena demanda, de hecho lo hago porque si hubiese algo así, yo mismo ya lo estaría pagando.

2 respuestas
Kalgator

#22 Pues mola!, ya podré crear el mmo definitivo como primer juego como buen desarrollador indie!

1
Hukha

#21 Yo también he escuchado cosas nefastas de Nakama... Pero hay otras soluciones

#22 A ver, si tienes una idea que pueda encajar para estudios mas pequeños, te animo a ello por supuesto y si necesitas testeo ayudaré en lo que pueda

El caso es que vas a competir contra gigantes en su mayoría. Los indies(Realmente los solodevs) usan Steam por que no tienen los conocimientos necesarios (O creen no tenerlos) para meterse en algo "mas complicado", pero soluciones como PlayFab o Gamelift tienen las de ganar contra casi cualquiera que se ponga por delante ya que son los dueños de los servidores. Al final para crear un servicio del estilo necesitas usar escalado y servidores de alguien (MS, AWS...) y para ellos va a ser más rentable que para alguien que realquila sus servidores

2 respuestas
Ridote

#24 Ya ya, te digo que es lo que probamos hace mil años. Igual han mejorado, pero solo por LUA ya me echa para atrás. En su momento la docu tampoco estaba genial que digamos, había cosas donde faltaba explicar más y faltaban ejemplos, pero de eso hace ya así que igual ha mejorado, no quiero tampoco echarle mierda sin haberlo probado desde hace tanto.

1 respuesta
Hukha

#25 Yo he tenido feedback reciente igual de malo xD

1
kidandcat

#24 Esta claro, pero todo está sobre complicado, yo estoy apuntando a un target que casi no sepa programar. O que incluso si sabe, que sea un solodev, y prefiera por ejemplo tener un template tipo "top down cell" o "turn based card game" o "platformer" y que ponga 4 configuraciones y lo tenga listo, que normalmente esta gente busca innovar con una idea más que con tecnología punta experimental.

Para la lógica del servidor (cuando quieras server authority) quiero usar plantillas predefinidas, que tendrán parametros de configuración, y si quieres un paso más de customización, tendrás nodos (que ya tengo libreria wapa https://rete.js.org)

Usuarios habituales

  • kidandcat
  • Hukha
  • Ridote
  • Jastro
  • carra
  • PaCoX
  • adriancin