¿Qué estás buscando?
Games

Cómo Fika Productions se hizo a la mar con su éxito multijugador Ship of Fools

DANIEL CROUGH Senior Content Marketing Manager
Apr 11, 2024|8 minutos
Cómo Fika Productions se hizo a la mar con su éxito multijugador Ship of Fools
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.

Cuando Fika Productions se propuso llenar el vacío que había en el mercado con un juego de roguelite cooperativo, tenía la vista puesta en el cooperativo de sofá. Y entonces ocurrió lo de 2020. Nos sentamos con Daniel Carmichael, programador jefe de jugabilidad, y Yannick Vanderloo, desarrollador, para hablar de su juego y explorar algunos de los retos de desarrollo que tuvieron que resolver para sacar Ship of Fools al mercado en una época complicada para el sector.

¿En qué se inspiró Ship of Fools? ¿Tiene colegas con formación náutica?

Daniel: Nuestra inspiración fue, ante todo, llenar el vacío que había en el mercado de un roguelight cooperativo. Todos somos fans del género roguelite y, aunque hay muchos juegos roguelite muy buenos, pensamos que ninguno de ellos hacía bien la parte cooperativa.

Desde el punto de vista temático, nos encantó la idea de un barco, porque si el barco se hunde, se hunde todo el mundo. Esa es la idea central: trabajar juntos para mantener el barco a flote. Nadie tenía experiencia náutica, y no somos criaturas marinas ni nada por el estilo.

No hay pulpos ni lobos de mar salados en el personal. Entendido. ¿Cómo es para usted un estudio de mercado?

Daniel: Nuestro estudio de mercado fue en realidad una pequeña actividad de investigación en Reddit, pero le sacamos mucho partido. En 25-30 subreddits sobre cooperativas de sofá y roguelites, hicimos la pregunta "¿Qué crees que es necesario para que un juego roguelite cooperativo tenga éxito?" Recibimos muchas sugerencias, las resumimos en un documento y buscamos solapamientos y temas. Este proceso validó algunas de nuestras ideas y también nos aportó otras nuevas.

¿Cuál fue su momento favorito al trabajar en Ship of Fools?

Daniel: Teníamos un pequeño chiste en la oficina. Cada vez que lanzábamos una pequeña función, alguien decía: "¡Tenemos un juego!". Y, un día, fusionamos una gran parte del juego que era realmente importante, la probé y siempre recordaré que le dije al equipo: "¡Tenemos un juego vendible!", y eso me pareció realmente diferente. Fue un momento de gran orgullo para nosotros.

Navegar por las decisiones de la red

¿Hubo algún aspecto especialmente complicado en el desarrollo del modo Multiplayer del juego y cómo lo superó?

Yannick: La conexión en red en los juegos suele ser sencilla cuando el anfitrión o el cliente asumen todo el control. Sin embargo, las cosas se complican cuando es necesario dividir el control, como cuando algunos elementos son gestionados por el jugador local y otros por el anfitrión del juego.

Los proyectiles eran especialmente difíciles en esta configuración. Queríamos que se sintieran ágiles al disparar, y eso implicaba numerosos escenarios a considerar. Además, cuando un enemigo devuelve el fuego y un jugador desvía el disparo, tuvimos que planificar meticulosamente las interacciones y asegurarnos de que resultaran adecuadas para todos los jugadores, incluso en situaciones de alta latencia. Había muchos casos extremos en los que pensar. Especialmente cómo hacerlo rápido y sensible para ambos jugadores.

Daniel: Otro gran escollo con el que nos topamos fue la creación de redes. Pasamos un año y medio diseñando el juego para cooperativo local, sin pensar siquiera en el juego en línea. Entonces, ¡bam! La pandemia golpeó. De repente, nuestro juego local no tenía mucho sentido, ya que todo el mundo estaba atrapado en casa, sin salir juntos.

Al principio, lo nuestro era el cara a cara, el ambiente del momento. Ese fue el corazón de nuestro juego. Pero con la pandemia, nuestro editor nos dijo: "Oye, tenemos que conectarnos", y nosotros: "Muy bien, hagámoslo". Y fue como si hubiéramos tenido que rehacer todo un año, ajustando cada parte del juego para el juego en línea.

Así que, un pequeño consejo para los desarrolladores: tened siempre en mente el juego en línea desde el principio, aunque no estéis al 100% en ello. Diseñar pensando en Internet suele ser una buena idea, y es mucho más fácil eliminarlo después que meterlo con calzador.

Háblame más de la gestión de proyectiles y de cómo Netcode for GameObjects entró en juego aquí.

Yannick: Poner en red nuestro juego acabó siendo un giro único. No tenemos una configuración tradicional de Netcode for GameObjects. En su lugar, tenemos objetos que existen tanto en el lado del cliente como en el del host, cada uno consciente de las acciones del otro y de quién tiene el control en cada momento. Es como si mantuvieran una conversación constante, poniéndose al día de lo que ocurre.

Por ejemplo, en un escenario en el que se dispara una bala, si da en el blanco del lado del anfitrión, el juego espera a que el cliente confirme el impacto. El cliente puede estar de acuerdo, o puede decir: "No, esa la esquivé", o incluso: "¡Reflejé la bala!". En función de la respuesta del cliente, el juego ajusta el resultado, asegurándose de que ambas partes están en sintonía.

Esta configuración permite una gran flexibilidad. Los jugadores del lado del cliente pueden ver reacciones inmediatas a sus acciones, como el desvío de una bala, lo que da al juego una sensación de capacidad de respuesta. Sin embargo, el resultado final puede necesitar ajustes basados en la aportación del anfitrión, que puede anular las reacciones iniciales si hay discrepancias.

Es una especie de baile, en el que la autoridad puede cambiar de un lado a otro. Nos pareció que la solución más sencilla era dejar que cada parte hiciera lo suyo, y luego conciliar las diferencias a medida que surgieran, basándonos en la opinión de la otra parte. Se trata de un proceso de colaboración en el que tanto el anfitrión como el cliente contribuyen a la fluidez del juego.

He aquí una explicación visual para sus lectores.

Captura de pantalla de Ship of Fools con dos jugadores en un barco
Una configuración Multiplayer en Ship of Fools

En la primera imagen, tenemos nuestra configuración multiplayer, donde yo estoy jugando como Todd, el anfitrión de la izquierda, y mi amigo es Hink, el cliente de la derecha.

Captura de pantalla de Ship of Fools con un enemigo disparando un proyectil
Coordinación mediante una llamada a procedimiento remoto

Entonces, aparece un enemigo cangrejo y lanza un proyectil. Aquí todo es cuestión de coordinación: tanto el host como el cliente son informados a través de una llamada a procedimiento remoto. Ambos jugadores ven el proyectil, pero el hecho de que impacte en el barco o sea desviado depende de las reacciones de los jugadores, y el anfitrión tiene que esperar a la entrada del cliente para confirmar el resultado final.

Captura de pantalla de Ship of Fools con un jugador desviando un proyectil
La respuesta del cliente al desviarse el proyectil

Por último, aquí vemos lo que ocurre cuando el cliente, en el papel de Hink, desvía el proyectil. Hay un poco de retraso si hay un ping alto, así que aunque el host vea inicialmente que el proyectil golpea el barco, se corregirá una vez confirmada la reacción del cliente. De este modo, el cliente no siente lag: es como si jugara en tiempo real, y sus acciones son reflejadas por el anfitrión para mantener el juego sincronizado.

La idea es asegurarse de que, cuando estés en el fragor del momento, disparando o defendiéndote de un ataque, el juego responda al instante, haciendo que la experiencia Multiplayer sea fluida.

Direccionamiento Addressables y gestión de memoria

¿Algún otro dato específico que pueda compartir? ¿Algo que nuestros lectores puedan llevarse como una poderosa lección aprendida?

Daniel: Nos enfrentamos a muchos retos, pero uno de los más importantes fue la gestión de la memoria. Aprendimos mucho sobre el ensamblaje y Addressables, sobre todo porque era el primer juego multijugador para todo el equipo.

Lo curioso es que nuestro juego ni siquiera tiene tantos recursos, pero los tiempos de carga llegaron a ser de dos minutos en un momento dado, una locura para un juego pequeño. Sin duda, los jugadores se enfadaron.

Así que, sí, aprendimos por las malas a mantener las cosas racionalizadas, en cuanto a memoria y activos. Deberíamos haber clavado lo básico desde el principio.

¿Y los Addressables? ¿Qué aprendió allí concretamente?

Yannick: El trato con Addressables es bastante sencillo. Tienes que organizar tus activos en grupos que tenga sentido cargar juntos al mismo tiempo. De este modo, no se atasca el juego con cosas que ni siquiera se utilizan en una escena concreta.

Por ejemplo, nuestro juego tiene diferentes sectores, cada uno con su propio conjunto de enemigos, escenarios y decorados. Al principio, lo agrupamos todo en un grupo enorme, lo que era una pesadilla para los tiempos de carga. Para racionalizar las cosas, empezamos a agrupar los activos por sectores. Esto ha supuesto una gran diferencia, ya que ahora podemos cargar sólo los enemigos o sólo el escenario de un sector, según sea necesario, con lo que al final todo resulta mucho más eficaz y fluido.

¿Por qué eligió Netcode for GameObjects (ONG) para trabajar en red?

Yannick: Elegimos NGO para la creación de redes principalmente porque está respaldada por Unity. Esto significa que es probable que evolucione junto con la plataforma y reciba apoyo a largo plazo, lo que es crucial para nosotros. Además, NGO tenía todas las características que necesitábamos.

Lo que queríamos era una conexión de igual a igual para evitar costes de servidor, lo que puede ser un gran problema para un juego cuyas ventas y base de jugadores son inciertas. Con NGO, nos sentimos seguros de que estábamos haciendo una apuesta segura tanto para nuestras necesidades actuales como para el desarrollo futuro. Parecía la opción más inteligente para permanecer en el ecosistema de Unity y asegurar el apoyo a largo plazo para nuestro juego.

¿Qué es lo próximo para Ship of Fools?

Hasta ahora, hemos lanzado dos grandes actualizaciones repletas de contenido nuevo y dos DLC que introducen nuevos personajes. Estos DLC son totalmente opcionales, lo que ofrece a los jugadores más opciones sin que se sientan excluidos si deciden no hacerse con ellos. ¿Y lo mejor? Esas grandes actualizaciones de contenido estaban en la casa y, por lo que hemos visto, a la gente le han gustado mucho.

En cuanto a lo que está por venir, tenemos planes, pero por ahora tenemos que mantenerlos en secreto. Sin embargo, cuando estemos listos para desvelar futuras actualizaciones, estarás al tanto.

¿Le interesa el desarrollo Multiplayer? Explora la sección Multiplayer en el informe 2024 Unity Gaming Report para obtener información de estudios de éxito, nuevos datos sobre por qué más estudios están desarrollando juegos multijugador, y una gran cantidad de consejos para ayudarte a ti y a tu equipo a manteneros a la vanguardia.