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
~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.
Hoofdstuk 0 — de vonk
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.
Hoofdstuk 1 — een gevecht dat klopt
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.
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.
Hoofdstuk 2 — de mocap-pivot
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:
Hoofdstuk 3 — het worden snacks, geen mens-boksers
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:
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 4 — roster-redesign + een echt logo
23 juni, ochtend
Niet elke snack werkt als vechter. De platte, ronde bamischijf had geen torso en faalde de auto-rig keer op keer. De fix was geen software-truc maar een ontwerp-keuze: maak er een rechtopstaand goudbruin Bamiblok van — een lijf dat de rigger wél begrijpt. De Berenhap werd realistischer (ruig gehakt, doorschijnende ui, pindasaus).


En een game heeft een gezicht nodig. Het logo werd op groen scherm gegenereerd en transparant gekeyd met ffmpeg — een vrijstaande snackbar-badge in vet italic, goud en rood, met een title-slam-variant voor de trailer.
Hoofdstuk 5 — de karakters waren zó gaaf dat het plan kantelde
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.
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.
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:
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).




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:
Hoofdstuk 6 — van prototype naar volwaardige vechtgame
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:
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
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
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:
| Post | Wat | Kosten |
|---|---|---|
| nano-banana beelden | 31 stuks (exact gelogd) | $4,93 |
| Veo 3 Fast video | 18 clips · 84s @ $0,15/s | $12,60 |
| muziek / sfx / experimenten | + wat Kling-tests | ~$1–2 |
| ffmpeg-montage + sound-design | lokaal | gratis |
| Totaal trailer | ~37 seconden | ≈ €17 |
Meshy (3D) loopt op een vast maandabonnement en staat los van dit bedrag.
Nieuw — het verhaal als stripboek
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
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 →