Welkom in het game development & modding topic!
Waarom dit topic? Ik heb zelf door de jaren heen hier en daar wat gemaakt. Dit begon met een hoger/lager spelletje in QBasic voor DOS, een "raad het nummer" voor de TI83+ en wat aankloten met map editor. Toen ik een jaar of 20 was heb ik een minor "gaming & simulatie" op de Hogeschool Rotterdam gedaan en twee prototypes gemaakt als oefening in ActionScript (flash) en een heuse 3rd person cellshaded multiplayer shooter in XNA (een developer kit van Microsoft voor het maken van multiplatform Xbox/PC games).
Vooral het programmeren in XNA vond ik heel tof en heeft ook echt in een team plaatsgevonden en vrijwel alles is van scratch gebouwd i.t.t. de teams de jaren er voor die regelmatig Source Engine mods maakten (niets mis mee, maar ik wilde leren programmeren). Na hier bijna 10 jaar niets meer mee te hebben gedaan kwam ik een paar weken terug toevallig de Unreal Engine tegen bij het checken van Fortnite. Zo te zien was het coden van games zo goed als gratis! Na het te hebben geïnstalleerd heb ik een tijdje niets gedaan, tot ik vakantie had (ironisch genoeg van een baan als developer). Toen ik op een loze avond wat begon rond te neuzen was ik al gauw geïntrigeerd door het "gemak". Gemak staat tussen quotes, want als het nieuw is en onduidelijk is werkelijk de kleinste taak een gigantische chore, zeker gezien ik de programmeertaal (C++, een relatief lastige taal) niet echt goed kende. Maar het relatieve gemak liet mij doorpushen en heb ik na 2 weken de basis van een game. Geen spannende game verder, maar wel iets dat zo goed als van scratch is gebouwd en een leuke basis biedt om de komende tijd af en toe wat aan te sleutelen.
Ik heb dit eigenlijk een beetje voor mij gehouden, totdat iemand mij vertelde dat ik er gewoon een topic over moest openen. Misschien dat er andere mensen zijn die hier wel eens iets mee hebben gedaan, misschien hebben mensen wel specifieke vragen of zijn ze geinteresserd, of misschien gebruik ik het gewoon als dumpplek als ik met iets bezig ben en het van mij af wil schrijven. Nog leuker zou het zijn als mensen samenkomen om een gamepje in elkaar te draaien, but let's not get ahead of ourselves.
Game development is een groot alomvattend topic waar verschillende skills/disciplines samenkomen om een game tot stand te laten komen, of het nu om een one-man-team gaat dat al deze facetten zelfstandig moet maken of een volledig team van tientallen/honderden mensen. Bij grote games en projecten zijn er tientallen functies die er bij betrokken zijn, maar in de basis heeft een kleinschalig project de volgende disciplines:
Game designer
De persoon die verantwoordelijk is voor het bedenken van de game. Hoe werken de game mechanics? Hoe voelt de game aan om te spelen? Welke wapens zijn, welke vijanderen zijn er, wat zijn hun eigenschappen? De game designer is de bedenker en voert grotendeels de input voor de andere rollen.
Grafisch designer
De grafisch designer maakt het uiterlijk van de game. Dit kan bestaan uit 3D modellen, 2D sprites, textures.
Developer
De developer maakt de wensen van de game designer en tot op zekere hoogte grafisch designer mogelijk. Waar de grafische designer het smoelwerk van de game maakt, maakt de developer hetgeen dat onder de motorkap draait.
Dit zijn de highlevel essentials. Afhankelijk van de game en de grootte van het project zijn er specialisaties die zich focussen op een specifiek onderdeel van een discipline, of bepaalde onderdelen van verschillende disciplines combineren. Een specialisatie kan bijvoorbeeld een animator zijn. Maar ook een leveldesigner is een combinatie van een grafisch designer (hij moet rekening houden met art direction) en game designer (levels maken de gameplay). Iemand die zich buigt over de grafische engine zal zich daarentegen weer bezig houden met zowel grafisch design en art direction als development. Om over zaken als project management maar niet te beginnen
Het mooie van pakketten als Unreal Engine en Unity is dat deze gratis zijn en al komen met een verscheidenheid aan tools en goede voorbeelden. Maar wat helemaal geweldig zal zijn voor de mensen die (in de eerste plaats) niet geïnteresseerd zijn in het programmeren in C++/C# is dat deze tools grafische interfaces hebben om game mechanics te maken en aan te passen in de vorm van blueprints. Dit kan heel complex worden, maar de ins en outs van C++ developpen blijven je zeker in het begin gespaard. Wil je gewoon een 3D model maken dat rond kan lopen? Er is al standaard een 3rd person shooter project aanwezig in Unreal. Vervang het 3D model en eventuele textures met die van jezelf en je kan met je eigen creatie rondlopen. En als je dan toch moeilijke dingen wil die niet of nauwelijks te doen zijn met blueprints, dan kan je de blueprints gewoon uitbreiden dmv C++. Uiteraard is modden ook een optie (maar uiteraard sterk afhankelijk voor welke game de mod gaat worden).
Bijkomend voordeel is dat zowel Unity als Unreal het programmeren van multiplatform en zelfs VR vrij makkelijk maken.
Het is onmogelijk om alle pakketten hier te noemen. Van grootste namen als Unity en Unreal Engine tot hele specifieke engines gemaakt voor een specifieke niche (er is een engine gefocust op ASCII based roguelikes a la dwarf fortress), er is van alles en nog wat. Dit zijn de tools die ik in ieder geval ken en erg blij mee ben.
Game Engine
Unreal Engine 4: hetgene dat ik nu gebruik. Het is een vrij daunting pakket, maar de voorbeelden zijn uitgebreid en er komt wat starter content bij. Daarnaast bezit unreal een marketplace, waar je gratis EN betaald assets kan downloaden. Van collecties van wapens tot verzamelingen van objecten tot zelfs complete programmeeroplossingen voor bijvoorbeeld een lockpick minigame zijn te koop. Unreal weet daarnaast echt prachtige graphics neer te zetten en heeft daarnaast de potentie het best te performen. Anderzijds is Unreal dus net wat grootser en lastiger, heeft veel "bijzonderheden" die niet meteen duidelijk zijn, en C++ is een taal die gigantisch goede performance heeft als je weet wat je doet, maar als je dat niet weet dan kost dit je veel performance.
Unity: Geen ervaring mee, maar je kan Unity niet gemist hebben. Soortgelijk aan Unreal maar dan in C#. Unity is wat makkelijker, maar de tool is dan ook meer basic en is dus lastiger complexe dingen mee te maken. De engine performt ook wat minder en games zijn minder mooi, maar afhankelijk van je game hoeft dat natuurlijk helemaal geen probleem te zijn.
XNA: dit is zo dood als watEn goed ook, alles wat XNA deed doet UE4 tot nu toe beter.
3D modelling
Maya 3D
3DS Max
Blender
Dit zijn allemaal betaalde pakketten. Er zijn gratis varianten zoals Google Sketchup, maar deze worden niet officieel ondersteund door UE4. Verder kan ik niet echt veel kwijt over de verschillende pakketten, ik heb ze alle drie wel eens gebruikt en werken allemaal net even iets anders. Dit is een kwestie van smaak, maar het maakt denk ik ook niet zoveel uit welke je kiest als je net begint.
2D sprites en textures
Volgens mij is iedere image editor hier wel geschikt voor. Voor specifieke stijlen zijn bepaalde editors wel beter dan anderen: voor pixel art zijn speciale tekentools bijvoorbeeld.
Programmeren
Tenzij je zelf een editor prefereert is Visual Studio je primary pick. Goede integratie met de meeste engines, fijne code completion en gratis voor ons beginnende kleingebruikers
Tot slot zijn er natuurlijk alles-in-1 pakketten, meestal voor een specifiek genre, zoals RPG Maker.
Unreal Engine (via Epic Game Launcher): https://www.unrealengine.com/download
Unity: https://store.unity.com/