Game-engine

Een game-engine ( Engelse game-engine [ ˈGeɪmˌɛndʒɪn ]) is een speciaal raamwerk voor computerspellen dat het spelverloop bepaalt en verantwoordelijk is voor de visuele weergave van het spelverloop. Dergelijke platformen worden in de regel ook als ontwikkelomgeving gebruikt en brengen ook de nodige tools mee.
De meest gebruikte 3D-engines zijn de CryEngine , Frostbite , de Unity Engine en de Unreal Engine . [1]
Basisfunctionaliteiten
Afhankelijk van de motor bestaat deze uit de volgende onderdelen:
Grafische engine
De grafische engine is verantwoordelijk voor de grafische weergave op het scherm. Een grafische engine bevat meestal de volgende tools:
- Functies voor het laden, beheren en weergeven van texturen of sprites
- Tekstuitvoer
- Effecten zoals vuur, explosies, water, sneeuw, mist
In het geval van een 3D-engine worden vaak de volgende tools toegevoegd:
- Functies voor het laden, beheren, weergeven en animeren van 3D-modellen
- Shadersysteem voor een zo realistisch mogelijke weergave van het effect van licht en schaduw op verschillende materialen (bijv. metaal, hout of huid)
Fysisch systeem
De huidige games worden uitgerust met steeds realistischere physics-systemen ( physics engine ). Naast een groter visueel realisme kan het physics-systeem ook invloed hebben op het spel als bijvoorbeeld een vallend voorwerp (bijvoorbeeld een weggeworpen handgranaat ) van een heuvel rolt in plaats van erop te rusten. Men kan onderscheid maken tussen verschillende soorten natuurkunde:
- Stijve lichaamsfysica , d.w.z. de simulatie van Newtoniaanse mechanica voor vaste lichamen, is wijdverbreid.
- Een aspect van de fysica van het rigide lichaam is de ragdoll-fysica : virtuele karakters kunnen fysiek correct vallen.
- Sommige games simuleren ook het realistische gedrag van zachte lichamen (bijv. vlaggen, kleding) of vloeistoffen (bijv. water, rook)
In 2005 kregen physics- engines ook hardware-ondersteuning, zogenaamde physics accelerators , om de berekening van fysieke effecten uit te besteden aan een speciale physics-kaart of grafische kaart .
Geluidssysteem
Vrijwel alle huidige games of hun onderliggende engine ondersteunen 5.1 of 7.1 surround sound en technologieën zoals e. B. EAX , geschikte pc-hardware ( geluidskaart ) en dozen vereist. Dit versterkt de ruimtelijke indruk van de spelwereld door een gedifferentieerd ruimtelijk geluid te creëren waarmee bijvoorbeeld de positie van tegenstanders kan worden gelokaliseerd. Daarnaast kunnen verschillende ruimtes zoals badkamers, hallen, gangen, grotten of onderwatergeluidsdemping worden gesimuleerd. Andere fysieke effecten zoals het Doppler-effect kunnen ook op een hardware-versnelde manier worden geïmplementeerd.
Staatsopslag
Er zijn twee manieren om de huidige spelstatus op te slaan en opnieuw te laden:
- Serialisatie van de objectboom : alle objecten, hun toestanden en relaties worden opgeslagen.
- Alleen bepaalde gegevens worden opgeslagen. De voordelen zijn kleine bestanden en de gamestatussen kunnen ook worden opgeslagen op bijvoorbeeld de geheugenmodules van consoles. Het nadeel is een grotere programmeerinspanning, omdat de programmeurs precies moeten programmeren wat wordt opgeslagen. Door deze complexiteit vallen game-engines daarom vaak terug op eenvoudigere procedures, bijvoorbeeld dat de gamestatus alleen op bepaalde punten in het spel kan worden opgeslagen.
sturen
Onnauwkeurige controle leidt al snel tot frustratie. Terwijl de ontwikkelaars van eerdere pc-games nog de pijltjestoetsen op het toetsenbord gebruikten , zijn er tegenwoordig andere, meer geschikte oplossingen voor verschillende genres. In de divisie racegames is dit het stuur, mogelijk met ondersteuning voor forcefeedback . Bij het spelen van sportgames, zoals de FIFA- serie, gebruiken veel spelers gamepads .
Joysticks worden meestal gebruikt om vliegtuigen en ruimteschepen te besturen. Simulaties die zijn ontworpen voor een hoog niveau van realisme maken vaak het gebruik van meerdere controlesystemen mogelijk om b.v. B. naast een stuur ook een circuit van hoge kwaliteit kunnen gebruiken in een racesimulatie . In de vluchtsimulatiescène maken modulaire systemen de constructie en besturing van complete cockpitreplica 's mogelijk .
Strategie- en bouwspellen worden meestal met de muis bestuurd. Een combinatie van muis en toetsenbord heeft zich gevestigd in first- person shooters , third-person shooters en andere soortgelijke genres .
Netwerkcode
De netwerkcode bepaalt de vereisten voor het multiplayer- gedeelte van een spel, b.v. B. hoeveel spelers tegelijkertijd aan het spel kunnen deelnemen of dat een 56k-modem voldoende is of een breedbandinternetverbinding zoals xDSL of tv-kabel nodig is.
De ontwikkelaar kan kiezen tussen de twee netwerkprotocollen UDP en TCP . Het voordeel van TCP is de beveiliging dat gegevens veilig en in de juiste volgorde bij de klant aankomen. UDP is daarentegen sneller, maar pakketduplicatie, pakketverlies of vermenging kan optreden. Meestal worden beide protocollen tegelijkertijd gebruikt om vluchtige gegevens via UDP te verzenden en om gegevens te beveiligen, zoals inloggen via TCP.
Gegevensbeheer
Gegevensbeheer is vereist om scores, gebruikers- en niveaugegevens te laden en op te slaan, evenals geheugenbeheer. Game-engines hebben daarom de volgende functies:
- Bestanden laden uit datapakketten (bijv. versleutelde ZIP- bestanden)
- Geheugen management
Scripting
Scripttalen worden gebruikt om de spelsequenties te programmeren. In principe kunnen spelsequenties ook in de ontwikkeltaal worden geprogrammeerd, maar scripttalen bieden de volgende voordelen:
- Scripttalen zijn makkelijker te leren dan pure ontwikkeltalen voor gamedesigners die niet per se professionele programmeurs zijn.
- Scripttalen kunnen vaak iteratief worden gedaan tijdens de uitvoering van het programma, wat de ontwikkeltijd verkort; een hercompilatie van de motorcode is niet nodig.
- De game-engine wordt steeds universeler en kan ook door gebruikers worden uitgebreid
De uitvoering van een scripttaal is langzamer dan hardware-gerelateerde, gecompileerde programma's zoals C/C++. Hierdoor worden game-engines zelden in een scripttaal geschreven, maar bij voorkeur geïmplementeerd in C++. De game-engine biedt meestal zijn eigen scripttaal. Met name voor grotere gameproducties is daarom een two-tier architectuur tot stand gekomen: het eigenlijke spel wordt ontwikkeld in de scripttaal van de onderliggende game-engine.
Sommige game-engines gebruiken bestaande scripttalen, zoals Lua . Vanwege de speciale vereisten hebben veel game-engines hun eigen scripttaal, bijvoorbeeld UnrealScript in de Unreal Engine , C-Script of Lite-C in de 3D GameStudio , Clonk of Perch in de Shark 3D- engine.
Verschillen tussen engines voor consoles en pc's
Game-engines voor consoles
Moderne consoles verschillen technisch van pc's voornamelijk in de volgende aspecten:
- Aanzienlijk minder hoofdgeheugen
- Alle apparaten van één type zijn even krachtig.
- Speciale hardware, speciaal voor het berekenen van de 3D-graphics
- optische media CD / DVD / Blu-ray Disc als primair opslagmedium
Afhankelijk van de console kan de hardware op dezelfde manier worden geprogrammeerd als pc-hardware; Dit gaat dan echter ten koste van de kwaliteit, aangezien de consolehardware dan niet uitgeput raakt. Aangezien de technische kerngegevens van consoles doorgaans aanzienlijk achterblijven bij de huidige pc's, is een optimaal gebruik van de consolehardware belangrijk voor een goede game-engine. Console-engines hebben daarom meestal veel code die exclusief voor een specifieke console is ontwikkeld. Aangezien cd, dvd of Blu-ray Disc merkbaar langzamer zijn dan harde schijven en anderzijds de laadtijden voor consoles bijzonder kort moeten zijn, spelen de organisatie van de gegevens op deze media en de laadtechnologie een belangrijke rol.
Certificeringsproces
Games die voor consoles worden gepubliceerd, moeten een streng certificeringsproces van de consolefabrikant doorlopen . Om hieraan te voldoen, moeten de games voldoen aan een uitgebreid eisenpakket, bijvoorbeeld bepaalde eisen voor laadtijden. De meeste eisen hebben grote gevolgen voor de onderliggende game-engine. Vanwege deze vereisten hebben console-game-engines doorgaans een heel andere software-architectuur dan pc-engines.
Overzetten van console naar pc
Simpel is echter de overstap van consoles naar pc: een engine die op consoles draait, kan meestal gemakkelijk op de pc- poort , omdat daar de eisen lager zijn. Als het echter om dit soort games gaat, klagen computergamers vaak dat het spel op de pc geen gebruik maakt van de uitgebreidere mogelijkheden van de huidige pc-hardware. Een klassiek voorbeeld zijn PlayStation 2- games, die ook naar de pc zijn geport, en waarvan je vaak kunt zien dat de graphics zijn ontworpen voor de technisch vrij beperkte console-hardware. Een ander aspect is dat in het geval van consoles game-ontwikkelaars alleen voor vaste hardware hoeven te ontwikkelen, terwijl een pc-game op pc's met een grote verscheidenheid aan apparatuur moet draaien. Dit heeft minder invloed op de software-architectuur , maar betekent voor de game-ontwikkelaar dat hij de engine uitgebreid moet testen met verschillende hardwareconfiguraties.
Ontwikkelingshulpmiddelen
Ontwikkeltools spelen een steeds belangrijkere rol bij de ontwikkeling van computerspellen. Veel professionele ontwikkelaars hechten hier nu zelfs meer belang aan dan aan de eigenlijke game-engine. Er kan grofweg onderscheid worden gemaakt tussen verschillende benaderingen, die meestal ook in combinatie worden gebruikt:
- Plug-ins voor bestaande programma's. Dergelijke plug-ins maken het bijvoorbeeld mogelijk om gegevens uit bekende 3D-modelleringsprogramma's om te zetten naar een speciaal formaat voor de game-engine.
- Op zichzelf staande programma's.
- De game-engine heeft ingebouwde bewerkingsfunctionaliteit. Dit is niet erg praktisch voor consoles.
- Dynamische verbindingen: Wijzigingen in stand-alone programma's of plug-ins worden direct door de game-engine overgenomen. Dit proces is met name ontwikkeld voor professionele console-ontwikkeling.
De zogenaamde doorlooptijden worden steeds belangrijker: hoe sneller een game-ontwikkelaar het resultaat van zijn veranderingen in de game ziet, hoe productiever hij kan werken. Aangezien gameproducties steeds complexer worden, speelt dit aspect een steeds grotere rol. Om deze reden zijn de ontwikkeltools en de game-engines steeds meer met elkaar verbonden.
Engines voor het spelen van bestaande gamegegevens
Omdat oudere games ( DOS ) niet meer gemakkelijk draaien op de huidige platforms, zijn toegewijde ontwikkelaars verschillende projecten gestart om nieuwe engines te schrijven voor het interpreteren van gamegegevens. In dit geval levert het project meestal alleen de engine, de gamegegevens moeten door de gebruiker worden aangeleverd (op deze manier maken de ontwikkelaars geen inbreuk op de auteursrechten van de originele fabrikanten). Voorbeelden hiervan zijn ScummVM , een interpreter voor de SCUMM- scripttaal van LucasArts- Adventures en andere die op moderne platforms kan draaien, of Exult , [2] [3] een opnieuw geprogrammeerde engine voor Ultima VII en Ultima VII Part 2 .
Lijst met game-engines
literatuur
- Jason Gregory, Jeff Lander: Game Engine-architectuur . Eerste editie. Taylor & Francis Ltd., 2009, ISBN 978-1-56881-413-1 .
- Jonathan Blow: Game-ontwikkeling: moeilijker dan je denkt . In: ACM Wachtrij . plakband 1 , nee. 10 , februari 2004, p. 28-37 , doi : 10.1145 / 971564.971590 ( wachtrij.acm.org ).
- Eike Falk Anderson, Steffen Engel, Leigh McLoughlin, Peter Comninos: pleidooi voor onderzoek naar game-engine-architectuur . In: Proceedings of the 2008 Conference on Future Play: Research, Play, Share (= Future Play '08 ). ACM, New York, NY, VS 2008, ISBN 978-1-60558-218-4 , blz. 228-231 , doi : 10.1145 / 1496984.1497031 ( c-sheep.org [PDF; geraadpleegd op 11 september 2012]).
- Valente, Luis en Conci, Aura en Feijó, Bruno: Realtime gameloop-modellen voor computergames voor één speler . In: Proceedings of the IV Brazilian Symposium on Computer Games and Digital Entertainment . 2005, blz. 89-99 ( guff.stage.tigris.org [PDF; geraadpleegd op 29 juli 2012]).
- Steed, Anthony en Oliveria, Manuel Fradinho: Networked Graphics: Netwerkgames en virtuele omgevingen bouwen . Morgan Kaufmann, 2009, ISBN 978-0-12-374423-4 .
- White, Walker en Koch, Christoph en Gehrke, Johannes en Demers, Alan: ACM Queue . plakband 6 , nee. 7e ACM, november 2008, ISSN 1542-7730 , p. 18-25 , doi : 10.1145 / 1483101.1483106 .
web links
- Monsterproject - artikel over game-ontwikkeling door Yager in NZZ Folio , uitgave 05/05.
- Katoen: Canonical Game Loop
Individueel bewijs
- ↑ Unity, UDK, Unreal Engine 4 of CryENGINE - Welke game-engine moet ik kiezen? , digitaltutors.com (Engels), citaat: "De meest populaire game-engines zijn Unity, UDK, Unreal Engine 4 en CryENGINE." geraadpleegd op 31 oktober 2014.
- ↑ Howard Wen: Exult: The Open Age of Ultima. In: Linuxdevcenter. O'Reilly Media, 24 april 2003, geraadpleegd op 19 januari 2016 : “Exult vervangt de engine van Ultima VII zodat de game op andere besturingssystemen en platforms kan worden gespeeld. Het breidt ook de grafische mogelijkheden van het spel uit en voegt functies toe die niet aanwezig waren in de originele engine. (Een legale kopie van Ultima VII is vereist om Exult te gebruiken.) Lord British (ook bekend als Richard Garriott) zelf, de maker van de hele Ultima-franchise, heeft het Exult-team zijn onofficiële zegen gegeven.
- ↑ Exult (Engels) - ontwikkelaarssite op SourceForge (toegankelijk op: 24 maart 2013)