Het ontwerpen van spellen met Game Maker
Particle types
Een particle type beschrijft de vorm, kleur, beweging, etc. van een specifiek type particle. Je hoeft een particle type slechts één keer te definiëren. Daarna kun je het in elk particle systeem in het spel gebruiken. Particle types hebben veel parameters die gebruikt kunnen worden om elk aspect van het type te veranderen. Waneer deze op de juiste manier worden ingesteld kun je elk effect creëren dat je wilt. We zullen deze instellingen hieronder doornemen.Een aantal functies kunnen gebruikt worden om nieuwe particle types te creëren en weer te verwijderen:
part_type_create() Maakt een nieuw particle type en geeft de index van het type terug. Deze index moet in alle onderstaande functies gebruikt worden om de eigenschappen van het type in te stellen. Je zult ze dus vaak opslaan in een globaal variabele.
part_type_destroy(ind) Vernietigt het particle type waarvan de index is opgeslagen in het variabele ind. Gebruik deze functie als je het type niet meer nodig hebt om ruimte te sparen.
part_type_exists(ind) Geeft terug of het aangegeven particle type bestaat.
part_type_clear(ind) Verandert de index van het aangegeven type naar de standaard waarde.
De vorm van een particle
Een particle heeft een vorm. Deze vorm word aangegeven door een sprite. Je kunt elke willekeurige sprite gebruiken voor je particles maar er zijn voor particles 15 ingebouwde sprites. Deze zijn allemaal 64X64 in formaat en hebben alpha waardes zodat ze mooi vermengen met de achtergrond. Ze zijn aangegeven door de volgende constanten:- pt_shape_pixel
- pt_shape_disk
- pt_shape_square
- pt_shape_line
- pt_shape_star
- pt_shape_circle
- pt_shape_ring
- pt_shape_sphere
- pt_shape_flare
- pt_shape_spark
- pt_shape_explosion
- pt_shape_cloud
- pt_shape_smoke
- pt_shape_snow
Je stelt de vorm in door de volgende functie:
part_type_shape(ind, shape) Stelt de vorm van het particle in op één van de bovenstaande constanten (standaard is pt_shape_pixel).
Je kunt ook je eigen sprites gebruiken voor het particle. Als de sprite meerdere subimages heeft kun je aangeven wat daarmee moet gebeuren. je kunt een willekeurige gebruiken, de sprite animeren, Starten op het begin van de animatie of op een willekeurige plek, etc. Je gebruikt hiervoor de volgende functie.
part_type_sprite(ind, sprite, animat, stretch, random) Stelt je eigen sprite in voor het particle type. Met animatie stel je in of de sprite wel (1) of niet (0) geanimeerd moet worden. Met stretch (1 of 0) geef je aan of de animatie moet worden uitgestrekt over de levensduur van de particle. En met random (1 or 0) stel je in of een willekeurige sub-sprite moet worden gekozen als start
Als je eenmaal een sprite voor het particle type hebt gekozen (een standaard of je eigen) kun je het formaat ervan instellen. Een formaat van 1 gebruikt het normale formaat van de sprite. Een particle type kan gedefinieerd worden zodat alle particles hetzelfde formaat hebben. Je kunt een reeks van formaten definiëren. Ook kun je aangeven of het formaat zou veranderen over de levensduur van het particle en of er fluctuaties moeten plaatsvinden in formaat, wat zorgt voor een glinsterend effect.
part_type_size(ind, size_min, size_max, size_incr, size_wiggle) Stelt de formaat parameters in voor het particle type. Je specificeert het minimale start formaat, het maximale start formaat, De formaat toename elke step (gebruik een negatief nummer voor verkleining) en de hoeveelheid schommeling. (Het standaard formaat is 1 en veranderd niet.)
part_type_scale(ind, xscale, yscale) Stelt de horizontale en verticale schaal in. deze factor word vermenigvuldigt met het formaat. Dit is in het bijzonder handig waneer je verschillende schalen nodig hebt in de x- en y-richting.
De particles hebben ook een oriëntatie. Ook hier kan de oriëntatie hetzelfde zijn voor alle particles, kan verschillen, of kan veranderen over de levensduur van de particle. De hoeken specificeren de rotaties tegen de klok in, in graden.
part_type_orientation(ind, ang_min, ang_max, ang_incr, ang_wiggle, ang_relative) Stelt de oriëntatie, graden opties in voor het particle type. Je kunt de minimale hoek opgeven, de maximale hoek, de toename elke step en de hoeveelheid schelling in de hoek. (Standaard zijn alle waardes 0.) Je kunt ook opgeven of de opgegeven hoek relatief (1) tot de huidige richting of absoluut (0). Bijv.: Door alle waardes op 0 te zetten, maar ang_relative op 1, de particle oriëntatie zal precies het pad van de particle volgen.
Kleur en vermenging
Particles zullen een kleur hebben. Er zijn verschillende manieren waarop je de kleur van een particle kunt instellen. De gemakkelijkste manier is één enkele kleur gebruiken. Je kunt ook twee of 3 kleuren instellen waartussen de particle veranderd tijdens zijn levensduur. Bijvoorbeeld, de particle veranderd van wit langzaam naar zwart. Nog een mogelijkheid is dat je instelt dat de kleur van elke particle verschillend moet zijn, gekozen uit een reeks van kleuren. Je kunt óf een reeks van rood, groen en blauw opgeven, óf een reeks van hue, saturion en waarde.de standaard kleur is wit. Als je een sprite met z'n eigen kleuren gebruikt, is dit wat je normaal wilt en hoef je geen kleur in te stellen.
part_type_color1(ind, color1) Stelt een enkele kleur in die gebruikt moet worden voor de particles.
part_type_color2(ind, color1, color2) Stelt 2 kleuren in waartussen de kleur word berekend.
part_type_color3(ind, color1, color2, color3) hetzelfde maar dan word de kleur berekend tussen de start kleur, halverwege, en het einde.
part_type_color_mix(ind, color1, color2) Met deze functie geef je aan dat de particle een kleur moet krijgen die een willekeurige mix is uit de twee aangegeven kleuren. Deze kleur zal gelijk blijven over de gehele levensduur van de particle.
part_type_color_rgb(ind, rmin, rmax, gmin, gmax, bmin, bmax) Kan gebruikt worden om aan te geven dat de particle een vaste kleur moet hebben maar dan uit de aangegeven reeks. Je specificeert een reeks in rood, groen, en blauw component van de kleur (elk tussen 0 en 255).
part_type_color_hsv(ind, hmin, hmax, smin, smax, vmin, vmax) Kan gebruikt worden om aan te geven dat de particle een vaste kleur moet hebben maar dan uit de aangegeven reeks. Je specificeert een reeks in hue saturation en waarde component van de kleur (elk tussen 0 en 255).
Naast de kleur kun je ook en alpha transparante waarde opgeven. De ingebouwde particle vormen hebben al een alpha transparantie maar je kunt deze instellingen gebruiken om bijvoorbeeld te laten verdwijnen over zijn levensduur.
part_type_alpha1(ind, alpha1) Stelt één enkele alpha transparantie parameter (0-1) in voor het particle type.
part_type_alpha2(ind, alpha1, alpha2) Hetzelfde maar deze keer zijn start en eind waarde gegeven en word de alpha waarde ertussenin berekend.
part_type_alpha3(ind, alpha1, alpha2, alpha3) Deze keer zijn drie waardes ingesteld waartussen de alpha waarde word berekend .
Normaal gesproken worden particles vermengt met de achtergrond op dezelfde manier als sprites. Maar het is ook mogelijk om auditieve vermenging te gebruiken. Dit specifiek geeft een geweldig effect voor explosies.
part_type_blend(ind, additive) Stelt in of auditieve vermenging (1) of normale vermenging (0) moet worden gebruikt voor het particle systeem.
leven en dood
Particles bestaan voor een beperkte hoeveelheid tijd, hun levensduur. Hierna verdwijnen ze. Levensduur word gemeten in steps. Je kunt de levensduur opgeven (of een reeks van levensduren) voor elk particle type. Particles kunnen nieuwe particles maken van verschillende types. Er zijn hiervoor twee manieren. Ze kunnen nieuwe particles maken in elke step of ze kunnen nieuwe particles maken als ze verdwijnen. Ben voorzichtig dat de hoeveelheid particles niet te hoog word.
part_type_life(ind, life_min, life_max) Stelt de levensduur beperkingen in voor het particle type. (standaard zijn beide 100.)
part_type_step(ind, step_number, step_type) Stelt het aan tal en type particles die in elke step gemaakt moeten worden door het ingestelde particle type. Als je een negatief nummer gebruikt, dan word in elke step een particle gemaakt met een kans van -1/step. Bijvoorbeeld bij een waarde van -5 word er iedere 5 steps 1 particle gemaakt.
part_type_death(ind, death_number, death_type) Stelt het nummer en type particle in die gemaakt moet worden als een particle van het aangegeven typ (ind) doodgaat. Ook hier kun je negatieve nummers gebruiken om particles met een bepaalde kans te laten maken. Merk op dat deze particles alleen gemaakt worden op het eind van de levensduur van de particle, niet als hij word vernietigt door een destroyer (zie hieronder).
Particle beweging
particles kunnen alleen bewegen tijdens hun levensduur. Ze kunnen een eerste snelheid krijgen (of reeks snelheden) en richting, en snelheid en richting kunnen veranderen tijdens de levensduur. Ook zwaartekracht die de particle in een bepaalde richting trekt kan worden opgegeven. de volgende functies bestaan hiervoor:
part_type_speed(ind, speed_min, speed_max, speed_incr, speed_wiggle) Stelt de snelheids eigenschappen van het particle type in. (standaard zijn alle waarden 0.) Je specificeert de minimale en maximale snelheid. Een willekeurige waarde tussen de opgegeven limieten word gekozen als het particle is gemaakt. Je kunt een snelheidsverhoging in elke step instellen, gebruik een negatief nummer om de particle af te remmen (de snelheid zal nooit kleiner als 0 worden). Als laatste kun je schommeling in de snelheid instellen.
part_type_direction(ind, dir_min, dir_max, dir_incr, dir_wiggle) Stelt de richting eigenschappen van het particle in. (Standaard zijn alle waarden 0.) Ook hier kun je een reeks richtingen opgeven (graden tegen de klok in; 0 geeft een beweging naar rechts aan). Bijvoorbeeld, om de particle te laten bewegen in een willekeurige richting kies je 0 en 360 als waarden. je kunt een toename in richting elke step opgeven, en een hoeveelheid schommeling.
part_type_gravity(ind, grav_amount, grav_dir) Stelt de zwaartekracht eigenschappen voor het particle type in. (Standaard is er geen zwaartekracht.) Je geeft de hoeveelheid zwaartekracht op die in elke step erbij gedaan moet worden en de richting van de zwaartekracht. Bijvoorbeeld: gebruik 270 voor een zwaartekracht naar beneden.