Pong-game die zichzelf elke frame opnieuw compileert wint C-codeprijs

Ontwikkelaar Jonah Uellenberg won deze maand de Ping Pong-prijs tijdens de 29ste International Obfuscated C Code Contest. Hij maakte een versie van Pong die zichzelf iedere frame hercompileert in onleesbare C-code.

Het spel heet Quine pong. De game draait in de terminal en laat een reeks C-code zien, met daarin twee batjes en een balletje. Iedere keer dat het programma wordt gedraaid, wordt een nieuwe frame getoond en wordt die daarna alvast berekend.

Door de game iedere keer opnieuw te compileren en draaien, wordt de game dus speelbaar. Standaard moet het spel voor iedere frame dus in feite herstart worden, hoewel Uellenberg ook een scriptje meelevert dat dat volledig automatiseert. Je hoeft dan alleen je toetsenbord te gebruiken om het batje te bedienen en de rest gaat vanzelf.

Je speelt als het rechterbatje en hebt slechts twee toetsen nodig om te spelen: 'w' voor omhoog en 'e' voor omlaag. Verder is het spel alleen singleplayer: je speelt altijd tegen de computer. Als je wint, wacht je een leuke verrassing die we niet zullen spoilen. De game is te downloaden op GitHub.

Quine pong
Quine pong. Als je goed kijkt, zie je in het middelste 'blok' twee batjes en een bal. Bron: Jonah Uellenberg

Prijzen voor onleesbare code

Quine pong won dit jaar dus een prijs tijdens de IOCCC-wedstrijd. Tijdens die jaarlijkse wedstrijd nemen ontwikkelaars het tegen elkaar op om op creatieve wijze de meest cryptische en onleesbare C-programma's te schrijven.

Naast ping pong, zijn er ook prijzen voor de programma's die het 'meest rustgevend' zijn, of de programma's die de grootste kans maken om te choqueren, indruk te maken of te teleporteren.

Uellenberg erkent wel dat de C-code in het spel stiekem helemaal niet obfuscated is. De ontwikkelaar schreef een eigen compiler in 'schone' code. Hij gebruikte daarvoor een eigen programmeertaal genaamd Insert. De compiler genereert de onleesbare C-code waarin de game gespeeld kan worden. Ook Insert staat op GitHub.

IOCCC29 Ping Pong Prize
Bron: IOCCC

Door Daan van Monsjou

Nieuwsredacteur

30-06-2026 • 15:57

17

Submitter: Skit3000

Reacties (17)

Sorteer op:

Weergave:

Voor mij was dit de eerste keer deelnemen aan de IOCCC, kan het iedereen een keer aanraden :). Ik ben een van de auteurs van de 'teleporteren' link in dit artikel.
Leuk bedoeld maar is dit evenement niet een goudmijn voor malware makers? Obfuscatie van malware code is een gigantisch probleem waar veel anti-virus scanners op nat gaan.
Dan zouden anti-virusscanners er voor kunnen zorgen dat code die obfuscated is of continue verandert geblocked wordt. Dan is het weer aan de developers om het zodanig aan te passen dat het weer wordt geaccepteerd door AV scanners.
Is een brok versleutelde code ook maar een beetje nuttig voor malware developers? Ik zou zeggen van niet.
Nee. Malware scanners malen niet om onleesbare C source code. Die kijken naar assembly en naar script taaltjes.
Zelf-compilerende en adaptieve code wordt wel degelijk aangemerkt door een degelijke EDR. Het is niet langer een lijstje van binaries die virussen zijn. De meeste EDR zijn patroonherkenning - bijvoorbeeld een programma dat tekstbestanden of documenten omzet in blocks met hoge randomizatie, een programma dat niet van Microsoft is dat een macro toevoegt aan documenten, een programma dat tegelijkertijd DNS queries doet, bestanden leest/schrijft en poorten openzet.

En dan kom je inderdaad soms tegen dat je 'legitieme' programma's stilzet. De vraag is altijd, is er nut om bepaalde personen toe te laten zulke programma's uit te voeren. Vb. je mag enkel maar PsExec uitvoeren als je bij de IT groep hoort en van een specifieke machine.
Aan het eind verschijnt de tekst:

"A strange game. The only winning move is not to play. How about a nice game of chess?" :+


@Alle reacties hieronder:
Natuurlijk is dit niet wat er gebeurt, dit is een hele oude quote, maar ik heb hier blijkbaar te maken met een generatie die te jong is om Wargames in de bioscoop te hebben gezien. De wat oudere generatie snapt de grap waarschijnlijk wel, maar ik geef toe, zo leuk was hij nou ook weer niet, dus mod maar weg.

https://www.imdb.com/title/tt0086567/quotes/

[Reactie gewijzigd door Gepetto op 30 juni 2026 17:24]

Rustig mensen, hij spoilt ook niet.
Er wordt bewust niet gespoild in het artikel.

onsportief hoor
In het artikel schrijven ze:
Als je wint, wacht je een leuke verrassing die we niet zullen spoilen.
Dus jij dacht: "mooi dan doe ik dat lekker"

Waarom? Echt jammer ..
Dank je voor die edit, herinnert me eraan dat het na de 15 jaar wel weer eens tijd is om die film te kijken! Heb hem al 2x gezien en is voor een film uit 1983 nu, in tijden van AI oorlogsvoering, weer verrassend actueel.
Vraag: Waarom?

Antwoord: Omdat het kan!
Geinig. Ik moest na het spelen gelijk denken aan de Dino in Google Chrome. Ik kan helaas niet linken, dus maar op deze manier: kopieer en plak in Chrome de tekens tussen hoge komma's: "chrome://dino" . Have fun!
denk dat de chrome-dino voor velen eerder ptsd-verschijnselen oproept
Lol, mijn vader had hem van de week nog.
Daarom weet ik wat je bedoelt en ik Ik kan me voorstellen dat het 'geen internet' bij velen een latente PTSD aanwakkert als ze de cactus-jump-dino game zien.
Toch maar eens mijn philips g7000 videopac overklocken.. :+
Ah, mooie tijden. Met het gevoel van een tandarts die een kies trekt die cassettes wisselen. Satellite Attack (een soort Asteroids) was mijn favoriet. We hadden een witgoedzaak die de games verhuurde, dat was top.

Om te kunnen reageren moet je ingelogd zijn