Ehm grapjas, ja daar heb ik een redelijk goed idee van. Ik heb al enkele (hobby) games gemaakt waaronder een 3D tetris en een 2D Mario rip-off en volg de markt al vijftien jaar
Ik vind het erg knap dat jij daar een redelijk goed idee van hebt terwijl je alleen maar in de hobby sfeer bezig bent geweest en er dus geen flauw benul van hebt hoe het er op de consoles aan toe gaat. Ik ben zelf professioneel gamedeveloper en ontwikkel een 3d engine voor de PC, Xbox360 en de PS3, die gebruikt is in Tomb Raider: Legend en die gebruikt gaat worden in TR8 en andere toekomstige games van Crystal Dynamics.
Nee, ik heb geen (voor jou beschikbare) bronnen voor mijn info, het staat namelijk nergens op een publiekelijke plek gedocumenteerd. Niet zo gek, aangezien je een dikke NDA mag tekenen voordat je platform documentatie überhaupt onder ogen krijgt. Dus daarvoor zul je simpelweg een dagje met me mee moeten draaien.
I seriously doubt it dat bijv. E.A games de hardware direct aanspreken. En het zou me zeer verbazen als bijv. Zelda dat wel doet... voorbeelden?
Denk je nou echt dat ik mijn tijd ga verdoen door voorbeelden op te zoeken zodat ik jouw twijfels, die nergens op zijn gebaseerd anders dan pure persoonlijke aannames, weg kan nemen? Ga anders zelf op zoek naar voorbeelden. Als ik ze zou kunnen vinden (als in, publiekelijk gepubliceerd bewijs), kan jij dat natuurlijk ook

. Ik kan je slechts vertellen dat we voor PS2 en Xbox (1) al jaren gebruik maakten van directe communicatie met hardware (dus zelf de GPU command buffers vullen met commando's en die naar de GPU pushen). De 360 en PS3 zijn natuurlijk nog betrekkelijk nieuw dus daar beginnen we met de API, en beetje bij beetje wordt de API steeds meer gebypassed. Je begint bijvoorbeeld met in plaats van een IDirect3D9Texture te maken via de device en te locken zodat je je data erheen kunt kopiëren, gewoon een D3DTexture op de stack aan te maken en de datamembers (die eigenlijk niets meer zijn dan de representatie van een texture op de GPU command buffer) zo in te stellen dat hij direct naar de texturedata in het geheugen wijst, zodat je onnodig kopiëren kunt voorkomen. En aan het eind van het traject zit je gewoon helemaal zelf de GPU buffer te vullen met commando's en aan de hardware te voeden, zodat je totale controle hebt over het systeem.
Ik ben het ook zeker niet met je eens dat D3D en OpenGL niet eens zoveel met elkaar verschillen. Ik geef toe dat mijn ervaring een paar jaar oud is, maar destijds waren de verschillen zeer behoorlijk, je moest je architectuur toch wel wat anders opzetten afhankelijk van welke API je gebruikte
Dan vraag ik me af hoe lang dat geleden is. Pre DX8? Ja, OpenGL heeft een immediate mode middels glVertex() & co, maar als je een serieuze engine schrijft laat je dat achterwege en gebruik je dingen als vertex buffer objects. Ik zie niet in hoe de architectuur verder echt daadwerkelijk anders is.
En die platformspecifieke optimalisaties waar je het over hebt.. was dat niet juist de strekking van mijn argument?
Ik reageerde op
mstreurman, niet op jou.
En dat doen ze o.a. door de API op zowel PC als XBox te ondersteunen
Lol, je moest eens weten hoeveel onze Xbox360 engine verschilt van onze PC engine. Ik had toevallig laatst eens gekeken naar het aantal regels code voor in een andere discussie hier op t.net. Onze PC engine is 25.000 regels code. De 360 engine is "slechts" 15.000 regels code. Dat klinkt niet echt als bijna 100% crossplatform code, of wel?