PC och spelkonsoler – en historik

Spelkonsolernas tidiga generationer påminde mycket om PC-marknadens unga år. Hårdvaran var oftast specialdesignad för aktuell maskin och generaliserade operativsystem användes inte. Istället användes specialskriven mjukvara som gav utvecklarna specifik tillgång till hårdvarans funktioner för grafik, ljud, minneshantering, med mera.

Från generationerna med Sega Genesis och Super Nintendo till Sega Saturn, Nintendo 64 och Sony Playstation användes hårdvara och mjukvara skräddarsydda för varandra. Utvecklingen för dessa specialiserade paketeringar var ofta så pass komplicerad att spel antingen blev exklusiva eller medförde kostsamma portningar, med varierande kvalitet.

Sega Saturns bruk av dubbla RISC-processorer och hela fem olika grafikkretsar var notoriskt svår för utvecklare att bemästra. Processorn Emotion Engine och grafikkretsen Graphics Synthesizer i Playstation 2 tog åratal att bemästra. Båda spelkonsoler använde specialskriven mjukvara, men den sjätte generationens konsoler som de ingick i introducerade en ny aktör — Microsoft Xbox — som kom att ändra på denna dynamik.

Panzer_Dragoon_Saturn.jpg

Panzer Dragoon var ett tidigt Sega Saturn-spel som lyckades utnyttja konsolens notoriskt svårprogrammerade dubbla processorer.

ps2_emotion_engine.jpg

Emotion Engine-processorn i Playstation 2 var ytterligare en svårprogrammerad arkitektur som tog flera år för utvecklare att bemästra.

Microsofts ursprungliga Xbox var något så ovanligt som en spelkonsol som inte använde RISC-baserade processorer. Istället användes en konsumentversion av Intels Pentium 3 tillsammans med en grafikkrets från Nvidia som baserades på NV2A, ett derivat av Geforce 3-generationen.

Operativsystemet som användes baserades i grunden på dåvarande Windows 2000 med en anpassad version av DirectX-ramverket som finjusterats för att vara mer hårdvarunära än dess motsvarighet på PC/Windows-plattformen. Detta markerade första gången i de båda lägrens historia som både hårdvara och mjukvara var mer eller mindre densamma.

På PC-sidan hade OpenGL sedan mitten av 90-talet utvecklats till en gemensam standard för grafikutveckling, någonting som gjorde det möjligt för PC-spel att sakta men säkert bli mer avancerade än deras konsolmotsvarigheter. Under tiden arbetade Microsoft på att få fram en enhetlig grund för hantering av grafik och media i Windows-plattformen.

Det första försöket kallades WinG, ett ramverk som var tänkt att göra det lättare för utvecklare att porta DOS-spel till Windows 95. Detta var dock mest en förbättring av hur rastergrafik hanterades på Windows-plattformen och WinG övergavs snabbt till förmån för DirectX, som kombinerade hantering av 2D-grafik med 3D-acceleration, ljudhantering, med mera.

WinG.jpg

WinG var en föregångare till DirectX där enklare portning av DOS-spel till Windows låg i fokus.

Xbox_meny.jpg

Gränssnittet i den första Xbox-konsolen hade föga gemensamt med den Windows 2000-kod som låg till grund för systemet.

Med den sjunde generationens spelkonsoler användes återigen operativsystem och utvecklarverktyg från PC-världen, även om hårdvaran tog ett steg tillbaka till mer specialiserade lösningar. Microsoft Xbox 360 använde en IBM PowerPC-baserad processor med tre kärnor och en specialbyggd grafikkrets från dåvarande ATI.

Operativsystemet som användes var en vidareutveckling av Windows 2000-basen från föregångaren och en anpassad version av DirectX 9.0c. Tack vare för sin tid riklig mängd primärminne och liknande utvecklarplattform innebar Xbox 360 en likartad utvecklarprocess jämfört med PC-sidan.

Playstation 3 använde en specialanpassad variant av det Unix-baserade operativsystemet FreeBSD som grund för systemmjukvaran. På utvecklarsidan användes både ett eget ramverk kallat GCM baserat på Nvidias shader-språk Cg samt en anpassad version av OpenGL ES för hantering av grafik och media.

Trots att det var möjligt att använda OpenGL för spelutveckling på Playstation 3 innebar den exotiska arkitekturen bakom Cell-processorn att utvecklare var tvungna att utveckla verktyg och spelmotorer specifikt för denna. En besvärlig process med att porta spel utvecklade för andra plattformar ledde till slut till att Playstation 3 istället blev grundplattformen som portningar för andra plattformar baserades på.

Undantaget i denna konsolgeneration var Nintendo Wii som använde ett eget slutet operativsystem tillsammans med en PowerPC-baserad processor och grafikteknik från dåvarande ATI. Wii tillämpade inte traditionella systemuppdateringar, istället fanns nya versioner av systemet på spelens skivor och installerades vid sidan av den ursprungliga systemversionen.

ps3_Cell_processor.jpg

Med Cell-processorn i Playstation 3 fortsatte Sony trenden med exotisk och svårprogrammerad hårdvara som utvecklare kämpade med i flera år.

crysis1_dx10.jpg

Efter sjunde generationens konsoler sprang PC-plattformens utveckling iväg, med lanseringar av såväl DirectX 10 och 11 under det följande årtiondet.

Under årtiondet som följde efter att Microsoft Xbox 360, Sony Playstation 3 och Nintendo Wii lanserades utvecklades PC-sidan i rask takt. DirectX 10 och 11 löste av varandra, likaså flerkärniga processorer och nya generationer grafikkort. Att utveckla för spelkonsol och PC skiljde sig därmed återigen åt markant.

Det skulle dröja till 2013 och lanseringen av åttonde generationens spelkonsoler med Playstation 4 i spetsen som de båda lägren närmade sig varandra igen. Både Playstation 4 och Xbox One enades runt x86-baserade processorer från AMD där företagets GCN-arkitektur står för grafikdelen. Efter sin mindre lyckade satsning Wii U gick Nintendo över till ARM och Maxwell-grafik från Nvidia med företagets senaste spelkonsol Switch.

Microsoft baserade mjukvaran i Xbox One på samma Windows-bas och lågnivåramverket DirectX som används på PC-sidan, med början i Windows 8/DirectX 11 för att senare uppdatera detta till Windows 10/DirectX 12. Både Sony och Nintendo baserade sina operativsystem på en FreeBSD-grund med lågnivåramverk i form av GNM respektive Vulkan.

Det förefaller alltså som om hårdvaran och mjukvaruverktygen blivit enhetliga mellan spelkonsol och PC, och att det därför borde vara lättare att utveckla för flera plattformar i dagsläget. Men stämmer detta överens med verkligheten eller är det en villfarelse?