У курсі Roblox Studio: Pro Developer (11–18 років) тема 11 з 31, Pathfinding, вчить дітей робити так, щоб ворог чи помічник у грі сам знаходив шлях до гравця, об'їжджаючи стіни й перешкоди — без того, щоб дитина прописувала кожен крок руху вручну. Це перехід від «персонаж рухається по прямій лінії» до «персонаж думає, як дістатися до мети», і саме цей перехід відрізняє просту гру від гри, де варто грати повторно.

Тема стоїть не випадково після теми 9 («Система раундів») і теми 10 («Spawner та хвилі ворогів»): спочатку діти навчаються створювати самих ворогів хвилями, а тема 11 дає цим ворогам здатність рухатися розумно, а не просто телепортуватися в бік гравця по прямій, ігноруючи стіни й будь-які перешкоди на карті.

Що таке PathfindingService і що він реально робить

PathfindingService — вбудований сервіс Roblox, який обчислює маршрут між двома точками так, щоб персонаж не застряг у стіні чи іншій перешкоді. За офіційною документацією create.roblox.com, основний метод — CreatePath, і йому можна передати налаштування «агента»: радіус тіла (за замовчуванням 2 студи), висоту (за замовчуванням 5) і чи може він стрибати (за замовчуванням так). Отриманий маршрут складається з набору точок-«вейпоінтів», які отримують через Path:GetWaypoints(), і скрипт просто веде персонажа від однієї точки до наступної.

Якщо прямого шляху немає — наприклад, гравець заблокував єдиний прохід коробками — об'єкт Path отримує статус NoPath замість помилки, і дитина на занятті навчається обробляти саме цей випадок: що робити ворогу, якщо до гравця справді не дістатися.

Готовий маршрут швидко застаріває, якщо гравець продовжує рухатися — вейпоінти вели до точки, де гравець стояв секунду тому, а не туди, де він зараз. Тому на занятті дітей вчать не просто один раз викликати CreatePath, а перебудовувати маршрут регулярно: наприклад, кожні півсекунди або щоразу, коли гравець відходить достатньо далеко від останньої розрахованої точки. Це вводить нове для дітей поняття — компроміс між точністю (перебудовувати маршрут частіше) і навантаженням на гру (кожен перерахунок маршруту коштує процесорного часу, і надто часті виклики помітно сповільнюють гру, якщо ворогів багато одразу).

Чому це складніше, ніж просто «йди туди, де гравець»

До теми 11 діти вже вміли писати найпростіший варіант переслідування: порівняти координати ворога й гравця і рухати ворога в тому напрямку щокадру. Це працює на відкритій арені, але ламається одразу, щойно на карті з'являється стіна чи кут — ворог упирається в перешкоду й стоїть на місці, хоча гравець лише за кілька метрів з іншого боку стіни. Стаття про тестування гри саме про такі випадки: помилка, яка не ламає гру одразу, а виявляється лише тоді, коли тестувальник свідомо ховається за перешкодою.

Pathfinding вирішує це за рахунок того, що маршрут будується не по прямій, а по сітці прохідних ділянок карти — приблизно так само, як навігатор прокладає маршрут машині по вулицях, а не по прямій через будинки. Дитина, яка вже збирала карту пригод у молодшому курсі, одразу розуміє аналогію: перешкода на карті — це не просто декор, а частина даних, які сервіс читає, щоб вирішити, куди можна ступити.

А чи не занадто складно це для дитини 11–14 років?

Складність тут не в математиці — діти не рахують сам алгоритм пошуку шляху, Roblox робить це за них усередині сервісу. Складність у тому, щоб правильно підключити готовий інструмент: створити Path, обробити випадок NoPath, оновлювати маршрут, коли гравець рухається. Це більше про архітектуру скрипта, ніж про математику, і саме тому тема стоїть у старшому курсі (11–18), а не в молодшому Roblox Старт, де діти лише починають писати перший скрипт на Lua.

Як це пов'язано з темами до і після pathfinding у програмі

Тема 10, Spawner та хвилі ворогів, створює самих ворогів партіями — pathfinding визначає, що кожен з них робить після появи. А наступні теми курсу, 12–13 (ігровий магазин — UI та логіка), уже не пов'язані з рухом напряму, тож pathfinding — завершальний штрих у блоці «вороги та бойова механіка», а не підготовка до чогось іншого. DataStore, який зберігає прогрес гравця, працює з тими самими ворогами пізніше — наприклад, запам'ятовує, скільких ворогів гравець уже переміг, але це окрема, не пов'язана з рухом задача.

Що з цього переноситься в портфоліо-гру наприкінці курсу

Фінальний проєкт курсу (теми 21–26, «Портфоліо-гра») майже завжди включає бодай одного ворога чи NPC, що рухається маршрутом, а не стоїть на місці — і більшість дітей свідомо використовують саме PathfindingService із теми 11, а не повертаються до найпростішого «йди по прямій» з ранніх тем. Це один із небагатьох інструментів курсу, який діти переносять у фінальний проєкт майже без змін, бо альтернатива — ворог, що застрягає в стінах — одразу видно на тестуванні як поламану гру.

Чому цього немає в молодшому курсі Roblox Старт

У курсі Roblox Старт → Будівник (6–11 років) NPC теж з'являються — наприклад, у фінальному проєкті «Карта пригод» — але рухаються заздалегідь заданими точками чи просто стоять на місці, без власного пошуку шляху. Стаття про левел-дизайн у молодшому курсі пояснює, чому там акцент на побудові світу й готових моделях, а не на програмуванні поведінки персонажів: для 6–11 років важливіше закріпити роботу в редакторі й перший скрипт на Lua, а pathfinding вимагає впевненого розуміння функцій і подій, яке зазвичай з'являється до 11–12 років. Це не питання «розумніший-нерозумніший», а питання, скільки нових понять дитина може утримати одночасно без втрати мотивації.

Чи платна ця функція і чи потрібні додаткові плагіни

Ні — PathfindingService вбудований у Roblox Studio безкоштовно, як і решта стандартних сервісів платформи; жодних платних плагінів чи підписок для цієї теми не потрібно. Сторінка курсу Roblox Pro Developer містить повну програму з 31 теми, якщо хочеться побачити, де саме pathfinding стоїть у плані занять за заняттям.

Для батьків, які хочуть перевірити, чи дитина справді зрозуміла тему, а не просто скопіювала готовий код з уроку, найпростіша перевірка — запитати, що станеться, якщо до гравця взагалі немає проходу. Якщо дитина відповідає щось про статус NoPath чи «ворог зупиниться й почекає», а не просто «не знаю», тема засвоєна по суті, а не на рівні копіювання рядків коду.

Є й технічна межа, про яку варто знати заздалегідь: кожен перерахунок шляху коштує ресурсів, і десяток NPC, які шукають дорогу щокадру, помітно просаджують гру навіть на непоганому комп’ютері. Тому на курсі маршрут перераховують не постійно, а за подією.

Ще один простий спосіб перевірити розуміння — попросити дитину пояснити, чому ворог іноді на мить «застигає», перш ніж побігти в новому напрямку. Це саме той момент, коли скрипт перераховує маршрут: якщо дитина може пояснити цю паузу, а не дивується їй сама, значить вона розбирала механіку, а не просто запускала готовий приклад з уроку й дивилася на результат.