Keep Moving Showdown
Diseñador de juego · Programador · Entorno 3D
Party game online para 2–4 jugadores hecho en 42 horas para la Create Jam Fall 2026. Siete minijuegos sobre una sola regla, si dejas de moverte tu mecha arde, y un entorno PS1 construido con un shader propio en lugar de modelado a medida.
Stack
Unity, C#, URP, HLSL, Netcode for GameObjects, PSXIFY
Enlaces

Keep Moving Showdown es un party game online para dos a cuatro jugadores hecho en 42 horas para la Create Jam Fall 2026. Cada coche lleva una bomba en el techo cuya mecha arde mientras está parado, y una partida es un torneo de minijuegos cortos en el que gana quien suma más puntos. Me encargué del diseño, la programación y el entorno 3D; una diseñadora se ocupó de la UI y el logo.
Primero un loop jugable, después los minijuegos
El objetivo del primer día no era tener muchos minijuegos, sino un torneo que se pudiera jugar de principio a fin, aunque fuera con uno solo. La primera noche ya funcionaban los coches en red, el daño, el flujo de torneo con escena de transición y ranking, y Sky Is Falling como primer minijuego.
Con ese loop cerrado, cada minijuego nuevo era una pieza que se enchufaba a algo que ya funcionaba. Todos parten del mismo prefab de escenario, con el estadio, la cámara, el HUD y el gestor que lleva la introducción, la cuenta atrás, las eliminaciones y la tabla de puntos. Cada minijuego solo define su mecánica, cuándo termina y cómo ordena a los jugadores.
El segundo día llegaron el look PSX, la regla de la bomba en todos los modos, Bomb People, Missile Mayhem, Conveyor Chaos y las mangas. El último día se sumaron Treadmill Shift, Dirt Race y Sweeper, y el resto del tiempo fue pulido: el daño por choques, el audio y el menú de opciones. Por el camino, uno de los minijuegos del primer día, Don’t Fall, se quedó fuera.
Una regla, siete formas de moverse
Durante la ronda, si el acelerador baja de un umbral, se mantiene el freno de mano o el coche casi no avanza, empieza una mecha de tres segundos. Solo se reinicia acelerando de verdad: dejarse llevar o ser empujado no cuenta. La regla se aprende una vez y cada minijuego decide qué significa moverse.
En cinco minijuegos la regla se aplica tal cual y lo que cambia es el entorno: una cinta que obliga a acelerar para no caer, obstáculos que paran el coche y obligan a dar marcha atrás, o peatones que hacen peligroso quedarse quieto. Treadmill Shift y Sweeper son la excepción: el juego mueve el coche y el jugador no conduce, así que la regla se traduce a otro input, seguir el ritmo de los cambios o saltar a tiempo. La bomba sigue en el techo para que el coche se lea igual.
Del prototipo de conducción al juego
Todo empezó con la conducción: una arena cenital en grey-box con un único coche, derrape, turbo y una barra giratoria como primer peligro. Las marcas de neumáticos y el humo se añadieron para que el derrape se lea de un vistazo.
El manejo acabó siendo un modelo arcade con un muelle por rueda, y cada jugador simula su propio coche para que responda igual sea quien sea el host. El turbo y su medidor se quitaron el segundo día.
Treadmill Shift: del papel a la ronda
Treadmill Shift se dibujó antes de construirse, y el boceto ya contiene el diseño completo: cuatro cintas inclinadas con un coche cada una, una palanca de cambios y una fila de flechas para el input.

Las cintas oscilan entre cinco inclinaciones, una por marcha, de 45 grados en primera a plana en quinta. Cada cambio pide un combo de cuatro flechas, o de seis si salta dos marchas. Si se acaba el tiempo el coche baja una posición, y fallar abajo del todo lo hace explotar. Una flecha errónea no corta el combo, pero quita un 30 % del tiempo que queda.
La palanca se dibuja como una caja de cambios en H de cinco marchas: la marcha objetivo parpadea, un combo completo la hace pasar por el punto muerto y un fallo la hace rascar con el pomo en rojo. Así pulsar flechas se lee como una acción física.
Un entorno 3D sin modelador
No teníamos a nadie dedicado al modelado 3D, así que el entorno necesitaba un flujo de trabajo en el que los escenarios se montaran con geometría básica. La solución fue un único shader propio en URP que usan todos los materiales del juego y que se encarga de casi todo el aspecto final.
Textura
Las texturas se muestrean sin filtrar y con la resolución limitada, sin corrección de perspectiva, y los vértices se ajustan a una resolución virtual, como en el hardware de PS1.
Color
El color se reduce a 15 bits con un tramado ordenado de 4×4 y puede pasar por una paleta propia, horneada en una LUT que elige el color más cercano.
Proyección
La textura se proyecta desde la posición en el mundo en lugar de depender de las UVs, así que un cubo escalado a muro o a suelo mantiene el mismo tamaño de texel.



La iluminación también sigue las reglas de la época. Las luces se calculan por vértice, con un sistema de luces propio que envía al shader las 24 más cercanas, y para que los focos dejen manchas de luz visibles en suelos grandes hay cubos teselados que sustituyen al cubo de Unity. La oclusión ambiental se recorta en unas pocas bandas tramadas, en bloques del tamaño de un píxel de 240p, para que se parezca al color prehorneado en los vértices y no a un efecto moderno. Encima van conos de luz volumétricos, sombras circulares bajo los coches, parpadeo en algunas lámparas y un postproceso de pantalla CRT.
Con este sistema, primitivas y texturas tileables bastan para construir escenarios coherentes con el estilo sin un pase de modelado a medida. Para los props se usaron escaneos CC0 de Poly Haven, convertidos con PSXIFY, mi herramienta para hornear assets de alto poligonaje en assets estilo PS1, para que encajaran con el mismo tratamiento.


Para distinguir a cada jugador, cada coche recibe una decoración generada a partir de una semilla: colores, patrón, patrocinadores y dorsal. Como es determinista, el mismo jugador lleva el mismo coche en el garaje, en cada minijuego y en el podio.
Siete minijuegos en red sin sincronizar cada evento
Uno de los jugadores hace de host y el resto se conecta por Relay. La mayoría de las mecánicas no envían mensajes por evento: la velocidad de las cintas, el ángulo del brazo de Sweeper y la secuencia completa de cambios de Treadmill Shift se calculan a partir del tiempo de ronda compartido y de una semilla que el host reparte al empezar, así que todas las máquinas obtienen el mismo resultado.
Los impactos siguen un patrón común: el dueño de cada coche detecta el golpe y lo comunica, y el host comprueba con cierto margen que el obstáculo, el misil o el brazo estaba realmente cerca en su propia vista antes de quitar la vida. Así la latencia no mata a nadie por algo que en su pantalla había esquivado.
Estructura del torneo
En una partida se juega cada minijuego una vez, en orden aleatorio y sin repetir dos seguidos. Conveyor Chaos, Treadmill Shift y Sweeper se juegan en varias mangas que dan sus propios puntos (4, 3, 2 y 1), y la suma decide el puesto en el minijuego. Ese puesto da los puntos del torneo, 10, 6, 3 y 1, de modo que un minijuego con mangas pesa lo mismo que uno de una sola ronda. Entre minijuegos, una escena de pasillo presenta a los coches uno a uno, y al final hay un podio con los tres primeros.
Mi rol
Diseño de juego · Programación · Entorno 3D
- Diseñé la regla de la bomba, los siete minijuegos y la estructura del torneo.
- Programé la conducción, el multijugador, el flujo de minijuegos y mangas, y cada mecánica.
- Construí el entorno 3D y el pipeline visual: el shader PSX, la iluminación, la oclusión ambiental y el postproceso.
- Procesé los props escaneados con PSXIFY para integrarlos en el estilo.
- Una diseñadora se encargó de la UI y el logo.
Stack
- Unity, C#, URP y shaders HLSL
- Netcode for GameObjects, Unity Relay y Multiplayer Services
- PSXIFY y escaneos CC0 de Poly Haven
Créditos
Sedán basado en «Low-Poly Derby Sedan Base» de S1lMoon. Audio de motor de dobroide y de público de dersuperanton (CC BY 4.0) y otros sonidos de Freesound.