Er is geen reden, zeker als je indie bent, is er misschien nog niet eens een reden om per se in Amsterdam te zitten.
Nee, eigenlijk niet natuurlijk.
Er is zelfs een reden om niet in Amsterdam te zitten.
Haha, wat is dat?
Nou ja, natuurlijk als je een indie bent en je werkt twee, drie jaar aan een game zonder inkomen
en je weet niet of het gaat verkopen, dan wil je misschien niet dat je huur te hoog is, dus het is...
Ja, dat is wel een goed punt, ja.
Het is niet eens dat die heel veel creatieve industrie trekt op die manier, want het is toch onzeker soms.
Welkom bij aflevering één van seizoen twee.
Ja, het is eindelijk seizoen twee en is daar een echte reden voor.
Niet echt, behalve dan dat het eerste seizoen zestien afleveringen is geweest.
En ja, dat lijkt me een goed getal om zeg maar een seizoen mee af te ronden.
Dus vandaar dat we nu met seizoen twee zijn begonnen.
Versen start in het nieuwe jaar.
Het is eigenlijk de tweede aflevering die we in het nieuwe jaar opnemen.
Ik moet ook meteen opbichten dat de eerste aflevering van dit seizoen, van dit jaar,
sorry, van dit jaar nog niet online staat.
Het is een beetje mijn eigen schuld, dus dat moet ik nog even achteraan.
Maar goed, seizoen twee.
Ik ga er niet te veel woorden meer verder aan vuil maken.
Het is wat het is.
Als eerste een shout-out aan Salves.
Die maken het mogelijk dat we online opnames kunnen doen via Zencaster.
Dus bedankt Salves daarvoor.
En vandaag zijn er twee hosts, ik en Bernhard.
Ja, dus de bekende.
Dus hoi Bernhard.
Hey Saber.
Ja ja ja, weer Magic Duo.
Maar goed, we gaan maar meteen onze eerste gast, of onze enige en eerste gast,
voor vandaag gaan we introduceren.
En dat is vandaag Thomas van den Berg.
Welkom Thomas.
Nou, dank je wel.
Leuk om op jullie podcast te zijn.
Zal ik mezelf er maar introduceren?
Ja, dat mag.
Ik ben game developer en ik weet niet precies hoe jullie mij gevonden hebben.
Dat vind ik trouwens ook wel interessant.
Maar ik ben dus op de podcast vanuit de hoek van het ontwikkelen van games.
En daar komt natuurlijk ook een heleboel programmeren bij kijken.
Ik doe mezelf ook een heleboel andere dingen aan de games,
maar ik doe ook het programmeren aan de games.
En ja, ik vind het ook altijd wel een interessant onderwerp
waar binnen indie development ook niet heel veel over gepraat wordt.
Het wordt soms ook al gezien als gewoon iets praktisch.
Oh, je moet dingen een beetje programmeren zodat het werkt.
En ja, toch leuk om daar eens over te praten op een podcast.
Bedankt.
Ja, zeker. Ik vind het echt wel een interessant onderwerp.
En volgens mij was Bernard eens op jouw spoor gekomen.
Ja, ik werk voor een aantal iPhone dingen overdag en met een team
en een van die mensen die zijn van hey, dat en dat spel is nu goedkoop daar beschikbaar
en dat is gemaakt gewoon gemaakt door Nederlander.
Dus toen ben ik gaan kijken en toen heb ik dat uitgezocht en wie het dan was
en contact met Thomas opgenomen omdat dat al een tijdje op onze wensenlijst staat.
Echt een iemand die aan spelletjes programmeert en dat kan op indie-niveau zijn,
maar ook Gryllia staat op onze verlanglijst.
Dat gaat nog een keer gebeuren, denk ik.
En ik heb zelf ook al spelletjes gemaakt ooit, maar dat is zo lang geleden.
En ik ben benieuwd hoe dat is en dan kijk afhankelijk van hoe groot je teams zijn
en kom je van heel andere uitdagingen te staan en Thomas is een indie-developer.
Dus dat is heel anders dan bij Gryllia en wat mij betreft net zo interessant.
Ja, zeker. Het is wel een interessante tegenstelling, denk ik.
Je kan natuurlijk tegenwoordig in 2021 in je eentje ontzettend ver komen
met de tools die er nu zijn.
Je kunt dingen doen als one-man-team, wat 20 jaar geleden absoluut onmogelijk zou zijn.
Aan de andere kant kan een studio zoals Gryllia natuurlijk nu dingen doen
die ook mind-blowing zijn, maar dan met 200 man.
Dus het is een leuke wereld nu.
Ja, ja. Ja, zeker interessant. Hoe zeg je dat?
Waar zijn we? Doe goed.
Bernard en ik zijn misschien wat ouder, maar ik denk dat Bernard ouder is dan ik.
Ja, dat denk ik ook.
Ja, dat wist ik ook wel, maar ik vind het leuk dat hij het zelf bevestigt,
want anders krijgen we dat.
Maar goed, het begon natuurlijk, dat is natuurlijk altijd een beetje dat romantische beeld
dat je zelf een spelletje verzint waar je heel succesvol mee werd.
Misschien in de tijd van dat Atari 2600 en misschien daarvoor ook nog wel.
Maar toen was het echt van een iemand die progemeert een spel en je wordt super succesvol.
En ja, het leek zeg maar, en dat is zeg maar voor veel mensen dat het op een gegeven moment
leek dat je echt alleen maar succesvol kon worden als je echt een heel groot team en een budget had.
Maar die indie developers of de indie games, die zijn toch ook heel erg interessant.
Ik weet niet, ja, misschien moeten we daar straks.
Ja, ja, ja, we kunnen er straks ook nog op terugkomen.
Het is denk ik, wat zou het zijn?
15 jaar geleden of zo is er een soort nieuwe golf van indie developers gekomen.
Daar zat bij Super Meat Boy.
Daar heb je misschien wel van gehoord of World of Goo.
Dat was een beetje zo de revival van de indie games.
En sindsdien zijn er denk ik ook een heleboel mensen op afgekomen, waaronder ik zelf.
Die zei, oh, je kan dit doen met echt weinig mensen.
Daarvoor echt lang geleden, wat je zei Atari, waren natuurlijk ook kleine teams.
Dan waren het enthousiastelingen die het ook in een eendje deden.
En daar tussenin is het denk ik gegroeid.
Van die enthousiastelingen naar steeds grotere teams.
Totdat er weer een soort nieuwe golf was van met nieuwe tools ook.
Van dat je toch weer met een kleiner team kan doen.
Maar ook op veel grotere games maken met een kleiner team.
Ja, precies. Dat is niet per se de reden waarom ik het wel vervoel.
Maar het is wel vooral.
Ja, hoe zeg je dat?
Het is toch iets van magisch dat je in je eendje iets maakt.
Wat je in heel veel bereik mee hebt en heel veel mensen super gelukkig bij maakt.
Dat is het eigenlijk ook.
Het lijkt ook gewoon alsof je kan ingaan stappen en morgen beginnen.
En dan ga je hard typen en dan heb je een spel gemaakt en dan succes.
Ja, succes is natuurlijk nog het tweede.
Maar als je morgen begint, kan je zeker binnen een dag een spel maken.
Ja, Flappy Bird.
Ja, de fascinatie natuurlijk vind ik van programmeren in het algemeen.
Maar wat heel erg terugkomt bij spelen is die responsiviteit.
Zeg maar, je maakt iets en wat jij hebt gemaakt,
dan druk je op een knop en dan gebeurt er iets op je schermen.
Dat is toch wel magisch.
En dat is natuurlijk waar een spel helemaal over gaat.
Gewoon interactiviteit die je zelf hebt gecreëerd en of andere mensen
leuk vinden is dan natuurlijk nog een tweede.
Maar de magie is er al vrij gaaf.
Ja, dat is wel waar.
Dat is meteen wel een goede en klein bruggetje naar de eerste vraag.
En daarvan uit heb ik nog wel een andere vraag die kan stellen.
Maar wat is hoe ben je er in gerold?
Want ik heb wel wat wat dingetjes gelezen.
Maar wat is jouw eerste programeer ervaring?
Hoe ben jij begonnen met game development of überhaupt development?
Nou, mijn eerste programeer ervaring, ik had een boek leren programmeren.
Ik weet niet meer precies wat voor boek het was,
maar daar heb ik gewoon alle code uit over getypt.
En dat was dat was programmeren in Visual Basic in Word macro's.
Dus je moest dan in Word een macro aanmaken en daarin kan je dan Visual Basic typen.
Ik denk dat ze dat gedaan hadden, omdat dat een soort programeer omgeving is
die iedereen in principe op zijn computer heeft staan.
Je hoeft niet eerst een soort IDI te installeren of een compiler of wat dan ook.
Het zal Windows 95 geweest zijn.
In Word kon je gewoon macro's typen in Visual Basic.
En dan kon je zo'n prompt oproepen waarin je een tekstje kan typen.
Dus dan had je van die dingen als van hallo hoe heet je?
Typ je je naam en dan zegt hij hallo Thomas, weet je wel.
Dat was mijn eerste programeer ervaring, maar ik begreep er niks van.
Ik diepte gewoon die code over en nou ja, dan had ik het programma en dan was ik.
Dan zat er kleine spelletjes bij, dus die kon je dan spelen.
Ja, dat pas later ben ik met Flash begonnen.
En dat toen begon ik het echt te begrijpen en ook echt iets te maken waarvan ik zelf
iets had bedacht en dit wil ik maken.
En dan lukte dat ook, zeg maar, in plaats van dat je gewoon de stappen volgt van de tutorial.
Wanneer was dit ongeveer?
Het zal 2004 zijn geweest of zoiets.
2003, 2004.
Wat waren echt de hoogtijd dagen van Flash?
Ja, ja, ja.
Je had ook veel van die Flash games website toen
met Line Rider en zo en van die stick figures die dan met elkaar vochten.
Weet je wel, ik weet niet of je dat nog weet.
Ja, ja, ja, ja, ja.
Ik heb daar iets iets daarvoor, zeg maar.
Ik weet het niet.
Voor mij in mijn geheugen was het 2000 is of 2001.
Het is al ongeveer een beetje zo.
Want er waren voor ons het is gek genoeg.
Er was een het ging niet zo goed, zeg maar.
Er was een soort van crisis kwam eraan.
Dus we hadden binnen het bedrijf hadden we wat meer tijd zeg maar over.
I see.
We waren een internet toko en we hebben in die tijd echt
heel veel Flash games langs die komen.
Ook die kleine poppetjes dat je die herbals.
Nee, hoe heet ze?
Nou, whatever.
Dat was allemaal heel grappige film animatie.
Dat was niet eens een spelletje.
Dus we hebben heel veel.
Ja, dat je geluidjes kon mixen van die president van Amerika.
Ja, ook.
Ja, dingetjes.
Dus dat was echt wel booming.
En dat had je meer dan je had Flash en je had ook weet het andere.
Ook van Macromedia, maar die had een andere direct.
Shockwave of?
Ja, Shockwave.
Ja, precies.
Dus dat was wel.
Ja, het is wat je zei.
Die animatie is wel grappig, want Flash gaf een soort omgeving waarin je een animatie kan maken.
Maar je kan ook met twee regeltjes code daar wat interactiviteit aan toevoegen.
Dus vandaar dat je heel veel van die dingen krijgt die een beetje zo ertussenin waren,
zoals inderdaad dat je geluidjes kan mixen of een poppetje gewoon drie animaties kan
laten doen.
Dat is echt.
Ja, ja, het is wel.
Ja, het was echt super probleem.
Dat is ook zeg maar de manier waarop jij in het game programmeren geraakt bent,
want dat vond jij het leukst of heb je ook andere programmer ervaringen?
Ja, ja, professioneel.
Ik heb vervolgens ben ik AI gaan studeren.
Daar zit natuurlijk ook wel het nodige programmeren bij ook statistisch programmeren enzo.
Dus met ja en machine learning.
Maar ondertussen ben ik altijd een beetje dat dat flash blijven doen.
Daarnaast als het ware.
En flash is ook een leuke manier om ook visueel iets te doen,
want je kan snel iets tekenen en dan kan je dat laten bewegen.
Dus je kan heel makkelijk zeg maar code en graphics bij elkaar brengen
zonder dat je verstand hoeft te hebben van open GL moeilijke.
Ja, ja, ja, ja.
Dus zo ben ik daar langzaam ingerold.
En op een gegeven moment heb ik dus een flash game gemaakt die heet Kingdom.
Dat was nog steeds als een soort hobby projectje.
Die werd toen redelijk veel gespeeld.
Die stond op Newgrounds en die kreeg nogal veel spelers.
En omdat die toen zo veel spelers kreeg, ben ik eigenlijk
een soort van in de games gerold.
Dacht ik, oh, dit is, dit is grappig.
Dit vinden mensen leuk.
Misschien kan ik misschien kan ik dit professioneel proberen te doen.
Nou, dat is toen gelukt.
Nou, tof.
En ja, Saber, je wilde wat vragen.
Ja, nog een site vraag zeg maar, omdat we natuurlijk wel eens met
Verliener, zeg maar, die had het over leren programmeren.
En dan is het juist met gaming.
Dat geeft heel snel die feedback.
Dus dat je daar.
Dus het is juist een hele goede manier om in te stappen, zeg maar, als kind of
beginner, om dan ja, toch heel snel satisfaction of hoe weet het, een
voldoening te krijgen door wat je bouwt.
Want als je nou iemand, mijn zoontje, als ik zeg, ik maak even een
back-end service, zeg maar, voor een webshop en zonder UI, zeg maar,
dan denk ik, ik denk dat die redelijk snel afhaakt, zeg maar.
Terwijl als je zegt van, kun je bouwen een spelletje of zorg dat
poppetje springt of whatever, dat speelt veel, veel beter.
Dat spreekt veel beter tot de verbeelding.
Dus dat is echt op zich wel een soort van goede gateway om
zeker je speelt ook met je spelen te komen.
Ja, je speelt zowel met het developpen als met het spel zelf.
Zeg maar, je speelt soort van op twee niveaus.
Je bent iets aan het maken.
Wat een playfull proces is, zeg maar.
En wat er uitkomt, daar kan je ook mee spelen.
Je hebt ook dat scratch, dat is zo'n visuele taal.
Dat is ook, als ik het zie, denk ik af en toe ja,
maar het spelletje is ook die blokjes aan elkaar klikken.
Het spelletje is niet alleen wat je er ermee maakt,
maar het dingetje zelf.
Dus ja, zeker.
Ik vind het echt een hele goede manier om in te stap met programmeren.
Ja, want als ik zelf denk aan mijn eerste programmeerdingen,
dan ga je toch ook snel dingen maken die je terug ziet.
Het eerste programma wat ik maakte was niet rekenen tienduizend
de priemgetal uit.
Nee, meer gewoon, weet je, maak iets wat leuk is en wat de bescherming
je na een honderd keer toont.
Ja, precies.
Spreekt veel meer tot je verbeelding dan wat anders.
Ja, zeker.
Ik weet ook dat dat is trouwens wel grappig dat je dat zegt,
want als in de tweede klas, nee, niet basisschool,
middelbaar onderwijs, toen heb ik daar als ik programmeerde
eerst Basic en toen heb ik wat Assembly geprogrammeerd.
Toen dacht ik gewoon, ik ben askegoed joh, ik kan alles.
Tweede klas, dus ik was denk dertien of zo, veertien,
ik weet het niet eens.
En toen dacht ik ook van ja, ik ga ook eens maken om
om pie uit te rekenen.
En toen ging ik even kijken naar wat er aan de algoritme
daarachter zat en ik dacht, nou, die laat ik maar even schieten.
Want dat was ik al afgehaakt.
Stel dat dat mijn eerste tussendeelingsopdracht
was geweest, dan was ik gewoon afgehaakt,
dat weet ik vrij zeker.
Dus dat is op zich wel wat je zegt, ja, dat visualeren,
dat het helpt, af en toe wel zo'n wiskundig iets bouwen.
Ja, dat denk ik niet dat je daar heel snel goed,
er zullen zeker wel mensen zijn die dat wel als instap zien.
Maar ik denk niet dat mensen dan op die manier heel snel
zich gaan programmeren.
Ik weet ook nog dat wij bij het programmeren op de universiteit
moesten een soort salaris administratie systeem bouwen.
Dat was ook niet sprak, ook niet heel erg tot de verbeelding.
Nee, wij moesten op de universiteit iets maken
wat je disc ging formateren en alle lege sectoren bij elkaar te zoeken
en die dan dus de gevraagde te deviëren.
Ja, dat was alleen leuk omdat we grafisch mochten doen op het scherm,
dus dat je al die blokjes heen en weer zag schuiven en leeg achter elkaar.
Dat was het leuke eraan.
Als je dat nu zegt, dan denk ik, oh, dat klinkt eigenlijk wel leuk.
Maar dat is natuurlijk ook iets wat je leert, zeg maar,
dat dat soort problemen soms wel leuk zijn om op te lossen.
Misschien als je daar weer begint, is het toch.
Ja, ja, dat is ook zo.
Waar ben ik mee bezig?
Ja, maar je eigen gameplay ervaring.
Wat is een van de eerste spellen waar je helemaal verzot op was?
Ja, even kijken.
Ik had, ik heb nog dos-spelletjes vrij veel gespeeld.
We hadden iets dat heette Bumpy.
Dan was je een soort ballonnetje en dan moest je over een soort spijkers heen springen.
En we hadden een spel dat ik ook ontzettend leuk vond.
Het was Push Over.
Dan was je een mier en dan moest je domino steentjes verplaatsen.
Ze allemaal laten omvallen en wat later Red Alert en zo vond ik ook fantastisch.
En ja, ja, dat en spelen voorbij.
Ja, heb je die als voorbeelden gediend voor of als inspiratie voor wat je wilde maken?
Ik vond, ik vind dus realtime strategy spellen.
Vind heb ik altijd heel leuk gevonden.
Ja, het grappige is dat je dan gewoon allemaal kleine poppetjes op je schermen hebt.
Die zijn gewoon allemaal iets aan het doen.
Je kunt ergens heen sturen en dan kun je gewoon achteruit gaan
zitten en dan blijven ze gewoon dingen doen.
Eigenlijk ook een beetje wat grappig is als een computer iets voor je doet,
van je zet het gewoon aan en het gaat allemaal dingen doen.
Je gaat er gewoon er zitten kijken.
Dat komt ook een beetje terug bij realtime strategy games.
En Kingdom is ook een soort realtime strategy game,
dus dat komt zeker wel een beetje terug.
Gewoon het feit dat je kan gaan zitten kijken naar hoe allemaal.
Ja, AI kun je het eigenlijk nauwelijks noemen,
maar allemaal karakters op je schermen allemaal iets aan het doen zijn.
En jij hebt dat in gang gezet en vervolgens ga je zitten kijken.
Dat vind ik altijd wel fascinerend.
Ja, dat is wel, ja.
Cool.
En dat is, ik heb Kingdom een paar keer gespeeld en dat
geldt voor die hele Kingdom-race.
Hoe ontwikkelt dat zich?
Wordt die AI dan meer, minder?
Die zijn eigenlijk, het is wel grappig,
omdat in Kingdom kan je die poppetjes niet direct besturen.
Alleen heel indirect.
Dus je kan, je kan ze, ze gaan hun eigen taken doen.
Ze hebben een soort eigen gedachte.
Mijn idee was altijd, het is eigenlijk beter als ze niet zo slim zijn,
want dan kan je als speler beter voorspellen wat ze gaan doen.
Terwijl ze allemaal hele moeilijke redeneringen hebben over
welke taak ze gaan doen en in welke volgorde,
is het veel moeilijker om dat als speler ook te bedenken.
Dus je wilt liever dat ze dom maar voorspelbaar zijn, dacht ik,
dan dat ze heel slim zijn.
En dat ik dan als developer een soort algoritme bedenker
mee ze heel optimaal allemaal die taken gaan doen.
Maar als speler denk je, waarom gaat die nou eerst naar links en dan naar rechts?
Dan zijn ze maar liever gewoon een soort domme drones.
Dat snap je niet.
Maar ik krijg constant,
krijg ik als feedback van spelers dat ze eigenlijk te dom zijn.
Dus ik weet niet of dit een goede gedachte is.
Op zich heel interessant.
Ja, dan krijg je zo iets.
Ik heb kit, ik heb kit, ik heb kit.
Oh sorry, nee, nee, nee, maak me af.
Nou, als ze bijvoorbeeld te slim zijn en krijg je zoiets als er,
als er drie mannetjes zijn en die moeten drie dingen bouwen.
En er komt er vier erbij.
Dat ze dan tijdens het bouwen in een keer zich anders gaan verdelen over die taken.
Dus dat er dan twee naar links gaan en een eentje naar rechts,
terwijl de eerste twee naar rechts gaan.
Omdat er een nieuwe bij is, is eigenlijk,
is het dan efficiënter als ze zich anders verdelen,
een soort load balancing.
Maar voor de speler ziet dat er raar uit,
want die denkt, waarom laat hij nou zijn hamer vallen midden in het werk
en gaat hij iets anders doen?
Dat is dan wel de optimale load balancing, zeg maar.
Dus eigenlijk zijn ze dan heel slim, maar dat ziet er raar uit.
Ja, dat is waar.
Mensen zouden dat niet zo gauw doen.
Die hebben toch geen verneiging om eerst iets af te maken
en dan pas aan iets nieuws te beginnen.
Ja, precies.
Oh ja, zo is het wel, ja.
Ik ken Kingdom dus niet, dus sorry daarvoor,
maar het is een soort van RTS-game.
Of kun je uitleggen wat Kingdom is?
Het is een RTS-game, maar je speelt ook een karakter.
Dus je kan niet vrij over de kaart kijken.
Je loopt altijd met je karakter heen en weer, van links naar rechts.
Het is een soort Mario perspectief, van de zijkant.
En je karakter is een koning op een paard of een koningin.
En het enige wat je kan doen is met muntjes gooien
om jouw onderdane dingen te laten doen.
Dus je loopt over je koninkrijkje heen,
je verzamelt muntjes waar zij geld verdiend hebben
en je geeft dat op andere plekken uit om muren te bouwen
of boogschutters te bouwen.
Een beetje in die zin een klassieke RTS-game.
En als nachts komen er monsters uit het bos
en dan moet je proberen zo lang mogelijk te overleven.
Dat is eigenlijk de pitch.
Cool.
Ja.
Maar is dat een...
Hoe noem je het?
Je hebt een RTS, maar je hebt ook van die God Games.
Is dat een beetje...
Ja, je hebt God Games.
Het gaat een beetje die kant op omdat je niet inderdaad
je mannetjes echt kan besturen.
Ze hebben hun eigen wilde, dus in die zin gaat het een beetje die kant op.
En het heeft veel weg van een tower defense,
waarbij er dus de waves van vijanden aankomen
en jij moet gewoon die waves verslaan, elke keer.
Ja, ik was echt heel slecht in God Games.
Ja, sorry.
Black and white of...
Ja, ook, maar god, hoe heet die Franse?
Hij was echt heel populair.
Populous? Nee?
Ja, populus ook, ja.
Daar heb ik echt nooit voortzonder kunnen spelen.
En wat was er nog meer?
Daarna was het wel iedere keer...
Toen kreeg je ook steeds meer dat de AI veel slimmer werd.
Oh, nou goed, dat maakt niet uit.
Misschien kom ik wel op.
Maar dat kwam bij mij nooit helemaal goed.
Terwijl RTS, gewoon pure RTS,
dat genre is een beetje weggezakt of zo.
Ja, klopt.
Want ik vind RTS echt tof, want Starcraft 2, zeg maar,
dat is het meest recente die ik gespeeld heb.
Dat is alweer een paar jaar geleden, natuurlijk, maar...
Of natuurlijk niet, maar een paar jaar geleden.
Maar dat vond ik echt tof.
Ja, Red Alert heb je natuurlijk gespeeld.
Dune, vroeger, wat had je nog meer?
Nou goed, er waren best wel veel.
Dus dat genre is echt wel, ja, vond ik ook wel...
Ja, het klopt wat je zegt.
Het genre is een beetje, ja, is niet meer zo groot als het vroeger was, natuurlijk.
Red Alert 2 was natuurlijk echt een soort wereldhit.
Ja, ja.
Van gestoorde proporcies in die tijd.
En nu is het toch...
Ik denk dat het iets te maken heeft ook met pc-gamen in het algemeen.
Dat het toch wordt ervaren als iets te hardcore.
Dat je echt achter je pc moet gaan zitten met een muis en een toetsenbord.
En heel veel heel snel op allemaal knoppen moet drukken.
En dat vind je misschien, dat is toch risicovoller om zoiets te bouwen.
Voor een kleinere groep in ieder geval.
Dan als je gewoon met de controller achterover kan gaan zitten op de bank.
Ja, ik denk dat je helemaal gelijk hebt.
Want ik denk dat ze nu, zeg maar, sowieso...
Het eerste, dat zeg ik natuurlijk als wijsneus.
Maar ik vermoed dat ze nu bouwen voor de multiplatvorm.
Dus dat ze zowel de console en de pc hebben.
Dat je dan met één stuk software of ontwerp, dat je dan alles kunt...
Ja, zeker.
Ik denk zeker dat ze daar rekening mee houden van tevoren.
Dat ze denken, ja, er zijn toch 50 miljoen Nintendo switches of zo.
En Xbox en Playstation weet ik het niet.
Maar dat is natuurlijk een gigantische aantal.
En daar wil je toch ook een graadje van meepikken.
Zeker, ja.
Ja, bedoel, dat is echt bizar.
Want wat nou het populairste...
Toen is het volgens mij het meest populairste spel op de Nintendo Switch is.
Mario Kart, wat voor het meest verkocht is.
En wat heet dat andere spel?
Waar ik echt...
Ja, ik vind dat echt niks.
Animal Crossing?
Juist.
Ja, ik vind dat niet niks.
Ik moet het goed zeggen.
Ik denk dat ik...
Ik heb het bewust niet gekocht omdat ik dan denk...
Oh shit, dan raak ik daar verslaafd aan.
Dat wil ik even niet.
Maar...
Ja, ik had dat echt niet verwacht als je mij dat had verteld.
Ja, dit wordt echt de hit, zeg maar, op de Switch.
Dan had ik je echt voor gek verklaard.
Voor Mario Kart was het voor mij...
Ja, dat is gewoon no brainer.
Dat is volgens mij altijd wel een succes.
Animal Crossing is wel...
Ja, ik denk dat de tijd er rijk voor was.
Met iedereen die thuis zit en dan het liefst naar buiten zou willen.
Dan heb je toch je eigen...
Ik denk dat je meegespeeld heeft, zoiets.
Ja, dat denk ik zeker.
Ik denk dat die timing wel belangrijk was.
Thomas, kan je wat vertellen over jouw ontwikkelstech...
...voor bijvoorbeeld Kingdom of voor een meer recentere game...
...als je dat liever wilt zien.
Zeker.
Ja, Kingdom was natuurlijk grappig...
...want ik ben begonnen in Flash.
Toen was het gewoon Flash.
Dus dan schrijf je een ActionScript en dan heb je een compiler...
...en dan heb je een SVF-file en die gooi je op een website.
Daarna ben ik op een gegeven moment overgeschakeld naar Unity.
En Unity is eigenlijk zo'n beetje de hele stack.
Het is vrij magisch dat Unity gewoon knoppen heeft...
...waarmee die zegt, nou, bouw dit spel maar voor een Xbox...
...bouw het maar voor een iPhone, bouw het maar voor Android...
...en 90% van de tijd werkt dat ook gewoon.
Dus dan schrijf je in C-sharp in Unity.
Meestal C-sharp van een paar jaar geleden...
...want zij hebben een soort eigen interpreter die ze op to date moeten houden.
Dus al dat er nieuwe features zijn, dan kan je die pas een paar jaar later gebruiken.
Maar goed, daar ben je aan gewend.
En dan bouwt die een executable voor het platform waarvoor je dat wil bouwen.
En dat is super eigenlijk.
Dat klinkt heel magisch.
En dat platform specifiek maken, is dat dan nog weinig werk?
Of valt het tegen? Ben je nog veel aan het tweaken per platform?
Je bent wel veel aan het tweaken, maar dat gaat natuurlijk vooral om de user experience.
Je wil dat het voelt alsof het echt voor dat platform gemaakt is.
Dus op een iPhone wil je zorgen dat al die touch interacties helemaal kloppen.
Dat die ook samenwerkt met alle features van het OS.
Dus als je vraagt of de speler iets wil delen...
...dat je dat dan met een native OS-dialog vraagt en zo.
Dat soort dingen. Daar ben je toch wel veel tijd aan kwijt.
Ik werk nu ook aan controller support.
Dus dan moet je zorgen dat al die knoppen op een controller goed werken...
...en de goede dingen doen en zo. Dat kost tijd.
Eigenlijk ben ik verbaasd met al dat hoe goed het gaat.
En ook omdat als je bijvoorbeeld naar iOS bouwt...
...wat zij doen is, zij compilen dan C-Sharp naar de Intermediate Language.
Dat heet dat. Een soort van de bytecode van C-Sharp.
En dat compilen ze dan naar C++.
En dat laten ze dan door Xcode compilen naar een executable telefoon.
En het is best wel crazy dat het werkt.
Want je kan ook die C++ code dan inzien...
...waar het natuurlijk totaal onleesbaar is geworden.
Want je moet waarschijnlijk nog allemaal provisioning profiles...
...en credentials gaan toevoegen in Xcode.
Ja, klopt. Je bouwt een Xcode project...
...en dan kun je in Xcode de provisioning doen.
Maar dan heb je dus in Xcode een project met C++ source...
...die gegeneerd is door Unity.
Ah, oké. Nou, dat is best macro maken.
Ja, oké. Want ik dacht dat er een...
Ja, goed, ik bouw .NET.
Ik ben dus ook C-Sharp-developer.
Maar ik dacht dat dat...
Nou, je had een head-of-time compiler...
...maar dat is meer de Xamarin-verhaal en Mono.
Ik dacht dat dat vanuit daar al rechtstreeks, zeg maar, naar...
Vroeger was dat zo. Vroeger hadden ze inderdaad...
...dan deden ze het inderdaad met een Mono runtime...
...en een head-of-time compiler.
Maar op één moment zijn ze overgeschakeld naar die C++ manier.
Ik weet niet meer precies waarom dat toen was.
Maar is dat LLVM of is dat die...
Ik weet het volgens mij niet.
Ik weet eigenlijk niet hoe ze dat doen.
Volgens mij hebben ze hun eigen ding gebouwd.
Het heet IL2CPP, Intermediate Language 2C++...
...en dat zet, zeg maar, die...
Nou, ik vind het wel stoer.
Ik vond dat toen ik het voor het eerst dacht...
...ik ook, dit kan toch niet goed gaan.
Je gaat gewoon...
Hoe zeg je dat?
Maar goed, ze heeft me ook alweer iets geleerd...
...over hoe code werkt.
Je denkt natuurlijk, ja, die features komen helemaal niet overeen.
C Sharp heeft een garbage collector.
C++ niet. Maar ze hebben dus gewoon...
...die garbage collector geïmplementeerd in C++.
Ja, dat kan ook, ja.
Klopt.
Dus als je maar genoeg...
Hoe zeg je dat?
Mensen erop kan zetten, dan kun je zoiets bouwen.
Ja, precies.
Dat is wel waar.
Er is een business case.
Dat geloof ik zeker wel.
En er zijn ook wel een paar knappe koppen...
...die hebben we even gedacht, weet je wat?
Dat kunnen we wel.
En als dat goed werkt...
...dat zal zeker wel een reden voor zijn.
Ik vind dat wel interessant.
Dat wist ik niet.
En voor welke platforms heb jij...
...gebouwd uiteindelijk?
En in welke volgorde?
Hoe bepaal je dat?
Wat voor platforms je als target kiest?
Ja.
Dus het hangt van de platform zelf af.
Dus voor Kingdom zijn we begonnen met PC.
Want PC is een platform waar je...
...heel vrij bent.
Steam heet dat dan.
Het grootste platform voor PC games.
Je kan op elk moment...
...een nieuwe beeld maken.
En binnen vijf minuten is die live op Steam.
En heeft iedereen die update automatisch ge-download.
Dus als mensen een bug hebben...
...dan gaan ze hier gewoon lastig vallen op Twitter.
Dan ga je die bug fixen.
En dan binnen een kwartier kunnen zij een patch hebben.
En dat is heel fijn, want je bent in die zin...
...heel vrij.
Om ook snel te ontwikkelen.
Als het dan het spel een beetje zich uitgekristalliseerd heeft...
...tenminste zo werkt het bij mij...
...dan ga je naar de platforms.
Daar zitten natuurlijk onderhandelingen aan vast.
En dan hangt het er een beetje vanaf...
...wie er meer interesse heeft.
Of wie er de beste voorwaarden weet te bieden.
Met Kingdom hebben we eerst...
...Xbox gedaan.
Toen tegelijkertijd met Xbox op iOS.
Want dat heb je ook in eigen handen.
Op iOS kan je gewoon een spel uploaden.
En toen later zijn we alle andere consoles afgegaan.
Dus Nintendo Switch ook.
En Playstation ook.
En Android zat ook nog ergens daar in die volgorde.
Maar ik weet niet meer precies wanneer.
Nee, nee, nee.
Cool.
Ja, dat is wel gaaf.
Dat is allemaal vanuit Unity gedaan.
Ja, dat is allemaal vanuit Unity gedaan.
En ook voor een nadelen.
Ik heb ook wel eens een keer...
...dat de beeld gewoon niet gelukt was.
Dus er was een lege directory.
Maar het was vrijdagmiddag en ik drukte zo op upload naar Steam.
En ik had niet echt het beeld script goed geprogrammeerd.
Dus als hij een lege directory vindt, gaat hij gewoon een lege directory uploaden.
Dus had ik zo op 100.000 spelers...
...en computers dat spel verwijderd.
Daar klaagt hij ook niet over.
Nee.
Ja, dat krijg je ook binnen een minuut.
Iemand die zegt, hey, dit spel doet het niet.
Daar leer je wel van, denk ik.
Ja, dat is wel grappig.
Ja, dat zou op Xbox natuurlijk niet kunnen.
Want dan stuurt het echt naar Microsoft.
Dan gaan zij testen.
Dan zeggen ze, oké, dit spel is goed.
Zitten er geen bugs in en dan pas kun je het releasen.
Hoe lang is die releaseslag daar dan?
Nou, dat duurt best een tijdje.
Ze hebben allemaal regeltjes.
En dat wordt wel beter.
Maar vroeger was dat wel vrij streng.
Dan moest je ook, weet je wel.
Als de speler tijdens het spel de stekker eruit trekt,
hoe gaat je spel er dan mee om?
Of als de batterijen leeg raken van de controller,
hoe gaat het spel er mee om?
Er is dan een lijst van 500 dingen.
Dat gaan ze allemaal testen.
Dus dan komen ze echt met van die dingen van,
ja, als de Xbox loskoppelt van het internet,
maar je locht dan online op de Microsoft uit uit je account
en dan prik je de Xbox er weer in,
wat gebeurt er dan?
Want dan is de user uitgelogd en dan zit je zo echt
en dan vaal je er op.
Dus dan moet je dat fixen en het opnemen.
Dat kan wel een maand duren, dat proces.
Een half maand.
Jeetje.
Oh, wauw.
Maar het is, ja.
Oh, dat, inderdaad.
Ja, dan moet je altijd even inpannen in de kalender.
Dus als je een bepaalde release date hebt,
dan moet je nog door dat proces van certificatie.
Ja, ja, ja.
Ah, oké.
Ja, goed zeg.
Maar goed voor de spelers uiteindelijk, natuurlijk.
Ja.
Ja, ja, maar het betekent wel dat
ja, de deadline, je moet de maanden eerder klaar zijn.
En dan, maar hopen dat er niet iets heel ergs uitkomt,
waar je nog weer, ja, nog een keer het rondje moet doen.
Ja, ja.
Maar het is ook wel een beetje waarvoor je een console koopt, denk ik.
Gewoon de nul hassle.
Ja.
Ervaring.
Gewoon, je kan eigenlijk alles ermee doen.
En het spel gaat nooit stuk, het crash night.
Ja, dat is wel waar.
Ja, dat sta je, ja.
Ja, weet je, mensen zeuren makkelijk.
Ja, dat zul jij waarschijnlijk ervaren.
Nou ja, dat weet ik echt niet.
Ja.
Maar dat is echt, ja goed, er zijn natuurlijk wel wat blamages de laatste tijd.
Vooral met, ja, Cyberpunk bijvoorbeeld.
Ja.
Dat is echt niet helemaal goed gegaan.
En mensen, ja, weet je, tuurlijk of vanuit, hoe heet ze, Project Red,
is het ook niet helemaal, ja, goed gemanagd, denk ik.
Of, ja, ik weet niet hoe dat is, hoe je dat moet zien.
Maar ja, ze hebben natuurlijk al een beetje, weet je dat,
ze hebben zich impopulair gemaakt doordat er bleek dat die developers
heel erg onder druk zijn gezet om die deadline te halen.
En uiteindelijk, als het product dan zeg maar geleverd wordt,
dan blijkt het heel veel vol te zitten met bugs.
Ja, dan krijg je, in één kant willen de developers die zitten heel even
te pushen van ja, ik wil nu dat spel, ik wil nu dat spel.
En dan wordt het gereleased.
Dat is natuurlijk ook een soort van onder druk van die spelen,
of de gamers die het spel willen hebben.
En dan zitten er bugs in en dan krijg je weer die gamers over je heen,
want de spul is niet goed genoeg.
Dus dat is in ieder geval, je doet het bijna nooit goed.
En ja, dat is wel, ja, ik vind het wel voor een hele grote groep,
vooral voor de developers, het lijkt het me wel zuur, zeg maar.
Je hebt niet voor niks zoveel tijd en doet zweet en tranen erin gestoken.
En dan ja.
Ja, bij de doelgroep, zeg maar, die zichzelf beschrijft als gamers,
is er wel vaak een soort gevoel van, hoe heet dat in Nederlands?
Entitlement ofzo.
Ja, precies, ik wilde net zeggen, ja, entitlement, ja.
Ja, dat is wel echt wat er, ja.
Dat kan je over je heen krijgen, inderdaad, soms.
En dat hebben de, die, dat heeft Project Red wel, denk ik, echt ook gehad.
En wat je zei over crunch, dat is ook altijd in de game development wereld
wel een ding, want de crunch kan wel soms serieus zijn.
Het zijn ook vaak mensen die natuurlijk wel echt passie hebben voor wat ze doen,
dus die willen dan vaak ook op het laatste moment nog een bepaalde feature in stoppen.
Het is niet helemaal onvrijwillig, maar in een heel groot bedrijf kan je wel voorstellen
dat het hangt er ook een beetje van af hoe je dat plant,
want je kan natuurlijk zo'n deadline hebben die steeds wordt uitgesteld,
dus dat al die developers denken, dan oké, laatste maand,
ik ga mijn favoriete feature nog bouwen, dan is het niet de laatste maand,
dan komt er nog een maand en dan komt er nog een maand.
Ja, ja, ja. Ja, dat klopt wel.
Dat wordt wel een, ja, het stomt je af ofzo.
Of je wordt cynisch, dan denk je, ja, het zal wel,
dit is toch niet de laatste maand meer.
Ik denk dat dat ook wel iets doet met je.
Maar hoe zit dat trouwens?
Is daar een verschil in bij indie development
en als je developer bent bij een heel groot game developer?
Ga je anders om met die crunch?
Ja, dat is een goede vraag.
Ik heb zelf nooit bij een groot bedrijf gewerkt,
dus ik kan niet met zekerheid zeggen hoe het daar aan toe gaat.
Voor mezelf hou ik het redelijk in check, zeg maar.
Kijk, er zijn natuurlijk weken vlak voor een launch
dat je echt veel werkt,
maar het soort verhalen van, zeg maar, onder je bureau slapen,
dat komt bij mij in ieder geval niet voor.
Maar goed, als je op je slaapkamer werkt,
dan slaap je sowieso op je bureau.
Maar je hoort natuurlijk wel echt soort horescenario's
van die crunch dingen.
En als indie developer elkaar dat iets beter in de gaten houden.
Ja, je bent dezelfde die het in de gaten moet houden.
En je moet het er wel voor kunnen houden.
Ja, precies. Je moet het ook.
En aan de andere kant is het ook wel, het komt heel erg.
Hoe zeg je dat? Het is een heel persoonlijk project.
Als je het goed doet, komt het ook echt, is het van jou.
Dus je wil ook echt wel heel graag alles heel goed fiksen.
Je kan nooit denken van, weet je, het is mijn baas.
Het is niet mijn game, want het is echt jouw game.
Ja, dat dacht ik dus ook.
Ja, precies, dat dacht ik ook, want het is ook jouw ding.
Dus ja, dan alles wat je er meer insteekt, heb je het in zo'n gevoelsmatig.
Denk je van, oké, dat is ook meteen voor mezelf.
Weet je, dus het heeft ook wel zin om dat te doen.
Of dat kun je...
Ja, ik kan me voorstellen dat je standaard wat hoger is.
Dat je niet denkt van, nou, goed genoeg.
Nee, want dat vind ik niet goed genoeg.
Ja, klopt.
Gelukkig ben je flexibel met launch dates en dat soort dingen.
Dus het kan al het iets later uitkomen.
Of je zegt, oké, het komt nu uit.
Maar ik doe over een maat een update waarin dan die features
komen die ik eigenlijk nu had willen doen.
Of ja, je snijdt features helemaal uit.
Wat dat betreft ben je redelijk flexibel.
Maar probeer je wel rekening te houden met bepaalde data in het jaar
kerstmis of dat soort periodes.
Ja, ik had voor Kingdom, had ik een uitgever en die hadden
een datum in gedachten waarop zij dachten.
Oké, dit is een goede dag om dat spel te releasen.
Dan werk je daar naartoe.
Kerst hou je sowieso rekening mee.
Meeste indie games die vermijden kerst, want die weten
dat je rond kerst totaal wordt overstemd door andere grote games
en Xbox die uitkomt en weet ik veel wat.
Dus kerst is altijd een soort no go.
En dan weet je eind januari kun je het weer proberen.
Als je wil dat je in die game een beetje media aandacht krijgt.
Ja, ja, ja.
Grappig.
Dat had ik eigenlijk zelf niet zo bedacht.
Nee.
Het is andersom juist met kerst gaan mensen veel gamen.
En dan moet je ja, dat je misschien mee kan liften
op de vakantieperiodes of het eind van het jaar.
Maar ja, hij is natuurlijk makkelijk ondergesneeuwd.
Als je spel nieuw wil releasen voor het eerst,
dan wil je natuurlijk op het moment dat er toch een kans is
dat bepaalde gaming sites iets over je spelletje schrijven.
Ja, dan is kerst niet ideaal.
Want ben je daar heel afhankelijk van als indie developer?
Als elke game developer, denk ik.
Maar maakt het veel verschil?
Ja, het is ja, ik denk het wel.
Ik denk als je zijn ook natuurlijk bepaalde youtubers en als die je spel spelen,
dan kan je echt in één keer ja.
Een paar duizend verkopen hebben en dat kan.
Daar kom je toch wel heel ver mee.
Ja, oké.
Oké.
Ja, ja, ja.
Oké.
Ik ga, ik zal het even te lezen.
Ja, precies.
Ik vroeg me af wat betreft Unity.
Is dat ben je dan veel tegen Unity aan het programmeren?
Of ben je ook echt heel veel C-Sharp aan het programmeren?
Hoe verhoudt zich dat elkaar?
Ik denk je programmeert wel veel tegen Unity aan.
Ze hebben dan wat heet de managed of de unmanaged score.
Dus de kern van de game engine is in C++ geschreven.
En is dus ook niet garbage collected.
En daar programmeer je tegenaan in C-Sharp.
Oké.
Dus alles wat te maken heeft met graphics, dan roep je functies aan in de Unity engine.
En dan gaat het ook, dan is het niet open source, zeg maar.
Daar zie je niet wat er gebeurt.
Dat is gewoon een soort API waar je tegenaan programmeert van.
Teken nu dit voor op het scherm of spelen geluid af of dat soort dingen.
Dat zit helemaal in de engine en daar werk je wel.
En ze hebben dan daar omheen allemaal soort modules gebouwd in C-Sharp.
Aan de rand zoals hoe bouw je een UI of hoe verbind je knoppen op je toetsenbord aan.
Acties in het spel of dat soort modules.
Want voorziet het ook in dingen als netwerkstacks?
Netwerkstack is geloof ik een pijnlijk puntje voor Unity.
Ze zeggen al drie jaar lang dat ze dat helemaal ook nieuw aan het bouwen zijn.
En dat ze gaan komen met een prachtige oplossing.
En nu, laatst belde iemand nog.
Ze hebben dan van die zogenaamde success engineers.
Dus het is gewoon een soort van customer support team.
Dat iedereen gaat bellen die een Unity-subscription heeft om te vragen hoe het allemaal gaat.
En die zeggen ook, ja, nee, dit jaar gaat het echt komen.
Die netwerkstack gaat er echt komen.
Maar er zijn ook third party oplossingen.
Ja, oké.
Ja, ja, oké.
Ah, ja, oké.
Ja.
Wat ik kan me voorstellen, dat is een multiplayer game zeg maar.
Ja, in real time.
Ja.
Dan lijkt me die netwerkstack toch wel een ding.
Klopt.
En dit is natuurlijk, je hebt natuurlijk de low-level netwerkdeel.
Van, oké, hoe stuur je gewoon packets?
En dan heb je natuurlijk meer het high-level-deel wat aan Unity gekoppeld is.
Unity is heel erg dat ze als instep-model een soort echte alles plug-and-play maken.
Dus je kan gewoon een object, als het ware, je neemt gewoon een 3D-object uit Blender ofzo.
Je sleept het gewoon Unity in en het verschijnt op je scherm.
En het is een high-level-netwerk-equivalent.
Dat je dan gewoon op dat object een netwerkcomponentje sleept.
En dat je daarmee dat wat ik op mijn scherm zie, ook is wat jij op je scherm ziet.
Dat het gewoon in één keer allemaal magisch gesynchroniseerd wordt.
Dat is natuurlijk wel iets wat ook heel moeilijk is.
Maar wat wel cool is, als ze het zouden kunnen doen.
En het low-level-deel, als je dat kan, dan kan je dat zelf programmeren.
Ik bedoel, kan je daartegenaan programmeren.
Maar er komt natuurlijk ook server-side-programmeren bij.
Heb je dat gedaan voor één van je games?
Ik heb het één keer geprobeerd.
Ik wilde een MMO bouwen, Massive Multiplayer Game.
Ik heb toen een beetje met multiplayer gespeeld.
Ik heb alle basisconcepten geleerd.
De latency compenseren door te voorspellen wat iemand anders gaat doen.
Dus als iemand naar links loopt, dan teken je hem iets verder naar links op het scherm.
Dat je weet dat hij op zijn computer al verder in de toekomst is dan jij hem ziet.
Dus als je schiet, dan schiet je raak als die na.
Et cetera, al dat soort dingen.
Het is wel een soort... Hoe zeg je dat?
Een mindfuck, zou ik zeggen, als je zo moet programmeren.
Je zit zo...
Timetravelling, ja.
Ja, maar dat is ook wel grappig, want dat hoor je ook...
Hoe heet dat?
Ja, goed, ik speel ook first person shooters.
Maar daar is die netwerkcode echt wel...
Ja, ik ben misschien wel...
Nou, ik weet niet. Ik zeg niet de belangrijkste, maar...
Absoluut.
Heel belangrijk, zeg maar.
Ja, als je zoiets speelt als...
Ik weet niet, Overwatch of zo.
Ja, ja, Apex Legends speel ik ook.
Ja, Overwatch speel ik ook, ja.
Dat is echt bizar hoe goed dat is.
Ja.
Je merkt hele...
Ik bedoel, natuurlijk merk je het niet, maar...
Zeg maar, in slechte games heb je nog wel eens een hikje of zoiets.
En in Overwatch hebben ze dat...
Nou, dat is wel echt de top van dat model van netwerkcode voor een shooter erbij, inderdaad.
Ja.
Ja, want ik heb Overwatch...
Ja, goed, ik speel het op de PlayStation.
Ik vond het gewoon heel...
Ja, dat was mijn eerste...
Ik heb een hele tijd niet gegamed toen ik een PlayStation 4 kocht.
En met Overwatch begonnen.
En speelde gewoon heel natuurlijk.
Ik had niks te klagen.
Ik zei dat dit is gewoon robust.
Er zijn geen gekke dingen.
Dat is niet die ik meegemaakt heb.
En toen Apex Legends kwam...
In het begin, daar waren nog wel issues met hitboxes.
En je wist echt zeker dat je iemand raak schoot en dat het dan niet registreerde.
En dat was nogal wat mis met de networkcode, zeg maar.
Dus dat is wel wel grappig.
Maar goed, ik wist dus niet dat Unity...
Dat dat een beetje een soort van gevoelig ding was ook voor Unity.
Ja, ze zeggen al heel lang dat ze dat gaan oplossen.
Wel grappig, ja.
Oké.
Dan zei ik net, ik ben het heel stuk aan het lezen.
Ik zag iets.
Die had Bernard...
Ja, goed, een aantal dingen komen via Bernard in dit mooie documentje terecht.
En ik zag shader staan.
Toen dacht ik, oké, dat vind ik heel interessant.
Maar ja, ik weet niet zo goed een heel goeie vraag te stellen.
Nou ja, beginnen we bij de Unity.
Het shader model van Unity, wat ze hebben en niet.
Ja.
Of uitleggen wat shaders zijn misschien.
Misschien moeten we daar beginnen.
Ja, dat is misschien even de eerste stap.
Want het gaat...
Ja, goed, laten we het hebben.
Je hebt verschillende type games.
Ik zei net in het begin nog van ja, de Atari 2600.
Ja, dat is gewoon 2D.
En 3D, daar moet je even niet in je hoofd halen.
Volgens mij, ja, dat was wel een...
Ik meen een soort van Star Wars game.
Maar dat was niet heel erg gefans.
Het was gewoon een wireframe.
Dus 2D was, ja, dat is duidelijk.
Dat is voor veel mensen best wel goed te begrijpen.
3D games kunnen een aantal mensen ook begrijpen.
Maar ja, het is best wel lastig om te begrijpen.
Of ten eerste, te realiseren wat er allemaal bij komt kijken.
Nou, shaders is één van de onderwerpen.
Maar zou je kunnen uitleggen waar je aan moet denken als je een spel in 3D maakt?
Ja, even kijken.
Als je een spel in 3D maakt in Unity, bijvoorbeeld.
Dan maak je een 3D object in Blender.
En dat 3D object bestaat uit drie hoekjes.
En dan gaat Unity dat 3D object voor je op het scherm tekenen.
Op een bepaalde positie natuurlijk, afhankelijk van de positie van de camera.
Want je kijkt naar dat object.
En afhankelijk van de positie van het object ook.
Dus er zit nog wat wiskunde achter van, nou, oké, waar komt dat object dan op het scherm?
En eigenlijk, vanaf dat moment wordt dat object op het scherm getekend door wat shaders heet.
Shaders bepalen eigenlijk, dit is niet helemaal, dit is een beetje korter de bocht, maar de kleur van het object.
Voor elke pixel gaat een shader uitrekenen.
Oké, wat moet de kleur van deze pixel zijn voor dit object gegeven?
De lichtinval gegeven, welke kleur het object zelf heeft.
En shaders zijn ook stukjes code, dus je kan ze zelf schrijven.
Dus je kan dat sommetje, die uiteindelijke kleur van het object bepaalt, kan je zelf beïnvloeden.
Want dat kan ook anders zijn voor elke pixel.
Sommige objecten zijn glanzend, sommige objecten zijn mat, sommige objecten zijn doorzichtig.
En al die eigenschappen, die kun je terug laten komen door ze in een shader te programmeren.
Sommige objecten reflecteren dingen, dat kan je in een shader programmeren.
En shaders hebben altijd een eigen taaltje en dat is altijd net een beetje raar en een beetje irritant.
Dus eigenlijk als je een spel aan het bouwen bent, programmer je een groot deel in C Sharp.
En dan ineens moet je ook in CG of HLSL of een of ander C-achtig dialect shaders programmeren.
Ik snap niet helemaal waarom dit nog niet een soort opgelost probleem is.
Je moet altijd toch weer een soort andere taal leren en daarmee dealen.
En dan heb je een idee er ook niks.
Is dat iets omdat het makkelijker naar de GPU...
Ja, want het moet alsnog weer gecompileerd worden per GPU.
Dat doen je video drivers, dus die maken er dan echt instructies voor voor je specifieke GPU.
Maar ja, dat moet daar natuurlijk dichtbij zitten.
Dus je hebt natuurlijk niet de hele featureset van C Sharp.
Maar je zou toch een soort syntax kunnen hebben die een beetje in de buurt is van de taal waar je al aan gewend bent.
Het probleem is ook dat de meeste IDE's ook niks begrijpen van die syntax van die shaders in Unity.
Dus dan klopt dat.
Ja, dat voel je echt als je 20 jaar geleden aan het programmeren bent in één keer weer.
Maar wat wel heel vet is, is dat in ieder geval in Unity worden die shaders eigenlijk gewoon on the spot gecompileerd en zie je ook meteen het effect.
Dus je kunt terwijl je spel draait, kun je die shader typen en zie je het effect in je spel live veranderen.
Als je de kleur verandert of de reflectiviteit of wat dan ook, of je zet een minnetje in plaats van een plusje, zie je in één keer wat gebeuren op je scherm.
Het is de meest directe feedback die je maar kan hebben.
En dat maakt het bearable, zou ik zeggen.
En nog even terug, zo'n shader stukje code bepaalt dan hoe elke pixel binnen zo'n driehoekje eruit ziet?
Yes, ja.
Als je die wilt animeren met stroom met water of lava, dan kan dat ook binnen een driehoekje?
Ja, zeker. Je kunt de shader ook de positie van het driehoekje laten veranderen.
Dus je kan binnen de shader dat driehoekje laten bewegen, maar als je dat niet doet, gegeven dat je dat misschien niet doet,
wordt dus de positie van het driehoekje bepaald en die wordt dan als het ware over je scherm gelegd.
En daar wordt dan bekeken welke pixels op je scherm binnen dat driehoekje vallen.
En dan gaat de shader voor elke pixel die binnen dat driehoekje valt, gaat die dat zo met je doen.
En als je dan bijvoorbeeld stroom met water hebt, dan wil je dus dat het een soort van de illusie creëren,
dat er naar beneden iets beweegt. Dus dan moet je de coördinatiesysteem waarin dat water zit,
moet je als het ware naar beneden laten glijden.
En het is een belangrijk stuk voor.
Ja, je bent natuurlijk ook parallel aan het programmeren, dus je schrijft een stukje code dat naar jouw weten tegelijk draait voor alle pixels.
De ene pixel is niet afhankelijk van de andere pixel.
En dat is ook wel leuk om te doen, moet ik zeggen.
En het is extreem snel.
Zelfs al heb je een redelijk oude videokaart of je hebt geen videokaart.
Wat je kan doen in shaders is echt bizar.
Je kan makkelijk een miljoen driehoekjes op je scherm tekenen met allemaal verschillende kleuren.
En dat werkt gewoon. En dan denk je wauw, computers zijn best wel amazing.
Nou goed, die aantal driehoekjes, dat is er ook altijd genoeg tegenwoordig?
Ja, eigenlijk wel.
Er was vroeger altijd zoiets van ja, elke objecta maar duizend of tienduizend.
Of weet ik wel, zoveel driehoekjes hebben. Maar tegenwoordig is het eigenlijk ja.
Ja, dus je ziet nooit meer zo'n randje van een zogenaamde bol.
Nee, hoewel ik dan voor mijn nieuwe spel probeer ik juist alles een beetje low poly te maken.
Dus ik ga een beetje terug naar die oude stijl waarin je juist al die randjes ziet.
Maar dat is meer een soort stijl, Kees.
Oh zo, ja.
Ja, dat is Cloud Gardens of niet?
Ja, Cloud Gardens, ja.
En kan je daar iets over vertellen?
Die ken ik.
Nou, vertel Saber.
Nou ja, ter voorbereiding.
Het was van oké, daar zijn een aantal spelletjes.
Dus ik dacht, nou kun je laten eens even kijken.
En ik heb, ja goed, dan heb ik in een paar afleveringen wel een beetje iedere keer aangegeven dat ik een pc gebouwd heb.
Dus ik heb nu sinds begin dit jaar een pc in elkaar gedraaid.
Dus ik dacht, nou weet je, ik heb nu een pc.
Wat is het eventjes kort?
Wat zit er in je pc?
Ik heb nu een 3060Ti te pakken van Nvidia.
En dat te pakken is vooral belangrijk, want ja, er is niks te krijgen.
Ik wilde ook niet echt de hoofdprijging.
Weet je, want het was voor mij een machine waar ik zowel op kan programmeren voor werk, als dat ik ook kan gamen.
En inmiddels ook mijn.
Maar goed, dat is even een heel andere vraag.
Dat moet ik maar even vergeten.
Maar goed, dus ik was er heel blij mee.
Dus ik dacht, nou weet je wat, ik ga het spelgoel kopen.
Dus ik heb vandaag weer via Steam gehad.
Ja, het geluid, vooral even los van de rest, want ik heb niet heel...
Ik serieus, ik heb denk ik misschien 10 minuten gespendeerd.
Dat was vandaag even wat drukker qua werk.
Dus ik kon niet alles natuurlijk tussendoor doen.
Het geluid was echt heel rustgevend.
Ja, ik weet niet.
Dus dat was echt wel cool.
En de kleuren ook trouwens, het zag er echt heel leuk uit.
Dus dat, maar ik moet er echt serieus nog wat meer mee spelen.
Als je dat gevoel hebt gehad, dan is dat wel redelijk ook het doel van het spel.
Het is heel erg soort meditatief.
En we wilden heel erg dat soort van de beeld en het geluid een soort, ja...
In een soort mode brengt waarin je gewoon heel onbewust gewoon dat spel aan het spelen bent.
En langzaam zo een soort van, ja...
En je zegt net we, wie is we?
Is dat een team van...
Omdat je het over het geluid had, is het de audio.
De jongen die de audio doet.
En ik, die hebben daar veel over gehad.
Wat voor soort gevoel moet het geven?
Ja, want hoeveel mensen zijn er bij betrokken geweest bij Cloud Code?
Het zijn denk ik plus minus vier mensen.
Dus ik zelf doe de code en een stukje van de art.
En een beetje waar dat samenkomt.
Dus ook de shaders en weet ik wel wat.
Dan is er iemand die doet audio en muziek.
En dan is er iemand die doet level design.
Dus die gebruikt al die objecten en die zet die levels in elkaar.
En dan is er iemand die de objecten, die het 3D modeleert.
In het begin deed ik dat zelf in Blender.
Maar op een gegeven moment was het te veel development werk.
Dus heb ik dat Blender 3D werk ge-outsourced.
En zo zijn we met z'n vieren.
En waar heeft Saber jouw shaders kunnen zien?
Nou, bijvoorbeeld als je...
Dus in het spel laat je planten groeien.
En die planten hebben blaadjes.
En die blaadjes die waaien een beetje in de wind.
Dat wordt gedaan door een shader.
Ja, cool.
Ook sowieso kan je...
Die kraaien?
De kraaien zijn...
Alles, elke pixel heeft in principe een shader.
Maar veel pixels hebben dezelfde shader.
Want veel pixels is gewoon hetzelfde sommetje van...
Een object heeft een kleur.
Er valt licht op van een bepaalde kleur.
Dan heeft het dus een perceptueel bepaalde kleur.
Dus voor veel objecten gebruik je gewoon dezelfde soort van semi-realistische shader.
En dan zijn er een paar dingen die een beetje anders werken.
Het spel is vrij mistig.
Dat is ook een shader.
Hoe verder weg dingen zijn, hoe meer ze verdwijnen in de mist.
En dan heb je natuurlijk verschillende soorten mist.
Je kan het heel realistisch maken.
Of je kan iets meer voor een soort gekleurde mist gaan die iets meer kunstzinnig is.
Bijvoorbeeld dat dingen dichterbij ietsje meer rood gekleurd zijn.
En dingen verder weg ietsje meer blauw gekleurd zijn.
Wat niet realistisch is, maar wat wel goed eruit kan zien.
Dat zag er echt goed uit.
Ik vond het wel fijn.
Dat klinkt heel raar.
Dat is eigenlijk precies waar we op mikten.
Gewoon een spel dat echt heel fijn is.
En ook een soort onderbewust gewoon goed aanvoelt.
Dat is ook waar ik de meeste tijd aan besteed.
Als je dus kleine animaties hebt of je pakt een object op.
Gewoon die timing van hoe lang duurt het voordat het dan in je hand aan je muis klikt.
Of hoe lang duurt het voordat een object zich ergens naar toe beweegt.
Hoe snel vallen dingen.
Ja, dat moet allemaal goed voelen.
En dan kan je een soort...
Daar kan je ook heel makkelijk heel veel tijd mee kwijt zijn.
Omdat die animatie 100.000 keer te proberen.
Ja, ik ken dat wel.
En dan zit je...
Dan moet je natuurlijk eigenlijk jezelf ook makkelijk maken.
Want je hebt misschien soms de neiging om dat in code te doen.
En dan moet je recompilen.
En dan klopt je timing niet.
Dus dan haal je er 0,1 seconde vanaf.
En dan ga je het opnieuw compileren.
Als je dat dan 5 keer gedaan hebt, denk je.
Ik ben niet handig bezig.
Ik moet dit even live doen.
Dat ik zeg maar het effect kan zien.
Zonder opnieuw te compileren eerst.
Dus dan zet je die...
Maar die mogelijkheid heb je dus bijvoorbeeld wel dan.
Die mogelijkheid heb je zeker in Unity.
Maar het is natuurlijk toch verleidelijk om gewoon zogenaamde magic numbers...
Gewoon in je code te typen.
Gewoon, ah, dit duurt iets te lang.
Ik doe er wel nog maar 1 seconde bij.
En dan is het wel goed.
Ja, ja, ja.
Maar je kan alles...
Ja, het hoeft niet zo.
Maar het is verleidelijk.
Nee, precies.
Ja, ik wil zeggen dat ik erken het ook wel.
Weet je, soms denk je wel dat je dat allemaal zo op die...
Ja, misschien ben je dan eigenwijs ofzo.
Ja.
En dan doe je het toch op Unity.
Maar goed, het is wel goed om te weten dat...
Nou goed, ik hoor gewoon dat Unity best wel...
Kan ik het luxe noemen?
Dus het is best breed, zeg maar, met wat het allemaal aanbiedt.
Je hebt ook heel erg de mogelijkheid om dingen live te veranderen terwijl je spel speelt.
Dus je kan gewoon een soort schermpje hebben met variabelen.
En dan kun je die variabelen aanpassen terwijl je spel speelt.
En dan zie je dat gewoon meteen gereflecteerd in.
Oké.
In het spel zelf.
Het is heel erg inzichtelijk op die manier.
Ja, we hebben in één van de, volgens mij afleveringen, drie, hebben we...
Ik meen het.
Ja, Hetwig doet schat, dat het ging over VR programmeren.
Oh ja.
En zij deden het ook met Unity.
Dus daar was ook echt ook heel enthousiast over.
Dan zei ik, ja, je moet het echt proberen.
En het is niet te veel.
Bij mij is het echt tijd.
Dat is echt wel het probleem.
Dus dan moet je...
Ik was wel enthousiast.
Maar nu weer.
Dan denk ik wel, oké, cool.
Klinkt echt wel...
Maar als ik morgen in Unity wil beginnen.
Wat doe ik dan?
Dan download ik Visual Code?
Ja, je hebt even kijken.
Visual Studio.
Ik geloof dat als je Unity zelf downloadt, dan vraagt hij ook of je Visual Studio
erbij wil hebben.
Dus het is in principe helemaal opgezet voor iemand die gewoon begint met alleen daarmee.
Dan is het allemaal plug en play.
En dan start je die editor op en afhankelijk van hoe moeilijk je het je zelf wilt maken,
kun je een tutorial doen of je kunt wat dingen in elkaar klikken.
Als je een beetje kan programmeren, is het echt extreem simpel om iets interactiefs
op je scherm te toveren.
Maar je bent gewoon binnen een kwartiertje up en running, als het ware.
Absoluut.
Ja, dat is...
Oh, cool.
Ja, zeker.
Het is bijna een beetje gevaarlijk dat er nog één game engine over is,
straks denk ik soms.
Dat is natuurlijk altijd een beetje de ring van die tijd tussen Unreal en Unity, maar...
Ja, ik wil net zeggen, ja, ja, die discussie hadden we toen ook.
Ja.
Dat is goed.
Ja, ja, precies.
Dat wil ik net zeggen.
Ja.
Want jij zegt van, er blijft misschien eentje over.
Is Unity zo dominant of hoe?
Ik heb wel het idee dat het vooral om in te stappen wel heel aantrekkelijk is.
Ook omdat C++ heeft denk ik toch iets meer van een barrière dan C-sharp.
En in Unreal moet je dan in principe C++ programmeren,
hoewel ze ook zo'n visual language hebben, waarbij je dan niet hoeft te programmeren.
Dus ik denk dat voor veel nieuwkomers Unity toch wel aantrekkelijker is.
En ik denk dat het daarom misschien wel aan dominantie zou kunnen winnen.
Na gaan game studios gewoon hun eigen engines programmeren op een gegeven moment.
Er werkt altijd iemand die op een gegeven moment zegt...
Voor indie developers?
Ja, voor indie developers is het wel echt een uitkomst.
En altijd iemand die zegt...
Ik denk bij elke studio werkt wel iemand die op een gegeven moment zegt...
Ja, deze feature mist, we moeten onze eigen engine bouwen.
Het is een soort van onverwijdelijk.
Ja, natuurlijk.
Not invented here.
Ja, precies.
Not invented here, precies.
Maar dan zeggen ze ja, je kan of een game bouwen of een engine.
Maar niet alle twee.
Kies maar.
Dat is wel een goeie, ja.
Ja, dat is wel een goeie.
Maar jij ging iets zeggen Bernard.
Ja, ik kwam door dit onderwerp ook op jouw mailtje wat je bestuurde.
Waar je een onderwerp aandroeg.
En dat was waarom zo vaak bij het bouwen van games mensen het wiel opnieuw uitvinden.
Terwijl er bij misschien niet game development veel standaard geaccepteerde software en...
...instructuur modellen zijn.
En in die game development misschien niet.
Mis je dat?
Of je zei je hebt het idee dat je telkens opnieuw het wiel uitvindt?
Kan je daar wat over...
Ja, ik mis dat wel moet ik zeggen.
Vaak dan denk ik als ik dan...
Kijk, ik maak ook weleens, of ik probeer weleens een website te maken...
...en dan heb je de hele webstack en dan lees ik mening react ofzo.
Dan denk ik, oké, deze mensen hebben echt een mening over hoe je dit moet doen.
Dus je moet components maken en dan koppel je dat aan je data.
En het is allemaal zo, oké, als je het aan het doen bent, heb je echt het gevoel...
...dat je het goed aan het doen bent.
Van dit is wat het hoort te doen.
En met games heb ik dat echt vaak niet.
Er zijn natuurlijk wel modellen van, je hebt een soort entiteiten.
Weet je wel, karakters of objecten of weet ik veel wat.
En tot op dat niveau zijn er wel conventies.
Maar vaak voor andere dingen zit je toch aan te rommelen.
En dan denk ik, doe ik dit nou goed?
En een dag later moet ik weer overnieuw beginnen...
...omdat ik denk, nee, dit klopt, dit klopt voor geen meter.
En de discussie over programmeren voor games komt eigenlijk vaak niet op dat niveau.
Het gaat eerder over veel meer low-level dingen.
Hoe maak je je shader 0,001 milliseconden sneller of zo.
Maar niet echt van, ja, hoe zet je nou dingen een beetje op of wat is een goed model?
En wat voor dingen denk je dan dat je het wiel opnieuw uitvindt?
Net een ander niveau dan die meest basale objecten, entiteiten.
Ja, maar ook dingen waarvan ik het idee heb dat ze bijvoorbeeld in de webdevelopment wereld...
...eigenlijk al uitgevonden zijn, maar die is er dan in games nog niet helemaal hebben overgenomen.
Zoals hoe koppel je UI, dus interfaces, aan een soort state of zo.
Dat is er in Unity helemaal niet een soort fundamentele manier waarop je dat geacht wordt te doen.
Het is allemaal gewoon...
Doe maar wat je leuk vindt.
Ja, als er iets verandert dan roep je een functietje aan die die knop een centimeter naar links schuift.
Maar niet een soort fundamenteel model.
En dat geldt wel voor veel dingen, denk ik.
Het is wel grappig ook wat je daar zegt.
Want er is een van de programeertalen, een beetje ook de stack, zeg maar, is Elm.
Ik weet niet of dat iets zegt.
En dat is, wat ik begreep, is juist begonnen ook als een soort van game develop omgeving...
...en die je dan in je browser gaat draaien.
Dus je had dan Vizio Studio Code en dan kon je dat programeren en dan kon je het in je browser.
En ze hebben toen een rewrite gedaan.
Want het was in eerste instantie heel erg getarget voor een game die ze wel hebben.
Maar ze hebben het opnieuw geschreven.
Maar ook, zeg maar, het is heel functioneel, zeg maar.
Dus hoe die state gekoppeld is aan de UI is daar heel erg, ja, heel expliciet, zeg maar.
Er zijn juist heel veel platformen programeertalen.
Dus vanuit React heb je Redux.
Die hebben dus juist die concepten van Elm overgenomen.
En wat jij zei, dat komt dus ook weer uit.
Was dat soort van origineel bedoeld voor games of zoiets?
Dus je zou zeggen dat er toch wel iemand een mening over heeft.
Ja, precies.
In ieder geval binnen die Elm, of ten eerste de developer, die Elm in eerste instantie.
Maar dat was echt in eerste instantie voor gaming.
Ze hebben dat later wat meer losgelaten.
Dus dat het nu meer gewoon web development is.
En dat je daar applicaties mee kunt maken die gewoon in je browser draaien.
Maar als je dan toch in React hebt geprogrammeerd en daar het idee hebt gekregen van nou, zo doet men dat hier.
Zijn dan die ideeën niet mee te nemen naar de game development?
Ja, die zijn natuurlijk in zekere zin wel mee te nemen.
Nu is de standaard patterns.
Ja, maar zoiets als React is bijvoorbeeld toch nog wel ook een vrij forse.
Hoe zeg je dat?
Code base die ervoor zorgt dat je dat op die manier van weet je wel, dat die steen netjes goed is.
En dat je gaat kijken wat er verandert, et cetera.
En dan voordat je dat gaat nabouwen, ben je denk ik toch eerder het een beetje ad hoc aan het doen.
Want je denkt natuurlijk bij het eerste knopje, dit knopje programmeer ik wel met de hand.
En dan komt er een tweede knopje.
En dan bij het tiende knopje denk je, oeh.
Ja, klopt.
Maar over verschillende games heen, kan je dan niet een soort eigen componenten library of wat ook meenemen?
Of is het toch altijd from scratch?
Het is toch wel vaak from scratch.
De dingen die ik dan zelf meeneemt zijn toch heel low level.
Dus het is wel meer van bepaalde wiskunde dingetjes of dat soort dingen.
Het komt natuurlijk ook wel omdat elk spel een soort ander paradigma heeft denk ik.
Bij Cloud Gardens heb je dan een cursor dat zijn handje waarmee je die op kan pakken.
Dus dan wil je je heel erg nadenken over wat wijst het handje aan?
Is dat iets wat ik kan oppakken? Is dat iets wat ik kan gebruiken?
Heb je daar een soort paradigmas voor? Maar bij een ander spel is dat natuurlijk anders.
Toch is het elke keer wel een struggle.
Want dan denk je ja, het voelt alsof het iets algemeens is.
Weet je, je hebt ook een HTML, je kan iets hoveren en dan is het hover.
Dan heeft het een state.
Dan denk je ja, dit heeft toch iemand wel bedacht ofzo.
Ja, maar nou ben ik bijna mijn vraag kwijt.
Ja, als je dan zo'n spel begint te ontwikkelen, wat is dan het eerste wat je gaat schrijven?
Is het dan een proever concept of begin je met die entiteiten of met één knopje?
Ja, grappig.
Ja, dat je dan toch een soort visie hebt van hoe je het spel in de loop van de tijd op gaat bouwen.
Of is dat, valt dat?
Het zijn denk ik een beetje twee stromingen.
Je hebt mensen die echt iets doen dat heet white boxen.
Dan maken ze gewoon een spel met alleen maar gewoon vormpjes.
Dus gewoon programmer art.
En dan gaan ze zorgen dat de gameplay echt goed volgt.
Dus dan zeggen ze oké, dit rode kubusje is nu een vijand, maar het heeft geen graphics.
Maar je moet je maar voorstellen dat het een vijand is.
En dan gaan ze zorgen dat je daar lekker op kan schieten en kan springen.
Dat werkt voor mij niet.
Ik kan niet aan een spel werken als het er niet goed uitziet.
Voor mij begint het echt vanaf de graphics.
Dus ik begin met een 3D object of een animatie.
En dan denk ik, oh, dat ziet er grappig uit.
En als het dan iets leuks doet, dan is het nog niet echt een spel.
Maar dan denk ik, ja, dat is wel leuk.
Er zit iets in en dan ga ik proberen daar een spel van te maken.
Dus met Cloudgird Gardens had ik die simulatie van planten.
Is natuurlijk geen spel, maar het is wel grappig.
Dus ik kon dan een soort zaadje neerzetten en dan groeide daar een plant uit.
Toen ben ik een jaar lang gaan nadenken hoe ik daar dan een spel van kon maken.
En zo steeds meer features toegevoegd.
Het is wel een leuke manier om te werken, want je kan altijd...
Je hebt nooit een hele lange to-do-list voor jezelf.
Het is niet dat je zo'n soort enorm plan hebt waar je nog twee jaar aan moet werken.
Je kan gewoon elke keer kijken, oké, dit is nu leuk.
Hoe kan dat nog net ietsje leuker worden?
Het is wel organisch.
Ja, trouwens, dat is natuurlijk voor jouw spel natuurlijk wel heel toepasselijk.
Maar het is een heel organische manier van software development.
Dus je ziet van, oké, je krijgt feedback.
Oh, dan moet ik even dit tunen of ik moet dit erbij bouwen.
Dat is op zich wel cool.
Dat heb je natuurlijk met web development, zeg maar,
dus de front-end development, dus dat je UI in React of Angular of whatever.
Dus daar heb je ook een snellere feedback loop.
Dus je past wat HTML aan en je ziet meteen, oh, dit doet het.
Dus dat is fijn.
In back-end development bijvoorbeeld hoeft dat niet altijd zo te zijn.
Dus dan kost het soms wat meer tijd.
En dat is, ja, dan heb je al een andere soort van developer of mindset nodig om dat goed te doen.
Ja, dan moet je echt meer uittekenen waarschijnlijk over langere termijnen ook.
Hoe gaat dit werken?
Ja, dat is, goed, wat jij zegt klopt helemaal.
Ja, want je hebt mensen die upfront designen.
Ik denk dat die bij verre weg in de minderheid zijn.
Dus die echt een heel UML die gaan maken en zeggen, oké, zo moet dit worden.
En die gaan bouwen.
Ik denk, als er 10 procent van de developers zijn die dat op die manier doen, dan is het veel.
Meestal is het veel bouw kleine dingetjes en kijk of dat werkt.
En dan ga je dan stap voor stap, zeg maar, ja, laat het zeg maar uitgroeien.
Ja, gewoon iteratief.
Ja, precies.
Dat is, denk ik, iets waar alle programmeurs in alle mogelijke richtingen ook wel moeite mee hebben, denk ik.
Van hoe ver ga je van tevoren uitdenken?
Je hebt toch de neiging om een soort van het perfecte systeem te gaan bedenken in je hoofd.
En dan daar veel te lang over na te denken voordat je überhaupt een regelmal code hebt geteapt.
In andere gevallen denk je, oh, had ik hier maar eerder over nagedacht?
Want nu is het een zootje geworden.
Ja, er is geen.
Ja, ja, ik kan er nog steeds niet mee omgaan.
Ik denk ook dat het wel een goede trouwens.
Ik denk dat dat is een vraag die gaat.
Normaal stelt Bernard die.
Maar wanneer doe je heb je wel eens een rewrite gedaan?
Ja, dat je zegt, oké, ik heb een game en ik dacht, oh shit, ik heb hier precies misschien niet lang genoeg over nagedacht op dat moment.
En ik ga de engine rewrite.
Want dat hoor je wel eens van, weet ik veel, met een real engine ofzo.
Oh ja, we hebben een hele rewrite van die engine gedaan.
Maar hoe vaak gebeurt dat?
En de vraag naar jou toe is, heb je dat weleens gedaan?
Ja, ik heb het zelf niet helemaal gedaan, want de engine is natuurlijk ook Unity en daar bouw je tegenaan.
Oh ja, tuurlijk.
Er zijn wel vaak modules dat je zegt, oké, deze module, de module voor de user input met de controller moet gewoon helemaal overnieuw.
En vaak probeer ik het wel te koppelen aan ook een soort feature voor de user.
Dus dan probeer ik mezelf een excuus te geven, want soms weet ik dat die rewrite ook niet helemaal nodig is.
Maar dan wil ik het heel graag, want dan denk ik, deze code is lelijk en ik weer ervan af.
En dan bedenk ik zoiets van, ja, maar als ik het nou rewrite, dan kan je de controller laten vibreren, weet je wel, die vibration.
En dan heb ik een soort, dan probeer ik het ook te verkopen aan mezelf van waarom die rewrite echt nodig was.
En zo pak ik dan af en toe een module die ik opnieuw doe.
Wat grotere game studios vaak doen, is dat die hebben dan pre-production en production.
En dan in pre-production zijn ze eigenlijk gewoon een prototype aan het maken.
En dan het idee is dat je aan het einde van de pre-production alles weggooit en zegt, oké, we weten nu wat het spel moet zijn.
Nu gaan we dat zo bouwen.
Dat vraag ik me toch af, dat lijkt mij heel moeilijk.
Om dat gewoon alles over boord te gooien.
Ze gaan zeker veel volle componenten voor je nemen.
Ja, dat denk ik ook wel.
Ja, ik denk het wel, ja.
Maar ik weet ook niet hoe dat is, want het zal ook wel te maken met funding.
Weet je wel, je wil even snel iets laten zien.
En dan, als je dat eenmaal hebt, dan heb je bewezen dat het werkt.
Misschien heeft het daarmee te maken.
En goed, sommige projecten.
Maar dan heb ik dus, ja, het niveauotje Cyberpunk, GTA, dat zijn die projecten van één of twee jaar.
Dus dat duurt, weet ik veel, zeven, acht jaar misschien.
Ik weet het niet eens, want volgens mij Cyberpunk heeft echt wel veel jaren.
Dus het prototype weggooien is in die grand scheme.
Ja, dat stelt niks voor, denk ik dan.
En ondertussen hebben ze mensen die waarschijnlijk aan de core engine werken.
En die werken wel gewoon door.
Dus die bouwen dan nieuwe rendering features, weet ik voor wat.
En dat blijft waarschijnlijk wel.
Thomas, ik zie ook in jouw spellen een soort thema af en toe terugkomen.
Is dat die organische groei?
Ja, ik zie veel organische componenten in jouw spellen.
Heb je daar iets af in die tijd mee?
Ja, ik vind, omdat ik het altijd van...
Je ziet ook een plant op de achtergrond, sorry.
Ja, dat is nou wel weer...
Ja, zo'n plant op de achtergrond is tegenwoordig een mastave in de tijd van Zoom.
Dat je niet gewoon een witte achtergrond hebt.
Er moet het zitten.
Ja, mensen, ja, precies.
Nee, ja, planten, ja, ik vind het altijd wel leuk om te tekenen.
Ik maak ook die pixel art voor die spelletje.
Ik begin in ieder geval zelf met het maken van de pixel art of andere soort art.
Ja, het tekenen van die planten en het dan in zo'n spel zetten is...
Ja, dat vind ik inderdaad leuk om te doen.
Ik weet niet precies waar het vandaan komt of waarom het iets betekent.
Maar het is ook iets dat planten tekenen eigenlijk heel makkelijk is.
Want je kan gewoon een soort...
In Photoshop neem je dan een brush in met een willekeurig vormpje en dan zet je gewoon een groene klodder.
En het lijkt al gauw op een boompje of zo.
Je kan heel makkelijk een soort Bob Ross-achtig gewoon wat klodders neerleggen en dan een beetje...
Ja, maar goed, dan moet je dat toch ook in een soort van algoritme kunnen proberen te gaan vangen.
En dat is dan best wel veel uitzoeken of dat moet je ook heel erg leuk vinden.
Ja, dat klopt.
In het geval van Cloud Gardens waar die planten echt groeien, is er natuurlijk een soort algoritme dat die planten laten groeien.
Ik ben niet echt uitgehaald van een soort fundamenteel model van hoe planten groeien of zoiets.
Ik kijk gewoon eigenlijk...
Ik gebruik de physics engine, dus het deel wat kijkt waar objecten zijn en of objecten niet door elkaar heen zitten.
Maar objecten kunnen natuurlijk van elkaar afstuiteren en zorgen dat ze zich niet realistisch gedragen.
Die gebruik ik om te kijken of er ruimte is voor een blaadje en als er ruimte is dan stop ik dat blaadje daar.
En bij het volgende blaadje ga ik weer kijken en zoek ik weer een nieuwe plek, gewoon brute force.
Als er ergens ruimte is, dan kwak ik er een blaadje neer.
En het werkt eigenlijk best wel goed voor die planten.
Ja, precies.
En dan gebruik ik de physics engine om zijn ruimte te laten innemen.
Cool.
Ik vind echt, wat ik echt gewoon heel tof vind, is die ontwikkeling die game development heeft gemaakt.
Want het is even een korte tijd geweest dat, nou goed, assembly geprogrammeerd met de V86 ooit.
Lang geleden.
Een 3D-model, dat moest je gewoon programmeren.
Dus dat moest je gewoon zelf de translaties doen, de rotaties, de hele zooi.
Dat was wel, ja, niet pijn, maar dat kost wel wat tijd.
Toen was er de fase, zeg maar, dat je toen begon je 3D-kaarten te krijgen.
Dus de, weet ik veel, hoe moet ik het noemen?
De S3 furtje, die was heel slecht.
Toen kreeg je de 3DFX-kaart en Nvidia en al dat begon toen net te komen.
Toen kreeg je die modellen dat je gewoon iets naar die kaarten toe stuurde.
En die deden heel veel dingen voor je.
En daarna is overal de dingen die je noemt, is best wel in een stroomversnelling gekomen.
En die physics engine, zeg maar, dat hield wel.
Ja, goed, ik heb nooit, weet je, ik heb heel kleine dingetjes gemaakt.
Het kan niet eens een game genoemd worden.
Ik noem het meer demo's, zeg maar.
Dus we hadden dingetjes mee gespeeld.
En op losgelaten, zeg maar, toen eenmaal die 3D-kaarten kwamen, toen was ik al gestopt, zeg maar.
Maar elke keer als ik die dingen hoorde, dacht ik van, oh shit, dat is echt tof dat dat allemaal...
Dat kan je allemaal, ja.
Dat kan je allemaal al.
Dus die physics engines en nog meer, weet je, die AI-en.
Hoe heet dat, angels, zeg maar, op die Nvidia-kaarten.
Dus het wordt echt wel, ja, we gaan echt wel vooruit, zeg maar.
Ja, klopt.
Dus dat, ja.
Wat je zegt over dat je vroeger 3D-mo's programmeren, dat vind ik nog wel...
Het is ook soms wel fascinerend om naar terug te gaan, om gewoon te zien dat die 3D-modellen ook heel simpel kunnen zijn
en je gewoon in code een aantal coördinaten kan programmeren en dat op je scherm kan tekenen.
En ik vind het ook wel leuk om daar soms een beetje naar terug te gaan en echt te zien van, oh ja, dit is gewoon hoe het werkt.
Je kan ook met een hele dagen resolutie, ja.
Voordat die video-GPU's er allemaal waren, heb ik een rendering gemaakt van een soort bol om je heen
waar je in staat en je alle kanten op kon kijken.
Het was niet 3D, het was eigenlijk gewoon een...
Hoe je het spel mist, ken je dat misschien van heel lang geleden, Saber?
Dat was een van die eerste spellen waar je dan in zo'n bol stond en alle kanten op kon kijken.
Toen dat ongeveer uitkwam, heb ik ook zoiets gemaakt.
En daarmee hebben we een aantal klanten in musea, waar je dan zo virtueel doorheen kon lopen.
In het Anne Frankhuis was er een fotograaf die dan, zeg maar, in een kubusfoto ging maken.
Dus dan maakten wij daar weer een bol van en die kon je dan op je PC...
Daar kon je dan in het Anne Frankhuis rondlopen.
Dus die engine heb ik ook aan meegeholpen.
Maar dat was eigenlijk geen 3D, maar voornamelijk een raytracing naar een kubus met foto's.
En dan dat zo snel mogelijk doen met heel veel cynisch en kozinsberekeningen.
En daar hadden we wel wat assembly nodig eerst, maar na een tijdje ook al niet meer.
Je bedoelt qua snelheid, na een tijdje ging dat gewoon goed.
Ja, die computers waren snel genoeg, maar dat duurde wel even voor het snel genoeg was.
We hadden wel assembly nodig, omdat snel te kunnen rennen op je 640x480 schermpje.
Hoe bepaal je of je een spel echt wilt gaan ontwikkelen als je ook in het achterhoofd
moet bedenken of het geld gaat opleveren?
Ja, dat is echt wel heel moeilijk.
Ik ken ook veel andere indie game developers die in die situatie zitten waarin ze verschillende
prototypes hebben en zich al heel lang afvragen.
Oké, waarmee ga ik nu verder?
Welk spel wordt het spel?
Dat is echt lastig.
Het is denk ik een soort gut feeling waarin je zegt, ja, hier kan ik iets mee, hier kan
ik nog verder mee.
Voor mij is het ook een beetje geëscaleerd, want ik dacht zowel bij Kingdom als bij Cloud
Gardens, ik doe nog twee maanden dit en dan doe ik er een strik omheen en dan gooi
ik het op Steam.
En die twee maanden zijn toen twee jaar geworden.
Als je kijkt naar welke features je er nog in wilt stoppen.
Dus dan heb je gepland voor een klein projectje waar al dan niet geld uitkomt en dan langzaam
antwoordt steeds meer.
Hoe meer tijd je er investeert, hoe meer het ook weer moet opbrengen natuurlijk.
Maar heb je van tevoren een prijs bedacht en dan kan je je daar dan aan vasthouden
als je het in één keer twee jaar duurt in plaats van twee maanden?
Ik denk dat de prijs wel een beetje omhoog gaat.
In eerste instantie dacht ik oké, ik maak het spelletje, dan doe ik het voor vijf euro.
Nu is het uiteindelijk voor zeven euro uitgekomen op Steam en we doen zoiets dat heet
early access.
Dus dan release je het en dan zeg je bij dat het nog niet helemaal af is.
En dan doe je steeds updates en dan met elke update doe je de prijs ook weer een
beetje omhoog omdat het spel dan dichterbij de final versie is.
En als het spel er straks uitkomt dan is de prijs nog.
Ja, het is een soort zeg je dat Blackmagic, iedereen bedenkt maar wat en dan zeg je
ja, als het nou net onder een tientje is dan willen mensen het vast wel
kopen of dan is het twee koppen koffie en dan willen ze het vast wel kopen of
je doet echt maar wat.
Ja, dat is ook zo.
Je hebt het geldt ook voor iOS appjes die ik heb gebouwd.
Denk je?
Ja, dat is redelijk.
Waarom?
Ja, ja, ik denk, ik denk de laatste tijd wel steeds vaker.
Ik heb het liefst gewoon een iOS app waar ik gewoon een normaal bedrag voor
betaal.
Laat het een tientje zijn die dan gewoon iets, één ding heel goed doet in plaats
van een soort app die het net niet allemaal goed doet, waar je drie keer door
ads heen moet klikken.
En maar er is natuurlijk een soort ja, ik denk ik om betaalde apps te maken,
ook omdat veel gebruikers bij een betaalde app al gelijk zeg je dat
wegklikken.
Maar bij games is een beetje hetzelfde.
Dat is waar.
Maar als gebruiker denk ik steeds vaker.
Laat mij maar gewoon betalen, want dan weet ik wat ik krijg.
En als developer?
Denk je ook?
Ik zet er gewoon een prijs op.
Ja, als developer vind ik het ook eerlijker, want je hoeft niet eerst een
spel te maken en vervolgens te verzinnen hoe je er geld aan gaat
verdienen.
Je zegt gewoon ja, jullie krijgen deze ervaring voor dit bedrag en ik
probeer je voor dat bedrag gewoon de leukste ervaring te geven en niet.
Het is een gratis spel, dus je krijgt een beetje en dan na een uur spelen
ga ik proberen om je geld af te troggelen.
Ja, je hoeft ook niks.
Je hoeft niks achter te houden.
Je kan gewoon als je betaalt voor het spel kan je gewoon het zo leuk
mogelijk maken.
Je hoeft geen.
Ja, het is wel.
Het is wel het fijnste.
Ja, maar wat jij zegt is vanuit een gebruikers perspectief, zeg
me, die perspectief heb ik niet.
Natuurlijk voor games.
Maar dan is dat één keer betalen, zeg maar, en dan niet iedere keer
weer.
Oh ja, hiervoor een uitbreiding.
Dat is het fijnste en dan betaal ik ook echt liever zelf voor een
keer weet ik veel in plaats van één of twee euro.
Hier heb je dan niet tien of vijftien euro en dan laat me verder met
rust.
Ja, dus dat dat dat vind ik het fijnste.
Alleen ik vraag me af en ja, dat zul jij denk ik beter waar het
meeste mee aan verdiend wordt.
Want jij bedoelt speeltjes als hoe heet ze?
Fortnite, Apex Legends en dat soort dingen.
Ja, dat is allemaal freemium en ze verdienen bakkevol met geld aan
ja.
Ja, kleding hoort dat of pakjes en dat soort.
Ja, dus dat dat zijn.
Ja, dat model is wel goed.
Maar goed, het is volgens mij op iOS.
Dat is wel volgens mij bij Apple.
Wel hebben ze wel een beetje de insteek gehad.
Dat ze veel duidelijk wilde maken.
Oké, of of je nu echt in app betaal je nog had.
Om mensen wat bewuster te maken van dat je dat ja, dat het
niet echt gratis is en dat je dus beter erbij staat.
Er zijn in app payments.
Ja, ja, je weet natuurlijk nooit.
Het is altijd lastig als je speelt.
Kan je altijd denken.
Ja, maar hoeveel lol krijg ik nu voor hoeveel euro zeg maar.
Je moet altijd denken van ja, welke leuke dingen houden zij
achter voor de spelers die wel betalen en hoe leuk is het om
niet te betalen?
Je bent ook constant bezig met die overweging.
Wat je zei over die kleding in Fortnite.
Wordt het spel nou leuker als ik een hoedje koop?
Moet ik het wel of niet doen?
Daarom is het ja, denk ik, voor iedereen beter als je van tevoren
betaalt.
Maar als je nou vraagt waarom wordt het meest verdiend, dan is
het wel het freemium model natuurlijk.
Ja, dat denk ik wel.
Ik denk dat voor Fortnite en Apex er meer dan zijn.
Ja, ja, kijk en ja goed, ik heb een paar kinderen die zeg
maar met de iPads rondstuiteren.
En dan krijgen we iedere dag.
Ja, ik wil dit spelletje.
Ik wil dat spelletje.
En ik ga niet iedere keer dat daar zit.
Dus weer.
Daar zit ik een beetje wel weer voor.
Hier heb je gratis spel.
En dan eigenlijk nooit, zo moet ik het echt zeggen, is dat we dan in
app purchases doen.
Dus we verdienen niet per se iets aan ons.
Alleen, ja, dat is één spel Brawl Stars.
Daar doe ik nog eens één keer in de maand.
Of hier heb je de Brawl Pass.
En dan laten we hem even met rust, zeg maar.
Dus dat is daar wel weer zo.
Maar goed, dat Free Me model werkt dan wel.
Weet je, die kinderen die willen spelletjes.
En dan, ja, daar verdienen ze gewoon bakkenvol met geld.
En dat is ook met Fortnite.
Dat is echt mensen gewoon hun zakgeld allemaal in Fortnite steken.
Ja, en uiteindelijk gemiddeld betalen mensen daar meer voor dan.
Ja, zeker.
Ja, ja.
Dat ze zouden betalen als je gewoon één keer dat spel koopt.
Maar ja, dat is natuurlijk gemiddeld.
Er zijn mensen die veel uitgeven en weinig uitgeven.
En dat weten zij natuurlijk ook precies.
Wie er meer of minder uitgeeft, zelfs al voor je dat spel gespeeld hebt.
Oké.
Want ze tracken jou natuurlijk ook via alle opties voor tracking die er tot hun beschikking zijn.
En ze kunnen dus ook de spelervaring aanpassen aan of jij een betalende gebruiker bent of niet.
Als ze weten dat je een whale bent, schotelen ze je geen ads voor.
Want dan weten ze dat ze veel meer kunnen verdienen aan in-app purchases.
En als ze toch wel weten dat je niet gaat betalen, dan krijg je een heleboel ads.
En dat zit ook in jouw games?
Of zit er enige tracking in jouw games?
Of wat weet je?
Wat weet ik?
Ik heb dus als het spel crash dan kan je een crash report sturen en dan krijg ik een stack trace en dan kan ik dat zien.
En je kan ook via het spel feedback geven.
Dus je kan iets intypen en dan kun je je e-mail adres achterlaten.
En dan kan ik dat fixen.
Verder geen tracking.
Je kan echt wel die analytics doen waarin je echt kijkt van nou ja, hoe lang spelen mensen?
Wanneer houden ze er mee op?
Hoe lang is elke keer?
Na hoeveel tijd komen ze terug?
Ik heb dat wel gedaan, maar ik vond het ook moeilijk om er echt iets uit te leren.
Dan dacht ik ja, ze haken af na een uur denk ik.
Ja, ze hebben betaald.
Als ze het een uur lang naar hun zin hebben gehad, vind ik het eigenlijk prima.
Ja, ja, precies.
Ik vind dat is wel wel grappig wat je nu zegt.
Want ik had altijd al wel een beetje het idee.
Zeker bij first person shooter, zeg maar.
Je gedraagt je het gedrag binnen dat spel.
Dus los van wat mensen kopen of niet.
Maar goed, is iemand heel erg agressief?
Of is iemand juist niet agressief?
En dat gedrag kun je ook nog eens mogelijk koppelen aan.
Koopt hij wel pakjes?
Of koopt hij juist de custom gun?
Hoe heet dat?
Ja, klopt.
Ze doen er vast meer mee dan wij zouden bedenken.
Misschien kijken ze naar hoe snel je er op het menu heen klikt als je het spel opstart.
En dan op basis daarom zeg je echt heel eager.
Dus je gaat vast geld uitgeven.
De prijs van de wapens gaat omhoog als je hard praat.
Omdat je boos bent.
En wat ook wel bekend is dat ze doen is dat of dat soms gebeurt,
is dat de eerste paar games die je speelt dan stoppen ze in een team waarin de kans groter is dat je gaat winnen.
Zodat je eerste ervaring toch.
Oh ja.
Oh wow.
Dat is wel vals.
Dat klinkt een beetje sneaky.
Dat is wel een beetje sneaky.
Ja, er valt heel veel op z'n plek nu.
Ja, precies.
Dan speel je het de eerste half uur en denk je oh, ik ben echt goed in dit spel.
En daarna komt ineens de harde realiteit.
Dat je hier niet kan meten met kids van 16 met reflexen.
Ja, daar heb je wel gelijk in trouwens.
Die reflexen, dat is wel een ding.
Ja, dat is.
Ik dacht deze week, ik ben echt snel.
Nee, ik ben echt snel.
Ja, dat is even voor mij ook al binnengekomen.
Ja, ja, cool.
Maar bouw je misschien wel andere dingen in je spellen in die je zo lang mogelijk geheim
of verrassing moeten blijven voor de gebruikers.
Zijn er, zijn er, ja.
Ja, die geheim moeten blijven.
Of ja, gewoon die je langzaam prijs wilt geven, maar niet meteen het eerste.
Ja, Kingdom was wel een beetje zo'n spel waarbij er een heleboel soort mysterieuze
dingen gebeuren, waar je ook op verschillende manieren mee om kan gaan.
Dus je komt dan een of andere karakter tegen en je weet niet precies wat die doet.
En dan vind je dat uit met een beetje trial en error.
Dus daar zitten wel veel van dat soort dingen in.
Nu wat minder. Cloud Garden is wat meer gewoon straight forward.
Je weet eigenlijk binnen het eerste uur al ongeveer hoe het spel gaat zijn.
En dan is het gewoon meer daarvan.
Het is ook zo dat als je natuurlijk een spel programmeert, hoe meer unieke
gameplay mechanics je programmeert, hoe meer werk het ook is, want die hebben ook
allemaal weer, die moeten weer in elkaar haken, als het ware.
Terwijl je spel gewoon het hele spel lang hetzelfde doet, is dat makkelijk.
Dat is een soort van overzichtelijk. Dan hoef je alleen maar meer levels te bouwen.
Maar als het spel elke keer iets nieuws doet en weer iets.
Dat was bij Kingdom nog wel een ding, want ik wilde elke keer
content toevoegen die ook iets echt iets nieuws deed.
Dus niet alleen een nieuw kleurtje of een mannetje dat gewoon twee keer zo
sterk is, maar ook echt een soort nieuw nieuw behavior.
En dat was dan elke keer wel weer.
Oh ja, hier hadden we dit hadden we niet voorzien.
Hier is die engine eigenlijk niet opgebouwd.
Dat je bijvoorbeeld door een of andere war portal kan teleporten.
Ja, ja, ja.
Zo snel kan die wereld helemaal niet.
Na goed, en elke keer bouw je weer op en weer nieuwe dingetjes.
Is wel leuk voor gebruikers, maar het wordt wel een soort gammelbouwer.
Ik heb wel eens iets van oké, laat ik eens iets programmeren voor, weet ik veel,
een Nintendo Super Nintendo van vroeger.
Want dat gebeurt nog steeds.
Ja, dat mensen voor de Commodore 64.
Dat ding is echt oud.
Dat ze daar nog nieuwe software voor maken.
Heb je dat weleens?
Ik begrijp de fascinatie wel.
Ja.
En ik ken ook een team en die hebben dus inderdaad wat je zegt voor de voor de
eerste Nintendo, niet de Super Nintendo, maar de net.
Game gebouwd.
En ik dacht echt.
Ah, dit is zo vet.
Wat voor trucjes zij moeten doen om daar het meeste uit te krijgen.
Hoe ze alle assets moeten hergebruiken.
Dus wat ook het is toch ook het verhaal van Mario dat de wolkjes hetzelfde zijn
als de boompjes of zo.
Dat je echt dat soort dingen moet doen, dat je gewoon die sprites moet hergebruiken
en zo.
Als je er echt in moet werken.
Het is ook wel zwaar.
Lijkt me.
Je moet wel.
Ja, ja, het is.
Ja, je bent verwend.
Misschien nu.
Je bent echt verwend.
En ik vind het leuk om wel visueel met die soort beperkingen te werken.
Maar dan weet je van oh, gelukkig draai ik dit gewoon op.
Nou ja, wat zei je?
3060.
Ik heb er ergens last van.
Ja, ja.
Ja, dat is waar.
En het leuke is dan ook dat je een soort van wat je krijgt.
Stel je werkt met een soort retro graphics op huidige hardware, dan kan je dus ook
een miljoen sprites op je scherm tekenen.
Omdat elke sprite zo licht is, kan je dus weer een nieuw soort ding doen.
Omdat je in een keer zoveel overhead.
Zo zag je dat zoveel headroom hebt.
Ja, dat klopt.
Je moet je nooit zorgen te maken over performance.
Ja.
Terwijl je het ook van die games.
Die hebben dan karakters met weet ik veel.
Ik weet niet of dit dan normaal getal is, maar 10 miljoen polygons.
Dus die kunnen er maar twee karakters op het scherm tegelijk hebben.
Weet je wel?
Ja.
Omdat ze zo helemaal ingezond zijn als het ware.
Ja.
Oh ja, tuurlijk.
Ja.
Nou ja, cool.
Nou ja, goed.
Ik hoor dat wel.
Ze denken vet.
Dat is wel wel leuk, zeg maar, om dat.
Ja, ja, het is denk ik ook.
Ik kan me het voorstellen om te doen.
Ja, en je kan het ook redelijk behappen, zeg maar, denk ik.
Dat hele apparaat geeft denk ik ook wel echt voldoening om gewoon te weten.
Ja, deze chip gaat gewoon dit doen en ik ken al die instructies.
Ja, ja, je moet denk ik wel assembly schrijven.
Maar goed, dan zijn jullie waarschijnlijk wel bekend mee.
Nou ja, wel bekend mee, maar bedreven niet meer.
Maar goed, het was wel.
Weet je, die Commodore 64 en al die homecomputers, die zaten.
Dat was gewoon vast.
Het is niet dat je dan bij een pc een jaartje wacht.
En dan was er een nieuwe versie van een Intel of van een GPU.
Of van een AMD, whatever.
Nee, in de tijdspannen, weet ik veel, tien jaar.
Ik weet niet hoe lang de lifespan was van de Commodore 64.
Maar dat was altijd hetzelfde.
Dus je moest gewoon creatief zijn met die hardware.
Dat was wel, ja, dat was een soort van wedstrijd ook, zeg maar,
tussen verschillende developers.
En ook demomakers, zeg maar, dat is nog niet eens game development.
Wat kan ik nou, hoeveel kleuren kan ik nou op het scherm krijgen?
Terwijl in de hardware staat, in de spec staat er 16 kleuren.
Maar ja, ik krijg het voor elkaar om 256 op te krijgen.
Of weet je, dat soort dingetjes.
Ja, dat vond ik wel, dat was al leuk.
Ik kon zelf een eigen turbo-knop maken op je Commodore 64.
Zo'n switchje.
Ik weet niet wat er dan gebeurde, maar dan ging die sneller.
Ja, precies.
Dus dat soort dingen was wel, ja, dat was wel wel.
Ja, heel vet.
Je weet natuurlijk dan ook echt dat je het laatste eruit geperst hebt.
Dat je gewoon dat deed.
Ja, maar dat is volgens mij wel een heel aparte hobby.
Dat moet je wel leuk vinden.
Ik denk, nu ik verwend ben met onbeperkt geheugen en snelheid,
dan om daar nog eens, je moet het wel leuk vinden.
Ik denk niet dat ik daar genoeg plezier aan ga beleven.
Nee, maar goed, dat is ook een soort van hobby, zeg maar.
Ik vind het wel fascinerend om te lezen van die Prince of Persia,
die dat boek van die maken met zijn logs en wat ze allemaal moeten doen.
En als je die trucken terugleest, wat ze moet uithalen,
om inderdaad het uiterste uit die beperkte...
En dan voor wat toen een soort van echt heel vooruitstrevende graphics waren.
Ja, ja, ja.
Het is fantastisch dat je een poppetje beweegt, zo vloeiend, met zoveel frames animatie.
Ook de kleurkeuzes en zo, want dat is ook voor bij Mario,
hoe dat ook zat, van waarom die kleuren nou zo gekozen zijn.
Dat had ook al met die hardware te maken.
Dus het is echt wel... Ja, ik heb dat boek nog niet gelezen,
maar ik vind het wel heel gaaf om dat soort geschiedenis dan te lezen
en van waar hebben ze allemaal mee te maken gehad?
En waarom is dat, ook wat jij net zegt van die wolkjes en de boompjes,
dat dat dan hergebruikt is?
Want je hebt toch beperkingen in je geheugen
en hoeveel sprites kun je op je scherm tonen en de collision, zeg maar.
Dus daar had je ook allemaal nog wel dingetjes mee.
Ik denk wel dat het ook wel voldoening geeft
om het gewoon helemaal te begrijpen, het hele systeem.
Je weet gewoon hoe die audiochip werkt, je weet hoe die graphicschip werkt.
Je snapt gewoon het hele systeem en nu moet je gewoon loslaten.
Je moet gewoon beseffen, oké, ik snap die engine niet, ik programmeer het tegenaan
en ik kan een groot deel snappen, maar ik weet niet wat die computer op dit moment
allemaal precies aan het doen is.
Want er zijn zoveel lagen en dat geldt natuurlijk voor alles,
dat geldt natuurlijk ook voor webdevelopment.
Je moet gewoon op een gegeven moment loslaten en zeggen,
ik begrijp het bovenste laagje van deze machine en de rest is, ja.
En dat is toch een speciaal gevoel, denk ik, als je wel alles begrijpt.
Ja, ja, nou ja, goed, op een gegeven moment kan het ook gewoon niet meer, weet je.
Ja, nou goed, er zullen zeker mensen zijn die dat allemaal begrijpen
of blijven begrijpen, zo moet ik het zeggen.
Maar ja, hoe productief blijf je dan?
Want in mijn ogen kun je niet alles doen.
Dat is gewoon niet mogelijk.
Het is wel leuk om dat te kunnen zeggen,
maar of dat nou weer in de praktijk heel nuttig is, weet ik niet.
Ja, oké, we hebben ook een sectie die gaat over tips.
En dat kan van alles zijn.
Ik heb dit keer één tip, die is ook relevant voor het onderwerp
wat we vandaag allemaal besproken hebben.
En dat is iemand die ken ik, die ga ik nog een keer uitnodigen,
maar dat is ook een .NET developer.
Dat is Frans Bouma.
Die doet ook aan in-game photography.
Dus ja, met 3D-speldjes, ja.
En dan, nou goed, dan zou je zeggen van ja, je gebruikt gewoon de tools
bijvoorbeeld op een PlayStation.
Ja, dat had ik nog niet eens tot vorig jaar niet eens door.
Dat eigenlijk heel veel spelletjes gewoon een modus hebben
waarmee je, ja, foto's kunt maken.
Dus de camera kunt je zo zetten en dat je dan even iets meer tijd neemt
om het beeld te renderen.
Maar hij doet dat ook op PC.
Nou, weet ik veel, Lara Croft.
Heel mooie foto's.
Maar ook Cyberpunk heeft hij dan weer hele gaaf foto's gemaakt.
Maar wat hij ook echt doet is ook zijn eigen shaders schrijven.
Hij zit ook soms wel een beetje te, ja,
in het tevloek is een beetje een groot woord,
maar wel een beetje te erger aan dat er best wel bugs in zitten
in bepaalde code, omdat ze niet overal rekening mee hebben gehouden.
Waardoor zijn stuk assembly, wat hij dan zelf aanpast,
ja, niet helemaal wil werken.
Dus dat doet hij heel gaaf.
Dat is een link, zeg maar, naar die site.
Die zal ik in de show notes zetten.
Ja, ik ga hem een keer uitnodigen.
Maar hij is ook, dit soort dingen met gaming,
doet hij ook heel veel.
Met database's en t-shout.
Dus het is gewoon een goede vent.
Ja.
Dus dat is mijn tip.
Hebben jullie tips?
Het mag van alles zijn.
Een boek, een film, alles.
In het kader van games heb ik een tip.
Dat is een link die ik van de week tegenkwam.
Over hoe je maps kan genereren.
Katen, plattegronden, kunstmatige maps voor in je spellen.
En dit is een website van iemand die de bestaande maps
en die vaak gegeneerd worden aan de hand van fractals.
En dat soort dingen vond hij toch wat te kunstmatig aanvoelend.
Dus die is daarmee gaan spelen en heeft van alles en nog wat gedaan
om het een beetje een Tolkien gevoel te geven.
Oh, vet.
Best grappig hoe je dat doet en wat er dan uitkomt.
Het staat in de show notes.
Tips.
Als je nou naar aanleiding van deze podcast denk ik ook wel een keer een spelletje bouwen
of je wil daar een keertje mee aanrommelen,
dan kan ik de tutorials aanraden van Cat-like coding over Unity.
Die vind ik erg goed geschreven.
En een andere tip die ik heb als je je nou interesseert voor graphics
en dat soort dingen is de nieuwsbrief van Jendrik.
Ik zal jullie straks een link sturen.
Die verzamelt elke week de beste artikelen en twitter threads
die ik over graphics programming ga.
Er zitten dan heel vaak dingen bij dat ze bijvoorbeeld een spel nemen
en dan gaan ze gewoon een frame rendering helemaal uit elkaar plukken.
Gewoon hoe wordt de achtergrond gerenderd, hoe worden de wolken gerenderd,
hoe wordt de berg en dan halen ze zo'n frame helemaal in lagen uit elkaar
en dan laten ze zien hoe al die shaders zitten.
Die zitten er vaak bij in die nieuwsbrief, maar ook andere dingen.
Ook soort kleine tutorials of ook echt wetenschappelijke doorbraak
op het gebied van rendering enzo.
En die nieuwsbrief is best wel cool. Dus dat is mijn andere tip.
Oh vet. Nice. Kom maar door.
Cool, cool.
Mooi. Dat was hem.
Mocht je CodeKlets leuk vinden,
vertel het vooral door aan je vrienden en collega's.
Daardoor krijgen wij nog meer reach en nog meer enthousiaste developers
die mogelijk ook op onze Slack komen.
Je kunt onze Slack vinden via de codeklets.nl site.
En je kunt ons natuurlijk ook vinden via Twitter.
AAP staat je codeklets.
Daar posten we altijd als een nieuwe aflevering online staan.
En andere zaken. Dus soms retweeten we wat tweets van van eerdere gasten.
En sowieso volgen we. Dat is altijd handig.
De enige die we volgen vanuit CodeKlets zijn de gasten die eerder zijn geweest.
Dus mocht jij.
Dat is een hele goede.
Thomas, we hebben nog niet gevraagd hoe mensen je kunnen vinden op het internet.
Ja, dat is.
Ik heb de Twitter.
Dat is NoYoGames.
At n-o-i-o underscore games.
Ja, cool.
Die gaan we ook meenemen.
En we gaan ook de links natuurlijk, zeg maar, voor je games, zeg maar, opnemen.
Dus dat sowieso.
Dank je voor de uitnodiging ook.
Ik vond het interessant.
Was leuk.
Graag gedaan.
We willen jou ook bedanken.
Dat is echt heel erg interessant.
Ja, zeker.
Ja, dat was hem.
Oké.
Dank jullie.
Ja.
Bye bye.
Bye.
Hoi hoi.