GameMaker 7.0 Workshop 1
In deze workshop: x
Inleiding
x
Het programma o Sprites o Objecten o Rooms o Backgrounds o Sounds
x
Spelregels voor een goed spel
x
Een begin o Sprites toevoegen o Objecten aan sprites koppelen o Een room (level) maken o Gebruik van backgrounds
x
Eigenschappen aan objecten toevoegen.
x
Opdracht
Het is de bedoeling dat je stap voor stap meedoet. Dit teken geeft aan dat je iets zelf moet doen of mee moet doen.
GameMaker 7.0 Workshop 1 INLEIDING GameMaker is een visuele programmeeromgeving voor het maken van relatief eenvoudige 2D-spellen. De programmeeromgeving is objectgeoriënteerd. Zonder al te veel kennis van ingewikkelde programmeerconstructies kunnen aan allerlei objecten (poppetjes, dieren, ballen, enz.) bepaalde eigenschappen of gedrag gegeven worden. De meeste broncode wordt volledig automatisch op de achtergrond aangemaakt. Een gratis versie kun je downloaden bij www.yoyogames.com Deze versie is niet aan tijd gebonden maar heeft toch enige beperkingen. Dan hebben we het echter wel over zeer geavanceerde toepassingen. Die zal je vooralsnog niet nodig zal hebben. Een geregistreerde versie kost €15.Verder kun je nog heel veel vinden op een StartPagina voor GM7.0: http://gamemaker.startbewijs.nl
of
http://gmtutorials.startbewijs.nl
Veel van wat je hier kunt vinden is Engelstalig. Als je thuis het programma installeert (meestal in C:/Program Files/Game_Maker7/) wordt een aantal mappen aangemaakt met bruikbare dingetjes zoals plaatjes, geluidjes en voorbeeldspelletjes. In deze workshop bekijken we aan de hand van eenvoudige voorbeelden de globale werking van GameMaker.
2
GameMaker 7.0 Workshop 1 HET PROGRAMMA Het openingsscherm
ontwerpgedeelte
onderdelen van het spel
Sprites Sprites zijn kleine (gif)plaatjes die in een spel worden gebruikt. Een sprite kan bestaan uit één enkel plaatje of een set plaatjes. Een animatie-gif bestaat uit een setje sprites.
een setje sprites
Zo’n klein plaatje wordt ook wel een icon genoemd. Plaatjes met de extensie .ico mogen ook in het programma worden gebruikt. Op sites als www.iconarchive.com of www.iconbazar.com kun je heel veel van die icons in allerlei categorieën vinden. Maar ook op onze eigen informaticasite: http://www.fonsvitae-informatica.nl/gmPagina.html !!! Ga liever niet op internet zoeken als het programma is geopend. Mijn ervaring is dat GameMaker dat niet prettig vindt waardoor de computer weleens wil vastlopen.
Het programma heeft een eenvoudige, maar afdoende afbeeldings-editor om eventueel sprites te bewerken.
3
GameMaker 7.0 Workshop 1 Sounds Een spel wordt nog leuker als je ook geluidjes kunt toevoegen. Een ijselijke kreet, het breken van glas, het piepen van een deur of zomaar een melodietje. Sounds die gebruikt mogen 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 echter voorzichtig mee. Zo’n afbeelding is al snel te groot waardoor het spel mogelijk traag gaat werken.
Objects Objecten zijn onderdelen in een spel die iets doen. Objecten worden zichtbaar gemaakt door ze aan een sprite te koppelen. Sprites zelf doen niets in een spel. Sprites en objecten moeten dus aan elkaar gekoppeld zijn. Hoe dat moet zie je later.
Rooms Rooms zijn de speelvelden of levels zoals je wilt.
SPELREGELS VOOR EEN GOED SPEL
Of je nu een heel simpel of een heel ingewikkeld spel maakt, een goed spel moet in ieder geval aan de volgende eisen voldoen:
4
x
Een speler mag nooit vast komen te zitten door een fout van de ontwerper. Controleer het spel daarom voortdurend. Denk niet te makkelijk dat het allemaal wel goed zal gaan.
x
Het moet voor de speler duidelijk zijn wat voor doel het spel heeft en welke toetsen gebruikt kunnen worden. Met andere woorden er moet een info aanwezig zijn.
x
Een spel heeft een beginscherm (startroom). Op dat scherm staat o.a. de naam van het spel, wie het ontworpen heeft, onder welke knop de informatie te vinden is en hoe het spel te starten.
x
Evenzo heeft een spel natuurlijk ook een eindscherm met en eventueel een scorelijst.
x
Als je een achtergrondmuziekje gebruikt moet de mogelijkheid er zijn dat muziekje uit te zetten. Dat staat op het beginscherm of in de info.
x
Een spel moet niet saai zijn. Dat wil zeggen er moet niet steeds hetzelfde gebeuren of gedaan worden. Er moeten verrassende elementen inzitten. Ook in een heel eenvoudig spel.
x
Een spel moet niet nodeloos moeilijk zijn zodat het bijna niet te spelen is. Niet teveel vijandelijke elementen of teveel valkuilen. Ook dan haken spelers snel af.
x
Een spel heeft een oplopend moeilijkheidsgraad. Dat wil zeggen dat ieder level een stapje moeilijker mag. Maar denk aan de vorige regel !
GameMaker 7.0 Workshop 1 Tot slot nog een paar tips voordat we aan een eerste spel beginnen:
x
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, enz. bij elkaar en zet ze in één map.
x
Bouw niet in één keer een heel level op maar test ieder onderdeeltje of het goed werkt. Breid op deze manier het level verder uit. Als je dat niet doet raak je gegarandeerd het overzicht kwijt.
x
Voeg begin- en eindscherm en de info pas al laatste toe als al je levels klaar zijn en goed werken. Zo kan je nog eens van gedachten veranderen.
x
Probeer niet vreselijk ingewikkeld te doen. Zeker in het begin niet. Als het niet kan zoals het moet, dan moet het maar zoals het wel kan.
EEN BEGIN Het voorbeeldspel wordt een eenvoudig doolhofspel, ofwel een mazegame. Daarvoor heb je om te beginnen nodig: een tegeltje, een speelfiguurtje, een vijandfiguurtje en een paar items die door het speelfiguurtje gepakt kunnen worden.
*
Bij zo’n doolhofspel is het belangrijk dat de sprites die ‘iets doen’ in het spel dezelfde
afmetingen of verhouding hebben . In het voorbeeldspel gebruik ik sprites van 32x32 of een veelvoud daarvan bv 64x64 of 128x128. Als we een room gaan creëren zal ik uitleggen waarom.
Zorg dat de Advanced Mode is aangevinkt voor je begint
5
GameMaker 7.0 Workshop 1 Sprites toevoegen Je begint het ontwerp van een nieuw spel altijd met het toevoegen van een aantal sprites. Klik hiervoor op het rode ‘hap’figuurtje en vervolgens op Load Sprite.
Zoek het gewenste plaatje en geef het een passende naam. Animaties mogen ook
Zorg voor deze instellingen.
Zorg ook dat dit vakje is aangevinkt.
Deze instellingen voorkomen dat bij een eenvoudig doolhofspel de plaatjes aan elkaar blijven ‘haken’ of ‘plakken’
Klik als je klaar bent op OK
Voeg (create) op deze manier zoveel sprites toe als je wilt gebruiken. Teveel sprites of sprites die je niet gebruikt kunnen later weer verwijderd worden.
Objecten toevoegen Zoals je eerder hebt kunnen lezen zijn objecten de onderdelen in een spel, die 'iets doen'. Een object wordt meestal zichtbaar gemaakt, doordat het object gekoppeld is aan een sprite. (Het is ook mogelijk om een spriteloos object te maken, kan nodig zijn vooe bepaalde roomintellingen. Daarover later meer.) Aan een object kun je vervolgens 'gebeurtenissen' (of 'events') toevoegen. Bijvoorbeeld het botsen tegen een ander object, het pakken van voorwerpen of het indrukken van een pijltjestoets op het toetsenbord. Wanneer een bepaalde gebeurtenis (of event) optreedt, dan moet je aangeven, wat er moet gebeuren. Dat noemen we de 'afhandeling van de gebeurtenis' (of 'event-handler'). Bijv. een ontploffing, of het veranderen van richting.
6
GameMaker 7.0 Workshop 1 Om een object toe te voegen klik je op het blauwe balletje op de menubalk. Onderstaand scherm verschijnt. Dit is het zogenaamde eigenschapscherm van het object. Dat wil zeggen dat we hier straks allerlei eigenschappen aan dit object kunnen geven.
Klik op het knopje naast het vakje Sprite. Er verschijn een sprite-menuutje. Kies de gewenste sprite en geef het object een passende naam.
Voor de meeste objecten geldt dat ze zichtbaar en solide moeten zijn. Zorg dus dat de vakjes Visible en Solid zijn aangevinkt. Zie boven
Gebeurtenis
Gebeurtenisafhandelingen
Diverse Gebeurtenissen
Actions
Event-handlers
Event
Je kunt een Event-handler eenvoudig naar het action-veld slepen. En daar de instellingen voor de actie doen.
Koppel op deze manier de sprites aan een object.
Straks zul je zien hoe je een object bepaalde gedragseigenschappen geeft.
7
GameMaker 7.0 Workshop 1 Een room (level) toevoegen
Door op het kleine rechthoekje te klikken kun je een room toevoegen. In die room wordt dan het spel ontworpen.
Omdat al mijn sprites 32x32 zijn stel ik het raster ook zo in.
In het spel zijn de rasterlijntjes niet zichtbaar
Kijken hoe het spel eruit zal zien zonder de rasterlijntjes
Afmetingen van het speelveld
ROOM
Onder het tabblad backgrounds kun je een achtergrond kleurtje kiezen. Een achtergrondafbeelding is ook mogelijk, die moet je echter eerst toevoegen. Vooralsnog houden we het bij een kleurtje.
Onder het tabblad ‘object’ kun je objecten aan het speelveld toevoegen. Een object kun je meerdere malen in een spel gebruiken. Iedere keer dat je een object gebruikt, wordt een nieuwe instantie van het object aangemaakt. Als je een object hebt gekozen kun je met een linker muisklik een instantie van het object op het veld plaatsen. Met een rechter muisklik verwijder je deze weer.
8
Het bal_object Een object kiezen
Vier instanties van het bal_object
GameMaker 7.0 Workshop 1 Eigenschappen toekennen aan objecten
Door bij Objects (links van het scherm) dubbel te klikken op een van de Objects kom je in het eigenschapvenster van dat object. Ik wil dat deze tegel onzichtbaar is in het spel. Zo dadelijk wordt duidelijk waarom. Daarom is het vakje Visible niet aangevinkt. Ik heb mijn speelfiguurtje –Birdy- ergens in het speelveld neergezet. Ik wil Birdy graag over het speelveld laten lopen. Ik moet echter wel voorkomen dat hij van het scherm kan aflopen. Daarom heb ik rondom het speelveld (de room) tegels geplaatst die in het spel onzichtbaar zijn. Verder doen die tegels helemaal niets.
We gaan Birdy nu leren lopen. Dat wil ik doen met behulp van de pijltjestoetsen. Open het eigenschapvenster van Birdy.
Klik op Add Event Kies in de Event Selector voor Keyboard. En dan voor
Doe ditzelfde ook voor , en .
Doe dit ook nog een keer voor Dit om te zorgen dat als er geen pijltjestoets wordt ingedrukt Birdy niet blijft doorlopen.
9
GameMaker 7.0 Workshop 1 Er zijn nu een aantal gebeurtenissen toegevoegd. (Events) Die moeten nu afgehandeld worden. De Event-Handlers bevinden zich rechts. Door er met je muis over heen te bewegen verschijnt er een klein pop-upje waarin je kunt zien wat de handler doet. Je kunt de handler gewoon naar het actie-veld slepen. (Actions) Een bijbehorend schermpje wordt geopend waar je bepaalde instellingen kunt doen. In dit geval het linkerpijltje en snelheid 4.
Doe dit ook voor de andere richtingen Voor geen richting 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 maak je een tijdelijk executable bestand. Je kunt dan zien hoe het spel er uit komt te zien
Ai, je ziet dat Birdy nog steeds van het scherm af kan lopen. Daar gaan we iets aan doen.
10
GameMaker 7.0 Workshop 1
Open het eigenschapvenster van Birdy. Voeg nog een Event toe: Collision (botsing) met tegel1
Tegen Birdy zeggen we hier : Als je in botsing komt met de muur, lijn je dan uit op het raster en sta stil. (zie ook bij no-key) Lijn uit op een raster
11
GameMaker 7.0 Workshop 1 Hier een heel simpel voorbeeld van een level. Maar hoe simpel zo’n level ook lijkt er moeten echt behoorlijk wat instellingen gedaan worden.
Wat moet er allemaal gebeuren: x Birdy moet kunnen lopen, maar niet van het speelveld af. (hebben we al gedaan) x Birdy mag niet door of over de rode tegeltjes lopen x Birdy moet de diamanten verzamelen x Iedere keer als er een diamant gepakt wordt moet er een bleebje klinken x Als er een diamant is gepakt moet deze verdwijnen x De spookjes moeten heen en weer zweven van muurtje tot muurtje x Als Birdy tegen een spookje komt moet het level opnieuw beginnen x Als alle diamanten zijn gepakt moet Birdy naar het volgende level gaan En dan hebben we het nog even niet over levens en scores. Dat komt in een volgende workshop aan de orde.
We beginnen met het toevoegen van een geluidje
Klik op het speakertje om een geluidje aan het spel toe te voegen. Zoek een geluidje door op ‘Load Sound’ te klikken. Door op het groene pijltje te klikken kun je het geluidje beluisteren. Als het niet bevalt klik dan op het knopje daarnaast om te stoppen en klik nogmaals op ‘Load Sound’ om een ander geluidje te zoeken. LET OP Als je het geluidje beluisterd hoor je het achter elkaar herhaald. In het spel hoor je maar één bleebje.
12
GameMaker 7.0 Workshop 1
We openen het eigenschapvenster van Birdy, daar kunnen de volgende eigenschappen ingesteld worden. Test iedere stap die je doet !!! A. B. C. D. E.
Birdy mag niet door of over de rode tegeltjes lopen Birdy moet de diamanten verzamelen Iedere keer als er een diamant gepakt wordt moet er een bleebje klinken Als er een diamant is gepakt moet deze verdwijnen Als Birdy tegen een spookje komt moet het level opnieuw beginnen
A. Gaat op dezelfde wijze als het botsen tegen de grijze tegel (blz 11) testen ! B. C. en D. doen we tegelijkertijd
Als Birdy tegen de diamant aanbotst dan moet er een bleebje klinken en de diamant moet worden vernietigd. Als er meerdere opdrachten zijn is het de gewoonte om de opdrachten in een blokje te zetten. Deze vind je onder het tabblad ‘control’ testen !!!, voordat je verder gaat
E.
Dit is het eigenschapvenster van Birdy, dus moet de diamant vernietigd worden, Die ‘ander’ dus.
Als Birdy in botsing komt met het spook_object moet hij vernietigd worden. In dit geval zelf dus. En het huidige level moet herstart worden. Je zou ook hier een geluidje kunnen toevoegen. Een kreet van Birdy bijvoorbeeld. testen !!!
13
GameMaker 7.0 Workshop 1 F. De spookjes moeten heen en weer zweven van muurtje tot muurtje G. Als alle diamanten zijn gepakt moet Birdy naar het volgende level gaan F. Open het eigenschapvenster van het spook
Kies in de Event-Selector ‘Create’ Dit omdat de spoken meteen moeten zweven als het level wordt geopend. Het spook beweegt zich horizontaal in beide richtingen
Als het spook in botsing komt met de rode tegel, moet hij simpelweg omkeren testen !!! Je kunt het spook ook in verticale richting laten zweven. Maar zowel een instantie van het spook_object horizontaal als een instantie verticaal is niet mogelijk. Wat je wel kunt doen is van dezelfde sprite een tweede object maken. Bijvoorbeeld spook_object2. Ook is het mogelijk het spook over het gehele veld te laten zweven. Kies dan voor ‘Create’ en klik bij de move-handler alle richtingen aan. Doe dat ook als het spook tegen de (onzichtbare) randtegels aanbotst.
14
GameMaker 7.0 Workshop 1 G. Dit is een geval apart. Er moet een object zijn dat het level in de gaten houdt. Dat in de gaten houdt hoeveel diamanten er nog liggen. 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.
Voeg op de bekende manier een object toe. Kies nu echter geen sprite daarbij maar geef alleen een naam en klik op OK. Je zult zien dat het object nu gewoon zonder pictogram in de objectlijst staat. Je kunt nu dit object gewoon ergens op het speelveld plaatsen. In het spel is het toch niet te zien. Spriteloos object. Klein blauw bolletje Open het eigenschapvenster van het object.
Kies uit de Event Selector ‘Step’ Deze event houdt iedere stap die in het level wordt gedaan bij. Als het aantal instanties van het diamant_object gelijk is aan 0 Applaus geluidje Naar volgende level
LET OP !!! Er moet wel een volgend level zijn, anders krijg je een foutmelding. Voeg dus vast een volgende room toe. Die mag nog helemaal leeg zijn verder.
15
GameMaker 7.0 Workshop 1 Opdracht
Maak aan de hand van deze Workshop zelf nog twee verschillende levels. Je hoeft nog geen rekening te houden met levens, scores of een beginscherm. Dat komt in volgende workshops aan de orde.
16