Рабочий процесс GMS2: от открытия папки до тестирования
03
Сценарий
Проект с «дёрганой» камерой
Многие до сих пор говорят «gms2», имея в виду современный GameMaker. Представьте: ваш персонаж ходит туда-сюда, а камера дёргается из-за дробных значений координат. Вы открываете папку проекта, описываете симптом в одном предложении и позволяете PixelTread найти код. Агент просматривает папку с помощью list_dir и glob, читает скрипты движения и камеры через read_file и предлагает небольшое изменение в виде diff. Ничего не меняется, пока вы не примете решение, поэтому первая сессия — это безопасный способ узнать, что делает каждый инструмент. Тот же цикл подходит для большинства мелких ошибок: опишите, прочитайте, проверьте, протестируйте. Каждый этап завершается в редакторе, где вы нажимаете «Play» и видите результат своими глазами. Если первое исправление не помогло, опишите, что изменилось, и следующая карточка будет основана на предыдущей. Держите проект открытым в редакторе во время работы.
01
Откройте папку
Выберите папку вашего проекта GameMaker в качестве рабочей папки чата, чтобы инструменты работы с файлами видели ваши скрипты и текстовые файлы проекта. Начинайте новый чат для каждой ошибки, чтобы каждый разговор был посвящён одной проблеме и одному diff. Рабочая папка — это граница для инструментов работы с файлами, поэтому указывайте именно на проект и ничего лишнего. Всё, что находится за пределами этой папки, не будет доступно инструментам работы с файлами.
02
Опишите проблему
Напишите, что вы видите и где, например что камера дёргается, когда персонаж поворачивается, и упомяните скрипт, если знаете его. Конкретный симптом даёт агенту то, что можно найти с помощью grep. Добавьте, что вы уже пробовали, чтобы агент не повторял ваши действия. Короткие предложения работают лучше всего.
03
Проверьте diff
Читайте каждую карточку, откройте diff и принимайте только те строки, которые вы понимаете. Отклоняйте остальное и объясняйте почему, и агент попробует снова. Режим Ask first приостанавливает выполнение перед каждым действием, изменяющим файл, поэтому ничего не сохраняется тайно. Откройте развёрнутую карточку, чтобы увидеть полный diff, а не только строку сводки.
04
Соберите и протестируйте
Запустите сборку в редакторе GameMaker, проигруйте комнату и сообщите, что вы увидели, чтобы следующий шаг начинался с фактов. Если сборка не удалась, вставьте лог в текстовый файл в папке и дайте агенту прочитать его. Затем запишите результат в чат, чтобы следующий запрос имел чёткую отправную точку. Запускайте тот же тест после каждого принятого изменения, в той же комнате.
Небольшой скрипт движения
PixelTread · Округление координат● Ask first
Округлите координаты игрока перед отрисовкой, чтобы устранить дрожание камеры.
read_filescr_move.gmlread
grepdraw_sprite3 matches
edit_filescr_move.gml+2 lines
Shellbuildexit 0
ждёт вашего подтверждения перед следующим шагомОтклонитьПринять
scr_move.gml
// Move an object with the arrow keys
function scr_move(_speed) {
var _r = keyboard_check(vk_right);
var _l = keyboard_check(vk_left);
var _d = keyboard_check(vk_down);
var _u = keyboard_check(vk_up);
x += (_r - _l) * _speed;
y += (_d - _u) * _speed;
// keep the position on whole pixels
x = round(x);
y = round(y);
}
Функция считывает клавиши со стрелками с помощью keyboard_check, перемещает x и y на величину скорости и округляет оба значения, чтобы спрайт отрисовывался на целых пикселях. Округление — это исправление описанного выше дрожания. Скрипт такого типа — это именно то, что агент может открыть, изменить и показать в виде diff, и вы можете протестировать его в комнате за минуту. Сначала сохраните его как ресурс скрипта, а затем изменяйте по одной строке за раз. Попросите агента добавить комментарий над каждым изменением, чтобы вы могли найти его позже. Плейсхолдеры вроде _speed легко переименовать.
Четыре задачи для проектов, начатых в GameMaker Studio 2
Учитесь, изменяя свои скрипты
Люди часто спрашивают, как по-настоящему научиться программировать в GameMaker, и хороший ответ — изменять реальные скрипты и наблюдать за результатами. Откройте небольшой проект и попросите агента объяснить один скрипт построчно. Он читает файл с помощью read_file и цитирует названия функций из официальной документации с помощью web_search. Затем попросите внести одно крошечное изменение, например увеличить скорость ходьбы. Прочитайте diff в режиме Ask first, примите его, соберите и запустите. Повторяйте с новым изменением каждый день и пусть агент пишет файл заметок с помощью write_file, чтобы вы могли вернуться к тому, чему вас научило каждое редактирование. Медленный прогресс — всё равно прогресс.
Отрисуйте спрайт с прозрачной частью
Возможно, вы хотите сделать прозрачной только часть спрайта, например нижнюю половину персонажа, стоящего в воде. Агент читает ваш скрипт отрисовки с помощью read_file, ищет текущий вызов отрисовки с помощью grep и предлагает изменения edit_file для отрисовки спрайта двумя частями с помощью draw_sprite_part_ext, одна из которых с меньшим значением альфа-канала. Режим Plan only может сначала показать вам эти 2 части. Коротко и проверяемо. Примите diff, запустите комнату и проверьте стык между обеими частями на уровне пикселей, так как зазор в один пиксель легко заметить в движении. Если уровень воды меняется, попросите агента привязать разделение к переменной.
Остановите движение перед стеной
Чтобы остановиться перед столкновением с объектом, скрипт должен проверить следующую позицию и только затем переместиться. Попросите агента прочитать ваш скрипт движения и обернуть каждый шаг в проверку place_meeting для целевой позиции. Карточка edit_file покажет новые строки, а Shell отчитается о коде выхода вашей команды сборки. Идите в стену в комнате. Сначала проверьте diff, затем протестируйте на медленной и быстрой скорости, так как быстрый объект всё ещё может пропустить тонкую стену, и запросите уменьшение шага, если это происходит. Держите тестовую комнату маленькой, с одной стеной и одним игроком.
Найдите первую ошибку в логе сборки
Длинный лог сборки скрывает важную строку. Сохраните лог как текстовый файл в папке проекта, затем попросите агента открыть его с помощью read_file и поискать слово error с помощью grep. Он сообщит о первой ошибке вместе с именем скрипта и номером строки, и сможет прочитать этот скрипт, чтобы предложить исправление с edit_file. Исправление первой ошибки часто устраняет и последующие. Примите diff в режиме Ask first, соберите снова и сравните новый лог со старым, чтобы увидеть, уменьшилось ли количество ошибок. Повторяйте, пока лог не станет чистым.