Salta al contingut
Inici

Projectes / Keep Moving Showdown

Keep Moving Showdown

Dissenyador de joc · Programador · Entorn 3D

2026 | En desenvolupament

Party game en línia per a 2–4 jugadors fet en 42 hores per a la Create Jam Fall 2026. Set minijocs sobre una sola regla, si deixes de moure't la teva metxa crema, i un entorn PS1 construït amb un shader propi en lloc de modelatge a mida.

Stack

Unity, C#, URP, HLSL, Netcode for GameObjects, PSXIFY

Enllaços

Provar el joc ↗

Keep Moving Showdown cover
Un torneig sobre una sola regla

Keep Moving Showdown és un party game en línia per a dos a quatre jugadors fet en 42 hores per a la Create Jam Fall 2026. Cada cotxe porta una bomba al sostre amb una metxa que crema mentre està aturat, i una partida és un torneig de minijocs curts en què guanya qui suma més punts. Em vaig encarregar del disseny, la programació i l’entorn 3D; una dissenyadora es va ocupar de la UI i el logo.

7minijocs jugables
42 hde jam, de la idea a la build
2–4jugadors en línia, un fa de host

Primer un loop jugable, després els minijocs

L’objectiu del primer dia no era tenir molts minijocs, sinó un torneig que es pogués jugar de principi a fi, encara que fos amb un de sol. La primera nit ja funcionaven els cotxes en xarxa, el dany, el flux de torneig amb escena de transició i rànquing, i Sky Is Falling com a primer minijoc.

Amb aquest loop tancat, cada minijoc nou era una peça que s’endollava a una cosa que ja funcionava. Tots parteixen del mateix prefab d’escenari, amb l’estadi, la càmera, el HUD i el gestor que porta la introducció, el compte enrere, les eliminacions i la taula de punts. Cada minijoc només defineix la seva mecànica, quan acaba i com ordena els jugadors.

El segon dia van arribar el look PSX, la regla de la bomba a tots els modes, Bomb People, Missile Mayhem, Conveyor Chaos i les mànegues. L’últim dia s’hi van sumar Treadmill Shift, Dirt Race i Sweeper, i la resta del temps va ser polir: el dany per xocs, l’àudio i el menú d’opcions. Pel camí, un dels minijocs del primer dia, Don’t Fall, es va quedar fora.

Una regla, set maneres de moure’s

Durant la ronda, si l’accelerador baixa d’un llindar, es manté el fre de mà o el cotxe gairebé no avança, comença una metxa de tres segons. Només es reinicia accelerant de debò: deixar-se portar o ser empès no compta. La regla s’aprèn una vegada i cada minijoc decideix què vol dir moure’s.

Sky Is FallingQuatre plataformes unides per ponts d’un cotxe d’amplada; esquivar el que cau del sostre
Bomb PeopleArena oberta amb vianants explosius que carreguen contra el cotxe més proper
Missile MayhemCada cotxe apunta un làser conduint i dispara míssils a intervals aleatoris
Conveyor ChaosAccelerar contra una cinta que arrossega al buit mentre arriba ferralla; tres vides
Dirt RaceDues voltes a un circuit de terra generat; xocar de cara amb un obstacle encén la metxa
Treadmill ShiftSense conducció: combos de fletxes per canviar de marxa abans que la cinta s’inclini
SweeperSense conducció: carregar la suspensió i saltar un braç que gira cada cop més ràpid

En cinc minijocs la regla s’aplica tal qual i el que canvia és l’entorn: una cinta que obliga a accelerar per no caure, obstacles que aturen el cotxe i obliguen a fer marxa enrere, o vianants que fan perillós quedar-se quiet. Treadmill Shift i Sweeper són l’excepció: el joc mou el cotxe i el jugador no condueix, així que la regla es tradueix a un altre input, seguir el ritme dels canvis o saltar a temps. La bomba continua al sostre perquè el cotxe es llegeixi igual.

Del prototip de conducció al joc

Tot va començar amb la conducció: una arena zenital en grey-box amb un sol cotxe, derrapada, turbo i una barra giratòria com a primer perill. Les marques de pneumàtics i el fum es van afegir perquè la derrapada es llegeixi d’un cop d’ull.

El maneig va acabar sent un model arcade amb una molla per roda, i cada jugador simula el seu propi cotxe perquè respongui igual sigui qui sigui el host. El turbo i el seu mesurador es van treure el segon dia.

El primer prototip: arena en grey-box, derrapada i turbo, i una barra giratòria com a primer perill.

Treadmill Shift: del paper a la ronda

Treadmill Shift es va dibuixar abans de construir-se, i l’esbós ja conté el disseny complet: quatre cintes inclinades amb un cotxe cadascuna, una palanca de canvis i una fila de fletxes per a l’input.

EsbósEsbós a mà de quatre cintes inclinades amb un cotxe a la primera, una fletxa cap a una palanca de canvis i una fila de quatre fletxes de direcció a sota
L’esbós original: quatre cintes, la palanca de canvis a la qual alimenten i el combo de fletxes que ha d’introduir el jugador.
Al joc
Treadmill Shift al joc: el compte enrere i després els combos de fletxes que mouen la palanca de la dreta.

Les cintes oscil·len entre cinc inclinacions, una per marxa, de 45 graus en primera a plana en cinquena. Cada canvi demana un combo de quatre fletxes, o de sis si salta dues marxes. Si s’acaba el temps el cotxe baixa una posició, i fallar a baix de tot el fa explotar. Una fletxa equivocada no talla el combo, però treu un 30 % del temps que queda.

La palanca es dibuixa com una caixa de canvis en H de cinc marxes: la marxa objectiu parpelleja, un combo complet la fa passar pel punt mort i un error la fa grinyolar amb el pom en vermell. Així prémer fletxes es llegeix com una acció física.

Un entorn 3D sense modelador

No teníem ningú dedicat al modelatge 3D, així que l’entorn necessitava un flux de treball en què els escenaris es muntessin amb geometria bàsica. La solució va ser un únic shader propi a URP que fan servir tots els materials del joc i que s’encarrega de gairebé tot l’aspecte final.

Els mateixos escenaris en tres estats: Unity per defecte, textures sobre el shader Lit de Unity i el shader PSX amb il·luminació i postprocés.

Textura

Les textures es mostregen sense filtrar i amb la resolució limitada, sense correcció de perspectiva, i els vèrtexs s’ajusten a una resolució virtual, com al maquinari de PS1.

Color

El color es redueix a 15 bits amb un tramat ordenat de 4×4 i pot passar per una paleta pròpia, cuita en una LUT que tria el color més proper.

Projecció

La textura es projecta des de la posició al món en lloc de dependre de les UV, així que un cub escalat a mur o a terra manté la mateixa mida de texel.

1. Unity per defecteSweeper amb el material gris per defecte de Unity
Sweeper muntat amb primitives i el material per defecte.
2. TexturesSweeper amb textures sobre el shader Lit de Unity
Les mateixes textures repetibles sobre el shader Lit de Unity.
3. Shader PSXSweeper amb el shader PSX, il·luminació de focus i postprocés
El shader PSX, les llums per vèrtex, l’oclusió en bandes i el postprocés.

La il·luminació també segueix les regles de l’època. Les llums es calculen per vèrtex, amb un sistema de llums propi que envia al shader les 24 més properes, i perquè els focus deixin taques de llum visibles en terres grans hi ha cubs tessel·lats que substitueixen el cub de Unity. L’oclusió ambiental es retalla en unes poques bandes tramades, en blocs de la mida d’un píxel de 240p, perquè s’assembli al color precuit als vèrtexs i no a un efecte modern. A sobre hi ha cons de llum volumètrics, ombres circulars sota els cotxes, parpelleig en algunes làmpades i un postprocés de pantalla CRT.

Amb aquest sistema, primitives i textures repetibles n’hi ha prou per construir escenaris coherents amb l’estil sense una passada de modelatge a mida. Per als props es van fer servir escanejos CC0 de Poly Haven, convertits amb PSXIFY, la meva eina per coure assets d’alt poligonatge en assets estil PS1, perquè encaixessin amb el mateix tractament.

Conveyor Chaos partit en dos: a l'esquerra l'escena per defecte, a la dreta el resultat final
Conveyor Chaos: les cintes són cubs escalats; la textura projectada al món manté la mateixa mida a totes.
Treadmill Shift partit en dos: a l'esquerra l'escena per defecte, a la dreta el resultat final
Treadmill Shift: sense el shader, les cintes i els pilars són blocs grisos; amb ell, metall rovellat sota focus.

Per distingir cada jugador, cada cotxe rep una decoració generada a partir d’una llavor: colors, patró, patrocinadors i dorsal. Com que és determinista, el mateix jugador porta el mateix cotxe al garatge, a cada minijoc i al podi.

Set minijocs en xarxa sense sincronitzar cada esdeveniment

Un dels jugadors fa de host i la resta s’hi connecta per Relay. La majoria de les mecàniques no envien missatges per esdeveniment: la velocitat de les cintes, l’angle del braç de Sweeper i la seqüència completa de canvis de Treadmill Shift es calculen a partir del temps de ronda compartit i d’una llavor que el host reparteix en començar, així que totes les màquines obtenen el mateix resultat.

Els impactes segueixen un patró comú: el propietari de cada cotxe detecta el cop i el comunica, i el host comprova amb cert marge que l’obstacle, el míssil o el braç era realment a prop en la seva pròpia vista abans de treure la vida. Així la latència no mata ningú per una cosa que a la seva pantalla havia esquivat.

Estructura del torneig

En una partida es juga cada minijoc una vegada, en ordre aleatori i sense repetir-ne dos seguits. Conveyor Chaos, Treadmill Shift i Sweeper es juguen en diverses mànegues que donen punts propis (4, 3, 2 i 1), i la suma decideix el lloc al minijoc. Aquest lloc dona els punts del torneig, 10, 6, 3 i 1, de manera que un minijoc amb mànegues pesa el mateix que un d’una sola ronda. Entre minijocs, una escena de passadís presenta els cotxes un a un, i al final hi ha un podi amb els tres primers.

El meu rol

Disseny de joc · Programació · Entorn 3D

  • Vaig dissenyar la regla de la bomba, els set minijocs i l’estructura del torneig.
  • Vaig programar la conducció, el multijugador, el flux de minijocs i mànegues, i cada mecànica.
  • Vaig construir l’entorn 3D i el pipeline visual: el shader PSX, la il·luminació, l’oclusió ambiental i el postprocés.
  • Vaig processar els props escanejats amb PSXIFY per integrar-los a l’estil.
  • Una dissenyadora es va encarregar de la UI i el logo.

Stack

  • Unity, C#, URP i shaders HLSL
  • Netcode for GameObjects, Unity Relay i Multiplayer Services
  • PSXIFY i escanejos CC0 de Poly Haven

Crèdits

Sedan basat en «Low-Poly Derby Sedan Base» de S1lMoon. Àudio de motor de dobroide i de públic de dersuperanton (CC BY 4.0) i altres sons de Freesound.

Explorar

Build de la jam a itch.io · PSXIFY