К сожалению, даже с помощью самых лучших современных средств разработки приложений создание игровых программ требует гигантских усилий и глубокого понимания компьютерной системы, языка программирования, стандартных библиотек и применяемого инструмента разработки. Как превратить обычного пользователя в творца?

Я хорошо помню свой юношеский восторг, когда, сделав первый шаг в программировании, мне удалось заставить компьютер напечатать первые сто простых чисел. Сегодня подобные результаты больше не пленяют начинающих программистов — их не удивишь даже компьютерной игровой программой с причудливым интерфейсом, музыкой и видео. Вновь посвященные хотят сами создавать эти сложные и привлекательные программы.

LOGO И LEGO

Logo (www.logosurvey.co.uk), вместе с множеством своих разновидностей, представляет собой классический пример алгоритмического языка, нацеленного на пробуждение у молодежи интереса к программированию. Задуманный, прежде всего, как язык для рисования, Logo позволяет гонять по экрану виртуальную черепашку, чертя геометрические фигуры. Даже в своем первоначальном варианте программа могла таким образом выполнять довольно сложные рисунки, а современные версии значительно расширяют возможности Logo. Нынешним же пользователям, избалованным игровыми приставками и компьютерными играми, блеск Logo уже не кажется столь ярким.

Управление виртуальной черепашкой не может сравниться с управлением реальным роботом, что, видимо, и объясняет большую часть успеха конструктора Lego MindStorms (www.legomindstorms.com). Несмотря на общепризнанную ограниченность программного обеспечения, поставляемого вместе с системой, пользователи могут создавать и программировать своих собственных роботов. К счастью, сторонние разработчики написали для этих роботов полноценные языки программирования, среди которых особенно выделяется NQC (bricxcc.sourceforge.net/nqc). Основные недостатки использования этих роботов для изучения программирования — цена и ограниченные возможности. С другой стороны, они вполне могут сыграть роль наглядных пособий для объяснения сложных концепций, вроде распараллеливания.

Разработка игр

Для молодых людей компьютерные игры являются весьма популярным развлечением, и неудивительно, что многие из них мечтают о том, что когда-нибудь сами будут создавать подобные игры. Так почему бы не использовать разработку игр как один из методов преподавания информатики?

Разработка компьютерных игр тесно связана с целым рядом направлений развития информатики, включая машинную графику, искусственный интеллект, человеко-машинное взаимодействие, безопасность, распределенное программирование, моделирование и разработку программного обеспечения. Разработка игр также требует привлечения гуманитарных, социальных наук и психологии.

Game Maker

Написать игру, подобную Рас-Man, на современном языке программирования «с нуля» все еще достаточно трудно. К счастью, сегодня есть ряд инструментов, облегчающих создание игр.

При помощи инструмента StageCast (www.stagecast.com), специально предназначенного для детей, создатель определяет правила, которые связывают существующие графические ситуации с новыми. Например, пользователь StageCast может создать правило, утверждающее, что если справа от игрового персонажа есть свободное место, то персонаж может туда передвинуться. Примерно в том же направлении движется компания ClickTeam (www.clickteam.com), которая для создания игр предлагает несколько инструментов типа Click, Play или Games Factory. С помощью этих инструментов можно создавать более сложные игры, но они имеют ограниченные возможности программирования.

Множество подобных программ, можно найти на Web-странице www.ambrosine.com/resource.html. Одна из таких программ, Game Maker (www.gamemaker.nl), является инструментом быстрой разработки приложений и в настоящее время во всем мире используется молодыми людьми дома и в школе для создания двумерных и изометрических игр. (Имеется русскоязычный вариант сайта, посвященного Game Maker www.basko.ru/persons/slowo/index.html. Прим. переводчика)

Рис. 1. Интерфейс Game Maker. Слева отображаются ресурсы типа спрайтов и звуков, а справа находятся редактор спрайтов, редактор комнат и формы свойств.

На рис. 1 показан интерфейс Game Maker, в котором использован объектно-ориентированный подход, управляемый событиями. Путем простого перетаскивания объектов мышью можно создать игру, не написав ни одной строки кода. Тем не менее, Game Maker включает также интерпретируемый язык программирования. Результат работы Game Maker — автономная свободнораспространяемая игровая программа; одну из версий Game Maker также можно получить бесплатно. В течение последних нескольких лет программа Game Maker стала чрезвычайно популярной. В 2003 году было загружено 1,7 млн ее копий. Самые молодые, восьмилетние пользователи при помощи Game Maker осваивают вводный курс программирования. Люди постарше, среди которых есть и восьмидесятилетние, в создании игр находят новое хобби, а иногда и новую профессию.

Объектно-ориентированное программирование

В компьютерной игре все элементы — это объекты: монстры, сегменты стен, монеты, драгоценности, волшебные таблетки, ружья и пули. Размышлять о создании игры означает размышлять об объектах, их реакции друг на друга и на действия игрока, поэтому разработчик естественным путем приходит к объектно-ориентированному образу мышления.

Чтобы создать игру при помощи Game Maker, разработчик создает объекты. Некоторые объекты имеют визуальное представление, например анимированные спрайты. Другие, подобно тем, что управляют ходом игры или поддерживают счет, такого представления не имеют. В игре одновременно могут появиться несколько экземпляров одного и того же объекта.

Экземпляры имеют свойства. Некоторые свойства являются встроенными, например скорость перемещения экземпляра или спрайт для его визуального представления. Другие свойства могут быть определены пользователем, ими можно манипулировать и проверять их с помощью действий или программного кода. Разработчик должен определить поведение каждого объекта. В то время как некоторые объекты, вроде сегментов стен, не имеют никакого поведения, другие, подобно аватаре (в индуизме — воплощения бога Вишну), олицетворяющему игрока, скорее всего, будут обладать довольно сложным поведением.

Game Maker описывает поведение в терминах управления событиями. События относятся к объектам, и разработчик определяет действия, которые должна выполнить игра, когда эти события происходят. Типичные события включают создание или разрушение объекта, ввод данных со стороны пользователя, столкновение между экземплярами, сигнал таймера и переход к следующему шагу игры. Разработчик может путем простого перетаскивания связать события с действиями, как показано на рис. 2. Game Maker имеет более сотни встроенных действий — от перемещения объекта в определенном направлении до воспроизведения звука и вывода списка победителей.

Рис. 2. Форма свойств объекта. Список событий, определенных для врага, находится в центре слева, а справа отображаются действия, которые игра должна выполнить, когда во врага попадает пуля.

Для более сложных задач разработчик использует программируемые действия, вводя фрагменты кода, которые будут выполняться при наступлении событий. При написании этого кода можно использовать около тысячи функций для управления всеми аспектами игры, включая сетевые коммуникации и спецэффекты типа языков пламени или падающего снега.

Такую мощную концепцию объектно-ориентированного программирования, как наследование, непросто осознать, оставаясь в рамках традиционных приложений. А вот при создании игр понимание наследования приходит естественным путем. Возьмем, например, известный класс игр, основанных на Breakout, в которых игрок должен уничтожать камни, поражая их прыгающим шаром. Все камни ведут себя схожим образом, но обладают разнообразием форм и цветов. Это обстоятельство приводит к логичному и эффективному решению — сначала создать один объект-камень и определить его поведение, а затем на его основе создавать похожие объекты с различными цветами, которые наследуют поведение исходного объекта. В Game Maker это достигается простой установкой значения родительского поля объекта.

Некоторые из камней могут иметь несколько иное поведение — например, для их уничтожения игрок должен поразить дважды. Для смены поведения можно просто переопределить некоторые события и задать для них другие действия. Пользователи находят, что это чрезвычайно мощный механизм, который интуитивно приводит их к объектно-ориентированному программированию.

Более сложные концепции

Как только пользователи ознакомятся с основными методами создания игр, их интерес обычно обращается к новым областям, таким как поведение, искусственный интеллект или создание игр с участием нескольких игроков. Некоторые стремятся к созданию игр с более сложной графикой, например, с отображением игрового поля в изометрической перспективе. Другие могут заинтересоваться моделированием реальных физических явлений, скажем, движением автомобиля.

Это желание погружает начинающего пользователя еще глубже в компьютерный мир. Обратимся, скажем, к вопросу об искусственном интеллекте. Объекты в игре должны обладать определенным поведением. Даже призраки в игре Рас-Man имеют некоторое относительно сложное поведение. Враждебные призраки пытаются поймать персонаж, представляющий игрока, а когда он съедает волшебную таблетку, призраки в притворном ужасе разбегаются в разные стороны. Более того, призраки ведут себя по-разному. Некоторые из них нападают на игрока, в то время как другие охраняют определенные участки игрового поля.

Реализация такого поведения требует некоторой степени интуитивного понимания принципов работы конечных автоматов и систем, построенных на основе правил. Призраки, например, могут находиться в различных состояниях. Поведение призрака зависит от его состояния и от информации о расположении стен и игрока. При наступлении определенного события призрак меняет свое состояние, например, погибает, или из охотника превращается в дичь, что приводит к смене модели поведения. Game Maker может легко проиллюстрировать подобные концепции.

Обучение разработке игр

Game Maker используется на всех уровнях обучения. Ряд образовательных организаций применяют программу в летних лагерях с техническим уклоном, в частности, Children?s Technology Workshop (www.ctworkshop.com) на условиях лицензирования предлагает законченный курс обучения для таких лагерей на базе Game Maker. Некоторые начальные школы начали применять Game Maker, чтобы оживить интерес учащихся к информатике. В программы информатики для средней школы педагоги все чаще включают курсы игрового дизайна. Обычно учащиеся с энтузиазмом воспринимают эти курсы, потому что обычным занятиям они предпочитают программирование в Game Maker.

Game Maker используется также в курсе разработки компьютерных игр, читаемом в Утрехтском университете (www.cs.uu.nl). В этом курсе студенты сначала изучают основные понятия игрового дизайна: как установить правила игры, как описать игру в проектном документе, как определить поведение игровых объектов и, что важнее всего, как сделать игру интересной и смешной. На следующих этапах студенты переходят к трехмерному игровому дизайну.

При помощи Game Maker удалось создать удивительные игры. Важно, что людям нравится работать над созданием игр, и в ходе этой работы они многое узнают о программировании и о других, более сложных аспектах информатики. Создание игр доступно в любом возрасте, причем не только мужчинам — активность прекрасной половины сообщества пользователей Game Maker говорит сама за себя. Отраднее всего следующий вывод — создавать игры гораздо интереснее, чем в них играть.

Марк Овермарс (markov@cs.uu.nl) — профессор отделения вычислительной техники Утрехтского университета, руководитель Центра геометрии, визуализации и виртуальных сред (Center for Geometry, Imaging, and Virtual Environments, www.give.nl).


Mark Overmars. Teaching Computer Science through Game Design. IEEE Computer, April 2004. IEEE Computer Society, 2004, All rights reserved. Reprinted with permission.