Snackbar Showdown · Brabant · een bouwlog

Van knokkende frikandel tot Super-Bowl-trailer

Het begon met één beeld in mijn hoofd: een knokkende frikandel. Vijf dagen later was er een complete vechtgame met negen frituur-mascottes, echte 3D-rigs, een deterministische vecht-engine en een cinematic intro-trailer. Dit is hoe — met de echte beelden, de doodlopende paden, en onderaan: speel het zelf.

De payoff eerst

De trailer

~37 seconden · cold-open → ring-reveal → 9 fighter-vignettes → KABOOM

Geen spoiler-vrees: hier is waar het op uitliep. Een hype-intro op Super-Bowl-niveau, gemonteerd uit twaalf los gegenereerde shots. Daarna lees je terug hoe elk beeld is ontstaan.

assets/cinematic/FRIETFIGHTER-intro-FINAL.mp4 — eindmontage: flash-cuts, lightning strike-ins, boombastic logo-slam, quick-fire recap, magie-finale, logo-endscreen. Muziekbed + gesynthetiseerde sound-design.
5dagen van vonk tot trailer
9speelbare snack-fighters
12cinematic shots (i2v)
~€17API-kosten trailer

Hoofdstuk 0 — de vonk

"Friet Fighter" — en meteen een knokkende frikandel

18 juni 2026 · 21:57 — eerste commit

Geen plan, geen pitch, geen marktonderzoek. De term Friet Fighter schoot me door het hoofd, en daarbij meteen een beeld: een frikandel met bokshandschoenen die ervoor gaat. Ik moest grinniken — en dat grinniken was genoeg om te beginnen.

De grap zit in het thema. De ambitie zat ergens anders: dit moest een echte fighter worden, geen parodie-mini-game. Wie fighting games speelt, moet meteen zien dat dit klopt — frame data, hitstun, blockstun, anti-airs, super meter — en moet lachen om wie er staat te knokken.

Frikandel-mascotte met bokshandschoenen
De frikandel zoals hij er uiteindelijk uitkwam: gladde bruine worst, rode handschoenen, rushdown-archetype (de "shoto"). public/concepts/frikandel-mascot-A.jpeg
"Wie fighting games speelt, herkent direct dat dit een echte fighter is — en moet lachen om wie er vecht."
— de north star, dag 1

Hoofdstuk 1 — een gevecht dat klopt

Eerst de feel, dan de friet

18 juni, avond → 19 juni, nacht

De eerste avond ging niet naar plaatjes maar naar fundering: een deterministische combat-core — de simulatie staat helemaal los van de rendering. Fixed-timestep, frame-data, hitboxes en hurtboxes, health bars, een round/KO-systeem. Pas toen de capsules correct tegen elkaar knokten, kwam de eerste echte vechter erin: de Frikandel, met per-move animaties en een AI-tegenstander.

// de feel wordt bewezen met primitieven, vóór er art in zit jab startup 4 active 5 recover 8 // snel, kort, veilig heavy startup 10 active 6 recover 18 // traag, ver, hard hit → hitstop 9f · screenshake · knockback · meter+13 block→ chip 18% · pushback · meter+4

Diezelfde nacht kwam er een detail bij dat me het meest plezier gaf om te bouwen: de game ging zichzelf testen. Een geautomatiseerde browser-UAT die de draaiende game end-to-end speelt en controleert of klappen daadwerkelijk afspelen — handig, want precies dáár zat een bug (een crossfade-gewicht waardoor klappen onzichtbaar bleven). Daarna: Kroket als tweede vechter, een titelscherm, en de stage waar alles zich afspeelt — de friettent.

De friettent-stage
De stage: een Brabantse friettent met neon, een menubord vol "FRITES", frituurstoom en een klok die meetikt. public/ui/stage-friettent.png — dit is precies het decor waarin je straks zelf vecht.

Hoofdstuk 2 — de mocap-pivot

Echte beweging — en waarom die later sneuvelde

19 juni, nacht → ochtend

Procedurele bone-rotaties waren een prima prototype, maar niet "high-end". Dus: kon ik echte CMU motion-capture op een frituursnack krijgen? Na een squish-bug (opgelost door te retargeten op een netjes gefitte rig) bleek het te kunnen — een volledige moveset van 12 mocap-clips, voor Frikandel én Kroket. Even later kwam er een Meshy auto-rig pipeline bij: een echte professionele rig, mét behoud van de look.

Het zag er goed uit. En tóch is deze hele aanpak later gesneuveld — om een reden die je pas ziet als je het probeert: mocap is opgenomen op mensen. Een mens heeft heupen op mens-hoogte. Een stompe snack niet. Het resultaat: snacks die zweven alsof ze onzichtbare benen hebben. Daarover in hoofdstuk 3 meer. Eerst het bewijs dat de beeld-pipeline op zich wél werkte:

Vroege test-ringwalk van de Frikandel: image-to-video vanaf één eigen keyframe → vloeiende beweging, consistente look, camera die meeduwt. assets/cinematic/test-ringwalk-frikandel.mp4

Hoofdstuk 3 — het worden snacks, geen mens-boksers

De doorbraak: 2D-concept eerst, dán 3D

22 juni

Het kernprobleem werd glashelder: gooi je een tekstprompt ("een vechtende frikandel") in een text-to-3D-tool, dan maakt die er telkens een mens-bokser met een snack-skin van. De snack-identiteit verdween steeds.

De oplossing draaide de volgorde om: eerst een 2D-canonical tekenen (met nano-banana) waarin de snack onmiskenbaar een snack ís — en dat beeld dan via image-to-3D (Meshy) een lichaam geven. Geen mens met een jasje, maar een frikandel die toevallig armpjes heeft. En in één klap stond het hele startroster: negen fighters, elk met een eigen archetype en glove-kleur voor leesbaarheid.

Klik een snack — speel z'n vignette uit de trailer af:

Frikandel · Rushdown — knalt door de klapdeur, dasht op de lens, jab-freeze.

Toen de snacks eenmaal echt snacks waren, kwam meteen het mocap-probleem terug: op de menselijke heuphoogte zweefden de stompe bodies. Beslissing: mocap eruit, procedurele pose-to-pose animatie erin — cartoon-squash in plaats van knie-IK. Precies dat principe — een snack die platdrukt en uitrekt op een klap in plaats van met "echte" knieën te buigen — speelt de preview onderaan na.

Hoofdstuk 5 — de karakters waren zó gaaf dat het plan kantelde

Eerst de trailer

23 juni

Het roster was zo inspirerend dat de prioriteit omsloeg: vóór verder bouwen aan de game, eerst een Super-Bowl-waardige intro-trailer. Het kernprincipe dat alles mogelijk maakte: karakter-consistentie via eigen keyframes. Geen text-to-video (dat verzint nieuwe snacks), maar image-to-video vanaf een startframe waarin de fighter al correct in de ring staat. Zo zijn de negen per definitie zichzelf.

Eén keyframe → één shot

Per shot eerst een keyframe (nano-banana, met het 2D-concept + de friettent als referenties), daarna dat frame tot leven gebracht. De toolkeuze werd onderweg bijgesteld: Kling zat globaal vast in de wachtrij (posities in de duizenden), dus werd Veo 3 Fast het werkpaard — direct, met native audio.

Cold-open: neon friettent-gevel in de regen, het bord flikkert, de camera duwt naar de deur. assets/cinematic/hero-coldopen.mp4

Negen unieke intro's — geen lege ring

Het treatment kreeg een harde regel: elke snack krijgt een eigen vignette, afgeleid van zijn archetype en zijn aard — en de ring blijft tot de climax uit beeld, zodat de finale een echte onthulling is. De Bitterbal rolt als bowlingbal over de toonbank door de sauzen; de Kaassoufflé flikt gesmolten kaas-slierten als projectielen; de Eierbal zweeft naar beneden door vallend zout. Speel ze hierboven per snack af, of bekijk de finale-onthulling:

De ring-reveal — pas hier komt de arena vol in beeld. assets/cinematic/hero-reveal.mp4

De FX-laag

Over de twaalf shots heen kwam een postlaag: lightning strike-ins, een explosie op de KABOOM, magie-gloed op de finale, een shockwave op de logo-slam — gecomponeerd in ffmpeg, met een muziekbed en gesynthetiseerde sound-design (rijke logo-impacts: crack + sub + rumble + reverb).

lightning
lightning
explosion
explosion
magic
magic
shockwave
shockwave

Van eerste montage naar eindversie

De edit ging niet in één keer goed. De lat was expliciet "Super-Bowl-ad, geen clips achter elkaar", en dus werd het: v1 → v2 → v3 → v3.1 → v3.2 → FINAL. Vergelijk zelf:

FRIETFIGHTER-intro-FINAL.mp4 — de eindversie.

Hoofdstuk 6 — van prototype naar volwaardige vechtgame

De diepte erin: specials, supers, muziek en een slimme AI

eind juni 2026 · v0.33 → v0.52

Na de trailer ging de game zelf van "speelbaar prototype" naar iets dat écht als een high-end fighter aanvoelt. In een reeks updates kwam de hele schil én de diepte erbij:

Curry-mayo sauce-projectiel
De fireball is geen abstracte blob meer maar een echte spat curry-mayo. assets/projectiles/proj-frikandel.png

Elke stap is getest (unit-tests + headless browser-UAT) en meteen live gezet. De combat-kern bleef de hele tijd deterministisch — dezelfde inputs geven altijd hetzelfde potje, wat testen (en later rollback-netcode) mogelijk maakt.

Zo bouwen we

Het dev-lab: elke vechter, elke move

Animeren zonder mocap betekent: heel veel kijken. Daarom bouwden we een dev-lab — een orbit-viewer waarin je elk 3D-karakter van alle kanten bekijkt en élke move + special procedureel afspeelt, met finetune-sliders. Precies het gereedschap waarmee de poses hierboven zijn gekalibreerd. Hieronder draait het live:

Kies links een vechter, klik rechts een move of ★-special. Open het dev-lab op volledig scherm →

Eerlijk over het proces

Veel regeneraties, weinig magie

Dit is geen verhaal van one-shot-perfectie. Het is een verhaal van iteratie — en dat hoort erbij. De bugs die opdoken waren meestal in 15–30 minuten gefixt; het bouwen zelf ging op het gemak, 's avonds en 's nachts. Wat er écht aan tijd ging zitten:

PostWatKosten
nano-banana beelden31 stuks (exact gelogd)$4,93
Veo 3 Fast video18 clips · 84s @ $0,15/s$12,60
muziek / sfx / experimenten+ wat Kling-tests~$1–2
ffmpeg-montage + sound-designlokaalgratis
Totaal trailer~37 seconden≈ €17

Meshy (3D) loopt op een vast maandabonnement en staat los van dit bedrag.

Nieuw — het verhaal als stripboek

Lees het verhaal als comic

Cover van de Friet Fighter comic

Het hele ontstaansverhaal van Friet Fighter is nu ook een stripboek — sla de pagina's om en lees de Gulden Frituurslag.

Van het Vet en de Ontwaking, via Patatje Oorlog en de slag zelf, tot het offer en de heropleving. Een cover plus zes pagina's in de huisstijl (warm/koud palet, ben-day halftone), met echte blad-omslag-animaties.

Lees de comic →

En nu jij

Speel de Snackbar Showdown

Genoeg gekeken. Hieronder draait een speelbare preview — geen video, een echt gevecht in je browser. Kies een snack, stap de friettent in, en voel de pijlers waar dit hele project op rust: hitstop, screenshake, hit-sparks, KO-slowmo en de cartoon-squash die in de plaats kwam van mocap. Best of three.

P1 — A/D lopen · W springen · S blok · F jab · G stomp · H special (volle meter)  ·  tegen de CPU of een vriend (P2: pijlen + , . /).
Werkt 'm niet lekker in het kader? Open de game op volledig scherm →