Mazmorra de Plato Profundo: Cooperativo en línea para tres jugadores en Unity

Para tu comodidad, tradujimos esta página mediante traducción automática. No podemos garantizar la precisión ni la confiabilidad del contenido traducido. Si tienes alguna duda sobre la precisión del contenido traducido, consulta la versión oficial en inglés de la página web.
Aprende cómo el equipo de dos personas de Behold Studios construyó la aventura cooperativa en línea Deep Dish Dungeon con Netcode for GameObjects, Lobby, Relay, Vivox y Unity 6.3.
¿Cómo construye un equipo de dos personas sin ingeniero de redes dedicado un juego cooperativo en línea?
Fundada en Brasilia, Brasil, y con sede en Toronto, Canadá, Behold Studios ha estado haciendo juegos con Unity por más de una década. Su último lanzamiento, Deep Dish Dungeon, es un juego de mazmorras cooperativo para uno a tres jugadores. Para la mayor parte del desarrollo, solo dos personas trabajaron en Deep Dish Dungeon: El director del estudio Saulo Camarotti se encargó del diseño, la programación, los negocios y el marketing, mientras que la artista Carolina Baumgarten creó todos los elementos visuales, desde el arte conceptual hasta los modelos 3D, texturas, interfaz de usuario y más.
Deep Dish Dungeon era muy esperado, superando los 500.000 deseos en Steam antes del lanzamiento, y ya está disponible en Steam y Xbox Game Pass con juego cruzado. Lee el caso de estudio para aprender cómo Behold Studios ahorró tiempo y recursos con Unity Services y Unity 6.3, y comprende las decisiones de diseño que hicieron posible este ambicioso proyecto.

Deep Dish Dungeon | Behold Studios | Raw Fury
Los resultados:
- Más de 500.000 listas de deseos en Steam antes del lanzamiento, incluyendo 65.000 en los primeros días después del tráiler del anuncio
- Un prototipo online Multiplayer jugable en el primer día de desarrollo
- Juego cruzado entre Steam y Xbox sin código de red adicional
- Localization en 11 idiomas
- Jugadores que se unen tarde puestos al día sobre cada enemigo, objeto y elemento en una mazmorra compartida

Convertir las limitaciones de Multiplayer en fortalezas
Behold Studios ha lanzado juegos Multiplayer antes, incluyendo un juego de Facebook en 2011 y Out of Space en 2020. Para Deep Dish Dungeon, Saulo mantuvo deliberadamente al equipo pequeño. Contrató a Carolina para el proyecto porque, como artista multidisciplinaria, podía cubrir 3D, 2D, logotipos, ilustración y arte conceptual.
Como el único programador, Saulo supo que tendría que ser extra cuidadoso para mantener el proyecto dentro del alcance. "Multiplayer añade mucha más complejidad a un proyecto, y por lo general la gente tiene ingenieros dedicados para trabajar en esos problemas", dice. No es solo un equipo de dos, soy solo yo como programador. Así que necesitaba crear un juego que utilizara las limitaciones de Multiplayer como factor de diseño.

Deep Dish Dungeon | Behold Studios | Raw Fury
Esto condujo a una serie de decisiones deliberadas que convirtieron estas limitaciones en fortalezas:
- Solo cooperativo, sin PvP: Porque los jugadores son Friends en el mismo equipo, el juego puede confiar en cada cliente.
- Peer-to-peer, sin Dedicated Server: El jugador que crea el juego actúa como anfitrión.
- Tolerante a la latencia: Un ping alto no rompe la experiencia, por lo que el juego no necesita una predicción de movimiento compleja.
- Un aspecto deliberadamente simple: El juego se renderiza a un tercio de la resolución de salida para un estilo pixelado que se adaptaba al conjunto de habilidades de Behold Studios y evitaba trabajo pesado de VFX y sombreadores.
El estilo artístico también jugó un papel en establecer expectativas para el jugador. "Incluso la estética nos ayuda", explica Saulo. "Esperas que algunas cosas no se resuelvan completamente."

Deep Dish Dungeon | Behold Studios | Raw Fury
Diseñando para Multiplayer desde la primera línea de código
Saulo tenía experiencia previa con pilas Multiplayer dedicadas como Photon. Aun así, se dio un presupuesto de prototipo de tres meses para probar si la pila multiplayer de extremo a extremo de Unity 6 aguantaría.
"Cuando vimos Netcode for GameObjects, nos dimos cuenta de que era justo lo que necesitábamos", dice. "Podríamos usar la lógica central de Unity, la forma en que creamos cosas y gestionamos nuestros objetos, y añadir una capa Multiplayer encima."
Comenzó con los ejemplos de código en la Documentación de Unity para Lobby y Relay y progresó rápidamente. "La primera línea de código ya estaba implementando el sistema de Lobby y Relay Multiplayer", dice. "El primer día, ya estaba jugando un juego Multiplayer."
Pensar en Multiplayer desde el principio del desarrollo significó que nunca hubo una base de código para un solo jugador a refactorizar. Saulo ha visto a otros equipos pasar de uno a seis meses añadiendo Multiplayer a un proyecto existente.

Deep Dish Dungeon | Behold Studios | Raw Fury
Conectando jugadores con Lobby y Relay
Para el jugador, unirse a un amigo es un clic. El anfitrión elige un amigo de su lista de Friends de Steam y envía una invitación que lleva un ID de Lobby. El amigo acepta, se une al mismo Lobby (introduciendo una contraseña si el anfitrión la establece) y se conecta al anfitrión a través de Relay.
La parte más difícil sucede tras bambalinas. Un amigo puede entrar en una sesión ya en curso, por lo que tiene que ponerse al día con cada objeto en la red del calabozo, como qué enemigos están muertos, sus puntos de golpe restantes y qué objetos han sido recogidos. Saulo quería evitar construir gestión de escenas personalizada. En cambio, Deep Dish Dungeon serializa la escena en un archivo de guardado cuando comienza una sesión. Cuando alguien se une, los objetos de la escena se eliminan y se cargan dinámicamente desde el estado sincronizado del anfitrión. Los jugadores que regresan reaparecen en su punto de aparición guardado.
Saulo dice que el problema más difícil fue lidiar con el estado, no conectar a los jugadores.
"En un juego para un solo jugador, sabes con seguridad que las cosas suceden en un cierto orden", dice. En Multiplayer, nunca sabes exactamente cuál será el estado de las variables y objetos si alguien se une en medio de algo. Los objetos tienen que saber qué hacer si son llamados mientras están en el estado incorrecto.

Deep Dish Dungeon | Behold Studios | Raw Fury
Haciendo de la voz un mecanismo con Vivox
Muchos jugadores cooperativos ya usan herramientas como Discord para chat de voz, pero Saulo eligió Vivox porque quería que la voz estuviera integrada en la experiencia de explorar la mazmorra en sí.
"Quería que los jugadores sintieran la mazmorra, y la soledad de la mazmorra también", dice. "Quería que sintieran que sus Friends estaban siendo dejados atrás."
La voz en Deep Dish Dungeon es posicional y filtrada por el espacio alrededor de cada jugador. Alrededor de 15 altavoces de intercomunicación colocados por toda la mazmorra se pueden usar para transmitir la voz de un jugador a todos. Esto permite que un amigo se quede en el campamento cocinando mientras otro sale a buscar provisiones y informa por radio sobre suministros. Hablar también cuenta como ruido al que reaccionan los enemigos, al igual que saltar, blandir una antorcha o hacer ruido con la armadura.
"Ahora los jugadores están pensando en cómo y cuándo usar esa función", dice Saulo. "Añade muchas capas a la interacción."

Deep Dish Dungeon | Behold Studios | Raw Fury
Mejorando la jugabilidad con Analytics
Deep Dish Dungeon es un sandbox no lineal sin mapa, sin brújula y varias soluciones para la mayoría de los obstáculos. Eso hizo que las pruebas de juego fueran difíciles. "Cada vez que veíamos a alguien jugar, se comportaba de manera diferente", dice Saulo.
Él construyó una estrategia de Unity Analytics en torno a esa libertad. Rastrea cómo se mueven los objetos a través del juego, y registra cada golpe, encuentro de combate y muerte junto con el inventario del jugador y si había comido. Ese último punto de datos resultó ser importante.
En Deep Dish Dungeon, la comida no es una poción curativa. Es un "buff", dice. Vi a muchos jugadores explorando con el estómago vacío, y estos fueron los jugadores que reportaron que el juego era demasiado difícil.
El descubrimiento llevó a la creación de un nuevo sistema de juego: un medidor de hambre que drena los puntos de vida de los jugadores cuando pasan demasiado tiempo sin comer. Como resultado de esta mecánica, los jugadores pueden entender más fácilmente por qué necesitan comer antes de adentrarse en la mazmorra.

Panel de Analytics para la demo Deep Dish Dungeon
Atrapando errores con Diagnóstico
Sin un equipo de control de calidad propio hasta que su editor, Raw Fury, se unió, Saulo usó Diagnostics para encontrar fallos y errores que no podía reproducir en sus propias máquinas. También le ayudó a clasificarlos por frecuencia y plataforma.
Un informe comenzó con jugadores diciendo que no podían atacar a los enemigos. "El ataque funciona bien, el enemigo funciona bien, ¿qué está pasando?" Saulo dice. Los datos de diagnóstico mostraron una cadena de eventos que comenzó mucho antes, con un inventario que hacía referencia a un artículo que ya no existía. Podríamos atrapar el problema mucho antes.

Panel de diagnóstico para la demo Deep Dish Dungeon
Probando multiplayer en Unity 6.3
Para un programador en solitario, configurar sesiones de prueba Multiplayer puede llevar mucho tiempo. Multiplayer Play Mode en Unity 6.3 eliminó la mayor parte de ese trabajo. Saulo puede entrar en Modo Juego y ejecutar dos o tres clientes en el Editor de Unity a la vez, ya sea en la mazmorra completa o en escenas de prueba dedicadas.
"Puedo probar en cualquier lugar del juego con dos o tres jugadores al pulsar un botón", dice. "Y ejecutar el juego local es prácticamente lo mismo que ejecutar a través de Relay y Lobby." Es el mismo código.
La estabilidad mejorada de Unity 6.3 importó tanto. Saulo recuerda choques casi todos los días en versiones antiguas. Después de actualizar a Unity 2023 y luego a Unity 6, recuerda: "Me tomó un tiempo darme cuenta de que había pasado más de un mes desde que tuve un fallo".
Traducir con el paquete Localization
Los juegos anteriores de Behold Studios dependían de complementos de Localization de terceros, los cuales no siempre se adaptaban a las nuevas versiones de Unity. Esta vez el equipo usó el paquete de Localization de Unity 6. Proporciona tablas de cadenas que se sincronizan con Google Sheets y una cadena de reserva de fuentes que intenta una segunda fuente cuando la primera no puede renderizar un idioma. Deep Dish Dungeon se lanza en 11 idiomas: Inglés, portugués brasileño, francés, alemán, español, español latinoamericano, polaco, ruso, japonés y chino simplificado y tradicional.
El consejo de Saulo aquí es planificar traducciones largas lo antes posible. "Es muy sabio empezar a pensar en la Localization temprano y crear una interfaz de usuario que ya lo tenga en cuenta", dice.

Deep Dish Dungeon | Behold Studios | Raw Fury
Consejos de despedida
Para equipos pequeños que consideran el Multiplayer en línea, el principal consejo de Saulo es sobre el diseño, no sobre la tecnología.
"Crea un juego en el que puedas confiar en el cliente." Crea un juego cooperativo. "Crea un juego donde la latencia no sea un problema; si tienes 500 milisegundos de latencia, el juego sigue funcionando gracias al diseño", dice. "En cuanto al diseño y a la producción, esto es más importante que la tecnología real que vayas a usar."