Ontwikkelen voor PS3 niet moeilijk

Er zijn in de loop der tijd verscheidene berichten verschenen dat het maken van games voor de PS3 erg moeilijk zou worden door de nieuwe hardware en beperkte ondersteuning van Sony op dat gebied. Tevens zouden er zelfs al developers gestopt zijn met het ontwikkelen van games voor de PS3. De ervaringen met de PS2 waren dat het inderdaad voor developers lastig was om het apparaat onder de knie te krijgen dus deze berichten waren dan ook niet zo vreemd. De laatste tijd verschijnen er echter meerdere berichten die het tegendeel beweren. Een paar dagen terug heeft bijvoorbeeld de lead tester van Guerrilla aangegeven, dat de PS3 een stuk makkelijker is dan de PS2. Aangezien Guerrilla sinds kort onderdeel uitmaakt van Sony is dit voor velen een getint bericht.

Een andere developer, Volatile, heeft zich nu ook uitgelaten over de ervaringen die zij tot nu toe met de PS3 gehad hebben. Daarbij zijn ook een hoop technische details aan bod gekomen. De PS3 gebruikt OpenGL als graphics API, wat betekent dat eigenlijk elke developer die ervaring heeft met het maken van games voor de PC zich vertrouwd zal voelen met de PS3 ontwikkelomgeving. Aangezien de PS3 OpenGL ES gebruikt, een gestripte variant van OpenGL, is het zelfs nog simpeler. Lyndon Homewood, de PS3 programmeur bij Volatile had hierover het volgende te melden:

"OpenGL ES is ontworpen voor apparaten zoals set-top boxes en mobiele telefoons. Hierbij wil je de fundamentele graphics maar niet de extra's van OpenGL die niet nodig zijn voor games. Aangezien de PS3 hier gebruik van maakt is het veel simpeler dan de PS2 om iets draaiend te krijgen. Er zijn honderden boeken beschikbaar over OpenGL, dus er is voldoende informatie voorhanden."

Ook is er gesproken over Cg, een versie van de programmeertaal C die het mogelijk maakt om code voor geavanceerde GPU's schrijven, met name op het vlak van 3D shaders. (voor de techneuten is hier en hier meer info over Cg te vinden. Voor de gamers die het fijne van Cg niet precies hoeven te weten heeft Homewoord het in simpelere taal wel uitgelegd:

"Cg geeft developers een standaard gedocumenteerde API om voor GPU's te programmeren. De twee belangrijkste delen van Cg zijn de vertex shader en de pixel shader. Met de vertex shader is het mogelijk om 3D modellen te bewerken op vertex niveau. Oftewel, voor elke driehoek kun je een bewerking doen op elke hoek en de rest van de driehoek wordt geïnterpoleerd. Dus als een object groter gemaakt moet worden, hoeven alleen de hoeken uit elkaar geduwd te worden.

En dan zijn er nog de pixel shaders. Op het moment dat elke driehoek op het schem gerenderd wordt vraagt de GPU of er een bepaalde actie op elke gerenderde pixel uitgevoerd moet worden. Op dat moment kan er dus een soort rekenkundig algoritme op elke pixel uitgevoerd worden, bijvoorbeeld een licht-effect zoals high dynamic range lighting. Zoiets was niet mogelijk op de PS2.

Deze zaken zijn allemaal al mogelijk met de huidige techniek en zijn geen grote stap voorwaarts in vergelijking met moderne high-end PC's. Maar de PS3 heeft natuurlijk de beschikking over 8 chips om de berekeningen over te verdelen en een moderne PC maar eentje, of twee in een dual-CPU of dual-core machine.

Uiteindelijk is het gewoon een multi-processor architectuur. Als je een programma met acht threads op een PC CPU aan de gang kunt krijgen, lukt dat ook op een PS3, het verschilt niet zoveel. Er zit echter wel een kleine valkuil in. De centrale processor van de PS3 kan het totale geheugen van de console aanspreken, dit in tegenstelling tot de zeven SPE chips die alleen hun eigen 256kB tot hun beschikking hebben. Dus als er veel data berekend moet worden, zal dat netjes stukje bij beetje bewerkt moeten worden. Het geheugen kan dan niet zo makkelijk benaderd worden als op de Xbox 360.

De graphics mogelijkheden van de PS3 zullen naar verwachting iets boven de huidige topkaarten op de PC liggen. Er is echter veel meer ruwe rekenkracht aanwezig, dus er zal veel meer physics en gegereneerde geometrie in zitten. Waterrimpels bijvoorbeeld zijn voor het grootste deel algoritmes, waarbij een plat vlak van driehoeken door een algoritme eruit gaat zien als een golvend oppervlakte. Deze berekeningen kunnen bijvoorbeeld door een specifieke SPE uitgevoerd worden."

Homewood geeft echter wel aan dat het besturen van de zeven SPE chips een belangrijk punt is. Een aanpak is om elke chip zijn specifieke rol te laten vervullen. Eentje voor AI, eentje voor physics etc. Dit klinkt goed, maar in de praktijk zullen bepaalde momenten in een game voor pieken in bepaalde onderdelen zorgen. Een groot vuurgevecht bijvoorbeeld vraagt om erg veel animaties, collision detection en physics. Eén chip per element zal niet genoeg zijn om met deze pieken om te gaan. Homewood zei hierover:

"Een manier waar we zelf over hebben zitten denken is via een wachtrij. De zaken die we gedaan willen hebben zetten we in de wachtrij op de centrale processor en dan laten we de SPE's één voor één de taken in de wachtrij afhandelen. Zodoende blijven alle SPE's altijd in gebruik. Als SPE's specifieke taken hebben betekent het dat ze vaak idle zijn en dat is zonde. Tenzij het mogelijk is om alle taken perfect op elkaar aan te laten sluiten, oftewel dat de animatie op de eerste chip precies even lang duurt als de physics op de tweede chip, alsmede de AI op de de derde. Dit zal praktisch gezien erg moeilijk zijn."

Tenslotte, Volatile is van mening dat de PS3 veel beter geschikt zal zijn voor HD content door het Blu-Ray medium. Een videofragment van 20 minuten op ruwe HD-TV kwaliteit neemt zo'n 4,7GB in gebruik. Een Xbox 360 game kan dan al snel ruimte tekort komen. In de komende jaren zal dat steeds meer een rol gaan spelen aangezien games en films steeds dichter bij elkaar komen."

Kortom, de PS3 is een stuk makkelijker te programmeren dan de PS2, mits er ervaring is met het programmeren voor high-end PC's. Ook lijkt Sony veel meer support te verlenen aan ontwikkelstudio's, wat ook al zo is voor de PSP. Het wachten is en blijft echter op de eerste games. In hoeverre de mening van bovengenoemde programmeur gedeeld wordt door zijn collega's van andere developers is vooralsnog ook onbekend.