PixelTread
Сценарии

Рабочий процесс 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, проигруйте комнату и сообщите, что вы увидели, чтобы следующий шаг начинался с фактов. Если сборка не удалась, вставьте лог в текстовый файл в папке и дайте агенту прочитать его. Затем запишите результат в чат, чтобы следующий запрос имел чёткую отправную точку. Запускайте тот же тест после каждого принятого изменения, в той же комнате.

Небольшой скрипт движения

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, соберите снова и сравните новый лог со старым, чтобы увидеть, уменьшилось ли количество ошибок. Повторяйте, пока лог не станет чистым.

PixelTread для Windows

Запустите этот рабочий процесс на своём проекте

Скачать PixelTread ↗