(Klik op de Mind-Map Thumbnail om deze in een nieuw venster te openen.)
MyIsland deel 1: Het creëren van een eiland in Unity3D.
puur en alleen bedoeld om mee te experimenteren en Unity3D uit te proberen.
Introductie
In deze opdracht ga je aan de slag met de 2D/3D game engine Unity3D.
Een game engine is een programma waarmee je games in elkaar kan zetten en kan programmeren. Je kan Unity gebruiken om games te maken voor een hoop verschillende platformen zoals PC, Mac OS, iPhone, iPad, Xbox, Playstation, Nintendo etc.
Als je veel games speelt heb je waarschijnlijk wel eens het Unity3D logo gezien bij het starten van een game. Die game is dan gemaakt in Unity. Andere veelgebruikte game engines zijn bijvoorbeeld de Unreal engine en de Cry engine.
In Unity kun je gemakkelijk primitieve 3D vormen zoals kubussen of bollen creëren om snel dingen te testen of om levels en karakters in elkaar te zetten. Voor complexe karakters en 3D modellen zou je een ander ‘sculpt’ programma zoals Blender kunnen gebruiken. Die objecten kun je dan in Unity importeren en in je spel verwerken.
Textures voor een spel zou je bijvoorbeeld met een apart teken programma of photoshop kunnen maken.
Dit eerste deel van de opdracht gaat over hoe je met vooral klik en sleep acties een 3D eiland level kan maken en hoe je daar overheen kunt lopen in first person, dus gezien vanuit de ogen van de speler. Veel games spelen zich af op een eiland, denk aan GTA, Far Cry, Black & White etc. en het maken van een eiland is een leuke manier om met de verschillende functies van Unity te experimenteren.
Dit deel gaat vooral over de vormgeving en over de werking en layout van het programma Unity3D.
Deel 2 van MyIsland laat een begin zien van hoe je kan programmeren met C# om de ‘regels’ voor je spel te schrijven en hoe je ervoor kan zorgen dat de speler niet uit het level kan vallen.
Stap 1: Een nieuw project aanmaken
Open Unity3D en druk op New project om een nieuw project aan te maken.
Geef het project de naam JouwNaamMyIsland. Zonder spaties en gebruik voor je naam en elk woord een hoofdletter. Deze manier van typen wordt in de programmeer wereld “CamelCase” genoemd. Op deze manier blijven namen kort en duidelijk.
Druk op de drie puntjes achter Location en selecteer het Bureaublad.
Normaal gesproken kun je hier alvast pakketten met GameObjecten importeren om je spel mee te maken. Omdat ik voor jullie een pakketje heb gemaakt slaan we deze stap over.
Druk op Create Project om je nieuwe ‘project’ of game aan te maken en Unity3D te starten.
Stap 2: Een pakket importeren
Druk linksboven in de menubalk op Assets > Import Package > Custom Package. Ga naar het Bureaublad en importeer het bestand MyIslandLY.unitypackage.
(Het MyIslandLY pakket is eventueel ook vanaf hier te downloaden. Klik met je rechtermuis op het bestand en klik op “Koppeling opslaan als..”.
Verwijder na het downloaden het “.doc” gedeelte van de bestandsnaam: MyIslandLY.unitypackage.doc)
In dit pakket heb ik alle objecten die voor deze opdracht nodig zijn gestopt (plus een paar extra) en ik heb ook een mapjes structuur aangemaakt. Dus aparte mapjes voor textures, materialen, modellen etc. Normaal gesproken moet je deze mappen structuur zelf aanmaken als je een nieuw project begint. Het is slim om dit aan het begin gelijk goed te doen omdat je al heel gauw tientallen/honderden objecten in een game zult hebben.
Als je bij de mapjes in de Project view kijkt zie je dat ik ook een mapje voor scenes gemaakt heb. Druk op Ctrl+S om je huidige scene op te slaan. Geef de scene de naam “Level 1” en sla deze op in Assets > _Scenes .
De reden dat we het in Unity over scenes hebben en niet over levels is omdat een scene bijvoorbeeld ook een hoofdmenu of optiemenu kan zijn of een tussentijds filmpje. Ook kan éen level uit meerdere scenes bestaan.
Stap 3: De verschillende ‘views’ van Unity3D
In Unity wordt net zoals in de meeste andere programma’s met verschillende views/vensters gewerkt. De drie belangrijkste views van Unity zijn de Game view, de Scene view en de Project view. Je kan het vergelijken met een filmstudio:
De Game view is het deel dat de toeschouwer/speler te zien krijgt als hij of zij het spel speelt. Deze view gebruik je om het spel zelf te spelen en te testen. Je ziet hier dus niet wat er allemaal ‘achter de schermen’ van de scene/level gebeurt.
De Scene view laat de volledige scene van de film/game zien. Dus alle camera’s, lampen, sets, windmachines etc. Dus ook alles wat er achter de schermen te zien is. Deze view gebruik je om je game in elkaar te zetten.
De Project view kun je zien als het magazijn van de filmstudio. Dus de plek waar alle objecten, zoals decors(levels), acteurs(modellen), scripts(scripts), geluiden, bomen, gras en dergelijke opgeslagen worden.
Naast deze 3 meest gebruikte views zijn er nog 2 belangrijke views die je veel gebruikt:
De Inspector view is een soort “vergrootglas” en laat informatie zien over de objecten de je selecteert en de verschillende componenten die aan het object gekoppeld zijn.
De Hierarchy view laat alle objecten zien die er in de scene dus het level waar je aan werkt aanwezig zijn. Dit zijn in principe kopieën van de objecten die je in de Project view ziet. Dus kopieën van wat er in de map van je project zit. Als je een bepaalde vijand 100 keer in je level wilt stoppen hoef je er maar 1 model van in je project map te hebben.
Stap 4: Een terrein object creëren
Druk op linksboven in de menubalk op GameObject > 3D Object > Terrain.
Als je in de Scene view kijkt zul je zien dat daar een plat vlak verschenen is, precies in het midden van de gamewereld, dus (0,0,0) op de X,Y,Z assen van de gamewereld. Dit kun je rechts in beeld, in de Inspector view zien, bij Position in het Transform component. (Als je niets in de Inspector ziet selecteer dan eerst het Terrain object in de Hierarchy view door erop te klikken.)
Kijk voor meer uitleg over X,Y,Z assen in het menu van deze site bij Extra > Het verschil tussen 2D en 3D.
Stap 5: De first person shooter controller
Kijk onderaan links in de Project view en open het volgende mapje: Assets > _Prefabs.
Sleep het FPSController.prefab object uit het _Prefabs mapje naar de Hierarchy view of de Scene view.
Om het terrein goed in beeld te krijgen en om door de scene view te bewegen kun je de volgende toetsencombinaties gebruiken:
Alt + Rechter muis of scroll wiel = in/uit zoomen.
Alt + Linker muis = de camera ronddraaien.
Ctrl + Rechter muis = rondkijken.
Pijltjestoetsen = de camera bewegen en met Shift erbij ingedrukt gaat het sneller.
Dubbelklik op een object in de Scene of Hierarchy view om de camera erop te laten focussen zodat je er makkelijk op in en uit kan zoomen en omheen kan draaien.
!Kijk voor meer uitleg over GameObjects in het menu van deze site bij Extra > GameObjects.
Stap 6: De FPSController positioneren
Selecteer FPSController object in de Hierarchy view om het in de Inspector zichtbaar te maken. Zet in de Inspector in het Transform component de X,Y,Z, Position waardes op (10,2,10).
Hierdoor wordt de speler 10 units of meter naar rechts op de X-as, 2 omhoog op de Y-as en 10 naar voren op de Z-as geplaatst.
(Het is belangrijk dat je de speler boven het Terrain object zet en niet half er doorheen laat steken. Anders kan het zijn dat je bij het begin van het spel door het level heen valt!)
Stap 7: De ‘game’ starten
Omdat er maar 1 camera tegelijk actief kan zijn in een scene kun je de ‘Main Camera’ uit de hierarchy view verwijderen. De FPSController heeft namelijk al z’n eigen camera die aan de speler ‘vast zit’. Als je dit niet doet zul je bij het starten van de game hier een foutmelding over krijgen in de Console view.
Druk op de grote Play knop in het midden boven de Scene View. Het beeld springt automatisch over naar de Game View.
Dankzij het FPSController object kun je nu direct over je nu nog vlakke terrein lopen, zoals je waarschijnlijk al gewend bent van PC games: met de WASD of pijltjes toetsen kun je rondlopen. Met Spatie springen, met Shift rennen en met de muis om je heen kijken. Doe dit een paar seconden om een klein beetje een gevoel te krijgen hoe groot het terrein is. Dit is nu nog lastig te zien omdat het alleen nog een platte vlakte is.
Druk weer op de Play knop om het spel te stoppen.
Stap 8: Het terrein een texture geven
Selecteer het Terrain object in de Hierarchy view om het object in de Inspector view te kunnen zien. In de Inspector: Klik in het Terrain component op het Penseel symbooltje:
Klik daarna iets daaronder op Edit Textures: en druk op Add Texture.
Druk in het Add Terrain Texture schermpje wat open springt op het select knopje van het Albedo(RGB) vierkantje.
Scroll iets omlaag in het Add Terrain Texture schermpje wat opent en dubbelklik op het GrassHillAlbedo gras plaatje. Druk hierna op Add.
Herhaal deze stappen om nog een tweede texture toe te voegen met de naam GrassRockyAlbedo.
Je zult zien dat het Terrain object nu de gras texture heeft gekregen en dat we twee textures klaar hebben gezet in het Terrain component.
Stap 9: Het terrein vormgeven
Druk op het Raise/Lower Terrain knopje links van het penseel knopje.
Je kunt nu in de Scene view het terrein gaan vormgeven door met je linker muisknop ingedrukt over het terrein te “tekenen” om bergen te creëren.
Als je bergen wilt verwijderen gebruik je shift+linker muisknop. Vergis je niet in het formaat van het terrein. Het terrein is kilometers groot ,dus zoom in en gebruik een wat kleinere penseel. Laat ruimte over langs de randen, we willen tenslotte een eiland maken, omgeven door water.
Rotsen en looppaden tekenen
Druk weer op het penseel knopje en daarna op de tweede rots texture die we in stap 4 hebben toegevoegd. Je kunt nu in de Scene view met de linker muisknop ingedrukt gebieden tekenen waar je geen gras wilt. Bijvoorbeeld de toppen van bergen, looppaden en de grond naast je eiland. Hoe je dit doet is aan jou!*
Stap 10: Bomen selecteren en tekenen
Druk op het boom symbooltje rechts naast het penseel knopje.
Druk iets daaronder op Edit Trees > Add Tree om het Add Tree schermpje te openen.
Ga in de Project view naar het mapje:
Assets > _Environment > Trees > Palm.
Sleep het Palm_Desktop.spm object vanuit het Palm mapje naar het Add Tree schermpje in het Tree Prefab vakje waar je None (GameObject) ziet staan.
Druk hierna op het Add knopje in hetzelfde schermpje.
Bomen tekenen
Zet in de Inspector de waarde van Brush Size op 10 en Tree Density op 70. Je kunt in de Scene view nu bomen tekenen op je eiland met de linker muisknop.
Niet te veel want de speler moet er nog tussendoor kunnen lopen! (Met shift+linker muisknop kun je bomen verwijderen.)
Druk op Play en loop weer even rond om te kijken of je tevreden bent met de plaatsing van je bomen.
Druk nogmaals op Play om het spel weer te stoppen.
Stap 11: Wind en water creëren
Ga boven in Unity naar GameObject > 3D Object > Wind Zone om een Wind Zone object aan het level toe te voegen.
Druk weer op Play en aanschouw de waaiende bomen die je zojuist hebt gecreëerd! Dankzij Unity3D hoeven we dit niet allemaal zelf te programmeren!
Water rond het eiland creëren
Ga in de Project view naar het mapje:
Assets > _Environment > Water (Basic) > Prefabs.
Sleep het WaterBasicDaytime.prefab object vanuit het Prefabs mapje naar de Hierarchy view.
Selecteer het WaterBasicDaytime object in de Hierarchy en verander in de Inspector de Position X,Y,Z waardes van het Transform component naar (250,2,250).
Dit zorg ervoor dat het water zich recht boven het Terrain object zal bevinden op 2 units/meter hoog.
Zet de Scale waardes op (400,1,400) om het water groot genoeg te maken zodat het hele terrein bedekt wordt.
De kleur van het water kan je veranderen door in de Inspector het menu van de shader uit te vouwen en de horizon kleur te veranderen.
Druk op Play en loop op je eiland naar de waterrand toe om te zien hoe het golvende water er vanuit de ogen van de speler uitziet.
Druk nogmaals op Play om het spel te stoppen.**
Dit is het einde van deze opdracht. Als je zover bent gekomen en er is nog tijd over kun je zelf verder experimenteren of als je geïnteresseerd bent in programmeren, via het menu doorgaan naar deel 2 van deze opdracht!
*Het ziet er nog een beetje saai uit omdat slechts 2 textures over het hele terrein herhaald worden. Voor het doel van deze les is dit genoeg maar je begrijpt dat als je meerdere textures van verschillend gras gebruikt het er een stuk beter uit zal zien. Een simpele Google op “Grass textures” levert genoeg textures op om goed mee te beginnen. Het leukst is natuurlijk om ze zelf te maken. Een texture is niets meer dan een vierkant plaatje bijvoorbeeld gemaakt in photoshop, van bijvoorbeeld 256×256 of 512×512 pixels groot.
Je kan ook in de ‘Asset store’ van Unity heel veel bruikbare assets voor je game en uitbreidingen voor Unity vinden! Check het menu Window > Asset store.
**Door met de waardes in de Inspector te spelen terwijl je het water in de Hierarchy view hebt geselecteerd kun je het water naar eigen smaak ‘Finetunen’ en bijvoorbeeld voor hogere golven zorgen (afhankelijk van welk water je hebt gebruikt). Als het helemaal mis gaat kun je het component met de rechter muisknop resetten naar de originele waardes.
Alles wat je in de inspector veranderd terwijl Unity op Play staat wordt als je op Stop drukt weer gereset naar de waardes van voor je op Play drukte. Je kan Play mode dus gemakkelijk gebruiken om met waardes in de inspector te spelen en experimenteren.