Un tampon binaire est une zone de mémoire physique utilisée pour conserver temporairement des données pendant qu'elles sont déplacées d'un endroit à un autre ou manipulées d'une certaine manière, par exemple vous pouvez utiliser un tampon pour stocker des données en attente sur un réseau ou pour stocker un paquet qui a été reçu sur un réseau. GameMaker Studio 2 dispose d'un certain nombre de fonctions spécifiques liées à la création, la modification et le chargement / l'enregistrement des tampons, mais avant de les utiliser, veuillez noter les points suivants:
- Lorsqu'un tampon est créé, il est automatiquement effacé et rempli à 0.
- L'argument "taille" des fonctions de tampon fait toujours référence à la taille en octets du tampon.
- L'argument "Alignement" fait référence à la manière dont les données sont stockées dans un tampon. Si votre alignement est défini sur 4, et que vous écrivez une seule donnée de 1 octet, faites un buffer_tell, vous obtiendrez un décalage de 1. Cependant, si vous écrivez un autre morceau de données, également 1 octet de taille, faites un buffer_tell, vous obtiendrez un décalage de 5 car l'alignement a "capitonné" les données à cette taille. L'alignement affecte uniquement l' endroit où les choses sont écrites, donc si vous faites un buffer_tell Après avoir écrit quelque chose, il retourne la position d'écriture actuelle qui suit immédiatement les données que vous avez écrites. Notez, cependant, que si vous écrivez ensuite un autre morceau de données, en interne le tampon déplacera la position d'écriture le long du multiple suivant de la taille d'alignement avant d'écrire réellement l'élément de données.
- Quand il s'agit de "offset", il s'agit de la valeur en octets pour compenser les données dans le tampon donné. Donc, si votre tampon est aligné sur 2 octets et que vous voulez ignorer les 4 premiers emplacements alignés, vous aurez un décalage de 2 * 4 bytes.
- Certaines fonctions du tampon créent également un nouveau tampon (comme buffer_load par exemple). Rappelez-vous que ces tampons devront également être retirés de la mémoire lorsqu'ils ne sont pas utilisés en utilisant le buffer_delete fonction.
- La mémoire utilisée pour créer des tampons est la mémoire système, donc même lorsque le jeu n'a pas de focus, toutes les données stockées dans un tampon doivent être sécurisées, cependant si l'application est fermée ou redémarrée, elle sera perdue.
Les pages suivantes expliquent comment les tampons fonctionnent dans le contexte de GameMaker Studio 2 et contiennent quelques exemples de code pour les utilisateurs qui ne savent pas comment les utiliser:
Les fonctions suivantes existent pour vous d'utiliser avec des tampons binaires dans vos jeux:
- buffer_exists
- buffer_create
- buffer_create_from_vertex_buffer
- buffer_create_from_vertex_buffer_ext
- buffer_delete
- buffer_read
- buffer_write
- buffer_fill
- buffer_seek
- buffer_tell
- buffer_peek
- buffer_poke
- buffer_save
- buffer_save_ext
- buffer_save_async
- buffer_load
- buffer_load_ext
- buffer_load_async
- buffer_async_group_begin
- buffer_async_group_option
- buffer_async_group_end
- buffer_copy
- buffer_copy_from_vertex_buffer
- buffer_get_type
- buffer_get_alignment
- buffer_get_address
- buffer_get_size
- buffer_get_surface
- buffer_set_surface
- buffer_resize
- buffer_sizeof
- buffer_md5
- buffer_sha1
- buffer_base64_encode
- buffer_base64_decode
- buffer_base64_decode_ext
Il y a aussi deux fonctions supplémentaires liées aux tampons qui peuvent être utilisés pour enregistrer et charger les états de jeu (notez qu'ils nécessitent qu'un tampon ait été créé précédemment):
Enfin, vous pouvez également utiliser des tampons Vertex spéciaux pour créer vos propres primitives ou modèles personnalisés, etc... Vous pouvez en apprendre plus à ce sujet dans la section suivante du manuel: