Games maken met GameMaker
© Bjarno.be 2012
Games maken met GameMaker Door Bjarno Oeyen
2
Games maken met GameMaker
© Bjarno.be 2012
GAMES MAKEN MET GAMEMAKER INHOUDSOPGAVE Opmerkingen ...................................................................................................................................................... 6 Inleiding .............................................................................................................................................................. 7 GameMaker installeren ................................................................................................................................... 7 Hulp vragen bij een probleem ......................................................................................................................... 8 Je eerste spel ...................................................................................................................................................... 9 Wat leren we in dit hoofdstuk? ....................................................................................................................... 9 De werkomgeving instellen ............................................................................................................................. 9 Een eerste kennismaking met GameMaker ..................................................................................................... 9 Wat zijn nu al die elementen? ....................................................................................................................... 10 Waarom geven we elementen een voorvoegsel? .......................................................................................... 11 Wat is het verschil tussen instanties en objecten .......................................................................................... 12 Een spelconcept verzinnen ............................................................................................................................ 12 Een speler tot leven wekken ......................................................................................................................... 12 De speler een ruimte geven .......................................................................................................................... 14 De eerste keer testen .................................................................................................................................... 15 Goud! Overal goud! ....................................................................................................................................... 16 Botsen met muntjes ...................................................................................................................................... 16 Een eigen sprite maken voor een muur ......................................................................................................... 17 De muur laten omzeilen ................................................................................................................................ 18 Een room bewerken ...................................................................................................................................... 20 Je eerste spel uitbreiden ................................................................................................................................... 21 Wat leren we in dit hoofdstuk? ..................................................................................................................... 21 Levels verbinden met elkaar.......................................................................................................................... 21 Het spel testen en fouten oplossen ............................................................................................................... 22 Maskers instellen voor ojecten...................................................................................................................... 25 3
Games maken met GameMaker
© Bjarno.be 2012
Een vijand maken .......................................................................................................................................... 25 Geluiden toevoegen ...................................................................................................................................... 27 Grijs is saai, achtergronden zijn cool! ............................................................................................................ 28 Een titelslide maken ...................................................................................................................................... 29 Een help maken waar iedereen wel iets aan heeft ........................................................................................ 31 Een spel publiceren ........................................................................................................................................... 33 Wat leren we in dit hoofdstuk? ..................................................................................................................... 33 Even alles nakijken ........................................................................................................................................ 33 Screenshots maken ....................................................................................................................................... 33 Een uitvoerbaar bestand maken.................................................................................................................... 33 Je spel uploaden naar sandbox.yoyogames.com ........................................................................................... 34 Je spel publiceren op fora ............................................................................................................................. 36 Een platformgame maken ................................................................................................................................. 38 Wat leren we in dit hoofdstuk? ..................................................................................................................... 38 Terug beginnen vanaf nul .............................................................................................................................. 38 Het spelconcept ............................................................................................................................................ 38 De sprites toevoegen .................................................................................................................................... 38 De eerste hand leggen aan de objecten ........................................................................................................ 40 Een kennismaking met newton ..................................................................................................................... 41 Testen en fouten oplossen ............................................................................................................................ 43 Een level groter maken ................................................................................................................................. 45 De snelheid opdrijven ................................................................................................................................... 47 Stekels zijn vervelend .................................................................................................................................... 47 Levens toevoegen ......................................................................................................................................... 49 Het hoofdstuk van de lijstjes ............................................................................................................................. 50 Handige websites over GameMaker .............................................................................................................. 50 Handige websites voor sprites ....................................................................................................................... 50 Handige websites voor geluiden en geluidseffecten ...................................................................................... 51 Handige websites voor achtergronden en textures ....................................................................................... 51
4
Games maken met GameMaker
© Bjarno.be 2012
Tekenprogramma’s ....................................................................................................................................... 52 Muziekprogramma’s ..................................................................................................................................... 53 Problemen & Oplossingen ................................................................................................................................. 54 Ik zie geen voorbeeldenmap met elementen ................................................................................................ 54 Ik krijg een foutmelding tijdens het opstarten van mijn spel ......................................................................... 54
5
Games maken met GameMaker
© Bjarno.be 2012
OPMERKINGEN Deze cursus is geschreven voor iedereen, jong en oud. Er is echter een goede kennis nodig van Windows en het gebruik van hardware zoals toetsenbord en muis. Er is geen enkele programmeerervaring nodig. Verder worden er in deze cursus Engelstalige termen gebruikt... vaak worden deze uitgelegd.
Deze cursus was correct op het moment van schrijven. Het is mogelijk dat bepaalde websites veranderd of verdwenen zijn of dat bepaalde onderdelen aangepast zijn. Gelieve hier rekening mee te houden.
6
Games maken met GameMaker
© Bjarno.be 2012
INLEIDING Dus jij wilt je eigen game maken? Ik zou zeggen van wel, anders zou je deze cursus niet gedownload hebben. Het maken van games is een van de moeilijkste delen onder de term “programmeren”. Je moet met heel veel dingen rekening houden zoals zien dat alle gegevens goed bewaard worden en alles mooi op het scherm getekend wordt. Je moet ook er voor zorgen dat je geen fouten maakt, die je enorm snel maakt, en ga zo maar door. Gelukkig bestaat er een programma zoals GameMaker. GameMaker is een shareware (dat betekent dat het een betalend programma is) programma waarmee je in een mum van tijd een eenvoudig spel mee kunt maken. Je hebt geen tientallen boeken nodig om een eenvoudige pac man te schrijven en de meeste games kan je maken zonder één lijn programmacode te schrijven. Als beginnende game-ontwikkelaar kan je dus zonder al te veel moeite een spel maken en dit uitbreiden. Je hebt geen limieten aangezien je GameMaker prima kunt uitbreiden met tal van extensies (of uitbreidingen). Van GameMaker is er ook een gratis versie. Dit is prima om GameMaker onder de knie te krijgen maar je hebt wel enkele beperkingen. Zo komt er tijdens het laden, tijdens het spel en na het spel een advertentie voor GameMaker te staan. Deze storen niet enorm, maar als je je spel publiceert staat het echter onhandig. Verder kan je geen gebruik maken van online- of 3D-functionaliteiten. Maar voor de meeste games die je gaat maken is de gratis versie goed genoeg voor te beginnen.
GAMEMAKER INSTALLEREN Om GameMaker te installeren op je computer open je je webbrowser (bijvoorbeeld Mozilla Firefox, Google Chrome of Internet Explorer) en je surft naar http://yoyogames.com/ . Klik hier onder GameMaker op Windows. Na het laden van deze pagina staan er bovenaan 2 knoppen. Eentje voor de volledige versie (“full version”) te downloaden en eentje voor de gratis versie (“Lite”) te downloaden. Afhankelijk van welke keuze je wilt moet je op een van deze knoppen drukken. Na het downloaden (er kan mogelijk voor informatie zoals een YoYoGames account worden gevraagd!) moet je de installatiewizard uitvoeren. Als er wordt gevraagd tussen een eenvoudige of een geadvenceerde modus moet je voor de eenvoudige modus kiezen. In het begin gaan we deze modus gebruiken zodat we niet meteen onderbedolven worden tussen de honderden mogelijkheden die GameMaker ons te bieden heeft. Later gaan we dit terug veranderen. Let op! Er bestaat een kans dat nadat je GameMaker installeert hij voor licentie-informatie vraagt of dat hij je de mogelijkheid geeft om naar Lite te gaan. Deze boodschap komt elke keer te voorschijn in lite maar verdwijnt bij de volledige (“standard”) versie.
7
Games maken met GameMaker
© Bjarno.be 2012
HULP VRAGEN BIJ EEN PROBLEEM Als je tijdens deze cursus een probleem hebt dat niet beantwoord is kan je eens een kijkje nemen op game-maker.nl. Deze website biedt tal van nuttige informatie over hoe je met GameMaker een eigen spel kunt maken en heeft een online community waar je aan anderen om hulp kunt vragen. Er is ook een Engelstalige community waar je je vragen kunt spellen kunt laten zien en vragen kunt stellen. Deze kan je vinden op gmc.yoyogames.com
8
Games maken met GameMaker
© Bjarno.be 2012
JE EERSTE SPEL Nadat GameMaker is opgestart moeten we eens nadenken wat voor een spel we gaan maken. Toen ik zelf begon met GameMaker wilde ik meteen grote spellen maken met ongeloofelijk veel mogelijkheden. Spijtig genoeg gaat ons eerste spel niet fantastisch zijn. GameMaker kan dan wel veel te bieden hebben... je moet het nog steeds onder de knie krijgen. Daarom dat we best eerst eenvoudige spelletjes kunnen maken dan moeilijke games.
WAT LEREN WE IN DIT HOOFDSTUK? In dit hoofdstuk leren we:
Kennismaking met GameMaker Het verzinnen van een spelconcept Een speler aanmaken die je kan besturen Een ruimte maken Het spel testen Werken met collisions Werken met score
DE WERKOMGEVING INSTELLEN Het is niet verplicht, maar ik heb er mijn gewoonte van gemaakt om een “werkomgeving” te maken. Dat is een mapje op mijn computer waar ik alles over dat spel in plaats. Dus de werkbestanden maar ook afbeeldingen, muziek,... Ook al zitten ze op het einde in het uiteindelijke spel zorgt dit er voor dat je snel alle bestanden kunt terugvinden. Maak dus in de map “Mijn documenten” of “Documenten” een nieuwe map aan genaamd “Game Maker Projecten”. Je mag deze map ook ergens anders plaatsen, maar dit is de meest logische plaats. Hierin maak je nog een map aan genaamd “mijn eerste game”. Na het aanmaken van deze map mag je Windows Verkenner sluiten en kan je GameMaker opstarten.
EEN EERSTE KENNISMAKING MET GAMEMAKER Nadat GameMaker is opgestart zal je een venster zien zoals de afbeelding aan de rechterkant van deze tekst. GameMaker is onderverdeeld in 3 grote delen... De zijbalk – Of in het Engels ook wel de “sidebar” genoemd is de balk aan de linkerkant van Game Maker. Het bevat een totaal overzicht van alle elementen die
9
Games maken met GameMaker
© Bjarno.be 2012
aanwezig zijn in je spel en zijn onderverdeeld in groepen zoals “sprites” en “sounds”. Wat deze zijn zullen wij later zien. De knoppenbalk – De knoppenbalk is de plaats waarin je een nieuw spel kunt mee maken en je project mee kunt opslaan, uitvoeren of nieuwe elementen mee kunt toevoegen. Het laatste icoontje is tevens het icoontje voor de help te openen waarmee je hulp met een specifiek onderdeel mee kunt krijgen. Alles wat je over een onderdeel in GameMaker wilt weten kan je hier vinden. De werkruimte – In het Engels wordt dit ook wel eens de “workspace” genoemd. Dit is de plaats waar alles gebeurd. Elementen aanpassen van je spel zoals je vijand een andere kleur geven of de snelheid waarmee het hoofdpersonage loopt tot de levels die gespeeld worden. De werkruimte wordt pas opgevuld als er een element uit de zijbalk geopend wordt of er een nieuw element wordt aangemaakt. Verder heb je bij dit venster ook nog de mogelijkheid tot het minimaliseren, maximaliseren en sluiten. Net zoals bij elk ander programma op Microsoft Windows.
WAT ZIJN NU AL DIE ELEMENTEN? Er zijn heel wat elementen die je in je spel kunt gebruiken. In het Engels worden ze vaak “resources” genoemd wat ook wel “bronnen” wordt genoemd. Maar ik gebruik liever het woord “elementen” aangezien het allemaal kleine stukjes zijn die je uiteindelijke spel bepalen. Sprites – Sprites zijn de afbeeldingen die je spel zullen vormgeven. Je kan ze toewijzen aan objecten en instanties en je kan ze tekenen op het scherm. Sprites kunnen bestaan uit verschillende afbeeldingen zodat je een bewegend beeld kunt krijgen zoals een onderzoeker die met zijn vergrootglas staart. Sounds – Sounds, of geluiden, zijn de muzikale tonen van je spel. En als je spel niet alleen een leuke achtergrond muziek wilt kan je er ook ook geluidseffecten in stoppen. Backgrounds – Backgrounds, of achtergronden, lijken enorm op sprites. Ze kunnen echter alleen toegewezen worden aan “rooms” en getekend worden op het scherm. Ze bestaan uit slechts 1 beeld en zijn niet te animeren. Objecten – Objecten zijn de hoofdelement van je spel. Objecten bevatten alle informatie en acties die er moeten gebeuren en zullen alle overige elementen gebruiken voor een geheel. Je kan een object hebben voor je hoofdpersonage dat je obj_player noemt en dat je als afbeelding spr_player gebruikt. Rooms – Of kamers zijn de plaatsen waar instanties van objecten samenkomen voor een geheel te vormen zoals een hoofdmenu, een titelscherm of een moeilijk level in een platformspel.
Verder heb je in de geavanceerde mode ook nog andere elementen. Je kan dit stuk nu al overslaan om er later op terug te komen, maar ik geef deze nu al mee voor een beter overzicht. 10
Games maken met GameMaker
© Bjarno.be 2012
Paths – Paden zijn trajecten die instanties kunnen afleggen en ze bewegen van punt tot punt tot ze het einde bereiken. Je kan paden gebruiken voor een wachter voor een toren een bepaald patroon laten af te leggen. Scripts – Game Maker heeft een eigen scripttaal. Je kan scripts toevoegen aan je spel om ze later te gebruiken. Meer informatie over deze taal (de Game Maker Language) zal later vermeld worden. Fonts – Fonts, of lettertypes kom je regelmatig tegen. Zelfs buiten GameMaker. Lettertypes zorgen ervoor dat je tekst goed leesbaar is en dat niet iedere tekst er hetzelfde uitziet. Zo ziet een tekst zoals deze er veel ouderwetser uit net omdat het een ander lettertype is. Time Lines – Tijdslijnen zijn een serie van acties die gebeuren in een bepaalde volgorde. Je kan ze gebruiken om bepaalde gebeurtenissen in je spel te laten verlopen.
WAAROM GEVEN WE ELEMENTEN EEN VOORVOEGSEL? Je hebt zonet gezien dat ik in plaats van het object “player” en sprite “player” ze “obj_player” en “spr_player” noemde. Dit is om een heel eenvoudige reden. Als je GameMaker de opdracht geeft om iets uit te voeren met “player” weet hij niet welke speler... Ook al wil je “player” (de sprite) tekenen kan hij zich “vergissen” van waarde. Elke resource moet dus een andere naam hebben. Ik maak hiervoor gebruik van voorvoegsels zoals obj_ en spr_. Hieronder een volledige lijst: Sprites: spr_ Sounds: snd_ Backgrounds: bck_ of back_ Objecten: obj_ Rooms: rm_ Paths: pth_ Scripts: scr_ Fonts: fnt_ Time Lines: time_ Het voorvoegsel voor aan te duiden of iets een script is (“scr_”) wordt echter vaak weggelaten. Er zit vaak een groot verschil in scripts en andere elementen. Zo is het noemen van een script naar “player” vrij zinloos aangezien dit net iets moet doen. Je kan het dus beter “kill_player” noemen. Er zijn verder ook game-ontwikkelaars die er voor kiezen om in plaats van een voorvoegsel een achtervoegsel te gebruiken. Dus in plaats van “obj_player” gebruiken ze “player_o” of iets gelijkaardig. Het voordeel van de laatste is dat je prima “player” kunt intikken en je vervolgens kan kiezen tussen het object en de sprite. Om na te gaan dat GameMaker zich nergens bij kan vergissen kan je klikken op Scripts (helemaal bovenaan, boven de knoppenbalk en vervolgens kan je klikken op “Check Resource Names”.
11
Games maken met GameMaker
© Bjarno.be 2012
WAT IS HET VERSCHIL TUSSEN INSTANTIES EN OBJECTEN Hierboven las je mij praten over objecten, maar je las niets over instanties. Je kan instanties zien als een soort van “kind” van een bepaald object. Een instantie erft alle eigenschappen over van een bepaald object en zal zich hier aan houden. Je ontwerpt een ouder (object) om daarmee instanties mee te veranderen. Je kan dus een vijand maken in de object. Maar als je dit object plaatst in een room zal deze een instantie zijn van dat object. Je kan hierna prima het object nog aanpassen, want alle bestaande instanties van dat type object zullen deze eigenschappen vervolgens overnemen. Als je een object verwijdert zullen ook alle instanties van dat object uit alle rooms verwijderen. Laat je niet vangen en weet dat er hiertussen een groot verschil is.
EEN SPELCONCEPT VERZINNEN De eerste stap voor je een spel maakt is het verzinnen van een zogenaamd spelconcept. In dit onderdeel voor het maken van en spel ben je bezig met te bepalen wat we gaan maken en hoe we dit gaan aanpakken. Je denkt hierbij nog niet aan praktische zaken, zolang je rekening houdt met het feit dat het maken van een online game zeker nog niet gaat lukken. Voor ons eerste spel gaan we een spel maken waarbij de speler muntjes moet verzamelen voor een hogere score te krijgen. Dit is een eenvoudig concept waar we later nog op gaan uitbreiden. We gaan het concept nog niet te uitgebreid maken zodat we stapje voor stappen nieuwe dingen kunnen toevoegen aan het spel. Deze vorm van een spelconcept verzinnen helpt ook bij het maken van een opbouwende gameplay. Deze term zegt dat je spel niet meteen moeilijk begint maar ook eerst eenvoudig het basisconcept uitlegt en dan nieuwe dingen toevoegt.
EEN SPELER TOT LEVEN WEKKEN Het maken van een nieuw onderdeel in een spel is vrij eenvoudig. Zolang je het verschil onthoud tussen alle verschillende elementen. Als je dit niet meer 100% weet, aarzel dan niet om eens terug te lezen. Het eerste wat we gaan doen is het maken van een sprite. Voor onze speler gaan we een vrij eenvoudige sprite maken. Klik op het rode pacman-icoontje ( ) in de knoppenbalk. Een nieuw venster zal verschijnen in de werkruimte. Dit venster kan er mogelijk anders uitzien als je niet met de eenvoudige versie werkt. Maar momenteel is dit voldoende. Klik op het icoontje “Load Sprite” en een nieuw venster zal openen voor een afbeelding te openen. Dit zal standaard in een map openen met 12
Games maken met GameMaker
© Bjarno.be 2012
standaard Game Maker sprites die je vrij kan gebruiken in je spel. Open hierin de map “Bouncing Balls”. Hierin zitten tal van verschillende sprites. We zijn hier op zoek naar een sprite voor onze speler. We kiezen voor de voetbal als speler, dit bestand noemt “ball_soccer”. Open dit bestand en dit zal ingesteld zijn voor deze sprite. Als je deze sprite niet kunt vinden kijk dan achteraan in het deel der vragen. Hier staat hoe je naar deze voorbeeldenmap kunt navigeren om de sprite te vinden! We hebben echter nog geen naam gegeven aan deze sprite. Momenteel noemt deze sprite “sprite0”. Het is een naam die weinig zegt dus ik raad het aan om te hernoemen naar “spr_player”. Selecteer de tekst “sprite0” en typ vervolgens de nieuwe naam. Meer moeten we momenteel nog niet doen. We hebben een afbeelding ingesteld voor de speler maar we hebben nog niets waar de speler van je spel deze voetbal mee kan besturen. We moeten dus een object maken. Klik op het object-icoontje ( ) en een ander venster zal openen. Dit is waar de magie voor het maken van een spel eigenlijk zit. Het eerste wat we gaan doen is die onnutige naam “object0” veranderen. Hernoem “object0” naar “obj_player” op dezelfde manier als je hebt moeten toepassen voor de sprite. Dit venster is echter zo opgedeeld dat er een nieuwe onderverdling noodzakelijk is. Helemaal links heb je de eigenschappen. Hiermee kan je basisinformatie geven over dit object zoals de naam, de sprite en of hij zichtbaar en solide moet zijn. Daarnaast (rechts) is er een overzicht van de gebeurtenissen, die momenteel nog leeg zijn. Je kan nieuwe gebeurtenissen toevoegen en verwijderen. Rechts van de gebeurtenissen kan je de acties van deze gebeurtenissen bekijken. Zo is elke gebeurtenis kopeld aan een of meerdere reacties. Rechts naast de acties is de actiebalk. Je kan knoppen uit de actiebalk slepen naar de acties om ze daar op toe te passen. Eerst gaan we er voor zorgen dat “obj_player” als sprite “spr_player” heeft. Dit doe je door op het icoontje onder sprite te klikken en hier “spr_player” aan te duiden. Vervolgens gaan we instellen dat de speler moet bewegen. We gaan beginnen met slechts één richting en gaan zo de overige 3 mogelijkheden afgaan. We beginnen met naar rechts bewegen. De eerste vraag die we ons moeten stellen hierbij is “wanneer moet een instantie van obj_player” bewegen naar rechts. Het antwoord? Als hij op de rechterpijltoets drukt. Dus we moeten bij de gebeurtenis “de speler drukt op de rechterpijltoets” instellen dat hij als actie naar rechts beweegt. Klik op de knop “Add Event” (“Gebeurtenis toevoegen”). Een nieuw venster zal tevoorschijn komen met tal van mogelijkheden. We zijn geïnteresseerd in het toetsenbord. Je zal echter zien dat er 3 verschillende toetsenbordgebeurtenissen zijn. De gebeurtenissen van key press en key release zullen worden uitgevoerd als de speler op de toets drukt, maar enkel als hij hiermee begint of als hij eindigt. De gewone “keyboard” zal echter constant uitgevoerd worden , zolang de toets wordt ingedrukt. 13
Games maken met GameMaker
© Bjarno.be 2012
Aangezien naar rechts bewegen een actie is die constant moet uitgevoerd worden zijn wij dus meer geïnteresseerd in dat laatste. Druk dus op de Keyboard-knop en kies in het volgende menu voor de optie” right”. Een nieuwe gebeurtenis is zonet toegevoegd. We hebben nu tegen GameMaker duidelijk gemaakt dat zolang er op de rechterpijltoets wordt gedrukt hij iets moet uitvoeren. Nu moeten we alleen nog duidelijk maken wat. Sleep het icoontje
onder het tabblad “move” onder de actions (actiebalk). Meteen na het loslaten van de linkermuisknop komt er een nieuw venster tevoorschijn waar je kunt instellen naar waar er bewogen moet worden. Kijk eerst naar het selectievakje Relative onderaan dit venster. Relative, of in het Nederlands, relatief zorgt ervoor dat hij absoluut naar een plaats moet, of relatief. Met absoluut zeggen we “ga naar deze positie”, maar met relatief bedoelen we “beweeg zoveel in die richting en zoveel in de andere richting voor je nieuwe positie”. Aangezien we naar rechts willen bewegen ten opzichte van ons vorige punt is het een goed idee om relatief aan te kruisen. Vervolgens moeten we nog weten in welke richting. De manier waarmee plaatsen worden bepaald van instanties gebeurd met een x-waarde en een ywaarde. X is de waarde die een positie horizontaal heeft. Een grotere x betekent dat hij meer naar rechts gaat. De y-waarde zegt hoe een instantie verticaal ligt... een grotere y betekent dat hij meer naar onder gaat. We willen dat onze speler naar rechts beweegt dus moeten we naast de x een getal invullen. Dit het getal dat bepaalt hoe snel de speler naar rechts beweegt. Elke keer als deze actie wordt uitgevoerd wordt deze waarde bij opgeteld. Ik raad een waarde zoals 2 of 4 aan. De instelling “Applies to” bovenaan is momenteel nog niet belangrijk. Deze mag je op “Self” laten staan. Nu moeten we nog hetzelfde doen voor links, boven en onder. Naar links bewegen betekent dat we de x-waarde moeten verkleinen dus we kunnen hier -2 of -4 invullen (kies wel dezelfde waarde als bij naar rechts bewegen, tenzij je wilt dat je speler sneller naar links mag dan naar rechts). Voor naar boven en onder moet de x-waarde relatief gezien nul blijven. De y-waarde moet echter anders zijn. Voor naar onder te gaan moet je een hogere y-waarde krijgen dus kan je hier een 2 of een 4 invullen. Voor naar boven te gaan moet je een lagere y-waarde krijgen dus hier kan je een -2 of een -4 invullen. Afhankelijk van de snelheid.
DE SPELER EEN RUIMTE GEVEN Als je speler klaar is wordt het tijd voor hem in een “level” te stoppen. Maak dus een nieuwe room aan ( ). Opnieuw is dit onderverdeeld in enkele gebieden. Zo heb je links een overzicht voor instellingen aan te passen en nieuwe dingen
14
Games maken met GameMaker
© Bjarno.be 2012
toe te voegen. En rechts heb je een overzicht van je room. Je kan rooms, net zoals sprites en objecten ook een eigen naam geven. Deze room noemen we “rm_level1” aangezien dit binnenkort het eerste level gaat zijn waar ons spel rijk aan zal zijn. We gaan nu de speler toevoegen. Dit doe je door eerst na te gaan of je het juiste object gaat plaatsen in de room. Klik op het grijze gedeelte om het juist object te selecteren. Standaard zal deze op het laatste object staan, wat nu betekent dat dit een voetbal is en dus “obj_player” is. Klik nu ergens in de room om je voetbal te plaatsen. Je kan meerdere instanties plaatsen van een object in een room. Maar aangezien in ons huidig spelconcept niets vermeld is over meerdere spelers gaan we hier niet verder op in. Je speler heeft nu een plaats in zijn eigen room gekregen. Tijd dus om te testen dat alles werkt.
DE EERSTE KEER TESTEN Voor we ons spel gaan testen gaan we het eerst opslaan. Herinner je je die projectenmap nog. Klik boven de knoppenbalk op “File” en kies daarna voor “Save”. Een opslaan-dialoog zal tevoorschijn komen. Navigeer naar de map die we toen gemaakt hadden (“mijn eerste game”) en sla het spel vervolgens op naar een naam zodat je deze later sneller kunt terugvinden. Het opslaan van je spel is, in tegenstelling tot andere programma’s, niet verplicht voor het te kunnen testen. Ik raad echter wel aan om regelmatig je spel op te slaan. We gaan ons spel testen op fouten (ook wel “bugs” genaamd in het Engels). We doen dit door in de knoppenbalk te klikken op het groene pijltje ( uitvoeren.
). Dit zal je spel samenbundelen en vervolgens
Naast het groene pijltje is er ook een rood pijltje ( ). Dit is echter meer bedoeld voor moeilijkere games en laat je toe voor sneller fouten op te sporen in moeilijke games. We hebben er echter momenteel nog geen nood aan en laten deze toets ook met rust. Als je spel is opgestart kan je bewegen met de pijltjes, zoals we hebben ingesteld. Als je echter merkt dat iets niet juist loopt dan zal je dit moeten verbeteren. Controleer dus de waardes die achter de “jump to position” zitten dat ze correct zijn. Mocht je er niet uitkomen kan je altijd eerstespel_01.gm81 openen in de projectenmap om je fout op te zoeken of om hier mee verder te gaan. Als alles goed gaat hebben we een mooi begin gemaakt voor ons spel. Tijd dus om het uit te breiden naar het verzamelen van muntjes...
15
Games maken met GameMaker
© Bjarno.be 2012
GOUD! OVERAL GOUD! Zoals we al eerder hebben besproken in ons concept is het verzamelen van muntjes. Muntjes moeten punten geven en moeten uiteindelijk een score kunnen bepalen. Het eerste wat wij gaan doen is het maken van de sprite voor ons muntje. Maak een nieuwe sprite aan en zoek in de map “Maze – Platform” naar een bestand genaamd coin1. Noem de sprite voor je muntje dus “obj_coin” of “obj_muntje”. Engelse termen zijn vaak iets duidelijker in game design. Je kan natuurlijk zelf andere namen geven, maar dan moet je wel in de rest van je spel hier rekening mee houden dat je hiervoor een andere naam gebruikt. Net zoals toen we een sprite maakte voor de speler, en vervolgens een object gaan we nu hetzelfde doen: een object maken voor de speler. Druk op het icoontje voor een nieuw object te maken in de knoppenbalk. Het reeds bekende venster zal verschijnen. Hernoem dit nieuwe object naar “obj_coin” of “obj_munt”. Als je je sprite reeds “spr_munt” genoemd hebt kan je beter je object “obj_munt” laten noemen. Dit is niet verplicht maar dit zorgt voor een duidelijker overzicht aan welke objecten je welke sprites toewijst. Na het hernoemen wijs je dus de juiste sprite toe: “spr_coin”. We hebben nu een object gemaakt en kunnen deze in de room plaatsen. Open opnieuw “rm_level1” en kies links voor het plaatsen van de muntjes, als dit nog niet het geval is. Plaats een tiental muntjes in de room. En sla je spel eens op en test het nog eens. Beweeg je voetbal over het scherm heen en je zal zien dat er nog niets gebeurd als je je muntstukje aanraakt. Tijd dus om hier verandering in te brengen.
BOTSEN MET MUNTJES Om na te gaan of je speler een muntstuk aanraakt moeten we nakijken of ze “botsen”, of minstens “over elkaar heen gaan”. In het engels worden botsingen ook wel “collisions” genoemd en dat is ook wat we moeten gebruiken in GameMaker. Dus de gebeurtenis moet zijn “bij een aanraking met het muntje” moeten er bepaalde stappen gebeuren. Het eerste dat moet gebeuren is dat de score hoger moet worden. Bijvoorbeeld met 10 punten. Als we hierna niets doen zou voor elke keer dat er gebotst wordt 10 punten worden bij opgeteld. Ofwel als je speler op het muntje staat blijft hij daar staan en zal hij blijven botsen en dus ook blijven 10 punten krijgen. We moeten er dus ook voor zorgen dat nadat het muntje wordt aangeraakt het muntje verdwijnt zodat je niet opnieuw 10 punten kan toegewezen worden. Het eerste wat we gaan doen is terug “obj_player” openen. Voeg een nieuw event toe en kies hier voor “Collision”. Een menu toont vervolgens een lijst met alle objecten die momenteel in je spel zitten. We willen nakijken of “obj_coin” wordt aangeraakt dus kiezen we hier voor “obj_coin”. We hebben nu de gebeurtenis toegevoegd. Nu gaan we onze eerste actie uitvoeren... Onze eerste actie is het verhogen van de score. Ga helemaal rechts naar het tabblad “score”. We zoeken vervolgens naar het icoontje met
16
. Dit
Games maken met GameMaker
© Bjarno.be 2012
icoontje wordt gebruikt voor de score aan te passen. Als je je muis eventjes op dit icoontje laat zweven zal er “Set score” worden weergegeven. Sleep dit icoontje naar de acties en een nieuw venster zal verschijnen. In dit nieuwe venster kan je een nieuwe score toewijzen. We willen dat de score met 10 omhoog gaat dus we typen in het invoervak naast new score het cijfer “10”. Aangezien we niet willen dat voor elke keer dat er een muntje opgepakt wordt, de score letterlijk op 10 gaat staan moeten we ook hier opnieuw het selectievakje naast Relative aanduiden. Dat zorgt ervoor dat je score met 10 vermeerderd ten opzichte van de vorige score. Nadat dit voltooid is kan je je spel testen... Je zal de score zien verschijnen in het titelvenster. Zoals ik al zei blijft de score oneindig omhoog gaan. Sluit je spel af en ga terug naar “obj_player”. We moeten het muntstukje dus verwijderen als we dit doen. De instantie waarmee er “gebotst” wordt moet dus verwijderd worden. Onder de “Set Score” zet je een nieuwe actie met het prullenbak-icoontje . Je kan dit icoontje vinden onder het tabblad “main1”. Dit icoontje zal de instantie verwijderen. Er zal na het slepen, net zoals bij alle andere acties, opnieuw een instelvenster verschijnen. De enigste optie die we hebben is bovenaan het “Applies to”-icoontje. We hebben hier 3 keuze’s: Self – Of de instantie zelf. Als we deze optie aanduiden dan zal er bij het aanraken van het muntje de speler verdwijnen. Dit hebben we dus niet nodig. Other – Deze optie zorgt ervoor dat de andere instantie, bijvoorbeeld van een collision, verwijderd wordt. Object – Deze keuze laat je toe om een bepaalde actie met alle instanties van een bepaald object toe te wijzen. Als je hierop klikt komt daarnaast een menu te staan waar je dit object kunt aan toewijzen. We hebben de optie “other” nodig. Als we het selectievakje naast “object” zouden aanklikken dan zouden opeens alle muntjes verdwijnen. Selecteer “other” en druk linksonder op “Ok”. Vervolgens sla je je spel op en test je het. Als er iets niet goed gaat kan je proberen je fout terug op te sporen door na te gaan waar het fout zit. Als je er niet aan uit komt kan je eerstespel_02.gm81 openen in de projectmap. Vergelijk de verschillende versies en probeer zo de fout te achterhalen.
EEN EIGEN SPRITE MAKEN VOOR EEN MUUR Momenteel hebben wij een spel waar je enkel muntjes kunt verzamelen. Er is eigenlijk niets dat speler belemmert. Verder heb je misschien ook gemerkt dat je buiten het scherm kunt gaan. We gaan dit dus oplossen door muren toe te voegen.
17
Games maken met GameMaker
© Bjarno.be 2012
Eerst gaan we een sprite maken voor onze muur: Maak een nieuwe sprite aan, op de inmiddels vertrouwde manier, en noem deze “spr_wall”. Maar in plaats van op de knop “Load Sprite” te klikken klik je nu op “Edit Sprite”. Want deze sprite gaan we zelf maken. Een nieuw venster zal tevoorschijn komen waarmee je een sprite mee kunt bewerken of kunt aanmaken. Helemaal bovenaan heb je een knoppenbalk met enkele symbolen. We klikken eerst op het tweede symbool (het symbool met een lege pagina). Een venster zal verschijnen waar we de afmetingen voor onze muur kunnen invoeren. Standaard staan deze op 32 pixels breedte (width) en 32 pixels hoogte (height). Deze waarden zijn voldoende, aangezien ons muntje en onze voetbal dezelfde afmetingen hebben. Druk op “OK”. Er is nu een plaatje aangemaakt voor je sprite. Sprites kunnen namelijk meerdere afbeeldingen bevatten. Op die manier kunnen ze bijvoorbeeld een animatie bevatten. Onze muur gaat echter 1 “subimage” nodig hebben dus kunnen we verder. Een subimage is een afbeelding van een sprite. Een sprite kan namelijk uit verschillende afbeeldingen bestaan. Zo kan je bijvoorbeeld een animatie maken. Dubbelklik nu op de nieuwe afbeelding en een nieuw venster zal openen. Dit is het tekenprogramma van GameMaker. Het werkt een beetje zoals de oude Microsoft Paint behalve dat deze betere ondersteuning heeft voor het maken van graphics voor games. Eerst gaan we onze sprite opvullen met een kleur. Je kan helemaal rechts informatie over de kleur instellen. We kiezen hiervoor voor een donkerblauwe kleur en vullen deze met het emmertje (dat je links kan vinden) door te klikken in het middelste gedeelte bij de vierkante ruitjes. Deze vierkante ruitjes duiden transparantie aan. Dat betekent dat ze niet zichtbaar zijn in het uiteindelijke spel en ze alles doorlaten. Afbeeldingen in computers kunnen alleen maar afmetingen in rechthoeken hebben met een bepaalde breedte en hoogte. Als je ronde figuren wilt hebben (zoals de voetbal die reeds in ons spel aanwezig is) dan moet je de randen die niet gebruikt worden transparant maken. Na het vullen kan je met het penseel (links) details aanbrengen zoals een extra rand of een schaduw. Ikzelf verkies voor het gewoon in één kleur te laten en op het vinkje te klikken linksboven. Bij het afsluiten komt het vorige venster terug tevoorschijn en zie je dat de afbeelding nu donkerblauw is gekleurd. We klikken nogmaals op het vinkje om het bewerken volledig af te sluiten.
DE MUUR LATEN OMZEILEN We hebben nu een sprite gemaakt voor onze muur, maar we hebben nog niets waarmee de speler mee gehinderd kan worden. We moeten dus een object maken. Maak een nieuw object aan genaamd “obj_wall” en selecteer de juiste sprite voor dit object. We zijn al bijna klaar voor “obj_wall” aan te maken. Maar we moeten nog één ding aanpassen. We moeten 18
Games maken met GameMaker
© Bjarno.be 2012
het vakje voor “solid” aanvinken. Solid is een begrip voor GameMaker dat zegt “je kan er niet door”. Dat is echter alleen van toepassing als we hier ook gebruik van maken. Sluit de object editor af door op “OK” te klikken en open “obj_player” terug opnieuw. Wat we nu moeten maken is een systeem dat VOOR we bewegen, het nakijkt of de plaats waar we naartoe gaan wel vrij is en geen solide instantie heeft. We moeten dus alle huidige bewegingsgebeurtenissen bewerken. Wat we dus moeten maken is een voorwaarde voor we gaan bewegen. Zo’n voorwaarde kan alleen waar of onwaar zijn. Om na te gaan of een bepaalde plaats vrij is voor op te plaatsen kan je het icoontje gebruiken. De eerste gebeurtenis die we gaan bewerken is het bewegen naar rechts. Bewerk dus deze gebeurtenis door er in de gebeurtenissenbalk op te klikken. Sleep vervolgens de actie, die je kan vinden onder het tabblad “control” boven de huidige actie. Een nieuw venster zal tevoorschijn komen. We moeten nakijken of de plaats vrij is 4 pixels verder is dan de huidige plaats. Vul dus onder x ‘4’ in en duid relative aan. Vergeet niet dat als je snelheid ‘2’ gebruikte dat je hier dezelfde waarde moet gebruiken. Anders kijken we op een verkeerde plaats na! We kijken alleen na op objecten die solide zijn en het moet vrij zijn dus blijven we van de optie “NOT” af. Klik op “OK” om af te sluiten. Wat er nu gebeurt is een opeenvolging van verschillende gebeurtenissen. Zo gaat nu eerst, als we de pijltje naar rechts toets ingedrukt hebben, nagekeken worden of de nieuwe plaats vrij is. Als die vrij is wordt de eerste actie daaronder uitgevoerd. Als die niet vrij is wordt die overgeslagen. Hetzelfde moeten we nu ook doen met naar links bewegen, naar boven bewegen en naar onder bewegen. De instellingen die we moeten gebruik zijn altijd hetzelfde behalve de x- en de y-waarde. Deze moeten hetzelfde zijn als de nieuwe plaats waar naar bewogen moet worden. Vergeet niet om “Relative” aan te duiden. Als dit gebeurd is wordt het tijd om ons level eens te bewerken. Tussen de munten door plaatsen wij enkele muren. Zorg er wel voor dat er nog een manier is om naar alle muntjes te gaan. Als je niet wilt dat de speler buiten de room beweegt kan je een rand rond de room zetten. Kijk bijvoorbeeld naar de afbeelding hieronder hoe je doolhof er kan uitzien.
19
Games maken met GameMaker
© Bjarno.be 2012
EEN ROOM BEWERKEN Het bewerken van een room kan soms vreemd werken. Maar echter gaat dit vrij eenvoudig. Onderstaande handigheden zijn manieren hoe je veel sneller nieuwe dingen kunt plaatsen in je room en ze ook op orde houd. Als je lange lijnen vol met dezelfde objecten wilt maken (zoals hierboven de zijkanten van de room) kan je gebruik maken van een toetsenbordcombinatie en de muis. Als je bijvoorbeeld SHIFT indrukt voor je je muisknop indrukt en je klikt en “tekent” vervolgens naar boven terwijl je SHIFT ingedrukt houdt zal je zien dat de nieuwe objecten geplaatst worden in de room zonder dat je elke keer kan klikken. Als je een bestaand object wilt verplaatsen hou je het best CTRL ingedrukt en versleep je een instantie naar een nieuwe plaats. Je kan ook instanties verwijderen. Houd CTRL of SHIFT ingedrukt terwijl je je rechtermuisknop gebruikt. Als je geen van deze toetsen gebruikt dan zal je bij de rechtermuisknop een menu krijgen waarmee je bepaalde eigenschappen van de instantie kunt mee aanpassen.
Als je room is gemaakt wordt het terug tijd om te testen. Als je merkt dat er iets niet goed gaat controleer dan dat alle voorwaarden voor het bewegen goed zijn ingesteld en dat overal relative is aangeduid. Als je de oplossing voor je probleem niet vind kan je in de projectmap eerstespel_04.gm81 openen. Dit is de volledige versie van het spel dat we momenteel aan het maken zijn tot het plaatsen van de objecten in de room.
20
Games maken met GameMaker
© Bjarno.be 2012
JE EERSTE SPEL UITBREIDEN Je hebt in het vorige hoofdstuk geleerd om een spel te maken waarbij de speler muntjes moet verzamelen. Echter na het verzamelen van de muntjes is er niets wat de speler kan doen in het spel buiten doelloos rondwandelen tot hij het spel afsluit. Je moet dus je eerste spel uitbreiden met meerdere levels waar er meer te zien valt zodat het spel uitdagender wordt.
WAT LEREN WE IN DIT HOOFDSTUK? In dit hoofdstuk leren we:
Het level veranderen Het maken van een vijanden Werken met geluid Werken met achtergronden Werken met de ingebouwde helptekst
LEVELS VERBINDEN MET ELKAAR Het eerste dat we gaan doen is een tweede level maken. Dit level bevat dezelfde objecten als het vorige level maar ze zijn op een andere manier geplaatst. Hoe je alles plaatst in dit level is je eigen keuze. Maak een nieuwe room aan met het icoontje in de knoppenbalk ( ) en vul het opnieuw met een speler, een tiental muntjes en een stel muren. Net zoals je bij het eerste level deed. De naam voor deze room stel je best in naar “rm_level2”. Zodat je dit sneller kunt terugvinden. We moeten nu een manier vinden voor na het uitspelen van level 1, dat we naar level 2 gaan. Dit moet gebeuren als dat level is uitgespeeld. Een level is uitgespeeld als het aantal muntjes die nog in de room aanwezig zijn gelijk is aan 0. Dat gaan we nu programmeren. Open “obj_player” . We moeten nakijken of het aantal muntjes gelijk is aan nul. Het aantal muntjes dat aanwezig is veranderd in het begin van de room (namelijk van geen naar het aantal muntjes in bijvoorbeeld rm_level1) en dit zal altijd hoger zijn dan 0. Als we echter een muntje aanraken wordt het muntje verwijderd. We moeten dus nakijken of het aantal instanties na het verwijderen gelijk is aan 0 of niet. Hiervoor bestaat er het icoontje dat je kan vinden in het tabblad “control”. Dit icoontje kijkt na of het aantal instanties van een bepaald object overeenkomt met een bepaalde voorwaarde die je zelf kan instellen. Je kan nakijken of het gelijk is aan een getal of groter/kleiner is. Na het slepen van dit icoontje onder de laatste actie (die het muntje verwijderd) krijgen we een venster te zien met alle instellingen voor dit icoontje. We kunnen hier kiezen van welk
21
Games maken met GameMaker
© Bjarno.be 2012
object we het aantal bestaande instanties gaan tellen in de huidige room, het getal en wat er moet nagekeken worden. We gaan nakijken of het aantal muntjes gelijk is aan nul om vervolgens een reeks acties uit te voeren. Duid dus naast “object” aan dat je wilt nakijken op “obj_coin” en de overige instellingen laat je zo. Je wilt namelijk nakijken of het aantal gelijk is aan 0 en de acties die na deze volgen moeten uitgevoerd worden als deze voorwaarde wordt voldaan, dus moeten we “NOT” uitlaten. Onder deze voorwaarde moeten we zeggen wat we gaan doen. We laten eerst een bericht zien en gaan vervolgens naar de volgende room. We laten een bericht zien waarbij we de speler feliciteren en we gaan vervolgens naar de volgende room. De actie voor een bericht is het icoontje met een tekstballon ( ). Dit icoontje kan je vinden onder het tabblad “main2”. Na het slepen onder onze voorwaarde kunnen we een tekst typen. We typen hier dus U hebt het level uitgespeeld!. Druk vervolgens op “OK”. Daarna moeten we naar de volgende room gaan. Hiervoor bestaat er een icoontje dat je kan vinden onder het tabblad “main1” ( ). Dit icoontje heeft als enigste instelling onder welke “transition” (of “Overgang”) dit moet gebeuren. Je kan kiezen voor geen effect of voor een van de standaardeffecten. Kies hier bijvoorbeeld voor “Fade out and in” (de laatste optie).
HET SPEL TESTEN EN FOUTEN OPLOSSEN Nu gaan we ons spel opnieuw testen. We starten het spel op en lopen vervolgens naar een muntje. Vanaf het moment dat je 10 punten erbij krijgt komt echter de volgende room al tevoorschijn, terwijl er nog negen resterende muntjes te verzamelen waren. Dat komt omdat de actie die na een voorwaarde komt alleen uitgevoerd wordt als er aan die voorwaarde voldaan wordt. Als je dus meerdere acties hebt met een voorwaarde kan je beter al je acties groeperen. Hiervoor zijn er de symbolen
en
die je kan vinden onder het tabblad “control”. Plaats
net onder je
voorwaarde en plaats je onder de laatste actie die aan deze voorwaarde moet voldoen. Vervolgens moet je venster er ongeveer uitzien zoals dit:
22
Games maken met GameMaker
© Bjarno.be 2012
De voorwaarde is nu van toepassing op zowel het bericht, als naar de volgende room gaan. Probeer je spel nu terug te testen. Je zal merken dat je nu pas naar het volgende level gaat als je alle muntjes hebt verzameld en je zal duidelijk een bericht krijgen. De vreugde voor een werkend spel is echter van korte duur. Want als je level 2 hebt uitgespeeld krijg je in plaats van een foutje in je spel (zoals ons vorig probleem dat we zonet hebben opgelost) een foutmelding (of in het Engels een “error”).
GameMaker wilt namelijk naar de volgende room gaan, maar na “rm_level2” heb je geen room gemaakt. Je kan een nieuwe room aanmaken maar als je deze uitspeeld krijg je opnieuw dezelfde foutmelding. Klik linksonder op “Abort” (“Afbreken”) en we gaan dit probleem oplossen. We gaan er van uit dat als er geen rooms meer zijn, het spel uitgespeeld is. Gelukkig heeft GameMaker een ingebouwde voorwaarde om te controleren of een volgende room wel bestaat. Dit icoontje vindt je in de buurt van het icoontje om naar de volgende room te gaan, maar zit in een achthoek (
). Dit blokje heeft geen instelling en zal gewoon mee in de acties komen te staan. Sleep
dus dit blokje net onder de zodat we een verschil maken tussen de acties die moeten uitgevoerd worden als het level is uitgespeeld en de acties die moeten uitgevoerd worden als het hele spel is uitgespeeld. 23
Games maken met GameMaker
© Bjarno.be 2012
Als de volgende room bestaat, moeten we een bericht laten zien dat het level is uitgespeeld en naar de volgende room gaan, als deze niet bestaat moeten we een bericht laten zien dat het spel uitgespeeld is en wordt het spel afgesloten. We moeten hier echter een voorwaarde in en voorwaarde zetten. Plaats opnieuw
en
rond de bestaande 2 acties die moeten plaatsvinden voor als er een
volgende room bestaat. Hieronder gaan we echter iets nieuw plaatsen, de zogenaamde “else” of . Dit is eigenlijk hetzelfde als de vorige voorwaarde, maar dan net als die niet waar is. “Else” staat dus voor “in alle andere gevallen”. Dus als er geen room is wordt het stukje onder “else” uitgevoerd. Net zoals bij een gewone voorwaarde werkt “else” alleen op de eerstvolgende actie. Tenzij je gebruik maakt van een code blok zoals we eerder al gebruikt hebben. Plaats onder de “else” opnieuw
en
. Er moeten nog geen acties tussen deze pijltjes staan. Want die gaan we nu toevoegen. We doen nu hetzelfde als we een muntje aanraakten: een bericht laten zien. Echter, plaatsen we nu een bericht dat de speler het spel heeft uitgespeeld. Gebruik bijvoorbeeld een tekst zoals: Proficiat! U heeft het spel uitgespeeld!. De actie daarna is echter niet naar de volgende room gaan, maar het spel afsluiten. Daarvoor is er een icoontje ( ) dat het spel afsluit. Je kan dit icoontje vinden onder het tabblad “main2”. De uiteindelijke acties bij het aanraken van een muntje zullen er dus ongeveer zo uitzien:
Je kan nu nogmaals je spel testen en je zal zien dat je spel uitstekend werkt en er geen fouten meer zijn. Het process dat we zonet gedaan hebben was “debuggen” of met andere woorden: fouten verwijderen uit het spel. Door fouten te maken heb je nu ook geleerd hoe het nu niet moet.
24
Games maken met GameMaker
© Bjarno.be 2012
Mochten er nog steeds fouten in je spel zijn kan je de huidige vooruitgang terugvinden onder het bestand eerstespel_05.gm81 in de projectmap.
MASKERS INSTELLEN VOOR OJECTEN Als je je spel even hebt zitten testen, zal je merken dat als je voor de helft naar een blok toeloopt, je “ongeveer” vast loopt te zitten. Je moet dus terug bewegen omdat je enkele pixels groter wordt. We kunnen dit probleem zeer eenvoudig oplossen. We moeten de bal een nieuwe vorm geven, bijvoorbeeld de vorm van een vierkant. Dit zorgt er voor dat je spel je speler als een vierkant beschouwt in plaats van een cirkel. Om dit op te lossen moet je wel uit de simple modus van GameMaker gaan en naar de geavanceerde modus. Geen nood als dit je afschrikt. Je kan eenvoudig overschakelen, een aanpassing maken en terug naar de eenvoudige versie gaan: Klik op “File” en vervolgens klik je op “Advanced mode”. Er zal een bericht komen dat je spelbestand afsluit. Sla dus eerst op en schakel vervolgens deze mode in. Open daarna je spel opnieuw. Je kan nu de juiste optie vinden voor het instellen van het masker. Open “obj_player. We moeten een masker instellen voor ons object. Het gebruiken van en rechthoekig masker gebeurd door een nieuwe sprite aan te maken of een andere sprite te kiezen. Standaard staat het masker op de sprite. Als je echter wilt dat het masker anders wordt moet je het masker aanpassen. Gelukkig voor ons hebben we reeds al een rechthoekig masker. Dat is namelijk de sprite die we hebben toegewezen aan onze muur, dus “spr_wall”. Wijs dus naast het masker “spr_wall” toe als masker. Deze optie vind je naast “mask”. Daarna kan je terug naar de simple modus gaan van GameMaker. Dat doe je door opnieuw naar “file” te gaan en vervolgens te klikken op “advanced mode” om de advanced modus uit te schakelen Dezelfde boodschap verschijnt opnieuw. Sla dus eerst je spel op en schakel de “advanced mode” uit. Open vervolgens je spel opnieuw. Ook al is deze optie niet meer zichtbaar in de vereenvoudigde mode van GameMaker. De optie blijft bestaan. Je mag ook blijven werken in deze geavanceerde mode, maar we zullen veel opties nog niet meteen nodig hebben die deze mode ons te bieden heeft.
EEN VIJAND MAKEN We hebben een speler, we hebben muntjes, we hebben muren. Maar we hebben nog niets dat ons in de weg staat als we op zoek zijn naar ons laatste muntje om het spel uit te spelen. Vijanden komen regelmatig voor in spellen. De eerste “vijand” die we gaan maken is niet meteen een actieve vijand. Maar het spel wordt meteen al moeilijker. De vijand waar ik aan dacht is een bom. Het eerste wat we gaan doen is een nieuwe sprite maken genaamd “spr_bomb”. In tegenstelling tot “spr_wall” gaan we terug opnieuw naar de standaardsprites die aanwezig zijn bij GameMaker. In
25
Games maken met GameMaker
© Bjarno.be 2012
deze map vind je de map “Maze - Platform”. Hierin vind je een afbeelding van een bom. Open deze en gebruik deze vervolgens voor een nieuw object: Maak een nieuw object aan en noem het “obj_bomb”. Stel de sprite in en je mag terug opnieuw sluiten. Aangezien we de gebeurtenissen die gebeuren met de bom gaan regelen in “obj_player” open je terug “obj_player”. Eenmaal in “obj_player” moet je de speler laten “sterven” als hij een bom aanraakt. Doe dus hetzelfde als toen je je speler liet nakijken of hij het muntje aanraakte, behalve dat je nu niet meer moet nakijken op het muntje maar op de bom. Klik dus op “Add event”, en kies vervolgens voor “Collisions” en in het volgende menu selecteer je “obj_bomb”. Nu moeten we alleen nog bepalen wat er gebeurd als we een bom aanraken. Voor dit spel laten we de speler terug naar zijn beginpunt terugkeren en trekken we 20 punten af van zijn totaalscore. De bom die hij had aangeraakt verdwijnt echter. De acties die moeten gebeuren bij het aanraken van de bom lijken heel hard op die van het aanraken van het muntje. Namelijk punten aanpassen en de andere instantie verwijderen. Sleep uit het tabblad “score” opnieuw het icoontje voor de score aan te passen ( ). We willen 20 aftrekken van de huidige score dus moeten we in plaats van ‘20’ in het vakje te typen ‘-20’ typen. Vergeet wel niet het kruisvakje voor “relative” aan te vinken. Anders wordt de score bij het aanraken van de bom altijd naar -20 gezet Als je “relative” hebt aangevinkt dan wordt een score van 50 punten, gewoon 30 punten. Daarna gebruiken we voor doe bom te verwijderen. Vergeet niet om “applies to” naar “other” te zetten. Ook al gaat de speler sterven willen we eerst de bom verwijderen. Nu moeten we alleen de speler terug naar zijn beginpositie zetten. Het icoontje , dat je kan vinden onder het tabblad van “move” sleep je onder de huidige laatste actie. Net zoals bij het verwijderen van een instantie heeft het terugspringen naar de beginpositie geen extra instellingen buiten welk object, of welke instanties van objecten, terug moeten springen. Stel dit in op self, zoals het al staat, en druk vervolgens op “OK”. De volgende stap is het toevoegen van de bommen aan de levels. Voor het maken van een opbouwend spel dat langzaam dingen toevoegt is het geen goed idee om meteen al bommen in het begin van het spel te zetten. Je kan beter de nieuwe bommen plaatsen in “rm_level2”. Ik heb 2 bommen geplaatst vlakbij 2 muntjes. Je kan eventueel de opbouw van dit level overnemen of zelf enkele bommen plaatsen.
26
Games maken met GameMaker
© Bjarno.be 2012
Test vervolgens je spel en raak een bom aan. Je verliest twee punten en je gaat terug naar de startpositie. Als je het spel te eenvoudig vind kan je eventueel de code voor het verwijderen van de bommen verwijderen zodat je enkel punten verliest en naar de beginpositie gaat.
GELUIDEN TOEVOEGEN Als je nu een bom aanraakt zal de score verminderen, de bom weggaan en zal de speler terug naar zijn startpositie geplaatst worden. Er is echter niets muzikaal te horen zodat de speler weet dat de bom ontploft is. We gaan dus een geluid moeten toevoegen aan het spel. Voor we bij een bepaalde gebeurtenis een geluid willen afspelen, moeten we natuurlijk een geluid toevoegen op ons spel. In de knoppenbalk bovenaan in het hoofdscherm van GameMaker klik je op het luidspreker-icoontje ( ). Een dialoogvenster verschijnt waarmee je de instellingen voor dit geluid kunt wijzigen. Je ziet de “Load Sound” knop. Als je hierop klikt dan zal er, net zoals bij het selecteren van een sprite, een dialoogvenster verschijnen waarmee je een geluidsbestand mee kunt selecteren. Als je nog nooit GameMaker geopend hebt, kom je meteen in de voorbeelden map met bestaande geluiden en muziekbestanden. In deze map zitten tal van muziekbestanden die je kan gebruiken voor het maken van je spel. Je kan deze bestanden een voor een beluisteren, maar ikzelf vind persoonlijk het geluid “cannon.wav” het beste voor ons spel. Als je echter zelf een beter geluidsbestand vind kan je deze altijd selecteren.
27
Games maken met GameMaker
© Bjarno.be 2012
Nadat je dit bestand geopend hebt moet je het nog een naam geven. Noem het bij voorkeur “snd_explosion” of “snd_explosie”. Zoals altijd verkies ik voor de Engelstalige naamgeving. Klik vervolgens op “OK” voor het venster af te sluiten. Na het toevoegen van dit geluid aan ons project wordt het tijd om het toe te wijzen. Open opnieuw “obj_player” en bewerk het event dat gebeurd als we de bom aanraken. Onder de tab “main1” kan je een icoontje vinden voor geluid mee af te spelen ( ). Versleep het onder de laatste gebeurtenis en een instellingsvenster zal verschijnen. Selecteer in dit venster welk geluid je wil afspelen (momenteel hebben we nog maar 1 geluid!). De optie daaronder is de optie of wel dit muziekje willen laten ‘loop’en of niet. ‘to loop’ of ‘herhalen’ in het Nederlands betekent dat het muziekje terug vanaf het begin begint na het afspelen. Aangezien dit een geluidseffect is, en geen achtergrondmuziekje kan je het op de standaardwaarde ‘false’ laten staan. Klik vervolgens op de knop “OK” met het groene vinkje. ‘false’ betekent ‘onwaar’ en ‘true’ betekent ‘waar’. Test je spel door op het groene pijltje te klikken en raak in het tweede level een bom aan. Als alles goed is verlopen dan hoor je nu een explosie. Mocht dit niet zo zijn kan je het bestand eerstespel_06.gm81 openen. Dit bestand bevat het masker van de speler, de bommen en zijn explosies.
GRIJS IS SAAI, ACHTERGRONDEN ZIJN COOL! Momenteel heb je 2 levels. Beide zijn ze voorzien van een speler, muren en bommen. Maar de achtergrond is nog vrij standaard en saai. Grijs is saai en achtergronden zijn cool. We moeten dus een nieuwe achtergrond toevoegen aan ons spel. Voor we een achtergrond kunnen toewijzen aan een bepaalde room of level moeten we, net zoals bij geluiden, eerst een achtergrond toevoegen als een element van ons spel. Klik in de knoppenbalk op het icoontje voor het toevoegen van een achtergrond ( ). Noem je nieuwe achtergrond “back_background”. We gaan 1 achtergrond gebruiken voor al onze levels dus geven we het een algemene naam. Klik op “Load Background” en het dialoogvenster voor een achtergrond te kiezen komt tevoorschijn. Als dit de eerste keer is dat je op zoek bent naar een achtergrond dan kom je automatisch in de map met voorbeeldachtergronden terecht. Kies hier voor de houten achtergrond of de stenen achtergrond. Je mag echter ook een andere achtergrond nemen. Sluit het dialoogvenster door op “openen” te klikken of op het bestand te dubbelklikken en klik vervolgens op “OK”. We hebben zonet een background toegevoegd aan ons spel, nu moeten we ze alleen nog toewijzen aan onze rooms. Open “rm_level1” en klik helemaal links op het tabblad “backgrounds”. De instellingen die je hier gaat zien zien er vrij ingewikkeld uit. Maar je moet maar naar één optie op zoek gaan. Dit is de optie 28
Games maken met GameMaker
© Bjarno.be 2012
die je vind onder het selectievakje “Foregrond image”. Wat deze optie doet zullen we later zien. We zijn echter momenteel alleen geïnteresseerd in de optie daaronder. Klik erop en selecteer de achtergrond die je hebt toegevoegd in je spel. Daarna moeten we hetzelfde gaan doen voor alle andere rooms, momenteel nog maar 2. Tenzij je op eigen houtje al meerdere levels gemaakt hebt. Open dus “rm_level2”, ga naar het tabblad “backgrounds” en verander de achtergrond. De wijzigingen van de achtergrond zie je meteen ook in de room zelf. Je kan eventueel nu nog je spel testen, maar als de achtergrond goed is toegewezen aan de room zie je dit meteen al.
EEN TITELSLIDE MAKEN Een titelslide lijkt wel op een woord dat je zou gebruiken voor de eerste dia van een presentatie aan te duiden. Een titelslide kan je echter ook in het begin van je spel plaatsen waar je jou naam en de naam van het spel laat zien. En eventueel ook nog een uitleg. Het eerste dat wij gaan doen is een nieuwe room maken. We gaan echter deze room niet op het einde plaatsen. Dus na het maken van de room, op de ondertussen gekende manier, sleep je de room iets naar boven tot hij bovenaan staat. Vervolgens geef je je room een naam door helemaal links in de room-bewerker op de tab “settings” (“instellingen”) te klikken en hernoem het bijvoorbeeld naar “rm_title”. Daarna kan je een achtergrond toewijzen. Stel dezelfde achtergrond in als de achtergronden die je in je levels hebt ingesteld. Nu moeten we elementen maken voor onze room mee op te vullen. We gaan de titel van het spel tekenen en je eigen naam. We doen dit in één object. Maak een nieuw object aan door in de knoppenbalk op te klikken en hernoem dit nieuwe object naar “obj_title”. We moeten hier nu nog geen instellingen aanpassen of nieuwe events toevoegen. Daarna gaan we een nieuwe sprite toevoegen en noemen deze “spr_title”. Druk in deze bewerker op “Edit Sprite” en maak een nieuwe sprite aan met een breedte (width) van 640 pixels en een hoogte (height) van 480 pixels. Dit is de grootte van ons speelvenster. Deze informatie kan je ook zien op dezelfde plaats waar je de naam van je room kunt zetten. Dubbelklik op de afbeelding en je kan nu tekenen hoe je titelscherm er komt uit te zien. Vermeld de naam van je spel en je eigen naam. Zodat je het met anderen kunt delen en ze zien dat dit spel van jou is. Je mag je eigen naam gebruiken of een schuilnaam. Om teksten in een sprite te tekenen gebruik je het tekst-gereedschap. Helemaal links staat deze met 2 maal de letter T, eenmaal in het rood en eenmaal in het blauw ( ). Onderaan is er een button genaamd “Font” waarmee je het lettertype mee kunt aanpassen. Een nieuw venster zal openen waar je het lettertype kunt wijzigen. Ik kies voor Arial op grootte 38 in het vet. Klik vervolgens ergens in het lege gedeelte met de linkermuisknop en een pop-upvenster zal tevoorschijn komen. Hier kan je je de tekst intypen. Typ nu “Coin Collectors” (of als je een andere titel weet kan je deze ook gebruiken) en Druk op de knop met “OK”. Vervolgens kan je de tekst die je getypt hebt verslepen naar een nieuwe positie.
29
Games maken met GameMaker
© Bjarno.be 2012
Maar let op! Vanaf het moment dat je een ander gereedschap neemt, of buiten dit gebied klikt kan je dit niet meer. Nu moeten we nog een lijn tekenen onder onze tekst. Gebruik het lijntjes-gereedschap ( ) hiervoor. Vervolgens kan je links een dikte bepalen met de groottes die bestaan uit bolletjes... geen nood, we gaan hier een lijn tekenen. Eventueel kan je nog bepalen hoe de uiteindes eruit moeten zien. Het begin een pijl, het einde een pijl of allebei of gewoon geen pijl. Daaronder kan je nog “anti-alias” in of uitschakelen. Dit zorgt er voor dat schuine lijnen er beter uit zien. Meer over anti-alias zien we later nog, want we hebben het nu nog niet nodig aangezien we een rechte lijn gaan tekenen. Kies dus een bepaalde grootte en ga met je muisaanwijzer linksonder de tekst staan. Klik en houd shift ingedrukt om een rechte lijn te trekken. Laat los als je tevreden bent. Als je een fout maakt kan je altijd linksboven op “Edit” (“Bewerken”) klikken en vervolgens op “Undo” (“Ongedaan maken”) klikken. Hiermee ga je een stap terug. Nu hebben we de naam van het spel geschreven. Nu volgt je eigen naam. Gebruik terug het tekstgereedschap maar kies deze keer voor een kleiner lettertype. Bijvoorbeeld Arial op een grootte van 18. Als je klaar bent druk je op “OK” en herhaal je vervolgens hetzelfde als je gedaan hebt voor de titeltekst. Zet de tekst bijvoorbeeld onder de lijn die onder de titel staat. Vervolgens zet je onderaan ook nog dat je het spel kunt starten door op Spatie te drukken. Gebruik hiervoor bijvoorbeeld de tekst “Druk op <SPATIE> om het spel te starten”. Eventueel kan je het lettertype nu nog kleiner maken. Zoals bijvoorbeeld op 10 punten groot. Je kan dit titelscherm uitbreiden. Zie dit dus als een echte afbeelding. Je zou nog blokken of spelers kunnen toevoegen. Hiervoor kan je op Edit drukken en vervolgens op “Paste From File”. Als je deze functie gebruikt kan je een bestand selecteren en dit plakken. Doe dit met de voetbal, de bom en de munt. Hier rechts staat een voorbeeld hoe je het titelscherm kunt maken. Als je klaar bent zorg je er voor dat je terug in de eerste sprite editor zit waar je de naam kunt tikken van de sprite. Druk hier ook op “OK”. En ga terug naar het object genaamd “obj_title”. We wijzen onze nieuwe sprite toe aan dit titelobject en vervolgens gaan we naar de room voor ons titelscherm. We plaatsen het hier in. Zorg er voor dat je instantie helemaal linksboven staat. Start je spel terug op door op het groene driehoekje in de knoppenbalk te klikken. Je titelscherm zal verschijnen maar wat je ook doet... er komt niets tevoorschijn van het spel dat je al gemaakt had. Ga terug naar “obj_title” en klik op de knop “Add Event”. Klik hier voor “Key Press” en kies hier voor “<Space>”. Als actie die uitgevoerd moet worden als we op de spatietoets drukken is naar de 30
Games maken met GameMaker
© Bjarno.be 2012
volgende room gaan. Kies dus voor het icoontje onder het tabblad “main1”. Je kan een overgangseffect instellen zoals je bij de andere rooms ook gedaan hebt. Test je spel opnieuw en je zal zien dat nadat je in het titelscherm op spatie hebt gedrukt je naar het spel gebracht wordt.
EEN HELP MAKEN WAAR IEDEREEN WEL IETS AAN HEEFT We willen niet dat onze speler het spel opstart en vervolgens geen flauw idee heeft wat hij moet doen. Een manier om dit op te lossen is door ofwel een uitleg te geven in het eerste level. Of een eenvoudige helptekst te schrijven die de speler kan openen als hij in het titelscherm zit. Ik kies voor het laatste. Eerst gaan we een helptekst schrijven. Helemaal links in de elementenbalk zie je onderaan 2 onderdelen die we reeds nog niet gebruikt hebben. Ik heb het over “Game Information” en “Global Game Settings”. We hebben de eerste nodig voor het schrijven van een helptekst. Na het dubbelklikken komt er een teksteditor tevoorschijn die heel hard lijkt op Wordpad. Je kan hier een basistekst mee schrijven zonder teveel effecten. Je kan echter geen afbeeldingen toevoegen.
Vermeld in je tekst de titel van het spel, de besturing en wat het doel is van het spel. Wees zo beknopt mogelijk met de informatie zodat hij snel alles kan vinden wat hij moet weten. Na het schrijven van deze informatie klik je links boven op het groene vinkje en test je je spel opnieuw. In plaats van op spatie te klikken druk je nu op F1. Je merkt op dat, ondanks je nergens hebt vermeld wat F1 moet doen, je toch de ingetypte tekst te zien krijgt. Dat komt omdat GameMaker bepaalde toetsen reeds gebruikt. We moeten dus alleen nog de tekst vermelden dat de speler op F1 kan drukken op zijn toetsenbord in het titelscherm.
31
Games maken met GameMaker
© Bjarno.be 2012
Open dus opnieuw “spr_title” en bewerk de sprite. Als je terug in het spritebewerk-venster zit kan je een nieuwe tekst typen. Klik op je afbeelding en typ “Druk op
om de spelinformatie te bekijken”. Gebruik hetzelfde lettertype als voor de tekst van “Druk op <SPATIE> om het spel te starten”. Na het intypen klik je op “OK” en beweeg je de tekst naar zijn nieuwe positie. Druk vervolgens tweemaal op de vinkjes en daarna op “OK”. Test je spel en je zal zien dat de tekst zichtbaar is. Als je merkt dat er iets mis is gegaan kan je het bestand eerstespel_07.gm81 openen. Dat bevat het spel dat we tot nu toe gemaakt hebben. Je kan hier het titelscherm en de helptekst zien.
Je spel is vanaf nu af. Je kan nog dingen bij toevoegen en aanpassen. Zoals nieuwe levels of nieuwe bommen.
32
Games maken met GameMaker
© Bjarno.be 2012
EEN SPEL PUBLICEREN Gefeliciteerd met het afmaken van je spel. Je kan nu doorgaan voor het maken van je tweede spel, maar sta een paar minuten stil voor het volgende spel tevoorschijn komt om je spel te publiceren.
WAT LEREN WE IN DIT HOOFDSTUK? In dit hoofdstuk leren we:
Een spel nakijken op fouten Screenshots maken Het spel opslaan & uploaden Posten op een forum
EVEN ALLES NAKIJKEN Nu je een spel gemaakt hebt moet je het nakijken op fouten. Controleer of je spel nog fouten heeft en dat alles er mooi uitziet. Probeer ook je spel “in het extreme” te testen door dingen te doen die normaal geen enkele speler probeert of die geen voordeel opleveren. Je wilt dat je speler altijd zichtbaar is. Als alles klaar is kan je je spel exporteren naar een uitvoerbaar bestand.
SCREENSHOTS MAKEN Als we een spel publiceren willen we natuurlijk niet een saaie pagina met een link voor het spel te downloaden maar willen we de toekomstige speler ook aanmoedigen om het spel te spelen. Dit doen we door enkele screenshots te maken van ons spel. In de hoop dat dit meer spelers aantrekt. Start je spel op en zorg ervoor dat je op een plaats staat waar je een screenshot wilt nemen. Neem bijvoorbeeld een screenshot van het titelscherm en een screenshot van het tweede level waar de bommen komen. GameMaker heeft buiten F1 als standaardtoets om de helptekst tevoorschijn te laten komen ook nog de toets F9. Door op F9 te klikken wordt er een screenshot opgeslagen in je projectmap (of de plaats waar je je spelbestand opgeslagen hebt). Hou deze screenshots goed bij.
EEN UITVOERBAAR BESTAND MAKEN
33
Games maken met GameMaker
© Bjarno.be 2012
We gaan nu een uitvoerbaar bestand maken. Dat is een bestand dat kan draaien zonder dat je spelers ook in het bezit moeten zijn van GameMaker. Je spel is dus prima voor iedereen beschikbaar. Klik op “File” (“Bestand”). En kies hier voor “Create Executable” (“maak uitvoerbaar bestand aan”). Vervolgens kan je een locatie kiezen waar je het spel kunt opslaan. Je kan het mee opslaan bij alle andere bestanden in je projectmap, of je kan het opslaan op je bureaublad. Sla je spel op op het bureaublad.
JE SPEL UPLOADEN NAAR SANDBOX.YOYOGAMES.COM Een prima plaats om je spel te publiceren is op de sandbox van YoYoGames. Ze bieden een gratis dienst voor je aan om GameMaker-games mee te publiceren en voor anderen ze te laten spelen. Ga naar onderstaande website: http://sandbox.yoyogames.com/ Helemaal linksboven druk je op Register. Vervolgens kom je op een vrij uitgebreide pagina voor het aanmaken van een account. Gelukkig is alleen je gebruikersnaam, email, geboortedatum en wachtwoord nodig. Alle overige informatie is optioneel en moet je dus niet invullen. Als je klaar bent druk je op de knop “Register” om een account aan te maken. Vervolgens op je je e-mailinbox en wacht je tot je een nieuw e-mailbericht krijgt van YoYoGames met de link voor je account te valideren. Klik op deze link en ga vervolgens naar log in om in te loggen met je account. Daarna kan je games uploaden naar YoYoGames’ sandbox. Klik hiervoor op de grote knop “Share” bovenaan. Nu kan je je game publiceren. Stap 1: Game-informatie Op deze pagina moet je de naam van je spel vermelden, alsook een beschrijving en onder welke categorie het hoort. Vul bijvoorbeeld het veld in zoals hieronder staat aangegeven:
34
Games maken met GameMaker
© Bjarno.be 2012
Je kan deze tekst natuurlijk aanpassen. Druk vervolgens op de knop “NEXT” onderaan. Stap 2: Screenshots en je spel In deze stap moet je screenshots uploaden voor je spelpagina, en het spelbestand zelf. Gelukkig hebben we reeds al 2, of meer, screenshots genomen. Klik op de knop “Select Images to upload” en een venster zal verschijnen waarmee je je de screenshots kunt mee selecteren en uploaden. Navigeer naar de projectmap die we hebben aangemaakt en selecteer de screenshots. Klik daarna op “Opslaan” om deze bestanden te gaan uploaden. Tip! Upload enkel screenshots uit het spel of een logo. Ga niet bestanden zoals de speler en de muntjes uploaden. Deze zijn enorm klein en laten niets zien hoe je spel er uit ziet. Daarna moeten we ons spel nog uploaden. Klik daarvoor op de knop “Select Game File to Upload”. Je kan hiermee je .gm81 mee uploaden of de .exe (het uitvoerbaar bestand dat we eerder hebben aangemaakt). Aangezien we een spel publiceren dat iedereen kan spelen, ondanks dat hij of zij geen GameMaker heeft kiezen we voor ons uitvoerbaar bestand. Navigeer dus naar je bureaublad en zoek het bestand. Klik daarna op de knop “Upload & Continue”. De geselecteerde bestanden worden nu verzonden naar de YoYoGames Sandbox. Dit kan eventjes duren. De snelheid voor het uploaden gaat sneller als je een snellere internetverbinding hebt. Stap 3: Virusscannen Nadat je spel geüpload is wordt het eerst nog gescand op virussen. Klik bovenaan op de “Play” knop en ga een ander spel spelen. Het kan eventjes duren tot je spel virusvrij is verklaard. Vernieuw regelmatig een pagina op de YoYoGames Sandbox. 35
Games maken met GameMaker
© Bjarno.be 2012
Stap 4: Voltooid! Als je spel virusvrij is verklaard, krijg je een nieuw bericht. Het aantal berichten dat je hebt kan je bovenaan lezen naast je gebruikersnaam. Je zal een bericht krijgen van YoYoGames Virus Scanner met een bericht zoals het volgende: I'm writing to inform you that your game, Coin Collectors, which you submitted on 01 April 2012 is free of viruses and has been made publically available.
Vervolgens kan je klikken op je gebruikersnaam en zal je hier een overzicht zien van jezel f. Welke games je hebt gemaakt en op welke games je al gereageerd hebt. Klik op je zonet toegevoegde game en je zal een pagina zien. Deze pagina kan je delen met anderen om ze je spel te laten spelen. Je kan de link van je spel (die je bovenaan in je webbrowser ziet) kopiëren en aan anderen delen.
JE SPEL PUBLICEREN OP FORA Je hebt je spel nu gepubliceerd op YoYoGames. De kans is echter klein dat men naar je spel gaat kijken aangezien het alleen zichtbaar is voor mensen die de link weten. Of als ze toevallig naar je spel zoeken in een lijst van duizenden andere games. Voor je spel meteen al aan enkele mensen te laten zien. Door het te publiceren op een forum komt het bovenaan te staan tot iemand anders een ander spel plaatst of er iemand reageert. Maar het geeft je meteen al meer kansen. Een goed, Nederlandstalige, forum is het Nederlandse Game Maker Forum. Om je spel hier te publiceren moet je een nieuw onderwerp aanmaken met Game Creaties en deze vullen met inhoud. Het eerste dat we moeten doen is een gebruiker aanmaken. Ga naar onderstaande website: http://www.game-maker.nl/forums/ Klik, na het laden van de pagina, op de menuknop “Registreren”. In het venster dat je daarna ziet kan je een gebruikersnaam kiezen, een e-mail invullen en een wachtwoord. Vergeet niet om de tekens die je in het plaatje ziet ook te typen in het invoerveld daaronder.
Vergeet niet om onderaan ook te klikken op het selectievakje van “Ik ga akkoord”. Als je tevreden bent met je gebruikersnaam en e-mail klik je op “Registreren”. Daarna krijg je bericht dat je je moet activeren door op een link te klikken in je e-mail.
36
Games maken met GameMaker
© Bjarno.be 2012
Open je e-mailinbox en wacht tot je een e-mail krijgt van de Nederlandse Game Maker Community. Klik op de link en je zal bericht krijgen dat je account succesvol is geactiveerd.
Log vervolgens in met je gebruikersnaam en wachtwoord en je zal terugkeren naar het boardoverzicht. Ga naar het onderdeel “Game Maker Creaties” en klik daar rechtsbovenaan op de knop . Een nieuwe pagina zal openen. Kies als onderwerp voor je nieuwe topic de naam van je spel en daaronder typ je de tekst. Je kan je bericht opmaken door de symbolen zoals vet, cursief, onderlijnd, kleuren,... te gebruiken. Let wel op dat je niet je hele bericht in het vet typt in een ander lettertype. Door op een van deze knoppen te klikken, zal er in de berichtinhoud een tekst geplaatst worden op de plaats van je cursor. Bijvoorbeeld [b][/b] voor een vette tekst. De tekst die je vervolgens in het vet wilt moet je tussen [b] en [/b] plaatsen. Vergeet niet om een downloadlink te plaatsen. Je kan bijvoorbeeld dezelfde link gebruiken als de link van YoYoGames. Als men hier op klikt komt men op de pagina van je spel uit van YoYoGames. Als je klaar bent kan je op “bekijken” drukken om na te gaan of alles er mooi uit ziet. Buiten tekst in het vet te zetten kan je ook nog afbeeldingen toevoegen. Meer informatie hoe je een mooie beginpost maakt kan je lezen op onderstaande pagina: http://www.game-maker.nl/forums/action,help/page,post#bbcref Als je klaar bent klik je op de knop “Verzenden” om je spel te publiceren! Nadat je spel gepubliceerd is kan het eventjes duren voor mensen reageren.
Buiten je spel publiceren op het Nederlandse Game Maker Forum, kan je je spel ook publiceren op andere forums zoals het Engelstalige Game Maker Forum.
37
Games maken met GameMaker
© Bjarno.be 2012
EEN PLATFORMGAME MAKEN Nu we ons eerste spel gemaakt hebben, is het tijd om eens een tweede spel te maken. In tegenstelling tot ons eerste spel gaan we niet een spel maken waar je kunt bewegen van links naar rechts en van boven naar onder. Maar nu maken we het zo dat je kan springen en dat je naar beneden valt door middel van zwaartekracht. Dat is exact wat platformgames zijn.
WAT LEREN WE IN DIT HOOFDSTUK? In dit hoofdstuk leren we:
Werken met zwaartekracht De sprite aanpassen tijdens het spel zelf Werken met views De snelheid van het spel veranderen
TERUG BEGINNEN VANAF NUL We maken een nieuw spel aan, dus moeten we ook opnieuw een nieuwe projectmap aanmaken. Open dus je projectenmap en maak een nieuwe map aan voor je nieuwe project. Maak in deze map, net zoals je deed toen je de map “eerstespel” maakte, een map genaamd “platformgame”, of een andere naam naar keuze. Vervolgens start je GameMaker op en sla je meteen je bestand al op in deze nieuwe map. Daarna beginnen we met het maken van ons spel.
HET SPELCONCEPT Het spelconcept voor dit spel is vrij eenvoudig. De speler moet naar links en rechts kunnen bewegen en moet kunnen springen. Het moet hierbij bewegende vijanden zijn die ervoor zorgen dat de speler levenspunten verliest die hij/zij ook kan opwaarderen met powerups. Natuurlijk kan je dit concept zelfstandig uitbreiden na het voltooien.
DE SPRITES TOEVOEGEN We hebben in de vorige hoofdstukken goed geleerd hoe we sprites toevoegen. Dus ik beschrijf nu kort wat we allemaal moeten toevoegen. Maak in je nieuwe spel een sprite aan door op het -icoontje te klikken in de knoppenbalk bovenaan. Het bekende dialoogvenster zal verschijnen. De eerste sprite die we gaan maken is voor 38
Games maken met GameMaker
© Bjarno.be 2012
de speler die naar links beweegt. Je kan kiezen voor zelf een sprite te maken of om een van de bestaande sprites te nemen. Ikzelf maak deze keer mijn sprite zelf. Klik op de knop “Edit Sprite” en voeg een nieuwe subimage toe van 32x32 pixels. Dubbelklik vervolgens op de nieuwe sprite. Daarna teken je een mannetje dat naar links kijkt, aangezien onze speler naar rechts beweegt. Afhankelijk van het type spel kan je dit veranderen. Ikzelf heb een grijze eenvoudige robot getekend.
Klik daarna op het groene vinkje linksboven en herhaal datzelfde in het overzicht van de subimages (waarvan er nu nog maar 1 is). Hernoem vervolgens je sprite naar “spr_player_left”. Daarna zouden we een nieuwe sprite kunnen aanmaken voor ons personage dat naar rechts beweegt. Maar dat is vrij zinloos aangezien we gewoon de sprite kunnen kopieëren en vervolgens kunnen spiegelen. En dat is ook wat we nu gaan doen. In het overzichtsvenster van GameMaker klik je met je rechtermuisknop op de sprite in het elementenpaneel en kies daar voor de optie “Duplicate” (“Kopie maken”). Noem deze sprite “spr_player_right” en klik vervolgens op “Edit Sprite”. We moeten nu onze sprite omdraaien. Zodat hij niet meer naar links kijkt, maar naar rechts. Doe dat door in dit venster op “Transform” (“Vervorm”) te klikken linksboven en kies vervolgens voor de optie “Mirror Horizontally”, maar zorg er voor dat “Flip Vertically” uitstaat. Klik op “OK”. De speler gaat nu naar rechts kijken in plaats van naar links. Als je een animatie hebt moet je er ook voor zorgen dat je het selectievakje naast “Apply to all images in the sprite” staat. Dat zorgt ervoor dat elke subimage gespiegeld wordt.
39
Games maken met GameMaker
© Bjarno.be 2012
Nadat we een speler toegevoegd hebben voegen we, net zoals bij ons vorige spel, ook een muur toe.We vullen de sprite van deze muur volledig zwart en noemen deze vervolgens “spr_wall”. Sla je spel op. DE EERSTE HAND LEGGEN AAN DE OBJECTEN Nu we onze sprites gemaakt hebben is het tijd dat we objecten aanmaken, waaraan we vervolgens de sprites kunnen aan toewijzen. Maak dus zowel een object aan voor de speler die je “obj_player” noemt, en een object voor de muur die je “obj_wall” noemt. Bij “obj_player” stel je een van de twee sprites in als de standaardsprite. Dit is de sprite die we zullen zien als we het object plaatsen in de room. Maar we zullen later gaan programmeren dat de sprite veranderd als de speler een andere richting uitloopt. Stel dus bijvoorbeeld de sprite in op “spr_player_left”. Vergeet vervolgens ook niet om het masker (“mask”) in te stellen. Net zoals we moesten doen met “obj_player” in ons eerste spel hebben we reeds een masker dat voldoet aan de voorwaarden: de sprite voor de muur. Vervolgens stel je de muur zo in dat hij zijn sprite heeft en dat hij solide (“solid”) is. Nadat we onze objecten gemaakt hebben is het tijd om bij bepaalde gebeurtenissen, bepaalde actie’s te koppelen. De bewegingen voor links en rechts zijn hetzelfde gebleven voor ons platform game, als ons vorige spel. Dus we plaatsen terug dezelfde D&D-icoontjes voor links en rechts met dezelfde instellingen. Echter voor naar boven te bewegen moeten we iets anders instellen. We moeten dus niet nakijken of er plaats is boven om dan naar boven te bewegen. Maar we moeten nakijken of hij op de grond staat, en als dat zo is kan hij pas springen. Dat springen doen we door de speler een bepaalde snelheid naar boven te geven. Als we niet zouden nakijken of de speler op de grond staat. Zou hij kunnen springen, terwijl hij al in de lucht hangt. En dat lijkt mij niet meteen de bedoeling. Het eerste wat we gaan toevoegen is de voorwaarde: “staat de speler op de grond”. Dat kunnen we nakijken of er onder hem plaats is. Als er onder hem plaats is staat hij niet op de grond, maar springt hij naar boven of valt hij naar beneden. We voegen dus een voorwaarde toe. Sleep het icoontje nadat je het event voor de pijltje naar boven toets hebt aangemaakt naar het actiegedeelte. Dat icoontje kan gevonden worden onder het tabblad “control”. Na het slepen zal er een dialoogvenster tevoorschijn komen en je kan instellen waar op moet nagekeken worden of het waar of onwaar is. Laat de x-waarde op 0 staan maar zet de y-waarde op 1. Vergeet vervolgens niet om relative aan te vinken zodat je 1 pixel onder speler gaat nakijken. In plaats van zo goed als helemaal linksboven in het level. De vorige keren hebben we nagekeken of de plaats vrij is. Nu willen we net het omgekeerde doen: we willen weten of de plaats niet vrij is. Kruis dus ook het vakje naast “NOT” aan. Dat zorgt ervoor dat de actie 40
Games maken met GameMaker
© Bjarno.be 2012
(of de acties, mochten we gebruik maken van een code block) die eronder staan worden uitgevoerd als de opgegeven plaats niet vrij is. Als er aan die voorwaarde voldaan wordt (of nét niet) dan springen we naar boven. Daarvoor kan je gebruik maken van het D&D-icoontje . Dit icoontje laat ons de snelheid bepalen waarmee de speler verticaal beweegt. Het dient niet alleen voor naar beneden te gaan. Alhoewel het dat eigenlijk toch doet. Maar negatief naar beneden bewegen is eigenlijk gewoon naar boven bewegen. Sleep dit icoontje dus onder het vorige icoontje. Het icoontje kan je vinden onder het tabblad “move”. Na het slepen kan je de snelheid instellen. Stel het in op -6 of -8. Hoe lager dit getal hoe hoger de speler springt. Met een waarde van -6 spring je lager dan met een waarde van -8. Relative inschakelen of uit laten gaat weinig uithalen. Aangezien als we op de grond gaan staan we waarschijnlijk niet meer verticaal bewegen. Voor naar beneden te gaan, gaan we niet gebruik maken van de pijltje naar onder toets. We laten hier zwaartekracht zijn werk doen in het volgende onderdeel.
EEN KENNISMAKING MET NEWTON Als je nu je spel zou testen door een level te maken, de speler erin te plaatsen en enkele muren, ga je merken dat je wel kunt springen maar dat je nog niet naar beneden valt. Daarom gaan we gebruik maken van zwaartekracht. De standaard manier waarop GameMaker werkt met zwaartekracht zorgt ervoor dat je minder snel naar boven beweegt en daarna terug naar beneden valt. Meer doet hij niet. We gaan dus moeten instellen wanneer we dit wel en niet moeten toepassen. Als we namelijk op een muur staan willen we niet dat de speler verder naar beneden valt. We hebben tot nu toe altijd actie’s gekoppeld aan gebeurtenissen die gebeuren als de speler, degene met het toetsenbord voor zijn computerscherm, op een bepaalde toets drukt. We willen echter dit nakijken terwijl het spel bezig is: dat betekent elke keer dat het spel “een stap verder gaat”. Elke keer als er op het scherm iets getekent wordt is dit een stap meer. GameMaker heeft enkele step events die dus elke keer uitgevoerd worden. Voeg dus een standaard Step Event toe. Dit doe je door op “Add Event” te klikken en vervolgens op de button met “Step” te klikken. Een menu zal tevoorschijn komen met de vraag wat voor soort step je wilt: een “Step”, een “Begin Step” en een “End Step”. We willen de eerste uit dit lijstje. Net zoals bij het springen willen we geen invloed hebben van de zwaartekracht als we reeds op de grond staan. Als we niet op de grond staan (en dus in de lucht zweven) moet de zwaartekracht actief zijn. Gebruik dus het icoontje om na te gaan of de ruimte onder de speler vrij is. Kijk voor deze instellingen naar de springactie. We willen dat de zwaartekracht van toepassing is als de plaats vrij is. Dus schakel “NOT” terug uit.
41
Games maken met GameMaker
© Bjarno.be 2012
Het icoontje , dat je kan vinden in het tabblad move dient voor de “gravity” (“zwaartekracht”) in te stellen. Sleep dit icoontje onder de voorwaarde. Na het verslepen komt er een dialoogvenster
tevoorschijn. Dit dialoogvenster heeft 2 optie’s... de richting van de zwaartekracht (“direction”) en de sterkte (gewoon “gravity” genoemd hier). Voor we de waarde van de richting ingeven moet je weten dat GameMaker werkt volgens volgend patroon:
Voor een zwaartekracht naar beneden te hebben moeten we instellen dat deze een hoek neemt van 270°. Vul dus in het vakje naast “direction” “270” in, zonder aanhalingstekens en zonder het gradenteken (“°”). De kracht waarmee we naar beneden willen gaan kan je instellen zoals je wilt. Hoe hoger dit getal hoe sterker de zwaartekracht is. Stel dit getal bijvoorbeeld in op “0.7”. Merk op dat je in GameMaker kommegetallen niet met een komma (“,”) schrijft, maar met een punt (“.”). De Amerikaanse methode én ook de methode die in veel andere programma’s gebruikt wordt. We hebben het hier over het getal nul komma zeven (0,7). Klik vervolgens op “OK”. We hebben nu de actie die gebeurd als de plaats onder de speler vrij is (en hij niet op een muur staat). Als we echter wel op een muur staan (in alle andere gevallen) moeten we de zwaartekrachtsterkte op 0 zetten. Zet dus onder dat symbool het else-icoontje ( 42
). En daaronder
Games maken met GameMaker
© Bjarno.be 2012
zet je terug het zwaartekrachticoontje ( ). De sterkte die we hier gaan toevoegen is echter niet 0,7, maar gewoon 0. De richting waar de zwaartekracht naartoe gaat is niet meer van belang. Aangezien de zwaartekracht gewoon uit staat. Stel deze echter ook in op 270° voor duidelijk te zijn.
TESTEN EN FOUTEN OPLOSSEN We hebben nu onze speler geprogrammeerd. Dus we gaan ons spel testen. Als je nu echter op het groene test-icoontje klikt zal je een error krijgen dat je spel minstens 1 room moet hebben voor je het spel kunt testen:
Maak dus een nieuwe room aan en maak een eenvoudig testlevel:
Klik daarna terug op het groene icoontje en het spel zal starten. Als je je level exact gemaakt hebt zoals mij (dus dat de speler al op de muur staat...) kan je vrij naar links en rechts bewegen. Maar als je van richting veranderd dan blijft je speler nog altijd naar dezelfde richting kijken. Dat is één foutje dat we nog moeten oplossen. Als we daarna springen merk je dat je springt, en niet in de lucht kunt springen. Maar als je terug een muur aanraakt dan val je daar los daar. Dat is het tweede foutje. Het probleem bij de eerste fout is dat we naar links en rechts bewegen. Maar we hebben nergens ingesteld dat hij moet veranderen van sprite. Open terug “obj_player”. Je moet twee gebeurtenissen aanpassen. Als de speler naar rechts beweegt moet de sprite veranderen naar “spr_player_right”. Als de speler naar links beweegt moet de sprite veranderen naar “spr_player_left”. We stellen dat in met het icoontje . Dit icoontje kan je vinden onder het tabblad “main1” bij de mogelijkheden van de acties. Als je je muisaanwijzer eventjes 43
Games maken met GameMaker
© Bjarno.be 2012
boven dit icoontje laat zweven zal het een beschrijving weergeven: “Change Sprite” (“Sprite veranderen”). En dat is nu ook wat wij nodig gaan hebben. Sleep dit icoontje onder de laatste actie van . Aangezien we het niet in een code blok plaatsen wordt het altijd uitgevoerd, zelfs al wordt er niet naar links bewogen. Een nieuw dialoogvenster zal, net zoals bij bijna elke andere actie, tevoorschijn komen. Dit keer met 3 optie’s: Sprite – Dit is de sprite die we gaan toewijzen. We gebruiken voor naar links te bewegen de sprite met de naam “spr_player_left”. Subimage – Dit is de subimage die we gebruiken. Aangezien we maar 1 subimage hebben kan je dit op “0” laten staan. Merk op dat de eerste subimage altijd “0” noemt en de tweede “1”. Speed – Je kan ook de snelheid aanpassen van de animatie, mocht je meerdere subimages gebruiken. Door 2 in te vullen gaat de animatie 2 maal zo snel dan 1. Als je 0,5 gebruikt halveert deze snelheid. Aangezien we slechts 1 subimage hebben kan je dit op “1” laten staan. Nadat alles goed ingesteld is klik je op “OK”. Nu moeten we hetzelfde doen bij . Maar in plaats van “spr_player_left” toe te wijzen, wijzen we nu “spr_player_right” toe. Test je spel opnieuw om na te kijken of deze fout opgelost is. Je zal merken dat alles goed werkt maar de we nog met ons ander foutje zitten: je valt door de muren heen.
Momenteel hebben we een code die zwaartekracht uitschakeld als we op een muur staan. Maar de snelheid die onze speler nog heeft terwijl hij naar beneden valt blijft nog altijd hetzelfde als we de zwaartekracht uitschakelen. Dat is hetzelfde als een tennisbal de ruimte inslaan. Vanaf het moment dat het uit onze atmosfeer is en niet meer beïnvloed wordt door zwaartekracht blijft hij nog bewegen aan dezelfde snelheid, richting en zin waarmee het de atmosfeer verliet. We moeten dus instellen dat vanaf de speler een muur aanraakt, hij niet meer naar beneden beweegt. En herriner je nog hoe we nakijken of de speler iets aanraakt? Dat zijn “collisions”, of “botsingen”. We hebben ze al eerder gebruikt voor na te gaan of we een bom aanraakten, of dat we een “muntje” aanraakten. Voeg dus in “obj_player” een nieuwe gebeurtenis toe door op “Add Event” te klikken. Selecteer vervolgens “collisions” en kies daar voor “obj_wall”. Als eerste actie die we gaan gebruiken zetten we de verticale speed terug op nul. Gebruik daarvoor het icoontje dat we ook gebruikten voor te springen (
). Sleep dit icoontje naar het actiegedeelte en stel de verticale snelheid in op 0.
Test je spel opnieuw. Je merkt dat alles goed werkt maar dat het laatste stuk van het vallen minder goed gaat dan verwacht. Het blijkt dat je iets boven de muur nog naar boven botst. We moeten dus de speler nadat zijn snelheid op 0 wordt gezet ook op de muur zetten.
44
Games maken met GameMaker
© Bjarno.be 2012
Bij het tabblad “move” vinde we een icoontje terug ( ). Als je je muis er op laat zweven zie je een beschrijving: “Move to Contact”, of “Beweeg naar contact” in het Nederlands. Sleep dit icoontje onder het icoontje dat de verticale snelheid op 0 zet.
We hebben hier verschillende instelingen. We hebben een richting, een maximumwaarde en we kunnen instellen wat we moeten “aanraken”. De richting stellen we hetzelfde in als onze zwaartekracht, naar beneden. Of voor GameMaker is dat “270°”. Vul in dit vakje dus “270” in. Als maximumwaarde kan je bijvoorbeeld 32 invullen. Dat betekent dat de speler maximum 32 pixels naar de richting die eerder gekozen is mag bewegen naar een aanraakpunt. “against” kan je instellen naar 2 optie’s. “solid objects” (“solide objecten”) of “all objects” (“alle objecten”). Laat het stan op zijn standaardwaarde zodat er alleen wordt gekeken naar objecten die “solid” zijn. Klik na het instellen op “OK”.
Nadat je dit hebt ingesteld test je je spel opnieuw en kan je personage goed naar links en rechts bewegen en springen. Als je merkt dat je speler niet hoog springt kan je dit op twee manieren oplossen: je laat hem hoger springen, of je zet de zwaartekracht lager. Ik stel de hoogte waarmee de speler springt bij naar “-12” in plaats van “-8” of “-6”. Als je hetzelfde level als mij gemaakt had kan je nu wél naar boven springen. Sla je spel op. Als je merkt dat je spel nog fouten heeft kan je het bestand platformspel_01.gm81 downloaden uit de projectmap om de verschillen te vergelijken en fouten op te sporen.
EEN LEVEL GROTER MAKEN Je hebt nu een eenvoudig testlevel gemaakt. Maar je merkt dat dit niet heel groot is. Je beweegt in enkele seconden tijd van helemaal links naar helemaal rechts en je kan moeilijk je begin en einde altijd al zichtbaar hebben. Dat gebeurd in bijna geen enkel platformspel. Dus we gaan onze room groter maken.
45
Games maken met GameMaker
© Bjarno.be 2012
Open de room die je eerder gemaakt hebt voor te testen en ga naar het tabblad “settings”. Het is misschien ook al tijd voor je level een naam te geven: noem het “rm_level1”. Daaronder kan je de breedte (“width”) en hoogte (“height”) aanpassen van je room. Verander de breedte van 640 naar 2560 (dat is 4x de eerste breedte). En de hoogte laat je staan. Test je spel nu om na te gaan of alles goed gaat. Je zal merken dat je room duidelijker groter is geworden, maar dat je speelvenster enorm veel groter is geworden en als je een klein beeldscherm hebt is zelfs alles kleiner geworden om het geheel nog te laten zien. Dit lossen we op door even uit de geavanceerde modus te gaan, want de oplossing voor dit probleem kunnen we vinden bij “views”. Views kan je zien als een soort van camera. Ze bewegen mee en volgen objecten en hebben een bepaalde grootte in de room. Hetgene dat ze “zien” wordt vervolgens in het speelvenster weergegeven. Ga dus uit de vereenvoudigde modus van GameMaker door je spel eerst op te slaan en daarna op “file” te klikken en vervolgens op “Advanced Modus” om deze in te schakelen. Klik op “OK” en open je spel opnieuw. Net zoals we moesten doen voor maskers in te stellen. Open daarna terug je room en je zal zien dat je naast “objects”, “settings” en “backgrounds” ook nog “tiles” en “views” hebt gekregen. We hebben nu nood aan dat laatste. Het eerste dat we moeten doen is “views” inschakelen. Klik op het eerste selectievakje bovenaan naast “Enable the use of Views”. Daaronder vinden we de optie “Visible when room starts”. We willen namelijk dat de eerste view (view0), die nu geselecteerd is al van toepassing is als het spel start. We laten alle waardes daaronder op de basiswaarden staan tot we komen bij “Object following”. Selecteer als object “obj_player” en stel Hbor en Vbor in naar 9999. Deze waardes worden gebruikt voor aan te geven wanneer de view moet bewegen en duiden de randen aan. Als we ze op 32 pixels laten staan betekent dat de view pas meebeweegt als de speler bij de rand van de view komt te staan. De waardes van view in room zijn de waardes die gebruikt worden voor de camera. Welke plaats ze moeten nemen (standaard de linkerbovenhoek) en hoe groot ze moeten kijken. De waardes onder “port on screen” duiden aan hoe groot het gedeelte dat de view ziet, als camera, op het scherm gebracht moet worden. We zeggen dat de beelden van deze camera het hele scherm moeten opvullen van de linkerbovenhoek tot de rechteronderhoek. De waarden van “Hsp” en “Vsp” zeggen aan welke snelheid de view moet volgen. Je kan er voor kiezen dat de view achterblijft en trager beweegt dan de speler. Een waarde van “-1” is een speciale waarde: dat betekent dat er geen snelheid is en dat de view altijd goed meevolgt zonder vertragingen.
46
Games maken met GameMaker
© Bjarno.be 2012
Test je spel en je zal merken dat de afmetingen van je speelscherm terug “normaal” zijn en als je beweegt dan zie je alleen het gebied waar de speler op zit. Je kan nu je level groter maken. Je kan er nu terug voor kiezen om terug je spel op te slaan en naar de eenvoudige modus te gaan. Je kan er ook voor kiezen om gewoon in de geavanceerde modus te blijven.
DE SNELHEID OPDRIJVEN Als je nu al een tijdje je spel test merk je dat je eigenlijk vrij traag beweegt, iets dat je niet zo snel merkte met dezelfde waardes in je eerste spel. Je kan instellen dat in plaats van 4 pixels naar links en rechts bewegen dat dit het dubbel wordt. Maar je kan ook de globale snelheid van de room aanpassen. Weet je nog dat ik praatte over “steps”. Dat ze elke keer uitgevoerd worden als het spel getekend wordt. De snelheid waarmee dit gebeurd kan aangepast worden. Dat is de zogenaamde “room speed”. Ga naar het tabblad “settings” en verander de “Speed”. Standaard staat dit op 30. Dat betekent dat er 30 keer per seconde het step event wordt uitgevoerd en 30 keer op het scherm wordt getekend. Je kan dit getal veranderen naar 40 of 60 voor meer steps en een hogere snelheid. Probeer dit uit door het in te stellen op 60. Je kan natuurlijk nóg hogere waardes nemen. Maar merk op dat een waarde zoals 999999 even snel zal gaan dan 9999. Elke computer heeft een limiet dat afhankelijk is van de hardware. Je computer kan waarschijnlijk zo’n snelheid ook niet aan. Merk ook op dat als je zelf een supercomputer hebt die je spel prima op een room speed van 90 aan kan, dat elke computer dit ook kan. Waardes onder de honderd zijn vaak voldoende voor de meeste spelletjes die je gaat maken. Ikzelf stel de snelheid in op 60. Test je spel en je zal merken dat alles gaat zoals je ingesteld hebt: het spel draait sneller.
STEKELS ZIJN VERVELEND De eerste vijand voor ons spel zullen stekels zijn. Stekels zijn eenvoudig te programmeren aangezien ze niet bewegen en op een vaste positie blijven. Later gaan we ook een vijand toevoegen die beweegt. Eerst gaan we de sprite maken voor onze stekels. Klik op het -icoontje in de knoppenbalk bovenaan in het GameMaker-venster. Daarna maak je een nieuwe sprite aan van 32x32 pixels groot. Hierin teken je onderaan stekels of “spikes” in het Engels:
47
Games maken met GameMaker
© Bjarno.be 2012
Je kan natuurlijk deze spikes aanpassen naar je eigen stijl. Klik daarna 2 maal op het vinkje en hernoem de sprite naar spr_spikes. Daarna maak je een nieuw object aan en noem je deze “obj_spikes”. Je stelt vervolgens onze nieuwste sprite in als sprite voor dit object en je klikt op “OK”. Ga daarna naar room “rm_level1” en maak je level groter en voeg enkele gevaarlijke stekels toe.
Voer daarna je spel uit, je zal merken dat de spikes nog niet zo gevaarlijk zijn zoals ik eerst zei. Je kan er prima op lopen en ze bieden geen uitdaging. Tijd voor daar verandering in te brengen. Ga naar “obj_player” en voeg een nieuwe gebeurtenis toe. We moeten instellen dat bij een aanraking met spikes de speler sterft en terug naar zijn startpositie moet navigeren. Voeg dus een nieuw collision event toe met “obj_spikes”. Sleep vervolgens het icoontje (tabblad: move) hiernaar toe. Dit icoontje hebben we eerder gebruikt in ons eerste spel voor de speler na het aanraken van een bom terug naar zijn startpositie te sturen. Laat alle instellingen voor dit icoontje op zijn standaardinstellingen staan. Test je spel nu en je zal merken dat bij het aanraken van de spikes je zal sterven en terug naar de startpositie zult gaan. We hebben echter nog geen echt idee dat we sterven. We gaan naar een 48
Games maken met GameMaker
© Bjarno.be 2012
andere plaats. We gaan dit versterken door er een klein geluidseffectje achter te zetten. Maak een nieuw geluid aan in je project door in de knoppenbalk op te klikken. Noem je geluid “snd_died” en open een geluidsbestand. Een goed geluid voor dit zou zijn dat iemand “auw” zegt. Je kan gebruikmaken van een programma zoals Audacity of Windows Geluidsrecorder voor dit zelf te doen en vervolgens dit geluidsbestand te gebruiken. Als je echter geen nood hebt aan je eigen geluidseffect kan je een van de standaardgeluiden gebruiken. Gebruik bijvoorbeeld boomshot.wav. Als je geen standaardgeluiden wilt, maar ook niet zelf wilt maken, kan je gebruik maken van de website http://freesound.org/, ze bieden een uitgebreide bibliotheek aan geluiden en geluidseffecten die je mag gebruiken in je spel. Vaak moet je wel de gebruikersnaam in je spel vermelden van de maker van het geluidje. Nadat je geluidje toegevoegd is ga je terug naar het collision event met “obj_spikes” en voeg je het geluidsicoontje toe ( ). Selecteer het geluid en laat het slechts 1 maal afspelen.
LEVENS TOEVOEGEN We nu een spel waar je kan rondspringen en mee kunt doodgaan als je spikes aanraakt. Maar een van de belangrijke eigenschappen in veel platformgames is dat als je sterft je een leven verliest. Kijk maar naar spellen zoals Mario. We moeten dus levens toevoegen.
** AAN DIT GEDEELTE WORDT NOG GESCHREVEN **
49
Games maken met GameMaker
© Bjarno.be 2012
HET HOOFDSTUK VAN DE LIJSTJES In dit hoofdstuk laat ik je enkele lijstjes zien met handige websites over GameMaker of waar je sprites en achtergronden kunt vinden.
HANDIGE WEBSITES OVER GAMEMAKER
De Nederlandstalige Game Maker Community Deze website heeft een uitgebreid forum waar je in de Nederlandse taal vragen kunt stellen en je spel kunt publiceren. http://game-maker.nl/forums/
YoYoGames Sandbox Op de YoYoGames Sandbox kan je al je games uploaden en kan je reacties krijgen over je spellen. YoYoGames Sandbox biedt ook duizenden andere GameMaker-games zodat je een idee krijgt wat er allemaal mogelijk is. Je vindt op deze webiste ook minder professionele games. Iedereen kan zijn spel er op uploaden. http://sandbox.yoyogames.com/
Game Maker.info Een volledig nieuwsoverzicht van alles dat met GameMaker en zijn games te maken heeft. Hier vindt je snel allemaal informatie over GameMaker. Verder hebben ze een volledige Nederlandse handleiding die je kan vinden onder het menu Extra’s. http://gamemaker.info/
Creative Game Challenge De Creative Game Challenge is een wedstrijd door Universiteit Utrecht waar je elk jaar een game kunt voor maken rond een bepaald onderwerp. http://www.creativegamechallenge.nl/
HANDIGE WEBSITES VOOR SPRITES Deze lijst heeft allemaal websites waar je sprites kunt vinden van bestaande spellen. Vergeet niet dat het gebruik maken van deze sprites gekoppeld is aan auteursrecht. Wees hier dus voorzichtig mee als je je spel commercieel gaat maken.
VideoGameSprites.net VideoGameSprites.net heeft een kleine collectie aan bekende games van NES, SNES, GBA en PlayStation 1 50
Games maken met GameMaker
© Bjarno.be 2012
http://www.videogamesprites.net/
Sprite Database Deze website heeft een gigantische collectie aan heel wat games van verschillende consoles: bijvoorbeeld Gameboy, Gamecube, PlaStation. yJe kan er ook sprites vinden van enkele arcade games. Van sommige moderne games kan je ook 2D sprites vinden van icoontjes of andere niet-3D elementen. http://sdb.drshnaps.com/
Game Sprite Archive De Game Sprite Archive heeft een uitgebreide collectie aan sprites van games. http://www.gsarchives.net/
HANDIGE WEBSITES VOOR GELUIDEN EN GELUID SEFFECTEN
Freesound.org Freesound.org heeft een supercollectie aan geluidseffecten. Zowel realistische als elektronische. Alle geluiden kan je zonder problemen gebruiken in GameMaker zolang je de naam van de maker vermeld. Je hebt een gebruikersaccount nodig wil je geluiden downloaden. Maar beluisteren kan voor je download. http://www.freesound.org/
Incompetech Incompetech heeft een uitgebreide website vol met muziekstukjes die je kan gebruiken in je spel zolang je spel niet commercieël is. Je moet ook de naam vermelden van de maker: Kevin MacLeod. Een zeer uitgebreide bibliotheek met kwaliteitsvolle muziek. Je kan zoeken op sleutelwoorden, maar ook op genre en sfeer die de muziek geeft. http://incompetech.com/m/c/royalty-free/
Newgrounds Audio Portal Newgrounds is een website waar je heel wat creativelingen te werk kunt zien. Ze kunnen er muziek op uploaden maar ook flash games, filmpjes en kunst. De Audio Portal is zeker een onderdeel van Newgrounds dat je moet bezoeken als je perfecte muziek zoekt voor je spel. Let wel op! Niet alle muziek op Newgrounds kan je vrij downloaden in gebruiken in je spel. Kijk dit dus eerst na! http://www.newgrounds.com/audio/
HANDIGE WEBSITES VOOR ACHTERGRONDEN EN TEXTURES
51
Games maken met GameMaker
© Bjarno.be 2012
CG Textures CG Textures heeft een uitgebreide collectie aan textures en achtergronden. Je moet een gebruikersaccount hebben. Je hebt hier de keuze tussen een gratis gebruiker en een betalende. Gratis gebruikers hebben een limiet van 15Mb per 24 uur. Betalende gebruikers hebben echter wel toegang tot grotere textures en speciale textures, maar de hele bibliotheek kan ook vrij gebruikt worden voor gratis gebruikers. http://cgtextures.com/
Mayang’s Free Textures Deze bibliotheek van textures kan je vrij gebruiken in je spel. Je moet alleen de maker vermelden. Je kan echter maximaal 20 textures per dag downloaden. Elke texture heeft wel onderaan in het klein een watermark. Deze kan je echter wel verwijderen met een tekenprogramma. http://mayang.com/textures/
TEKENPROGRAMMA’S Als je aan de standaard Image Editor van GameMaker niet genoeg hebt kan je proberen een ander programma te gebruiken.
The GIMP The GIMP is een uitgebreid programma voor fotobewerking. Maar je kan het prima gebruiken voor het maken van sprites, achtergronden,... http://www.gimp.org/
Inkscape Inkscape is een gratis programma waarmee je vectoriële tekeningen mee kunt maken. Het programma is vrij uitgebreid en biedt heel wat optie’s. Je kan Inkscape prima gebruiken voor het maken van logo’s en sommige sprites. http://inkscape.org/
Paint.net Paint.net is een eenvoudigere editor dan The GIMP en biedt een minder aantal mogelijkheden maar is beter voor beginners en sluit beter aan op de standaard Image Editor. Een zeer handig programma als je overstapt van Paint of de Image Editor van GameMaker zelf. http://www.getpaint.net/
Adobe Photoshop & Adobe Illustrator Beide programma’s zijn de betalende vorm van The GIMP en Inkscape. Ze bieden beiden hetzelfde aan maar zijn beter in gebruik. Je kan ze kopen op de website van Adobe zelf. Als beginnende GameMaker-gebruiker kan je deze programma’s best niet gebruiken. Ze kosten 52
Games maken met GameMaker
© Bjarno.be 2012
veel voor wat je eigenlijk nodig hebt als je bezig bent met GameMaker. Mocht je echter deze programma’s tot je beschikking hebben kan je deze prima gebruiken. Photoshop: Illustrator:
http://www.adobe.com/nl/products/photoshop.html http://www.adobe.com/nl/products/illustrator.html
MUZIEKPROGRAMMA’S
Audacity Audacity is een uitgebreid programma voor het opnemen van geluid van een microfoon en het bewerken ervan of het aanpassen van muziekfragmenten. Je kan muziek inkorten of trager laten afspelen of de toonhoogte aanpassen, echo,... Zeer uitgebreid en gratis beschikbaar. http://audacity.sourceforge.net/
Anvil Studio Anvil Studio laat je toe om meerdere geluidsfragmenten samen te voegen en het maken van geluiden in MIDI-formaat. Je kan zelf muziek schrijven of als je beschikking hebt tot een midicompatibel apparaat kan je dit ook gebruiken voor het maken van muziek. http://www.anvilstudio.com/
FL Studio FL Studio is een betalend programma voor het maken van muziek. Je kan muziek aanpassen, importeren en opnemen. Er zijn enorm veel features die dit programma tot een totaalpakket maken. http://www.image-line.com/documents/flstudio.html
bfxr bfxr is een online tool waarmee je korte geluidseffecten mee kunt maken voor het oppikken van geluidjes, een powerup, schade,... Deze geluidjes passen prima bij een 8-bit spel. http://www.bfxr.net/
53
Games maken met GameMaker
© Bjarno.be 2012
PROBLEMEN & OPLOSSINGEN Het kan zijn dat er iets misgaat. Maar wat is die oplossing dan. Onderstaand staan enkele vragen vermeld die kunnen optreden als je ergens niet aan uit kunt.
IK ZIE GEEN VOORBEELDENMAP MET ELEMENTEN Als je probeert een sprite toe te wijzen waarvan ik zeg dat ze standaard bij GameMaker zitten en je hebt een andere afbeelding genomen die buiten deze map zit kan het moeilijk zijn om deze terug te vinden. In het venster waar je de sprite, het geluid, of iets anders moet selecteren typ je onderaan in het vakje “bestandsnaam” “%appdata%” zonder aanhalingstekens. Zoek in deze lijst naar de map genaamd “GameMaker”. Vervolgens kan je hier kiezen tussen “Backgrounds” (achtergronden) en nog veel meer.
IK KRIJG EEN FOUTMELDING TIJDENS HET OPSTARTEN VAN MIJN SPEL Soms kan GameMaker een fout geven tijdens het uitvoeren van het spel, zonder dat je een fout hebt gemaakt. Dit probleem kan aanwezig zijn door verschillende problemen. Probeer de computer opnieuw op te starten. Als dit het probleem niet wegwerkt probeer dan de drivers voor geluidskaarten en videokaarten te updaten. Wees er natuurlijk 100% zeker van dat het probleem dat je hebt zeker aan GameMaker ligt en niet aan je code. Kijk op onderstaande link voor een volledig overzicht voor foutmeldingen: http://www.game-maker.nl/forums/topic,61381.0
54