Ігри для програмістів
Ігри для програмістів (англ. Programming game) — відеогри, які містять елементи програмування, дозволяючи гравцеві керувати автономними частинами у грі за допомогою предметно-орієнтованої мови програмування (часто поданої як візуальна мова[en], щоб спростити програмувальну метафору). Такі ігри поділяють на однокористувацькі, де програмувальна частина є складником або і всією головоломкою та багатокористувацькі, де програма гравця змагається з іншими.
Класифікація ред.
Однокористувацькі головоломки й багатокористувацькі змагання ред.
Головоломки ред.
Часто програмування є частиною головоломок, вимагаючи від гравця досягти певного результату, коли програма почне працювати. Прикладом є SpaceChem[ru], де гравець використовує візуальну мову, щоб керувати двома візуальними маніпуляторами, які розбирають та збирають хімічні молекули. У схожих іграх гравці можуть випробовувати та зневаджувати свої програми скільки потрібно, доки не отримають відповідь, що спрацює. Багато ігор заохочують оптимізувати розв’язок. Серед таких ігор відомі Human Resource Machine[en], TIS-100[en]. [1]
Інші ігри містять елементи програмування як частину задачі у більшій грі. Серед таких ігор Hack 'n' Slash[en], Transistor[en], else Heart.Break(), Glitchspace, and Pony Island[en].[2]
Інакший підхід, який використовується в деяких графічних іграх з елементами програмування, полягає в тому, щоб надати гравцеві інтерфейс командного рядка для видачі наказів через предметно-орієнтовану мову, що направляє об'єкти в грі, дозволяючи гравцеві перезапускати команди, коли ситуація змінюється, а не створювати програму наперед. Такими є Quadrilateral Cowboy[en], Duskers[en], Hackmud[en].
Змагання ред.
Багато ігор з програмування залучають керовані об'єкти, такі як роботи, танки або бактерії, які прагнуть знищити один одного. Такі ігри можна вважати середовищами цифрових організмів, пов'язаних з імітацією штучного життя. Гравцям надаються інструменти для розроблення та тестування своїх програм у межах предметно-орієнтованої мови гри перед подачею програми на центральний сервер. Потім сервер виконує програму в змаганні проти інших і повідомляє результати гравцям, через що вони можуть вносити зміни або вдосконалення в програму. Існують різні турніри та ліги для ігор з програмування, де люди змагаються одне з одним. Зазвичай сценарій оптимізований для спеціальної стратегії. Подібні підходи використовуються для традиційних ігор; Чемпіонат світу з комп'ютерних шахів складається з поєдинків між програмами, написаними для абстрактної стратегічної гри в шахи.
Конкурентне програмування також знайшло свій шлях до різних настільних ігор, таких як RoboRally[en] або Robot Turtles, як правило, програма стає підготованою колодою гральних карт, що діють одна за одною для виконання цього коду[3].
Дослідники представили RoboCode як основу "автентичного навчання" програмуванню[4].
Пов’язані галузі ред.
Ігри з відкритим світом, які містять можливість для гравців створювати середовища з масиву будівельних блоків, часто використовуються просунутими гравцями для побудови логічних схем та досконаліших програм з фундаментальних блоків. Minecraft - один із таких прикладів, бо хоча гра надає обмежений набір блоків, що імітують комутатори та електричні кола, користувачі створили базові функціональні комп'ютери у віртуальному світі, а щонайменше одна модифікація спрямована на те, щоб навчити дітей програмувати на віртуальному комп'ютері спрощеною мовою[5].
Кілька сайтів, наприклад Codecademy, допомагають навчати справжнім мовам програмування через гейміфікацію, де принципи відеоігор використовуються для мотивації користувача[6].
За мовою програмування ред.
Для програмування коду таких ігор можуть використовуватися різні мови програмування наприклад різновиди асемблеру або мов високого рівня. Також часто використовуються інтерпретовані мови програмування.
За ціллю гри ред.
- Бої у пам'яті — задача зайняти усю пам'ять комп'ютера, підвісити програму супротивника.
- Настільні ігри — турніри між комп'ютерам у іграх типу шахи, ґо та інші.
- Бойові роботи — ціллю гри є написати програму для керування іграшковою бойовою машиною(робот, танк). У деяких іграх можна змінювати конфігурацію робота (броня, зброя, та інше).
- Інші. Керування гоночними машинами, віртуальними колоніями бактерій, і т. д.
Історія ред.
У 1961 році у Bell Labs була розроблена гра Дарвін. На початку 1980-х років під впливом цієї гри була розроблена гра «Бій у пам'яті» (Core War).
У 1970 році пройшов перший шаховий турнір серед ЕОМ.
У 1981 році компанія MUSE Software випустила гру під назвою Robot War – саме це була перша гра, в якій програмісту доводилось керувати роботом. Гравцю дозволялося створити код для управління роботом за допомогою спеціальної мови програмування з обмеженням у 256 рядків.
Також ранніми прикладами жанру є System 15000[en] та Hacker[en].
У 1985 році була розроблена гра C Robots — це перша гра, в якій програмісту доводилося керувати роботом.
Примітки ред.
- ↑ Sayer, Matt (3 жовтня 2016). Can Videogames Teach You Programming?. Rock, Paper, Shotgun (амер.). Архів оригіналу за 9 жовтня 2016. Процитовано 9 червня 2020.
- ↑ Bosch, Synonymous (26 листопада 2018). The 10 best hacking, coding and computing games. Rock, Paper, Shotgun (амер.). Архів оригіналу за 10 червня 2020. Процитовано 9 червня 2020.
- ↑ Metz, Cade (24 липня 2014). The 75-Year Saga Behind a Game That Teaches Preschoolers to Code. Wired. ISSN 1059-1028. Архів оригіналу за 5 жовтня 2016. Процитовано 9 червня 2020.
- ↑ O'Kelly, Jackie; Gibson, J. Paul (26 червня 2006). RoboCode & problem-based learning. ACM SIGCSE Bulletin. Т. 38, № 3. с. 217. doi:10.1145/1140123.1140182. ISSN 0097-8418. Процитовано 9 червня 2020.
- ↑ Finley, Klint (18 серпня 2014). New Minecraft Mod Teaches You Code as You Play. Wired. ISSN 1059-1028. Архів оригіналу за 16 листопада 2018. Процитовано 9 червня 2020.
- ↑ Vincent, Alice (19 серпня 2011). Codecademy 'gamifies' the process of learning Javascript. Wired UK. ISSN 1357-0978. Архів оригіналу за 20 січня 2021. Процитовано 9 червня 2020.
Посилання ред.
- Programming Games Wiki [Архівовано 26 січня 2012 у Wayback Machine.](англ.)
- Константин Ветлугин, Денис Коновальчик. Аты-Боты // Компьютерра[ru]. — 6 апреля 1999. — № 14 (292).