Lorsque vous utilisez les fonctions du système de fichiers ou les fichiers inclus avec GameMaker Studio 2 il est essentiel de savoir exactement comment tout fonctionne et ce qui se passe dans les coulisses. À cette fin, cette section est conçue pour expliquer et clarifier exactement comment les choses sont stockées, où elles sont stockées et quelles sont les limites possibles ou les solutions possibles à ce système.
La première et la plus importante à noter à propos des fonctions de fichiers est qu'elles sont limitées - en général - au sandbox. Cela signifie que GameMaker Studio 2 ne peut pas enregistrer ou charger des fichiers depuis n'importe quel endroit qui ne fait pas partie du jeu ou du stockage local pour l'appareil sans entrée explicite de l'utilisateur, et même cette entrée est limitée aux cibles Windows et Mac uniquement plates-formes.
Pour comprendre le bac à sable tout d'abord, vous devez comprendre qu'il existe deux zones distinctes pour les fichiers:
- Le groupe de fichiers: tous les fichiers qui sont empaquetés avec le jeu exécutable sont stockés, y compris les fichiers que vous avez ajoutés à la liste de ressources Fichiers inclus de l' GameMaker Studio 2 (qui sont les fichiers externes que vous voulez inclure) le jeu).
- La zone de sauvegarde: il s'agit d'une zone de stockage de périphérique pouvant être écrite en toute sécurité par le jeu et le jeu est garanti qu'il s'agit d'une zone accessible en écriture.
Le diagramme suivant peut vous aider à mieux visualiser ceci:
REMARQUE: vous ne pouvez jamais écrire dans le répertoire de regroupement de fichiers.
Les deux zones cibles - le répertoire de regroupement et la zone de stockage locale - sont disponibles sur chaque plate-forme cible, mais sur chacune d'entre elles, elles fonctionnent légèrement différemment. Toutefois, GameMaker Studio 2 a résumé l'essentiel de ce qui peut ou ne peut pas être fait, ce qui facilite le ciblage des jeux sur plusieurs environnements.
Pour commencer, vous devez comprendre ce que l'on entend quand on parle de working_directory. Ceci est un synonyme pour les deux emplacements de sauvegarde possibles (comme illustré par le diagramme ci-dessus) et lorsque vous utilisez ce répertoire, il fera l'une des deux choses selon que vous lisez ou écrivez, et si le fichier que vous lisez a été changé ou pas:
- Opérations de lecture - working_directory va d'abord vérifier la zone de sauvegarde pour voir si le fichier en cours d'accès est là, et s'il l'utilise. Cependant, si le fichier n'existe pas dans la zone de sauvegarde, il vérifie alors la zone du groupe de fichiers et l'utilise (si le fichier recherché est un fichier inclus avec votre jeu).
- Opérations d'écriture - Cela ne peut se produire que dans la zone de sauvegarde.
NOTE: En général GameMaker Studio 2 va gérer tout cela pour vous et vous avez rarement besoin d'utiliser le working_directory construit en variable.En utilisant ces deux règles simples, nous pouvons maintenant voir comment les fonctions suivantes fonctionnent (ce sont des exemples pour vous aider à visualiser le processus pour les différentes fonctions disponibles):
- directory_create (et les autres fonctions de répertoire) ne fonctionneront que dans la zone de sauvegarde.
- le système de fichiers fonctions renvoient des informations sur les fichiers à la fois le faisceau et la zone de sauvegarde, mais ils n'écrire dans la zone de sauvegarde.
- les fonctions d'écriture de fichiers texte, binaires ou INI créeront un nouveau fichier dans la zone de sauvegarde s'il n'en existe pas, en copiant toutes les informations des fichiers d' origine inclus dans le jeu si elles existent. Notez que les fichiers d'origine resteront dans la partie en lecture seule du répertoire de sauvegarde, mais ils ne seront pas référencés tant qu'une version existe dans la section de lecture / écriture de la zone de sauvegarde.
Sur les plateformes Windows et Mac OS, il existe un moyen de sauvegarder et charger des fichiers depuis l'extérieur du sandbox et d'utiliser les fonctions get_open_filename et get_save_filename. Ces deux fonctions nécessitent que l'utilisateur sélectionne une zone de chargement et d'enregistrement et que la chaîne de retour puisse ensuite être utilisée dans le reste des fonctions de fichier pour contourner le sandbox. Voir les descriptions des fonctions dans la section de script du manuel pour plus de détails.
Lorsque vous travaillez avec GameMaker Studio 2, vous devez savoir que chaque plate-forme cible possède sa propre zone de sauvegarde dans laquelle les fichiers et les répertoires peuvent être écrits et lus. Voici une liste de ces zones pour chaque cible:
- Windows et Windows UWP - Windows a tous les fichiers dans le %localappdata%\<Game Name> répertoire (sur Windows 7 c'est le /Users/<User Name>/AppData/Local/<Game Name> annuaire).
- HTML5 - Tout est fait à travers le stockage local.
- Mac OS - Le stockage dépendra du fait que l'application soit en sandbox ou pas (en suivant les règles d'Apple, avec le chemin habituellement ~/Library/Application Support/<Game Name> ).
- Ubuntu (Linux) - Les fichiers sont stockés dans le Home/.config/gamename où "Home" est le répertoire personnel de l'utilisateur - /home/<username>
- iOS - Le stockage est l'emplacement standard (vu sur iTunes).
- Android - Les fichiers sont à l'emplacement standard (invisible à moins que l'appareil ne soit rooté) /data/<package name>.
Il est à noter que les modules cibles HTML5 ont une limite de stockage local (qui peut être comprise entre 1 Mo et 5 Mo selon le navigateur) ce qui signifie que vous ne serez pas autorisé à sauvegarder de grands sprites, captures d'écran etc...