WORKSHOPS GameMaker 8.0
8.0
2
workshop 1
8.0 WORKSHOP 1 In deze workshop: Inleiding Het program m a o Rooms o Sprites o Objecten o Sounds o Background Spelregels voor een goed spel Een eerste begin o Een room (level) maken o Sprites toevoegen o Objecten aan sprites koppelen o Gebruik van backgrounds Eigenschappen aan objecten toevoegen Opdracht
In deze workshop is het de bedoeling dat je stap voor stap meedoet. Het GMlogo geeft aan dat je zelf iets moet doen of mee moet doen.
workshop 1
3
8.0
4
workshop 1
8.0 Inleiding GameMaker is een visuele programmeeromgeving voor het maken van relatief eenvoudige 2D-spellen. De programmeeromgeving is objectgeoriënteerd. Dat wil zeggen, dat zonder enige kennis van ingewikkelde programmeerconstructies aan allerlei objecten bepaalde eigenschappen of gedrag gegeven kan worden. De meeste broncode van het spel wordt achter de schermen volledig automatisch aangemaakt. Een gratis Lite versie is te downloaden bij http://www.yoyogames.nl Deze versie is niet aan tijd gebonden maar heeft wel enige beperkingen. Dan hebben we het echter over zeer geavanceerde toepassingen. Die zal je vooralsnog niet nodig hebben. Een geregistreerde versie kost op dit moment 20 euro. Er zijn redelijk wat tutorials op het internet te vinden. Deze zijn echter vaak van oudere versies en Engelstalig. Als je thuis het programma installeert (meestal in C:/Program Files/Game_Maker8/) wordt meteen een aantal mappen aangemaakt met bruikbare dingetjes zoals plaatjes, geluidjes en voorbeeldspelletjes. Dit ook bij de gratis versie. In deze workshop bekijken we aan de hand van een eenvoudig voorbeeldspel de werking van GameMaker. Zie voor de werking van de diverse voorbeelden ook het bijbehorende voorbeeldspel.
workshop 1
5
8.0 Het Programma Het openingsscherm
ontwerpgedeelte
onderdelen van het spel
Sprites Sprites zijn kleine plaatjes die in een spel worden gebruikt. Meestal gif omdat die transparantie bevatten. Een sprite kan bestaan uit één enkel plaatje of een set plaatjes. Een animatie is dus een setje sprites. Zie voorbeeld onder van zo n setje
Zo n klein plaatje wordt ook wel icon genoemd. Plaatjes met de extensie .ico mogen dus ook in het programma worden gebruikt. Gebruik van jpg plaatjes is niet aan te bevelen. Jpg plaatjes hebben immers geen transparantie. En het is dus heel lelijk als je een poppetje hebt met een witte achtergrond. Op sites als www.iconarchive.com of www.iconbazar.com kun je heel veel van die plaatjes in allerlei categorieën vinden. Maar ook op onze eigen informaticasite. www.fonsvitae-informatica.nl. Het programma heeft een eenvoudige maar zeer doeltreffende afbeeldingseditor om sprites te bewerken.
6
workshop 1
8.0 Sounds Een spel wordt nog leuker als je geluidjes kunt toevoegen. Een ijselijke kreet, het breken van glas, het piepen van een hek of zomaar een melodietje. Sounds die gebruikt worden zijn midi- of wav files.
Backgrounds
Je kunt speelvelden een achtergrondkleurtje geven of een backgroundgifje gebruiken. Een afbeelding ter grootte van het speelveld mag ook. Wees daar wel voorzichtig mee. Zo n afbeelding is al snel te groot waardoor het spel mogelijk traag gaat werken.
Objects
Objecten zijn onderdelen in het spel die iets doen. Objecten worden zichtbaar gemaakt door ze te koppelen aan een sprite. Sprites zelf doen niets in het spel.
Rooms
Rooms zijn de speelvelden of levels.
SPELREGELS VOOR EEN GOED SPEL Of je nu een heel simpel of een ingewikkeld spel maakt, een goed spel moet in ieder geval aan de volgende regels voldoen: Een spel heeft een beginscherm (startroom). Op dat scherm staat onder andere de naam van het spel, wie het heeft ontworpen, onder welke knop informatie te vinden is en hoe het spel gestart moet worden. Evenzo heeft het spel een eindscherm waarop een melding komt dat het spel is afgelopen. Eventueel wordt er een scorelijst vertoond en kan er een keuze worden gemaakt tussen opnieuw beginnen of stoppen. Het moet voor de speler duidelijk zijn wat het doel van het spel is, hoe de spelregels zijn en welke toetsen gebruikt kunnen worden. Er moet dus een info aanwezig zijn. Als er een achtergrondmuziekje wordt gebruikt moet de mogelijkheid er zijn om dat muziekje uit te zetten. Op het startscherm of in de info wordt vermeld hoe je het muziekje kunt uitzetten. Een spel moet niet saai zijn. Dat wil zeggen er moet niet steeds hetzelfde gebeuren of gedaan worden. Er moeten verrassende elementen in zitten. Ook in een heel simpel spel. Een spel moet niet nodeloos moeilijk zijn zodat het bijna niet meer te spelen is. Dus niet teveel vijandelijke elementen of teveel valkuilen. Dan haken spelers snel af.
workshop 1
7
8.0 Een spel heeft een oplopende moeilijkheidsgraad. Dat wil zeggen dat ieder level een stapje moeilijker mag. Denk echter aan de vorige regel. Een speler mag nooit vast komen te zitten door een fout van de maker. Controleer het spel daarom voortdurend. Denk niet te snel of te makkelijk dat het wel goed zal gaan.
Tot slot nog een paar tips voor we aan een eenvoudig eerste spel beginnen Het is aan te bevelen eerst te bedenken hoe je spel er globaal uit moet komen te zien. Zoek dan de benodigde sprites, geluidjes, achtergrondjes en wat je zoal nodig hebt zo veel mogelijk bij elkaar en zet ze in één map. Tijdens het ontwerpen zoeken is niet handig. Misschien kan je wel niet vinden wat je zoekt en moet je je oorspronkelijke plan herzien. Of je komt al zoekende toch op andere ideeën. Bouw niet één keer een heel level op maar test ieder onderdeeltje of het goed werkt. Breid op deze manier het level steeds verder uit. Als je dat niet doet raak je gegarandeerd het overzicht kwijt. Bovendien als het spel niet werkt weet je niet zo goed waar het mis is gegaan. Probeer niet meteen iets vreselijk ingewikkelds te doen. Als het niet kan zoals het moet, dan moet het maar zoals het wel kan. En als de eenvoudige elementen eenmaal goed werken kun je ze later altijd nog vervangen door wat complexere elementen. Voeg begin- en eindscherm en de info pas als laatste toe. Dat wil zeggen als alle levels klaar zijn en goed werken. Zo kan je tijdens het ontwerpen nog steeds van gedachten veranderen.
Een eerste begin Het voorbeeldspelletje wordt een eenvoudig doolhofspel, ofwel een mazegame. Daarvoor heb je om te beginnen nodig: -
een paar tegeltjes, minstens twee een figuurtje waarmee gespeeld wordt, de hoofdrolspeler dus een vijandfiguurtje, minstens één een paar items die door de hoofdrolspeler gepakt kunnen worden eventueel een paar geluidjes
zoek deze dingen bij elkaar 8
workshop 1
8.0 Bij zo n doolhofspel is het belangrijk dat alle sprites dezelfde afmetingen of verhoudingen hebben. In dit voorbeeldspel gebruik ik sprites van 32x32 pixels. Of een veelvoud daarvan. Bijvoorbeeld 64x64 of 128x128. Als we een room gaan creëren zal ik uitleggen waarom. Open het programma GameMaker Kijk of het programma in de goede Mode staat. In de Advanced Mode is namelijk net iets meer mogelijk.
Rechts zie je de kleine pinguïn die de hoofdrol speelt in het voorbeeldspel. Zijn naam is Birdy.
workshop 1
9
8.0 Een room (level) creëren. Door op het kleine witte rechthoekje te klikken voeg je een room toe. In zo n room wordt een level van het spel ontworpen Omdat alle sprites een afmeting hebben van 32x32 stel ik dat hier, in het raster, ook in. Het zichtbare raster is een goed hulpmiddel bij het ontwerpen. Door op het rastertje te klikken zie je hoe het er uitziet zonder de rasterlijntjes.
Afmetingen speelveld. Neem om te beginnen niet een te groot veld. Maar wel een veelvoud van 32. Neem bv 480x320
Onder het tabblad background kun je een achtergrondkleurtje kiezen. Een achtergrondafbeelding is ook mogelijk maar die moet je dan eerst aan het programma toevoegen. Daarover later meer.
Hopelijk is het nu ook duidelijk waarom de sprites dezelfde afmetingen moeten hebben. Je hoofdrolspelertje moet immers tussen muurtjes of iets dergelijks lopen. Al nu je poppetje 32 pixels is, en de ruimte waardoor hij moet lopen is minder, kan hij er natuurlijk niet tussendoor. Daarom is ook het raster handig voor het ontwerp. Tijdens het spelen is het raster onzichtbaar.
10
workshop 1
8.0 Sprites toevoegen
Nu we een room hebben kunnen we sprites toevoegen. Klik daarvoor op het rode hapfiguurtje op de menubalk en klik vervolgens op Load Sprite . Geef de sprite een toepasselijke naam. Dat is belangrijk. In het begin zal je nog niet zoveel sprites hebben. Maar naar gelang het spel vordert heb je te maken met tientallen sprites. Als er dan iets niet werkt zoek je je helemaal scheel naar de juiste sprite.
Let heel goed op deze instellingen. Deze voorkomen dat plaatjes in elkaar haken
Voeg op deze wijze zoveel sprites toe als nodig is. Je kunt later ook nog sprites toevoegen of overbodige sprites weer verwijderen.
workshop 1
11
8.0 Objecten toevoegen Zoals je eerder hebt kunnen lezen zijn objecten de onderdelen in een spel die iets doen . Een object wordt zichtbaar gemaakt door deze aan een sprite te koppelen. Aan een object kun je vervolgens gebeurtenissen (events ) toevoegen. Bijvoorbeeld het botsen tegen een ander object of het pakken van voorwerpen. Wanneer een bepaalde gebeurtenis optreedt, dan moet aangegeven worden wat er moet gebeuren. Dat noemen we de afhandeling van de gebeurtenis (event-handler ). Bijvoorbeeld een ontploffing of het veranderen van looprichting. Om een object toe te voegen klik je op het blauwe bolletje op de menubalk. Onderstaand scherm verschijnt. Dit is het zogenaamde eigenschapsscherm van een object. Dat wil zeggen dat we hier straks allerlei eigenschappen (properties ) aan het object kunnen geven. Klik op het knopje naast het vakje Sprite . Er verschijnt een sprite-menuutje. Kies daar de gewenste sprite en geef het object een overeenkomstige naam.
Gebeurtenisafhandelingen Action Event-handlers Gebeurtenis (Event)
Voor de meeste objecten geldt dat ze solid en visible moeten zijn. Zorg dus dat deze vakjes zijn. aangevinkt.
12
De diverse gebeurtenissen Je kunt een Event-handler eenvoudig naar het actionveld slepen en daar de instellingen voor de acie doen.
workshop 1
8.0 Objecten aan speelveld toevoegen
Open je room en kies voor het tabblad objects .
Een object kun je meerdere malen in een veld gebruiken. Iedere keer dat je een object gebruikt wordt er een instantie van het object gemaakt. Als je een object hebt gekozen kun je met de linker muisklik een instantie van het object op het veld zetten. Met een rechtermuisklik verwijder je deze weer.
Eigenschappen toekennen aan objecten Door bij Objects (links van het scherm) dubbel te klikken op een van de objects kom je in het eigenschapsvenster van dat object. Ik heb mijn speelfiguurtje Birdy neergezet.
ergens in het speelveld
Vier instanties van het klaver-object Ik wil Birdy graag over het speelveld laten lopen. Ik moet echter wel voorkomen dat hij van het scherm af kan lopen.
Het klaver-object
Kies een object
Daarom heb ik rondom het veld tegels geplaatst die in het spel onzichtbaar zijn.
workshop 1
13
8.0 Rechts: in het eigenschapsvenster van tegel2 is het vakje Visible niet aangevinkt. Dat wil zeggen dat deze tegel in het spel onzichtbaar is. We gaan Birdy leren lopen. Dat doen we met behulp van de pijltjestoetsen. Open het eigenschapsvenster van Birdy.
-
14
klik op Add Event kies in de Event Selector voor Keyboard en dan voor
doe dit zelfde ook voor , en Doe dit ook nog een keer voor , dit om te voorkomen dat als er geen pijltje wordt ingedrukt Birdy blijft doorlopen.
workshop 1
8.0 Er zijn nu een aantal gebeurtenissen (Events) toegevoegd. Die moeten afgehandeld worden. De Event-Handlers bevinden zich rechts. Door er met een muis overheen te bewegen verschijnt er een pop-upje waarin je kunt zien wat de handler doet. Je kunt de handler gewoon naar het actie-veld slepen. Ik begin hier met Left Sleep de richtings-handler naar het actie veld, onderstaand schermpje verschijnt waarin je bepaalde instellingen kunt doen. In dit geval pijltje links en snelheid 4.
Doe dit voor alle richtingen. En doe dit ook voor . Dan moet het middelste vierkantje ingedrukt worden en snelheid 0. Tijd om het programma eens te testen. Sla eerst je programma op. Door op het groene driehoekje te klikken op de menubalk maakt het programma een tijdelijk executable bestand. Je kunt dan zien hoe het spel er uit komt te zien en te testen wat je hebt ingesteld. Probeer Birdy te laten lopen.
workshop 1
15
8.0 Ai, ai, ai, zoals je zult merken kan Birdy nog steeds van het veld aflopen. Daar gaan we onmiddellijk iets aan doen. Sluit je testspelletje om terug te gaan naar het programma. Open het eigenschapsvenster van Birdy nogmaals.
Voeg nog een Event toe: Collision (botsing) met tegel2 En voeg de handlers toe zoals onder. Tegen Birdy zeggen we hier: Als je in botsing komt met de muur, lijn je dan uit op het grid en sta stil. (zie ook bij uitlijnen op het raster
16
workshop 1
8.0 Geluidjes toevoegen Voor we nu aan een eerste level beginnen gaan we eerst wat geluidjes toevoegen. Dat geeft toch altijd iets extra s aan een spel.
Klik op het speakertje op de menubalk om een sound toe te voegen. Zoek een geluidje door op Load Sound te klikken. Je hebt natuurlijk al een map waar geluidjes klaar staan. Let op, je kunt niet vanuit het programma op internet gaan zoeken. Door op het groene pijltje te klikken kun je het geluidje horen. Als het niet bevalt klik dan op het stopknopje ernaast en zoek een ander geluidje. Als het geluidje bevalt geef het dan een toepasselijke naam en klik op OK onder aan het venster. Ik wil nogmaals benadrukken dat het geven van toepasselijke namen belangrijk is. Misschien heb je als het spel af is wel tien of meer geluidjes. Lastig om dan het juiste geluidje bij de juiste gebeurtenis te vinden.
Het eerste level Een voorbeeld van een simpel level.
Maak level.
ook
een
Het mag best iets kleiner.
Zorg dat alle items, zoals beschreven op pagina 8 er in zitten.
workshop 1
17
8.0 Maar hoe simpel zo n spel ook lijkt, er moeten al behoorlijk wat instellingen gedaan worden. Birdy moet kunnen lopen, maar niet van het speelveld af. (is al gebeurd) Birdy mag niet door of over de tegels lopen Birdy moet de klavertjes verzamelen Als Birdy een klavertje pakt moet er een geluidje klinken Dan moet natuurlijk ook het klavertje verdwijnen De spookjes moeten over het scherm zweven Als Birdy tegen een spookje aankomt moet het level opnieuw beginnen Als alle klavertjes gepakt zijn moet Birdy naar het volgende level gaan En dan hebben we het nu nog even niet over levens, bonussen en scores. Dat komt in een volgende workshop. Open het eigenschapsvenster van je speelfiguurtje waar we de volgende instellingen moeten doen. • Het speelfiguurtje m ag niet door of over de tegeltjes lopen. Gaat op dezelfde manier als het botsen tegen de onzichtbare tegeltjes. TESTEN ! • • •
Klavertjes pakken Geluidje Klavertje m oet verdwijnen
Deze drie instellingen doen we in een keer. Als er meerdere opdrachten zijn moeten deze in een programmablokje worden gezet Deze vind je onder het tabblad Control .
18
workshop 1
8.0 -
Voeg een Event toe ‒ Collision met het object dat gepakt wordt Zet een programmablokje neer
-
Let op de volgorde van de afhandeling van gebeurtenissen Voeg als actie een geluidje toe
-
Verwijder de instantie van een object dat is gepakt .
LET OP ! Niet Birdy maar het klavertje moet verdwijnen. The Other dus. TESTEN !
•
Als Birdy tegen een spookje botst m oet het level opnieuw beginnen.
-
Voeg een event botsing met spook toe Sleep een programmablokje naar het actieveld Eventueel een geluidje (optioneel) Birdy moet vernietigd worden. Let op nu wel Self
-
Het level moet opnieuw beginnen
workshop 1
19
8.0 De spookjes moeten over het speelveld zweven Open het eigenschapsvenster van het spook (of van jouw vijandfiguurtje) -
Voeg een Event toe, kies uit de Event-selector Create . Dit omdat de spookjes over het speelveld moeten zweven als het spel wordt geopend. Voeg een Event botsing met onzichtbare tegel toe.
De spookjes bewegen zich horizontaal
Als het spookje tegen de onzichtbare tegel komt moet hij simpelweg omkeren.
TESTEN ! Je kunt natuurlijk het spookje ook in verticale richting laten zweven. Je kunt echter niet één instantie van een object twee verschillende dingen laten doen. Wat je wel kunt doen is van dezelfde sprite een tweede object maken. Eveneens is het mogelijk om het spook over het gehele veld laten zweven. Kies dan ook voor Create en klik bij de move-handler alle richtingen aan. Doe dezelfde instelling voor als het spook tegen een onzichtbare tegel botst.
• Als alle item s zijn gepakt dan naar het volgende level. Dit is een geval apart. Er moet een object zijn dat stap voor stap in de gaten houdt wat er in een level gebeurt. Dat bijvoorbeeld, in dit geval, bijhoudt hoeveel klavertjes er nog over zijn. En wat er moet gebeuren als er geen klavertjes meer zijn. Dat doen we met behulp van een spriteloos object. Dat wil zeggen een object dat niet aan een sprite is gekoppeld. In het speelveld dus volkomen onzichtbaar.
20
workshop 1
8.0 Voeg op de bekende manier een object toe door op het blauwe bolletje te klikken. Kies daar nu echter geen sprite bij maar geef alleen een toepasselijke naam en klik op OK. Het object staat nu gewoon in je objectlijst, nu alleen zonder pictogrammetje.
Zet het object ergens in het speelveld. Maakt niet uit waar, het is onzichtbaar en zit niets of niemand in de weg.
Open het eigenschapsvenster van het object.
Kies uit de selector het event Step
Als het aantal instanties van het klaver-object gelijk is aan 0 - speel geluidje - ga naar volgend level
Het Step-Event houdt stap voor stap bij wat er in het level gebeurt. LET OP!! Er moet wel een volgend level zijn, anders komt er een foutmelding. Voeg dus vast een volgende room toe. Deze mag verder nog helemaal leeg zijn.
workshop 1
21
8.0 Achtergrond afbeelding gebruiken In plaats van een kleurtje kun je de achtergrond van het speelveld ook een afbeelding geven. Dat kan een klein plaatje zijn waarmee de achtergrond automatisch wordt opgevuld of een afbeelding ter grootte van je speelveld. Let wel op dat het niet een te groot bestand wordt waardoor je spel traag gaat werken. Om een achtergrond toe te voegen klik je op het daarvoor bestemde icoontje op de menubalk.
Het principe is nu wel duidelijk Zoek een geschikte background, geef het een toepasselijke naam en klik op OK. De achtergrond staat nu in je Backgroundlijst Je kunt eventueel de achtergrond nog bewerken.
Onder het tabblad backgrounds in een geopende room kun je nu je achtergrond instellen.
Let op de vinkjes Zoek hier je background
22
workshop 1
8.0 Het is ook mogelijk om zelf een achtergrond samen te stellen. Dat doen we met behulp van Tile-Sheets . Daarover in workshop 2 meer.
Opdracht Maak aan de hand van deze workshop nog twee levels. Je hoeft nog geen rekening te houden met levens, scores of een beginscherm. Dat komt in volgende workshops aan de orde.
workshop 1
23
8.0
24
workshop 1