Unity game engine

Deze pagina gaat over de Unity game engine en ontwikkel omgeving. Ik schrijf al mijn hele leven code voor games, zowel spellen als Reversi, een Adventure interpreter. maar ook platform spellen en 2D spellen voor verschillende platformen. De meeste spellen schreef ik in de programmeertaal C maar ook HTML5 en Javascript. Als ontwikkelomgeving voor 2D games gebruikte ik Construct 2 waar ik een licentie voor gekocht heb. Ik heb wel pogingen gedaan om zelf een 3D engine te schrijven maar dat bleek uiteindelijk toch te hoog gegrepen, toch liep ik al bijna twintig jaar rond met het idee voor een Adventure spel met de naam "Hotel Bom Vivant" en ik had het op papier al helemaal uitgewerkt. Na iedere zomervakantie kwam het weer naar boven maar uiteindelijk bleek dat wat ik wilde maken (een realistisch 3D spel) niet haalbaar en zeker niet betaalbaar. Tot ik dit jaar Unity leerde kennen en deze omgeving sprak me onmiddellijk aan. Ik kan goed programmeren in C, C++ en C# en de wijze waarop Unity in elkaar zit (in combinatie met Visual Studio) sprak me ook heel erg aan. Kortom, ik ben me gaan verdiepen in Unity en heb een aantal assets gekocht waarmee ik eindelijk mijn adventure game ga maken en uitbrengen. Op deze pagina kunt u de ontwikkelingen volgen. Vriendelijke groet, Hein Pragt.

Over Unity

Unity logoUnity is naar ze zelf aangeven, de favoriete engine van meer dan 45% de game ontwikkelaars en dit zou het de meest gebruikte engine ter wereld maken. Uit dezelfde enquÍte blijkt dat hun naaste concurrent (Unreal Engine) iets meer dan een derde van het marktaandeel heeft. De engine is gratis en eenvoudig te installeren op zowel Windows-pc of Mac (Linux-ondersteuning komt er aan) en zijn heel veel online tutorial te vinden zowel in tekst als in YouTube films en het is zelfs mogelijk een echte opleiding te volgen met certificering. Ook een zegening voor de beginnende game ontwikkelaar is de Unity Asset Store waar u alles vinden, van 3D-modellen tot geluidsbibliotheken, aangepaste scriptring-oplossingen en zelfs complete projecten om in rond te neuzen en te leren van anderen. De meeste inhoud wordt gemaakt door de community en kost geld, maar er zijn veel gratis versies van bepaalde items en Unity zelf uploadt vaak volledig gratis inhoud. U kunt een compleet spel maken zonder te programmeren, maar wanneer u toch iets speciaals wilt of iets anders dan het standaard gedrag, dan kunt u in C# zelf functionaliteit toevoegen of wijzigen. Het grappige is dat de scripts zelf weer met drag en drop aan componenten gekoppeld kunnen worden. De Unity API is online heel goed gedocumenteerd en geeft duidelijk inzicht in hoe een bepaalde functie werkt of zou moeten worden gebruikt. Deze handleiding wordt voortdurend bijgewerkt, en komt u er niet uit dan is er altijd nog het forum.

Onder Windows is de Unity ontwikkel omgeving geÔntegreerd met Microsoft Visual Studio wat het bewerken van C# code stukken vereenvoudigd. De hele interface van Unity is even wennen maar is uiteindelijk zeer gebruikersvriendelijk, hoewel het in het begin wel zoeken is in de enorme lijst van mogelijkheden en instellingen. De beste wijze om het te leren is de tutorials volgen en vooral zelf veel experimenteren. Neem het openen van een deur, zoek het uit, experimenteer met code en wat graphics en alles zal uiteindelijk op zijn plaats vallen. Met een paar oefeningen bent u in staat om een simpele game te maken die er ontzettend goed uitziet en veel standaard functionaliteit krijgt u standaard ďout of te boxĒ meegeleverd. Ik was in ieder geval binnen een paar dagen verkocht en verknocht aan de Unity engine en ontwikkel omgeving.

Mijn adventure spel Hotel Bon Vivant

Ik heb al jaren een map op zolder liggen met een redelijk uitgewerkt verhaal, grapgics, geschidenisboekjes om te zorgen dat alles klopt op de tijdlijn en schetsen en tekeningen. Na vele jaren ga ik dit spel bouwen in de Unity engine en de voortgang zal ik hier gaan plaatsen.

Inleiding in het programmeren van spellen

Visual studioHet programmeren van spellen is leuk, verslavend, een bron van heel veel ergernis maar ook heel veel plezier. Maar hoe kunt u een spel programmeren? Grafische vormgeving en geluid zijn de dingen die het eerst opvallen wanneer we computer spellen bekijken. Maar schitterende animaties en goede geluidseffecten zijn slechts de buitenste laag van deze fascinerende vorm van technologie. 3D techniek vereist een goede kennis van wiskunde en verder is een spel vaak een ingewikkelde structuur van logica en regels. Ook raken spellen vaak het vak psychologie omdat het spel een vorm van actie en reactie is en de speler een mens is die op menselijke wijze reageert op het spel. Hoe men vermoedt dat de speler gaat reageren, is vaak al van te voren goed overdacht. Ook is het zo dat in adventure games of role playing games (rpg) de spelfiguren een eigen karakter hebben, ook dit vergt enig inzicht in de menselijke psyche. Het programmeren van spellen brengt vaak vele disciplines bij elkaar, techneuten, programmeurs, grafisch ontwerpers, verhaal vertellers e.d.

Het programmeren van spellen is wezenlijk niet anders dan elke andere vorm van programmeren, behalve dat het vaak heel efficiŽnt moet zijn en voor erg voor snelheid geoptimaliseerd. U zult moeten leren om programma's te schrijven die snel en efficiŽnt 2D en 3D plaatjes weer kunnen geven, die muziek en geluidseffecten kunnen weergeven en die razendsnel kunnen reageren op gebruiker invoer. Wanneer u een multiplayer spel schrijft dat over een netwerk kan worden gespeeld, zult u ook netwerkcode moeten schrijven. Het programmeren van spelletjes is geen eenvoudige zaak en vergt zeker veel studie.

Natuurlijk zijn veel van deze taken al gedaan voor u, er zijn meerder programmacode bibliotheken die u kunt gebruiken. Deze bibliotheken zijn gebouwd om specifieke taken uit te voeren zoals het tonen van graphics, geluid weergeven en gebruikersinvoer afhandeling. Er zijn ook libraries die als een APIs gebruikt kunnen worden als interfaces tussen het programma en de onderliggende hardware. Een succesvolle spelprogrammeur weet wat hij zelf moet doen en wat hij van anderen kan "lenen".

Basis vaardigheden programmeren van spellen

Wanneer u zelf games wilt gaan maken heeft u toch een paar basis vaardigheden nodig. Let op, deze vaardigheden heeft u in meer of mindere mate nodig, afhankelijk u helemaal alleen een spel wilt maken of in een team. In een team heeft iedere ontwikkelaar meestal een specialistische vaardigheid, de een is heel goed in het maken van grafische elementen, de ander is goed in geluid en muziek, een ander is goed in levels ontwerpen en weer een ander kan een goede programmeur zijn. Hoe kleiner het team, hoe meer vaardigheden bij ťťn en dezelfde persoon moeten liggen. De basis vaardigheden zijn dus: grafisch ontwerp, geluid en muziek, spel concepten en last but not least programmeren.

Grafisch ontwerpen

Wanneer u een computerspel bekijkt dan ziet u onmiddellijk hoe belangrijk grafisch ontwerpen is. De meeste beginnende spellen zijn vaak te herkennen aan slechte grafische afwerking. Alle elementen in het spel hebben een uiterlijk nodig, zelfs bij een vrij statisch spel als dammen of schaken is een fraaie grafische weergave nodig. In een platformspel zijn spelfiguren, levels, achtergronden en menuschermen nodig. Al deze grafische elementen moeten gemaakt worden. Hierbij is enige kennis van kleur en dieptewerking wel handig net als het beheersen van een grafisch pakket. Er zijn er talloze softwarepakketten beschikbaar, van gratis pakketten tot hele dure professionele pakketten. Een bekend open source en gratis pakket is: Gimp maar dit pakket blinkt mijns inzien niet uit in gebruikersvriendelijkheid. Daarnaast zijn er de (meestal niet gratis) pakketten zoals: Photoshop, illustrator, paint shop pro en paint.net. Kies een van pakketten en leer er mee werken door er mee aan de slag te gaan. Ik werk zelf het liefst in Photoshop omdat ik dit pakket al heel lang ken en ondertussen precies weet waar alle mogelijkheden zitten.

Naast specifieke elementen moet u ook nadenken over de algehele grafische stijl van uw spel, speels, losjes, strak, veel kleuren of weinig. Zorg er ieder geval voor dat u de stijl consequent toepast binnen het hele spel, er is niet zo ergerlijk als een niet consequente gebruikers interface. Kijk vooral hoe andere spellen binnen hetzelfde genre het doen, beter goed afgekeken dan slecht bedacht. Let wel op dat u geen dief bent, zomaar dingen kopiŽren mag niet. Vaak werkt het goed om te beginnen om alles gewoon op papier te schetsen, u kunt dit natuurlijk ook in een tekenpakket op de computer doen. Wanneer u niet genoeg grafische vaardigheden bezit kunt u ook gebruik maken van open source grafische elementen. Op Internet zijn veel gratis grafische sets te downloaden die beschikbaar gesteld zijn om te gebruiken in uw eigen spel. Let er wel op of ook commercieel gebruik toegestaan is en of u aan bronvermelding moet doen. Bij twijfel is het verstandig om altijd schriftelijk toestemming vragen aan de oorspronkelijke maker.

Voor het laten bewegen van objecten in uw game heeft u animatietechnieken nodig. Dit betekent dat u meerdere versies van een plaatje heeft die elk een onderdeel van een beweging zijn, die na elkaar afgespeeld worden. Hoeveel plaatjes nodig zijn kunt u zelf bepalen, hoe meer plaatjes hoe realistischer de beweging. Om te lopen kunt u bijvoorbeeld met twee plaatjes per richting volstaan maar fraaier is vier plaatjes. Voor complexere bewegingen zoals vechten zijn vaak nog meer plaatjes in de animatiereeks nodig. Voor een echt vloeiende beweging heeft u zeker 30 plaatjes per seconde nodig! Alles wat beweegt in een spel is opgebouwd uit een serie van stilstaande plaatjes.

Geluid en muziek

Binnen een spel kunnen we achtergrond muziek gebruiken om de sfeer van het spel te versterken en geluidseffecten gebruiken om effecten in het spel te versterken. Bij het openen van een deur kunt u een geluid afstelen maar ook kunnen vijanden hun eigen geluid hebben om ze nog dreigender te maken. Geluidseffecten kunt u zelf maken door de op te nemen met uw computer en daarna te bewerken, er bestaan ook heel veel open source geluiden die u op Internet kunt downloaden. Ook kunt u met een geluidsbewerkingprogramma stukjes knippen uit bestaande geluidsbestanden om uw eigen effecten te maken. Veel ontwikkelaars en game ontwikkel pakketten maken gebruik van zogenaamde wav files of andere geluidbestand formaten om effecten af te spelen. Deze bestanden kunnen vaak veel ruimte in beslag nemen en zeker voor een online spel is het belangrijk (maar ook voor de laadtijden bij offline spellen) om de bestanden zo klein mogelijk te maken en zoveel mogelijk te hergebruiken.

Voor het gebruik van achtergrond muziek maakt men vaak gebruik van midi, waarbij de muziek als het ware via een virtuele synthesizer afgespeeld zal worden. Het voordeel is dat dit formaat erg compact is en u dus hele grote muziekstukken kunt afspelen, het nadeel is wel dat u hiervoor een software synthesizer module in uw code moet hebben en dat u een pakket nodig heeft om deze bestanden te maken en de bewerken waarbij kennis van muziek noodzakelijk is. Vaak kiezen spelontwerpers er voor om een repeterend muziekstuk op te delen in brokken die willekeurig na elkaar gespeeld kunnen worden zodat de achtergrond muziek niet te eentonig is. Hierbij kunnen de individuele stukken bijvoorbeeld in mp3 formaat opgeslagen worden. Let wel op dat ook hierbij de grootte van de bestanden en dus de laadtijd erg belangrijk kan zijn.

Ook hier gaat op dat wanneer u niet genoeg muziek vaardigheden bezit kunt u ook gebruik kunt maken van open source muziek. Op Internet zijn veel gratis achtergrondmuziek stukken te downloaden die beschikbaar gesteld zijn om te gebruiken in uw eigen spel. Let ook bij deze stukken er wel op of ook commercieel gebruik toegestaan is en of u aan bronvermelding moet doen. Bij twijfel is het verstandig om altijd schriftelijk toestemming vragen aan de oorspronkelijke maker.

Spel concepten

Naast alle technische en grafische vaardigheden is ook kennis van spelconcepten belangrijk. Een goed idee voor beginnende gamemakers is beginnen met het nabouwen van hun favoriete game. Dit is een goede oefening om de vaardigheden van gamedesign onder de knie te krijgen. Ook is het spelen en goed bekijken van computerspellen, zeker in het genre wat uzelf wilt maken erg belangrijk. Maar het wordt pas echt interessant als u echt iets nieuws probeert te maken. Veel mensen die op dit punt komen willen wel iets nieuws maken maar vallen telkens weer terug op spellen die ze al kennen. Het is een goede gewoonte ideeŽn op papier te schetsen voordat u aan de slag gaat. U kunt daarna de uitgewerkte ideeŽn aan een paar mensen laten zien om het idee te testen, vaak ontstaan hier weer goede opmerkingen of aanvullingen uit. Begin niet te snel met het echt bouwen, een goed ontwerp vooraf kan heel veel tijd achteraf besparen. Niets is meer frustrerend dan het weer compleet ombouwen van een spel wanneer u halverwege bent.

Wat is Parallax Scrolling?

De meeste moderne platformgames maken gebruik van parallax scrolling, ik zal hier proberen uit te leggen wat dit is en hoe u dit kunt gebruiken in uw spel. Wanneer u goed kijkt naar de achtergrond van een spel dan ziet u vaak dat deze langzamer lijkt te bewegen dan de voorgrond. Hierdoor ontstaat er een soort van diepte in het spel. Wanneer u in een trein zit en u kijkt naar buiten dan lijkt het of dingen die dichtbij staan vrij snel bewegen en dat naarmate de afstand toeneemt dingen minder snel bewegen. Dit heeft alles te maken met het principe hoe wij als mensen diepte zien. Ook zullen dingen die verder van ons af staan kleiner lijken dan dingen die dichtbij staan. Dit zijn effecten die we kunnen gebruiken om ons 2D spel toch enige dieptewerking te geven.

Het effect kan eenvoudig bereikt worden door gebruik te maken van lagen waarbij de lagen van achter naar voren opgebouwd worden. De laag moet dan wel transparant ondersteunen of in kleine delen afgedrukt kunnen worden omdat anders de laag alles van de voorgaande laag zou afdekken en u alleen de voorste laag zou zien. De achterste laag is meestal niet transparant omdat dit de horizon van onze scene is. Binnen gamedesign pakketten heten deze lagen vaak "layers" en hebben ze een zogenaamde Z waarde die de afstand tot de speler aangeeft. Let wel op dat horizontaal en verticaal scrollen heel intensieve processen zijn voor een computer, het kan zaak zijn het aantal lagen wat te beperken. De meeste eenvoudige wijze om een mooi en realistisch parallax scrolling effect te maken is de scroll factor van de achterst (achtergrond) laag de helft te maken van de voorgrond lagen. Wanneer de voorgrondlaag dus 24 pixels opschuift dan schuift de achtergrond laag slechte 12 pixels op. Door de lagen telkens bij ieder "frame" van de achterste laag tot de voorste laag opnieuw af te beelden ontstaat het diepte effect automatisch.

Nu is het wel zo dat het level soms enorm breed en hoog kan zijn, een achtergrondafbeelding maken die de helft zo groot is zal dan een enorme afbeelding opleveren die veel geheugen zal kosten en enorm veel processortijd om te bewerken. De meeste spellen doen dit slimmer door een slim achtergrond plaatje te gebruiken. Deze afbeelding is bijvoorbeeld twee of vier keer de afmeting van het scherm maar sluit aan de linkerkant perfect aan op de rechterkant en eventueel ook boven en onder, waardoor de afbeelding als een soort van tegeltjes naast elkaar geplakt kan worden. Omdat de gebruiker niet zo in details naar de achtergrond kijkt en er vaak ook nog de nodige dingen voor staan, zal het bijna niemand opvallen dat de achtergrond zich na vier of acht schermen zal herhalen.

Last update: 27-08-2018

Disclaimer: Hoewel de heer Pragt de informatie beschikbaar op deze site met grote zorg samenstelt, sluit hij alle aansprakelijkheid uit. Op de artikelen van de heer Pragt rust auteursrecht, overname van tekst en afbeeldingen is uitsluitend toegestaan na voorafgaande schriftelijke toestemming. Heinpragt.com is ingeschreven bij de KvK onder nummer: 73839426 en is gevestigd in Veenendaal.  Lees hier de privacyverklaring van deze site. Voor informatie over adverteren op deze site kunt u contact opnemen met: (mail@heinpragt.com).