VLCinstruct

Leren van elkaar

NLT

Bruhngeon, de videogame

Door ilan spaltman, tom van strien en jasper van der elsken

Inleiding: 

Tijdens onze les NLT hebben wij een opdracht gekregen om een eigen product die gebruik maakt van hardware/ software te maken en hier dan een verslag over op vlcinstruct.nl te zetten. Ik en mijn groepje zijn erg gepassioneerd over games maken en het leek ons dus een leuk idee om dit te doen! Als eerst hebben wij de taken verdeeld in: code, sprites en dit verslag. Daarna zijn wij allemaal aan ons eigen stukje aan de slag gegaan. Hier hebben wij wat tijd in de les gebruikt om de tekeningen te maken maar de code kon alleen thuis vanwege het programma waardoor dit allemaal in eigen tijd werd gedaan. 

Inhoudsopgave: 

  • Hoe werkt het? 
  • Benodigdheden 
  • Gamemaker 
  • Random generation 
  • Andere mechanics 
  • Sprites 
  • Conclusie 

 

Hoe werkt het? 

Dit product is volledig gericht op software. Wij maken dit tot een programma die via de computer gespeeld wordt. Hier gaan ook controls bij zitten die duidelijk gemaakt worden. 

Je speelt als een avatar (bestuurbaar karakter) dat zich zonder verklaarbare reden bevindt in een catacombe vol met gevaarlijke monsters die hem proberen aan te vallen. De monsters gaan doormiddel van artificial intelligence (AI) achter het karakter aan en dienen schadepunten toe door fysiek contact te maken met het karakter, of doormiddel van explosies of projectielen die contact maken met het karakter. Het doel is om de eindbaas te vinden in de willekeurig gegenereerde catacombe en deze te verslaan. 

 

Benodigdheden 

  • Laptop/ pc 
  • Programma Gamemaker Studio 2 (wij deden dit in de proefversie) 
  • Piskel (dit is een programma op een website dus dit heeft iedereen) 

 

Gamemaker 

Gamemaker is een programma die programmeren versimpelt. Zo is er een interface waarin alles gevisualiseerd wordt en zijn er build-in variables wat inhoudt dat bepaalde lange moeilijke code is versimpeld. Ook heeft gamemaker zijn eigen versimpelde taal. Wij hebben voor gamemaker gekozen, omdat het erg makkelijk te gebruiken is, veel tutorials/ helpvolle mensen voor zijn en omdat wij hier heel veel mogelijkheden mee hebben in tegendeel tot andere programma’s. 

 

Random Generation 

De random generation kwam samen met het originele idee van een “dungeon crawler“. De rede om random generation toe te voegen in een spel is om het steeds weer anders te laten zijn en dus zo minder snel saai te laten worden. Wij hebben een aantal manieren gebruikt die wij hebben geleerd van video’s en hierbij aanpassingen gemaakt zodat het naar onze wensen is. Wij hebben als mechanisme verschillende kamers aan elkaar geplakt die we van tevoren al hadden gemaakt. Als eerst hebben wij dus verschillende kamers gemaakt met verschillende uitgangen. Zo is er één begin kamer waarin de speler in het spel wordt gebracht, een kamer met een uitgang aan de linker en rechter kant, eentje aan links boven en rechts, eentje aan links beneden en rechts etc. Hierna hebben wij deze kamer vertaald in een lijn van getallen. Zo hebben wij de computer verteld dat een 0 de lucht betekent, 1 een muur en 2 de grond. Hierdoor weet de computer hoe de kamer eruitziet en kan dit daarna ook weer nabouwen op de juiste plekken. Hierna hebben wij een machine in de code de kamer op een random plek in een assenstelsel gezet. 

Hier is dit bijvoorbeeld op X: 2 en Y: 0 

Een 1 betekent in dit geval een kamer en een 0 niks. 

0|0|1|0|0 

0|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

Nadat de computer deze random plek heeft gekozen kiest hij tussen links of rechts. 

In dit geval heeft hij links gekozen. 

0|1|1|0|0 

0|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

Nu is er al een klein begin van een pad gemaakt. Dit gaat door totdat de computer helemaal beneden is aan het assenstelsel. Er is ook voor gezorgd dat een kamer nooit buiten het stelsel kan worden geplaats. Bijvoorbeeld wanneer de computer helemaal aan de linker kant is van het assenstelsel en hij wil nog een keer naar links zorgt dit ervoor dat hij buiten het assenstelsel gaat, omdat wij dit niet willen zorgen wij ervoor dat wanneer (een if-statement dus) hij helemaal links of helemaal rechts van het assenstelsel zit en nog een keer naar links/rechts wil hij in plaats van daadwerkelijk die kant op gaat naar beneden gaat. 

Dit wordt hier weergegeven. 

1|1|1|0|0 

1|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

0|0|0|0|0 

Hier heb ik alles uitgelegd met een 1 en een 0, maar in ons eigen spel hebben wij meer dan 10 getallen gebruikt. Deze getallen hebben wij gebruikt om aan de computer uit te leggen wat voor soort kamer hier moet bijvoorbeeld een kamer die naar links gaat of die naar beneden gaat. Wanneer de computer op de laagste rij van heet assenstelsel zit en hierna weer naar beneden wil gaan zet hij op dat punt automatisch een eind kamer neer oftewel de eindbaas. 

Het zou alleen erg saai worden als er maar 1 soort kamer is voor elk type. Dan zie je namelijk iedere keer weer dezelfde kamers terugkomen. Daarom hebben wij van elke soort 3 tot 5 verschillende kamers gemaakt. Ze voeren dus dezelfde functie uit zoals naar links of beneden gaan, maar zien er toch heel anders uit en bevatten andere monsters/ wapens. Deze worden dan weer random gekozen door de computer. Ook hebben wij de computer uit-eindes laten maken aan deze gangen door er gewoon constant uit-eindes naast te plaatsen en die worden door het hoofd-pad weer verplaats door een gang zo nodig. Zo wordt dus een hele random dungeon gemaakt. Hiervoor hebben wij veel video’s gekeken en ook zelf nog meer aanpassingen aan moeten maken om het precies te krijgen zoals wij in ons hoofd hadden. Dit is ons gelukkig wel gelukt. 

Andere mechanics 

Aan alleen een dungeon hebben we niks. Hier zijn nog dingen nodig zoals een poppetje die je kan besturen, vijanden, wapens, een systeem voor al je levenspunten etc. Hier zijn ook weer erg veel video’s over te vinden. Aan al deze dingen was minder gedachte nodig en het was allemaal wel simpel om toe te voegen. Zo hebben wij een state-machine gebruikt (code die ervoor zorgt dat op verschillende momenten andere dingen gebeuren). Bijvoorbeeld wanneer je wakker bent kan je lopen, wanneer je moe bent word je langzamer en wanneer je slaapt kan je niet meer lopen. Dit zorgt er ook voor dat alles netjes uitgevoerd wordt. Zo heeft een vijand een volg state, en een aanval state. Zo volgt hij dus eerst de speler totdat hij in bereik is en valt hem dan aan. Via deze soort manieren hebben wij dus allemaal verschillende soorten mechanics die voor ons belangrijk zijn erbij toegevoegd. 

Sprites 

Sprites zijn twee dimensionale tekeningen die gebruikt worden in een videogame om objecten een uiterlijk te geven. Wij hebben de sprites uit deze game verzorgd met een programma genaamd Piskel. De techniek en stijl die we hebben gebruikt voor de videogame heet pixelart. Dit houdt in dat de tekeningen bestaan uit weinig pixels en er dus heel blokkerig uitzien. In ons geval was de canvasgrootte voor bijna elke sprite 32×32. 

Alles wat je ziet in de game zijn sprites, van de bakstenen in de muren tot de explosies die je ziet als er een lopende ton ontploft. Deze dingen zijn allemaal objecten, maar als deze geen sprite zouden hebben voor elke specifieke actie zou het hele scherm zwart zijn, maar de game wel speelbaar. 

Sommige sprites hadden een animatie nodig om bijvoorbeeld te lopen of om te knipperen. Dit werd gedaan door de meerdere sprites frame voor frame achter elkaar af te spelen. Al zou een loopanimatie dus zes frames hebben, zou de animatie bestaan uit 6 verschillende tekeningen die telkens worden herhaald voor hoelang de actie wordt uitgevoerd. Een frame in de animatie is echter niet gelijk aan een frame op het beeldscherm. Je beeldscherm heeft over het algemeen zestig frames per seconde. Een sprite animeren in zestig frames per seconden zou veel te lang duren, dus we hebben gekeken naar hoeveel frames er nodig zijn over een bepaalde tijdsduur om de illusie van beweging op te wekken terwijl het eigenlijk losse plaatjes zijn. Hier moesten we het uiterste minimum van zien te vinden omdat dat onderdeel is van de pixelart stijl, maar ook omdat dat zoveel mogelijk tijd bespaard. 

Conclusie 

Het project liep absoluut niet zo goed als we gehoopt hadden. We zijn niet in staat geweest om ons originele project op tijd in te leveren voor de deadline, dus in plaats daarvan hebben we een eerder project van ons ingeleverd. Een spel waar je manifestaties van ziektes moet neerschieten om te overleven. 

We zijn tot de conclusie gekomen dat we een te groot project wilde doen in een te korte periode. Wij geven dus als tip mee aan de andere mensen: zorg ervoor dat wat je wil doen niet alleen te doen is qua vaardigheden, maar ook qua de beschikbare tijd. (hou er ook rekening mee dat de free trial maar 30 dagen is) Dat is waar wij de mist in zijn gegaan. We konden alles wel, maar er was simpelweg niet genoeg tijd. 

Je kan in de gratis versie van Gamemaker studio 2 niet exporteren naar een .exe bestand, dus we raden aan om het programma wel te kopen. 

Een positiever aspect: we gaan dit project zeker afmaken buiten school, de basis die we hebben gelegd is namelijk veelbelovend. Er moeten echter wel een paar aanpassingen gemaakt worden, maar dat is altijd het geval met game development. 

Geef een reactie

Thema door Nand Homan en Jeroen van Diepen

Hey, wij gebruiken Cookie's. Hiermee zorgen wij ervoor dat onze site werkt zoals hij bedoeld is. Ons cookie's hebben alleen maar goede bedoelingen, wij gebruiken ze zo minimaal mogelijk. We gebruiken ze niet voor onderzoeken, alleen voor het draaien van de site zelf.

Dus willen jullie Cookie's? Cookie policy