Буфер (в программировании) - это, по сути, пространство в системной памяти (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