Jij praat over een andere vorm van complexiteit, namelijk het ontwikkelen zelf. Ik heb het over de complexiteit van de programmacode. Games zijn vandaag de dag weldegelijk complexer. Laten we beginnen bij de engine, die je zelf ook aanhaalt, maar dan ga je er voor het gemak maar vanuit dat iedereeen een standaard stuk middleware gebruikt dat af is. Dat is echter gewoon niet waar - er zijn zat developers die hun eigen engine ontwikkelen (dit is nota bene een artikel over Crysis), en daarnaast wordt die middleware vaak aangepast voor topgames (danwel door de developers zelf of door de leverancier van die middleware). En zelfs al krijg je middleware aangeleverd dat gewoon af is, dan nog moet je ervoor zorgen dat je die middleware goed inzet voor een game. Dat is niet simpelweg "hier is mijn content, en gaan".
Maar de game logic zelf is ook vele malen complexer geworden. Games zijn minder lineair en minder lokaal. Dit betekent dat je veel minder aannames kunt doen over de verschillende states waarin een game zich kan bevinden. In een oude Mario game was het relatief gemakkelijk om te voorkomen dat de speler niet buiten het leven kon treden - de wereld bestond uit blokjes, de collision detection was pixel-perfect en hoe hoog je sprong stond in steen geschreven.
Tegenwoordig, met polygonale models, floating point inaccuracies en uitgebreide physics engines, is het veel lastiger om dit te voorkomen. En dan kun je nog zo hard in-game testen, zodra je game de wijde wereld intrekt zullen er altijd gamers zijn die net die ene uistekende polygoon weten te gebruiken tijdens de ontploffing van een granaat om over een muur heen te springen waar je eigenlijk alleen langs kon als je de gele sleutel had.
Een leuk voorbeeld is GTA3, waarin er een vliegtuig zat met afgezaagde vleugels, de "Dodo", waar je eigenlijk helemaal niet mee hoorde kunnen te vliegen (normaliter kun je slechts heel even los komen van de grond). Echter, met goed oefenen leerde je door op een bepaalde manier te sturen toch de lucht in te komen, waarna bleek dat alle gebouwen eigenlijk helemaal geen daken hadden, laat staan collision mesh, omdat je daar toch nooit kon komen.
Je kunt het probleem overigens ook gewoon wetenschappelijk benaderen: games bevatten tegenwoordig honderdduizenden tot miljoenen regels programmacode. Als je uitgaat van een bepaalde maatstaf van N bugs per 1000 regels code, betekent dat dus ook dat er simpelweg veel meer bugs in kunnen zitten. Niet complexer? Kom nou toch.
Ik ben het persoonlijk met Jack eens
Jack heeft het over externe deadlines. Als je het met hem eens bent, waarom reageer je niet op mijn stelling dat externe deadlines er vroeger ook waren, terwijl dit soort issues er vroeger een stuk minder waren?
Maar ga nou niet net doen alsof je de wijsheid in pacht hebt en precies weet hoe de wereld werkt, want alle meningen die hier op deze pagina staan komen uit iemand's eigen kijkhoek.
De plek van mijn kijkhoek is af te lezen uit m'n gallery, die van jullie jammer genoeg niet. Hoeveel games heb jij op je CV staan?
Offtopic:
Een applicatie hoeft daar niet te weten of het usb of een geluidskaart is.
Hoeft in Windows ook niet, maar drivers kunnen nog weleens roet in het eten gooien. Wij hebben zelf ooit eens last gehad van memory trashing omdat een snelle implementatie van memcpy() alle SSE registers gebruikten, terwijl er een Realtek audio driver was die een van die registers niet goed restorede nadat de geluidskaart een interrupt had afgegeven. Of een bug op de Xbox 1 die alleen optrad met audio in een bepaalde Dolby mode, veroorzaakt doordat het iedere frame opnieuw uploaden van een nieuw palette naar de videokaart de bus teveel blokkeerde waardoor de boel in sommige situaties begon te stotteren. Wat dat betreft is ook de hardware een stuk complexer geworden.
[Reactie gewijzigd door .oisyn op 22 juli 2024 14:01]