Pagina 12 van 13
Het gebruik van Timelines (tijdlijnen)
In dit en het volgende deel gaan we twee verdere functies van Game Maker bespreken die erg handig zijn bij het maken van meer gecompliceerde spellen: time lines (tijdlijnen) en views (weergaven).

In de game die we tot nu toe gemaakt hebben was het verschijnen van vijanden geregeld door het controller_enemy object die van tijd tot tijd vijandelijke vliegtuigen aan de game toevoegde. Ook werden vijandelijke vliegtuigen nooit gedestroyed. Ze verschenen gewoon opnieuw. Het resultaat daarvan is dat het spel steeds moeilijker werd doordat het aantal vliegtuigen groter en groter werd.

Zelfs hoewel dit een redelijke gameplay geeft, heeft het een aantal problemen. Ten eerste, de vliegtuigen herverschijnen op willekeurige posities die de ontwerper van het spel niet kan regelen. Het resultaat hiervan is dat vliegtuigen over elkaar zouden kunnen komen, of erg dicht bij de rand van de room komen (wat niet erg wenselijk is). Ook is er een kleine verassing in het spel. Vijanden komen op je af vanaf willekeurige richtingen en er zijn weinig dingen die de epeler kan doen dan gewoon schieten en vijanden continu ontwijken.

Om interresantere gameplay te krijgen zou de game ontwerper meer controle moeten hebben over welke vliegtuigen waar verschijnen op welk moment. Hierdoor kun je vijandelijke vliegtuigen in formaties laten vliegen, zodat je bepaalde moeilijkheden erin kan maken (zoals een grote groep van simpele vijanden zou voornamelijk ontweken moeten worden en een aantal gevaarlijke vijanden waar je op moet schieten) en variaties.

Ook is het dan mogelijk voor de speler om de game te leren spelen omdat hij handige dingen van vorige pogingen kan herinneren. Alle goede spellen beheersen alle vijanden preciezer vanwege de redenen die hierboven beschreven zijn. Simpel gezegd, die resulteert in een interresantere gameplay.

Dus we willen meer controle over het verschijnen van bepaalde vijanden. Hiervoor zullen we time line resources gebruiken. Maar allereerst moeten we enkele aanpassingen maken aan de game. Voor alle vijanden moeten we zorgen dat ze niet langer herverschijnen als ze onder het scherm uit zijn. We zullen ze simpelweg verwijderen. Dus als een vliegtuig verdwenen is zal het voor altijd weg zijn. De tijdlijn zal dan ervoor zorgen dat nieuwe vijanden aangemaakt worden.

Een timeline resource werkt globaal gezien als volgt. Je geeft er een aantal tijdsmomentsn in aan (gemeten in steps) en voor elk moment kun je een actie aangeven die uitgevoerd moet worden op dat specifieke moment. Omdat we de tijdlijn voor vijandelijke vliegtuigen willen gebruiken gebruiken we alleen acties daarvoor, maar in het algemeen kun je elke actie gebruiken die je wil.

Dus laten we eens een tijdlijn aanmaken. Kies Add time line (voeg tijdlijn toe) van het Add menu. Een venster zal verschijnen dat op een objectvenster lijkt. Aan de linkerkant kun je de naam van de tijdlijn aangeven en er zijn knoppen om momenten toe te voegen, te verwijderen en aan te passen.

In het midden zie je een lijst van gedefiniëerde momenten. Naast deze lijst is een lijst van acties voor het op dit moment geselecteerde moment en aan de rechterkant zijn tabbladen waarvan je acties kan kiezen.

Op het 0de moment gaan we vijandelijke vliegtuigen maken. Klik dus op de Add knop. Als moment geef je 0 aan. Het moment is toegevoegd aan de lijst. Nu kun je acties in de actielijst slepen. We hebben slechts een actie nodig om een vijandelijk vliegtuig te maken op de juiste plek.

Omdat het ongeveer 100 steps duurt voor een vijandelijk vliegtuig om de room over te steken, voegen we een tweede moment toe op step 100. Hier maken we twee vliegtuigen aan die naast elkaar vliegen. Op deze manier gaan we door. We voegen momenten toe en voegen acties toe om vijandelijke vliegtuigen aan te maken. Bij het maken van de vliegtuigen op verschillende hoogten boven de room kun je mooie formaties maken. Na het toevoegen van een aantal momenten zal het venster er als volgt uitzien:

Op het aangegeven moment 400 maken we een rij van 9 vijandelijke vliegtuigen aan, waarvan twee kogels schieten (obj_enemy2). Je zou nu het idee moeten snappen. Blijf gewoon momenten toevoegen met meer en meer gevaarlijke vliegtuigen in formaties, en misschien moet je de momenten iets dichter bij elkaar zetten.

Het zal wat werk vergen om een complete reeks van momenten op te zetten die een goede moeilijkheidsgraad in de game houden. In een groot spel kun je waarschijnlijk beter verschillende levels maken.

Aan het einde van de reeks moet je een moment toevoegen dat het einde van het level of de game aangeeft. Hier moet je waarschijnlijk een bericht geven dat je het level afgemaakt hebt, of nog beter, een einde hebben zoals een vliegdekschip waarop je vliegtuig gaat landen.

We zijn nog niet klaar. Een timeline voert nog niet automatisch de acties uit! Je moet een tijdlijn koppelen aan een object waarna de acties op de tijdlijn uitgevoerd zullen worden voor dat object. Er zijn twee speciale acties hiervoor; een om de tijdlijn te koppelen aan een object en een tweede om een positie op de tijdlijn in te stellen. We gebruiken het controller_enemy object weer.

Het heeft maar één actie in het create event nodig die de juiste tijdlijn instelt. We willen dat het direct op positie 0 start en we willen niet dat het blijft herhalen, dus je hoeft geen andere instellingen te wijzigen.

Dat is alles. Zoals je zal merken, het gebruik van tijdlijnen is wat meer werk omdat je alle vijandelijke vliegtuigen moet definiëren, maar het geeft wel een stuk meer flexibiliteit en het maakt het spel een stuk interresanter. Er zijn veel dingen die je kan doen met tijdlijnen.

Hier gebruiken we ze om de stroom van het spel te bepalen, maar je kan ze ook gebruiken om bepaalde objecten te besturen gedurende de tijd. Er zijn ook veel truukjes die je kan gebruiken. Bijvoorbeeld om de tijdlijn voor een tijdje stil te zetten kun je een moment toevoegen waarin je een bepaalde voorwaarde controleert, en als die waar is de tijdlijnpositie relatief naar -1 zet. Op die manier wordt dat moment steeds uitgevoerd tot de controle false wordt.

(Er is overigens ook een actie om een tijdlijn te pauzeren.) Instanties kunnen ook tijdlijnen veranderen op basis van bepaalde events, enz. Ook kun je de snelheid van een tijdlijn veranderen. Tijdlijnen zijn dus een krachtige resource.