Eigenlijk hebben de makers van een 'grote' MMO wel degelijk een excuus om op het gebied van graphics "iets af te wijken". Ik denk dat je best wel kunt stellen dat zowaar elke MMO vooral op het gebied van CPU vaak een aardig verbruik weet te behalen. Helaas zijn ze meestal ook niet heel erg multi-threaded, wat dit probleem alleen maar versterkt. Wel zit hierbij het grote probleem van de vele entiteiten waar men doorheen moet loopen. Er is nogal een verschil tussen een maximum van 64 spelers en wat tanks/mijnen, dus laten we zeggen dat een volle BF3 server 100 elementen moet doorlopen als een thread hier doorheen moet (denk aan renderen, stats updates, radars etc). In een beetje degelijke MMO is het aantal elementen waar doorheen moet worden gegaan eerder richting de 1000. Al speel ik het zelf niet meer, blijft WoW hier toch wel het perfecte voorbeeld van. WoW is nooit echt een resource hog geweest als je gewoon ergens zit te levelen in een willekeurig gebied. Kom je echter in een grote stad, zie je, al helemaal "vroeger" (2005-2008), al snel aardige FPS drops. Opeens wordt er niet meer naar 30 elementen gekeken om zo gegevens op te halen , of aan te passen. Nee, je zit dan al heel snel op 10, en in een extreem geval wel 100, maal die 30 elementen. Misschien dat er nog mensen zijn, die net als ik, in het begin van WoW bij het raiden al blij waren als ze 5 FPS haalden, gezien het eerder 0 leek te zijn gedurende de helft van de tijd.
Zelf heb ik niet meer zoveel spellen op mijn pc, zeker niet in het MMORPG genre, maar toevallig heb ik dan wel nog Guild Wars 2. Als ik dit spel opstart, op een normale resolutie (1920x1200), en ik bevind mij in een willekeurig gebied, dan zie ik een CPU gebruik van tegen de 40% op een i7 2600K (op 4.6GHz). Dat is dus gelijk aan meer dan 3 volle CPU cores op 100% belast (~3.2). Wel heb ik dan rond de 150 FPS, dus het CPU gebruik kan ik vast wel verlagen. Als ik nu mijn FPS limiteer op 60 FPS, is het CPU gebruik tussen de 10 en 18%. Dat is al meteen een stuk normaler, immers is dat nog niet eens genoeg om 2 cores te belasten (~1.4). Ga ik echter naar een stad, loopt dit CPU gebruik (met de FPS limiet nog altijd aan) al snel op naar ~25%. Als ik de limiet dan uitzet kom ik niet eens meer in de buurt van die 150 FPS (amper 100, en vaak dropt ie terug naar ~85). Nu heb ik nog een redelijk aardige PC. Een gemiddelde desktop PC zou dus op CPU gebied hier behoorlijk veel last van kunnen hebben en waarschijnlijk de 60 FPS niet eens meer halen. Zoals ik al zei in het begin, vooral op CPU gebied hebben MMOs het meestal erg zwaar. Of je het merkt als je in C++ door een hele set van die arrays loopt, en dat een aantal keer doet? Ja. Wil je het heel dirty doen, inject maar eens een DLL in een gemiddelde MMO (of zelfs BF3 kan ook) en loop maar even door de entiteiten en reken bv eens uit wat de afstand is van ieder element naar jou toe. Daar gaat alweer 30% van je FPS. Volgens de steam surveys heeft nog altijd het merendeel (49.11%) van de gebruikers bij Steam een dual core. Echt vlotten wil het dus nog niet, en dus moeten game studios nog altijd rekening houden met computers die maar 2 cores hebben. Games die gebruik maken van 8, 12 of zelfs 16 cores? Je helpt daarmee niet het merendeel van de gamers.
Op basis van die gegevens kunnen we weer terug gaan naar het onderwerp ‘graphics’. Mensen die een beetje bekend zijn met de DirectX API weten vast wel iets van de standaard volgorde van 't tekenen (begin, *, end, present etc) die de meeste spellen volgen (linkje msdn:
http://msdn.microsoft.com...op/ee779641(v=vs.85).aspx). In principe moet er dus voor iedere frame door heel wat arrays gelopen worden. Bij een MMO zijn deze arrays nu eenmaal een stuk groter en zijn het er meestal nog aardig wat meer ook. Niet alleen door het aantal mensen, maar ook het aantal mogelijkheden. De meeste FPS spellen zijn gebaseerd op classes, waar het aantal mogelijkheden op het gebied van looks (en het hele arsenaal aan wapens eigenlijk) relatief beperkt is. Bij een beetje degelijke MMO zit je al snel op duizenden modellen en ieder karakter bestaat al snel uit 10 losse onderdelen, en dan heb je nog niet eens gekeken naar de vele mogelijkheden wat betreft vormen van het lichaam, hoofd, haren en de vele andere opties die MMOs tegenwoordig hebben, maar puur hun rokje, jurkje, hoedje en dergelijke. En wat zijn de directe gevolgen hiervan? Juist, nog grotere loops, nog grotere switch cases en nog meer informatie in de arrays, welke iedere frame moeten worden doorlopen. De grote hoeveelheden aan mogelijkheden hebben dan ook meteen weer effects op de graphics. Als je 1000 maal zoveel modellen moet maken, dan kost het dus ook aardig wat meer tijd om deze allemaal van hoge kwaliteit te maken. Ga je dan ook nog eens naar geheugen en diskruimte kijken, wordt dit alleen maar dramatischer. Hoe groot is een WoW installatie tegenwoordig al wel niet? 30GB zullen ze vast wel al voorbij zijn. Daar past BF3 2 maal in lijkt me... Het grote probleem bij een MMO is dan ook niet de GPU, maar alle andere onderdelen van een PC. Betere graphics zullen zorgen voor nog meer laadtijden, nog meer buffer drops, nog meer hardeschijf en geheugen verbruik en uiteraard nog minder FPS. WoW loopt op (inmiddels) oude GPUs bijna net zo goed als een recente GPU. De CPU daarintegen kan eigenlijk gewoon niet snel genoeg zijn.
Als je dus een MMORPG wilt zien met Battlefield 3 graphics, zul je toch echt een effect krijgen dat Crysis (1) nog te boven gaat. Het zal ook dan jaren duren voordat mensen het spel vol-uit met 60 FPS constant kunnen spelen, nog wel wat langer (en duurder) dan Crysis 1 destijds. Dat WoW toch wel echt niet meer voor de graphics gespeeld kan worden (mocht iemand dat ooit al hebben gedaan), lijkt me wel duidelijk, maar als je high-end graphics wilt, zullen MMORPGs ook nooit het juiste genre zijn. Het aantal punten waar een game-developer op moet letten bij een MMORPG, om te voorkomen dat iedereen met 2 FPS rondloopt, is nu eenmaal groter dan bij een FPS. Daarbij, BF3 is toch al niet de holy-grail, gezien zowaar alles client-side is... Spel ziet er leuk uit, maar cheaters lachen zich kapot.
edit:
Ow, en met ThomasG etc.
edit2:
Leuke trailer overigens.
[Reactie gewijzigd door Paprika op 25 juli 2024 00:02]