Міні-геймджем в школі. Організаційні моменти, успіхи учнів та інсайти
Всім привіт! Мене звати Тимур. В минулому розробник курсів на основі Lego Education та Minecraft: Education Edition, а наразі вчитель інформатики і C++ Online/Engine програміст. Більше про мене можна дізнатись на LinkedIn.
Дев’ятнадцятого і двадцятого грудня в одній з шкіл Києва в тихому режимі пройшов MakeCode Arcade GameJam 2024. Нижче ділюсь організаційними моментами, результатами та інсайтами.
Розділ 1. Manage expectations
Це був перший шкільний Game Jam організований мною, який не мав ніякого розголосу і був абсолютно експериментальним, без розуміння, що з того вийде.
Запрошувались до геймджему учні та учениці 7х-9х класів, з яких записалось всього сім дітей. З яких тільки п’ятеро дійшли в перший день, і ще один, шостий, на другий.
І одразу скажу, що така кількість учасників для однієї локації була оптимальною, але про це ближче до кінця статті.
Проходив Game Jam в два дні. Перший — з 9:00 до 16:00. Другий — з 9:00 до 14:00. Тобто всього на розробку у дітей було 12 годин, не враховуючи перерв (яких було багато).
Розділ 2. На чому вони там писали
В якості «рушія» для розробки дітям був запропонований MakeCode Arcade. Як коротко пишуть на офіційому сайті: «MakeCode Arcade — це редактор коду для створення Retro Arcade ігор для браузера та кишенькових консолей.»
Зайти на платформу можна через посилання, вона безкоштовна.
Якщо комусь цікаво, про які кишенькові консолі йде мова, то це невеличкі девайси на основі STM32 та інших мікроконтролерів які підтримують ігри створені в MakeCode Arcade.
Для програмування на цій платформі використовуються блоки, схожі на Scratch.
Проте, подивившись уважно на скриншот, ви можете помітити перемикач на JavaScript та Python.
І забігаючи наперед скажу: ці перемикачі там зовсім не зайві. На моїх очах, протягом джему дитина яка ніколи в житті не чіпала текстовий код, почала міняти місцями if-statements, бо це було простіше і швидше ніж переставляти окремі блоки.
А інша дитина за допомогою зовнішнього інструменту змогла конвертувати MIDI саундтрек з Doom в формат який підтримується MakeCode Arcade і вставити в гру (у вигляді рядку байтів).
Також варто відмітити присутність «готових рішень» для деяких розповсюджених проблем при розробці 2D ігор. Наприклад інструменти для створення тайлмап, або керування персонажем.
Випереджаючи коментар: «Та тут уже за дітей все зробили, навіщо так спрощувати? Хай би самі керування, камеру і тайлмапи написали, заодно математику згадали б» — скажу, що оскільки ця платформа розрахована на новачків, можливість швидко отримати результат є надзвичайно цінним і дозволяє утримати користувачів. А коли вже дитина зробила частину гри яку вона сама придумала і вклала туди час і ресурси, нам починає допомагати ефект незворотних витрат, через який дитині/людині простіше вмовити себе розібратися з чимось більш складним, а ніж кинути це все діло.
Ще однією фішкою платформи є підтримка розширень (Extensions), які допомагають вирішувати проблеми які може бути складно або не зручно вирішувати «ванільним» набором блоків. Приклади розширень:
- MiniMenu — додає блоки для відображення меню на екрані куди можна додавати масив елементів, щоб швидко зробити, наприклад, інвентар, або Pause menu
- animation — дозволяє прив’язати декілька анімацій до спрайту, кожна з яких відповідає якомусь стану (Walking, Dying, etc.)
- status-bar — дозволяє прив’язати progress bar до спрайту, наприклад для відображення здоров’я гравця або ворогів
- arcade-sprite-data — дозволяє прив’язати будь які дані до спрайту. Наприклад, щоб дати певне здоров’я супернику без відображення progress bar.
Говорячи, до речі, про останнє розширення, не можу не вказати, що платформа привчає скоріше до data-oriented підходу, аніж до ООП. Тут немає наслідувань, зате для кожного спрайту вказується тип (Kind). І коли є спільна логіка для певного типу спрайтів, це реалізується через проходження по масиву елементів одного типу👇
Розділ 3. Яка тема була геймджему
Тему генерували за допомогою рандомайзера тем. Я знайшов їх аж два:
Нам попалася тема: Start with nothing.
Як і в «дорослих» геймджемах, перша реакція дітей була — «та що це за дурна тема». Але потрохи, коли діти зрозуміли, що не обов’язково використовувати тему буквально і можна інтерпретувати її по різному, всім полегшало і почалась генерація ідей.
На цьому етапі діти також почали об’єднуватись в команди. На відміну від «дорослих» джемів, куди зазвичай все ж приходять готові команди, тут багато хто з дітей не знав один одного і саме завдяки спільному баченню теми та спільним обговоренням вдалося утворити команди.
Утворилося 2 команди по 2 дитини, і один соло-дев.
Ідеї були наступні:
- Граєш за черв’яка, у якого нічого немає на початку і який, пробираючись через лабіринти і долаючи кротів, прокачується і вибирається на поверхню.
- Point & Click горор, в якому треба вибратись з горища.
- Space Invaders клон з прокачуванням корабля за знищення ворожих кораблів.
Розділ 4. Командна робота
В міру здібностей дітей та влаштування MakeCode Arcade, логічним розподілом обов’язків в команді стало наступне:
- Програміст/ка — відповідає за кодування механік гри.
- Художник/ця — відповідає за створення тла, тайлмап, спрайтів, анімацій.
І тут одразу важливий момент: MakeCode Arcade не підтримує одночасне колаборативне редагування. Тобто немає можливості як в Google Docs, наприклад, одночасно редагувати один документ. Але все ж є спосіб працювати разом.
Трюк полягає в тому, що всі спрайти і музика зберігаються в MakeCode Arcade у вигляді тексту. Це наприклад, наша качечка:
Такий формат дозволяє дітям зберігати створені спрайти в будь який текстовий документ і відправляти напарнику/ці, через пошту, NAS, you name it...
Є одна деталь яка вилізла протягом джему: тайлмапи переносити не можна, тому іноді простіше мати проєкт художника\ці як основний, і туди перекидати код з проєкта програміста\ки.
Другий момент — треба бути обережним з злиттям кодів двох проєктів. Іноді без WinMerge не обійтись.
Розділ 5. Що з цього вийшло
Посилання на проєкти даю нижче, ви можете зайти, пограти, залишити коментарі під статтею. Тільки врахуйте, що їх робили діти, і для когось це був ледь не перший досвід створення гри.
- Гра 1: Worm
- Гра 2: The Attic
- Гра 3: 445r
Розділ 6. Власне інсайти
- Дітям сподобалось, просили повторити і запросити до участі інші школи.
- Мені, як вчителю, теж сподобалось. Діти навчились купі всього нового, і не тому що «треба», а тому що їм дійсно було цікаво доробити гру. А для цього можна і розділ Math в блоках відкрити.
- Дітям було важко. Частина 1. Поки не знаю, чи вийде такий Game Jam провести для декількох шкіл, але просто посадити дітей робити гру і нічим їм не допомагати, навряд вийде. Викладач має бути готовий десь підтримати. Але можливо це ок. В решті решт — це не олімпіада, а геймджем. Тут головне отримати задоволення і навчитись чомусь новому.
- Дітям було важко. Частина 2. Якщо попереднє «важко» було про те, що дітям було важко розібратись як запрограмувати ту чи іншу фічу, то інше «важко» — це про те, що діти швидко втомлюються. Вони не можуть як дорослі залітати на 24/48 годин в Game Jam з обмеженням сну. Їм потрібно давати відпочивати, відволікатись. А ще бажано підгодовувати піцою, бо сили треба десь брати.
- Дедлайни. Одразу перед початком, я попередив дітей, що наша задача зробити гру в перший день. Другий день тільки для тестування і полірування. Занадто оптимістичні прогнози — це біда на всіх геймджемах як для дітей, так і для дорослих. Це трошки допомогло, але все одно, не все встиглось. Тут потрібен досвід і, можливо, краща організація.
- Підготовка. MakeCode Arcade на YouTube викладає прості відео, де батько з сином створюють ігри. Деякі діти які були на джемі, пробували повторити щось подібне на гру у відео, на уроках інформатики до джему. Це сильно допомогло зі стартом. Зовсім без знайомства з платформою було б ще важче.
- Наголошуйте на тестуванні. Ми підходили з дітьми до інших дітей в школі і просили тестувати гру. Правило тестування як завжди просте — спостерігаєш, записуєш проблеми в UX, не втручаючись. Бо тебе не буде біля кожного гравця після релізу.
Розділ 7. To be continued
Це моя перша стаття на GameDev DOU, тому чекаю на ваші запитання, критику, поради, думки тощо.
Якщо є компанія, яка хоче проспонсорувати призи, чи допомогти організувати щось подібне для декількох шкіл наступного року — пишіть на пошту чи в LinkedIn, буду радий обговорити.
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів