19/08/2022
Når man udvikler et spil, er et af de mest fundamentale behov at kunne gemme og indlæse data. Uden denne funktion ville spillerens fremskridt, indstillinger og highscores gå tabt, hver gang spillet lukkes. Heldigvis tilbyder GameMaker en række værktøjer til dette, og for mange udviklere, især dem der er nye i faget, er INI-filer det perfekte sted at starte. De er enkle, lette at forstå og utroligt alsidige til mange formål. Denne artikel vil guide dig igennem alt, hvad du behøver at vide for at mestre brugen af INI-filer i dine GameMaker-projekter, fra de grundlæggende koncepter til avancerede tips og vigtige advarsler.

Hvad er en INI-fil egentlig?
En INI-fil (forkortelse for "initialiseringsfil") er en simpel tekstfil, der bruges til at gemme konfigurationsdata og indstillinger. Dens store styrke ligger i dens simplicitet og læsbarhed for mennesker. Data i en INI-fil er struktureret i sektioner, og hver sektion indeholder nøgle-værdi-par. Dette format gør det utroligt nemt at organisere og finde specifikke data.
Forestil dig en INI-fil som et digitalt arkivskab. Hver skuffe i skabet er en sektion, og inde i hver skuffe er der mapper (nøgler) med et enkelt stykke papir (værdi) i hver.
Et simpelt eksempel på en INI-fil kan se således ud:
[PlayerSettings]
SoundVolume=80
MusicVolume=65
Difficulty=Normal
[SaveSlot1]
Level=5
Score=12500
Health=85
Som du kan se, er [PlayerSettings] og [SaveSlot1] sektionerne. Inden for hver sektion er der nøgler som SoundVolume og Level, som hver især har en tilknyttet værdi. Denne struktur gør INI-filer ideelle til at gemme små, velorganiserede mængder data.
Fordele ved at bruge INI-filer i GameMaker
Selvom GameMaker tilbyder mere avancerede metoder som binære filer og buffere, er der mange gode grunde til at vælge INI-filer, især for visse typer opgaver:
- Let at lære: Funktionerne til at læse og skrive til INI-filer er meget intuitive og kræver kun få linjers kode.
- Menneskeligt læsbare: Da det er en ren tekstfil, kan du (og dine spillere, hvis du tillader det) åbne filen i en standard teksteditor som Notesblok for at se eller endda redigere dataene. Dette er fantastisk til fejlfinding.
- Platformsuafhængighed: INI-formatet er universelt og fungerer på tværs af næsten alle platforme, som GameMaker understøtter, fra Windows til mobile enheder.
- Perfekt til små data: Ideel til at gemme ting som grafiske indstillinger, lydstyrke, spillerpræferencer, highscores og simple fremskridtsmarkører (f.eks. hvilket niveau spilleren sidst har gennemført).
Sådan arbejder du med INI-filer i praksis
Processen med at bruge INI-filer i GameMaker kan opdeles i tre enkle trin: Åbn, Læs/Skriv, og Luk. Det er afgørende at følge alle tre trin for at sikre, at dine data bliver gemt korrekt.
Trin 1: Åbn filen
Før du kan læse fra eller skrive til en INI-fil, skal du åbne den. Dette gøres med funktionen ini_open(navn). Hvis filen ikke eksisterer, vil GameMaker automatisk oprette den for dig, første gang du forsøger at skrive til den.
ini_open("savedata.ini");
Det er god praksis at gøre dette i starten af en gemme- eller indlæsningsproces, for eksempel i Create-eventen for et kontrol-objekt.
Trin 2: Skriv og læs data
Når filen er åben, kan du begynde at interagere med den. GameMaker har specifikke funktioner til at skrive forskellige datatyper:
ini_write_real(sektion, nøgle, værdi): Skriver et tal (real).ini_write_string(sektion, nøgle, værdi): Skriver en tekststreng.
For at læse data bruger du tilsvarende funktioner:
ini_read_real(sektion, nøgle, standardværdi): Læser et tal.ini_read_string(sektion, nøgle, standardværdi): Læser en tekststreng.
Bemærk den sidste parameter: standardværdi. Dette er den værdi, funktionen vil returnere, hvis nøglen (eller endda sektionen) ikke findes i filen. Dette er en fantastisk sikkerhedsforanstaltning, der forhindrer dit spil i at crashe, hvis en gemmefil er korrupt eller mangler data.
Trin 3: Luk filen
Dette er det vigtigste og mest oversete trin. Når du er færdig med at læse og skrive, skal du lukke filen med ini_close(). Denne kommando sikrer, at alle de ændringer, du har foretaget i hukommelsen, fysisk bliver skrevet til filen på harddisken. Hvis du glemmer dette, vil dine data gå tabt!
ini_close();
Alle GameMaker-projekter bruger internt en fil ved navn "options.ini" til at gemme spillets konfigurationsindstillinger. Derfor må du aldrig navngive din egen INI-fil "options.ini". Hvis du gør det, vil du støde på en fejl (en såkaldt UID failure), når du forsøger at kompilere dit spil. Vælg altid et unikt og beskrivende navn for dine egne filer, såsom savedata.ini, settings.ini eller highscore.ini.
Sammenligning med andre datalagringsmetoder
For at give et bedre overblik er her en tabel, der sammenligner INI-filer med andre metoder i GameMaker. Valget afhænger af dine specifikke behov for dataintegritet og ydeevne.
| Metode | Bedst til | Fordele | Ulemper |
|---|---|---|---|
| INI-Filer | Indstillinger, highscores, simpel fremgang. | Meget nemt, menneskeligt læsbart. | Ikke egnet til komplekse datastrukturer, usikkert. |
| Tekstfiler (f.eks. JSON) | Komplekse datastrukturer, inventar, dialogsystemer. | Fleksibelt, struktureret, understøtter lister og maps. | Kræver parsing (f.eks. med `json_parse`), lidt langsommere. |
| Binære Filer | Store mængder data, niveaudata, hvor ydeevne er kritisk. | Meget hurtigt, kompakt filstørrelse. | Ikke menneskeligt læsbart, komplekst at håndtere. |
Ofte Stillede Spørgsmål (FAQ)
Hvor gemmes min INI-fil?
Som standard gemmer GameMaker filer i et "sandboxed" område for at overholde reglerne på forskellige platforme. På Windows er dette typisk i mappen %localappdata%\<DitSpilNavn>\. Du behøver normalt ikke at bekymre dig om den præcise sti, da GameMaker håndterer det for dig.
Kan jeg have flere forskellige INI-filer i mit spil?
Ja, absolut! Det er ofte en god idé. Du kan have én fil til spilindstillinger (settings.ini) og en anden til spillerens fremskridt (savegame.ini). Du skal blot kalde ini_open() med det relevante filnavn, før du arbejder med den pågældende fil.
Er INI-filer sikre? Kan spillere snyde ved at redigere dem?
Nej, INI-filer er ikke sikre. Da de er almindelige tekstfiler, kan enhver spiller med lidt teknisk snilde åbne dem og ændre værdier, f.eks. give sig selv en højere score eller flere liv. Brug derfor aldrig INI-filer til at gemme følsomme data eller til noget, der er afgørende for et online leaderboard. Til sådanne formål bør du overveje mere sikre, server-baserede løsninger eller i det mindste en form for obfuskering/kryptering.
Hvad sker der, hvis jeg prøver at læse en nøgle, der ikke eksisterer?
Dit spil vil ikke crashe. Funktionen ini_read_* vil i stedet returnere den standardværdi, du angav som den sidste parameter i funktionskaldet. Dette er en robust måde at håndtere manglende data på.
Hvis du vil læse andre artikler, der ligner INI-Filer i GameMaker: En Komplet Guide, kan du besøge kategorien Træ.
