PixelTread
Werkstromen

GMS2-projectwerkstroom: van map openen tot playtest

03
Het scenario

Een project waarbij de camera trilt

Veel mensen gebruiken nog steeds de term gms2 als ze het huidige GameMaker bedoelen. Stel je voor dat je speler heen en weer loopt en de camera trilt omdat de positie breukwaarden bevat. Je opent de projectmap, beschrijft het symptoom in één zin en laat PixelTread de code vinden. De agent scant de map met list_dir en glob, leest de bewegings- en camerascripts met read_file, en stelt een kleine wijziging voor als diff. Er verandert niets totdat jij beslist, dus de eerste sessie is ook een veilige manier om te leren wat elke tool doet. Dezelfde cyclus werkt voor de meeste kleine bugs: beschrijf, lees, bekijk, test. Elke ronde eindigt in de editor, waar je op Afspelen drukt en het resultaat zelf ziet. Als de eerste fix niet volstaat, beschrijf je wat er veranderd is en bouwt de volgende kaart voort op de vorige. Houd het project open in de editor terwijl je werkt.

01

Map openen

Kies je GameMaker-projectmap als werkmap van de chat, zodat de bestands-tools je scripts en tekstbestanden van het project kunnen zien. Start een nieuwe chat voor elke bug, zodat elk gesprek over één probleem en één diff gaat. De werkmap is de grens voor de bestands-tools, dus wijs deze naar het project en niets anders. Alles buiten die map valt niet onder de bestands-tools.

02

Probleem beschrijven

Schrijf op wat je ziet en waar, bijvoorbeeld dat de camera trilt terwijl de speler draait, en noem het script als je dat weet. Een concreet symptoom geeft de agent iets om naar te zoeken met grep. Voeg toe wat je al hebt geprobeerd, zodat de agent het niet herhaalt. Korte zinnen werken goed.

03

Diff bekijken

Lees elke kaart, open de diff en accepteer alleen de regels die je begrijpt. Wijs de rest af en leg uit waarom, en de agent probeert het opnieuw. Ask first pauzeert voor elke actie die een bestand wijzigt, zodat er niets achter je rug om wordt opgeslagen. Open de uitgebreide kaart om de volledige diff te zien, niet alleen de samenvattingsregel.

04

Bouwen en testen

Voer je build uit in de GameMaker-editor, speel de kamer af en rapporteer wat je zag, zodat de volgende stap op feiten kan beginnen. Als de build mislukt, plak je de log in een bestand in de map en laat je de agent deze lezen. Schrijf vervolgens het resultaat op in de chat, zodat het volgende verzoek een duidelijk startpunt heeft. Voer dezelfde test uit na elke geaccepteerde wijziging, in dezelfde kamer.

Een klein bewegingsscript

scr_move.gml
// Move an object with the arrow keys
function scr_move(_speed) {
    var _r = keyboard_check(vk_right);
    var _l = keyboard_check(vk_left);
    var _d = keyboard_check(vk_down);
    var _u = keyboard_check(vk_up);
    x += (_r - _l) * _speed;
    y += (_d - _u) * _speed;
    // keep the position on whole pixels
    x = round(x);
    y = round(y);
}

De functie leest de pijltjestoetsen met keyboard_check, beweegt x en y met een snelheidswaarde en rondt beide af zodat de sprite op gehele pixels wordt getekend. Afronden is de oplossing voor het hierboven beschreven schudden. Een script als dit is precies wat de agent kan openen, wijzigen en tonen als diff, en je kunt het binnen een minuut in een kamer testen. Sla het eerst op als een script-asset en wijzig één regel tegelijk. Vraag de agent om boven elke wijziging een commentaar toe te voegen, zodat je het later kunt terugvinden. Placeholder-namen zoals _speed zijn eenvoudig hernoembaar.

Vier taken voor projecten gestart in GameMaker Studio 2

Leren door je eigen scripts te wijzigen

Mensen vragen vaak hoe ze GameMaker-codering echt kunnen leren, en een goed antwoord is: echte scripts wijzigen en kijken wat er gebeurt. Open een klein project en vraag de agent om één scriptregel voor regel uit te leggen. Het leest het bestand met read_file en citeert de functienamen uit de officiële handleiding via web_search. Vraag vervolgens om een kleine wijziging, zoals een snellere loopsnelheid. Lees de diff in Ask first-modus, accepteer hem, bouw en speel af. Herhaal dit met een nieuwe wijziging elke dag, en laat de agent een notitiebestand schrijven met write_file, zodat je kunt teruggaan naar wat elke edit je heeft geleerd. Langzaam vooruitgang is nog steeds vooruitgang.

Een sprite tekenen met een vervagend deel

Je wilt misschien alleen een deel van een sprite transparant maken, bijvoorbeeld de onderste helft van een personage dat in het water staat. De agent leest je draw-script met read_file, zoekt de huidige draw-aanroep met grep en stelt edit_file-wijzigingen voor die de sprite in twee stukken tekenen met draw_sprite_part_ext, waarvan één met een lagere alpha-waarde. Plan only kan je eerst de 2 stukken tonen. Kort en testbaar. Accepteer de diff, speel de kamer af en controleer de naad tussen beide delen op pixelniveau, omdat een spleet van één pixel in beweging goed zichtbaar is. Als het waterpeil beweegt, vraag de agent dan om de split aan een variabele te koppelen.

Beweging stoppen voor een muur

Om te stoppen voordat je tegen een object aan botst, moet een script de volgende positie testen en pas daarna bewegen. Vraag de agent om je bewegingsscript te lezen en elke stap in een place_meeting-controle op de doelpositie te verpakken. De edit_file-kaart toont de nieuwe regels en Shell rapporteert de exit-code van je build-opdracht. Loop tegen een muur aan in de kamer. Bekijk eerst de diff, test vervolgens bij langzame en snelle snelheid, omdat een snel object een dunne muur nog kan overslaan, en vraag om een kleinere stap als dat gebeurt. Houd de testkamer klein, met één muur en één speler.

De eerste fout in een build-log vinden

Een lange build-log verbergt de regel die er toe doet. Sla de log op als een tekstbestand in de projectmap, vraag de agent deze vervolgens te openen met read_file en er met grep op te zoeken naar het woord error. Het rapporteert de eerste fout samen met de scriptnaam en regelnummer, en het kan dat script lezen om een fix voor te stellen met edit_file. Het oplossen van de eerste fout maakt de fouten eronder vaak ook weg. Accepteer de diff in Ask first, bouw opnieuw en vergelijk de nieuwe log met de oude om te zien of het aantal fouten is gedaald. Herhaal dit totdat de log schoon is.

PixelTread voor Windows

Voer deze werkstroom uit op je eigen project

PixelTread downloaden ↗