In dit artikel blikt Ignacio Castaño terug op de eerste vier jaar van zijn onafhankelijke bedrijf, Ludicon. Hij analyseert de moeilijke marktcontext van 2022, waarin de game-industrie kampte met massale ontslagen en een sterke consolidatie van game-engines zoals Unity en Unreal, wat de businesscase voor onafhankelijke middleware complex maakte.
De focus van zijn werk ligt op textuurcompressie. Castaño beschrijft hoe AI een dubbelrol speelt: enerzijds zorgt generatieve AI voor een explosie van content en druk op hardwaregeheugen, anderzijds fungeert AI als een krachtige assistent die hem in staat stelt efficiënter te coderen, bugs sneller op te sporen en geavanceerde validatietools te bouwen.
Strategisch heeft hij besloten om zich te richten op real-time compressie in plaats van traditionele rate-distortion optimized (RDO) encoders. Hij concludeert dat deze keuze, in combinatie met moderne beeldformaten en opkomende neurale texturen, op de lange termijn de juiste richting is voor de toekomst van de industrie.
Vier jaar Ludicon – Ignacio Castaño
De context van 2022
Terugkijkend was 2022 geen bijzonder gunstig moment om een bedrijf in game-middleware te starten. In dat jaar alleen al zag de game-industrie 8.500 ontslagen. Die trend zou alleen maar verslechteren en is tot op heden niet gestopt.
Middleware was al in een gestage daling. Unity, Unreal en anderen boden complete engines aan zonder aanloopkosten. De vraag was niet langer of een component van een derde partij beter was dan wat je zelf zou schrijven, maar of het genoeg beter was om de vervanging van wat de engine al bood te rechtvaardigen. Dat was zelden het geval. De overname van RAD door Epic in 2021 markeerde het einde van dat tijdperk: de laatste grote onafhankelijke leverancier van kerntechnologie voor runtime maakte nu deel uit van een engine. Tegen de tijd dat ik in 2022 aan Spark begon te werken, had de consolidatie van engines gewonnen.
Tegen deze achtergrond was de businesscase ambigu, maar mijn hoop was dat met het verminderde personeelsbestand het langetermijnonderzoek naar kerntechnologie zou vertragen en het uitbesteden van die technologie aantrekkelijker zou worden.
Textuurcompressie en de komst van AI
Toen ik begon aan Ludicon, geloofde ik dat er een groeiende markt zou zijn voor textuurcompressie. Games werden alleen maar groter, de eisen voor visuele getrouwheid (fidelity) bleven stijgen, en texturen waren vaak de assets met de grootste voetafdruk. Tegelijkertijd werd een toenemende hoeveelheid content door de spelers zelf gegenereerd. Dit zorgde voor een explosie van content, en daarmee voor de noodzaak om tijdens runtime te comprimeren.
Wat ik niet had voorzien, was AI. Generatieve tools verlagen de drempels voor contentcreatie. Tegelijkertijd heeft de uitbouw van AI geleid tot tekorten en heeft het de prijs van geheugen en opslag opgedreven. Bestaande apparaten blijven langer in gebruik en nieuwe apparaten worden vaak geleverd met minder geheugen dan een paar jaar geleden. Beide drukfactoren werken in dezelfde richting: meer content, minder ruimte.
In het afgelopen jaar heeft AI ook de software-industrie veranderd. Deze transformatie is zo snel gegaan dat het duizeligheid opwekte. Op een gegeven moment vroeg ik me af of mijn baan in gevaar was. Zouden LLM's zelfstandig concurrerende textuurcodecs kunnen produceren? Ik heb het geprobeerd en ze kwamen niet in de buurt. Om goede resultaten te behalen is menselijke expertise en oordeelsvorming nodig. Toch heeft AI de manier waarop ik codeer getransformeerd, maar niet op de manier die je zou verwachten. Voor het grootste deel schrijf ik de codecs nog steeds met de hand, op de ouderwetse manier. AI stelt me alleen in staat om dat efficiënter te doen.
AI bekijkt mijn wijzigingen en vangt routinematig bugs op die uren aan debugging zouden hebben gekost. Het heeft me in staat gesteld tools te bouwen die aanvoelen als superkrachten. Zo kan ik één shader bewerken en automatisch statistieken en geannoteerde assembly-overzichten weergeven op alle platforms die ik ondersteun. Wanneer een klant een bug of probleem meldt, sluit ik gewoon het relevante apparaat aan en laat ik een agent een reproductie bouwen en een oplossing voor het probleem voorstellen. Wanneer een CI-build faalt, herstelt een agent dit automatisch en opent een PR. De tools voor validatie, CI en regressietests die ik nu heb, zijn beter dan wat ik me als solo-ontwikkelaar mogelijk had kunnen voorstellen.
Dit heeft me in staat gesteld om me te blijven concentreren op de problemen waar ik graag aan werk en waar ik een verschil kan maken.
(Bijschrift: Screenshot van de Spark assembly viewer in actie)
Strategische keuzes: RDO versus real-time compressie
Na de overname van RAD door Epic dacht ik dat er behoefte zou zijn aan een onafhankelijke technologieleverancier, en ik hoopte dat vacuüm te kunnen vullen. Het vullen ervan met een andere rate-distortion optimized (RDO) encoder betekende echter concurreren met een gevestigd product, gebouwd door enkele van de slimste ontwikkelaars die ik ken. Ik had eerder RDO-encoders geschreven en concludeerde dat dit een race was die ik niet kon winnen op kwaliteit of prestaties. Naar alle waarschijnlijkheid zou ik gedwongen worden om op prijs te concurreren.
Real-time compressie was interessanter. Het loste het probleem op van content die tijdens runtime wordt gecreëerd en het opende een andere oplossingsruimte voor opslag en transmissie. Traditionele RDO-blokencoders worden beperkt door de vaste-rate blokstructuur en schalen niet naar lage bitrates. Bij real-time compressie kan de tussenliggende representatie alles zijn, zolang het tijdens het laden maar kan worden gecodeerd in een GPU-vriendelijk formaat.
Ik denk nog steeds dat dit de juiste richting is. Moderne beeldformaten zoals WebP en AVIF, gecombineerd met Spark, leveren al veel betere compressieratio's dan RDO-blokencoders. Ze lijden echter onder trage decompressieprestaties. In het komende jaar voorspel ik dat er nieuwe codecs zullen komen met concurrerende kwaliteit en een veel hogere decodeersnelheid. Recent werk aan neurale texturen en geleerde codecs zal deze ruimte verder verbreden.
Vier jaar later denk ik dat mijn gok er beter uitziet dan in 2022.
Vier jaar Ludicon – Ignacio Castaño
De context van 2022
Terugkijkend was 2022 geen bijzonder gunstig moment om een bedrijf in game-middleware te starten. In dat jaar alleen al zag de game-industrie 8.500 ontslagen. Die trend zou alleen maar verslechteren en is tot op heden niet gestopt.
Middleware was al in een gestage daling. Unity, Unreal en anderen boden complete engines aan zonder aanloopkosten. De vraag was niet langer of een component van een derde partij beter was dan wat je zelf zou schrijven, maar of het genoeg beter was om de vervanging van wat de engine al bood te rechtvaardigen. Dat was zelden het geval. De overname van RAD door Epic in 2021 markeerde het einde van dat tijdperk: de laatste grote onafhankelijke leverancier van kerntechnologie voor runtime maakte nu deel uit van een engine. Tegen de tijd dat ik in 2022 aan Spark begon te werken, had de consolidatie van engines gewonnen.
Tegen deze achtergrond was de businesscase ambigu, maar mijn hoop was dat met het verminderde personeelsbestand het langetermijnonderzoek naar kerntechnologie zou vertragen en het uitbesteden van die technologie aantrekkelijker zou worden.
Textuurcompressie en de komst van AI
Toen ik begon aan Ludicon, geloofde ik dat er een groeiende markt zou zijn voor textuurcompressie. Games werden alleen maar groter, de eisen voor visuele getrouwheid (fidelity) bleven stijgen, en texturen waren vaak de assets met de grootste voetafdruk. Tegelijkertijd werd een toenemende hoeveelheid content door de spelers zelf gegenereerd. Dit zorgde voor een explosie van content, en daarmee voor de noodzaak om tijdens runtime te comprimeren.
Wat ik niet had voorzien, was AI. Generatieve tools verlagen de drempels voor contentcreatie. Tegelijkertijd heeft de uitbouw van AI geleid tot tekorten en heeft het de prijs van geheugen en opslag opgedreven. Bestaande apparaten blijven langer in gebruik en nieuwe apparaten worden vaak geleverd met minder geheugen dan een paar jaar geleden. Beide drukfactoren werken in dezelfde richting: meer content, minder ruimte.
In het afgelopen jaar heeft AI ook de software-industrie veranderd. Deze transformatie is zo snel gegaan dat het duizeligheid opwekte. Op een gegeven moment vroeg ik me af of mijn baan in gevaar was. Zouden LLM's zelfstandig concurrerende textuurcodecs kunnen produceren? Ik heb het geprobeerd en ze kwamen niet in de buurt. Om goede resultaten te behalen is menselijke expertise en oordeelsvorming nodig. Toch heeft AI de manier waarop ik codeer getransformeerd, maar niet op de manier die je zou verwachten. Voor het grootste deel schrijf ik de codecs nog steeds met de hand, op de ouderwetse manier. AI stelt me alleen in staat om dat efficiënter te doen.
AI bekijkt mijn wijzigingen en vangt routinematig bugs op die uren aan debugging zouden hebben gekost. Het heeft me in staat gesteld tools te bouwen die aanvoelen als superkrachten. Zo kan ik één shader bewerken en automatisch statistieken en geannoteerde assembly-overzichten weergeven op alle platforms die ik ondersteun. Wanneer een klant een bug of probleem meldt, sluit ik gewoon het relevante apparaat aan en laat ik een agent een reproductie bouwen en een oplossing voor het probleem voorstellen. Wanneer een CI-build faalt, herstelt een agent dit automatisch en opent een PR. De tools voor validatie, CI en regressietests die ik nu heb, zijn beter dan wat ik me als solo-ontwikkelaar mogelijk had kunnen voorstellen.
Dit heeft me in staat gesteld om me te blijven concentreren op de problemen waar ik graag aan werk en waar ik een verschil kan maken.
(Bijschrift: Screenshot van de Spark assembly viewer in actie)
Strategische keuzes: RDO versus real-time compressie
Na de overname van RAD door Epic dacht ik dat er behoefte zou zijn aan een onafhankelijke technologieleverancier, en ik hoopte dat vacuüm te kunnen vullen. Het vullen ervan met een andere rate-distortion optimized (RDO) encoder betekende echter concurreren met een gevestigd product, gebouwd door enkele van de slimste ontwikkelaars die ik ken. Ik had eerder RDO-encoders geschreven en concludeerde dat dit een race was die ik niet kon winnen op kwaliteit of prestaties. Naar alle waarschijnlijkheid zou ik gedwongen worden om op prijs te concurreren.
Real-time compressie was interessanter. Het loste het probleem op van content die tijdens runtime wordt gecreëerd en het opende een andere oplossingsruimte voor opslag en transmissie. Traditionele RDO-blokencoders worden beperkt door de vaste-rate blokstructuur en schalen niet naar lage bitrates. Bij real-time compressie kan de tussenliggende representatie alles zijn, zolang het tijdens het laden maar kan worden gecodeerd in een GPU-vriendelijk formaat.
Ik denk nog steeds dat dit de juiste richting is. Moderne beeldformaten zoals WebP en AVIF, gecombineerd met Spark, leveren al veel betere compressieratio's dan RDO-blokencoders. Ze lijden echter onder trage decompressieprestaties. In het komende jaar voorspel ik dat er nieuwe codecs zullen komen met concurrerende kwaliteit en een veel hogere decodeersnelheid. Recent werk aan neurale texturen en geleerde codecs zal deze ruimte verder verbreden.
Vier jaar later denk ik dat mijn gok er beter uitziet dan in 2022.