Буфер (в программировании) - это, по сути, пространство в системной памяти (RAM), которое используется для хранения небольших пакетов данных практически для чего угодно (например, для передачи данных, коллизий, цветовых данных и т.д.). Поскольку эти данные хранятся в системной памяти, доступ к ним очень быстрый, а буфер обычно используется для очень кратковременного хранения, например, для получения сетевой информации перед ее обработкой.

Буферы создаются путем выделения места в системной памяти, вычисляемого в байтах, которое затем резервируется для игры до тех пор, пока она запущена, или до тех пор, пока буфер не будет удален с помощью соответствующей функции

В GameMaker есть ряд специфических функций, связанных с созданием, изменением и загрузкой/сохранением буферов.

Несколько важных свойств буферов в GameMaker:

  • Когда буфер создаётся, он автоматически заполняется нулями
  • Аргумент size в буферных функциях всегда указывает на размер буфера в байтах
  • Аргумент alignment (выравнивание) указывает на то, как данные хранятся в буфере. Например, если буфер выравнен по 4 байта, это означает, что позиция каждого блока должна быть кратна 4. Если в такой буфер записать данные длинной в 1 байт, он сохранится в позиции 0, а следующие 3 байта будут пустыми. Если после этого снова записать данные, они будут размещены в позиции 4, так как предыдущие 4 ячейки заняты первой записью:

  • Значение offset означает количество байт, для смещения данных в пределах буфера. Например, если буфер выровнен по 2 байта и нужно пропустить первые 4 выровненных места, получится смещение (offset) в 4 * 2 байта
  • Буферы необходимо удалять вручную, если они больше не используются. Следует помнить, что некоторые буферные функции создают новые буферы, которые также нужно удалить, если они не используются. Функция для удаления буфера: buffet_delete
  • Память, используемая для создания буфера, является системной, поэтому, даже если игра потеряла фокус, с данными ничего не случится. Однако, если приложение будет закрыто, или перезапущено, данные будут потеряны.

Когда создаётся буфер, его идентификатор сохраняется в указанную переменную. Это целое значение, начинающееся с 0. Эти индексы GameMaker может использовать повторно, поэтому крайне рекомендуется после удаления буфера записывать в переменную значение -1 buffer_delete(my_buffer) my_buffer = -1