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