12-09-2010
Обзор INSTEAD 1.2.0

Выкладываю обзор INSTEAD, который был написан для журнала LGT непосредственно после выпуска версии 1.2.0.

Введение

В августе была выпущена новая версия INSTEAD — интерпретатора простых текстовых приключенческих игр. Журнал LGT уже писал об этом проекте в своем первом номере. Напомним, что больше года назад вышла первая версия программы под номером 0.7.5. Тогда вместе с интерпретатором поставлялась первая и единственная приключенческая игра «Возвращение квантового кота». Игра, будучи по своей сути текстовым приключением, содержала графику и трекерную музыку, что делало ее похожей, в том числе, и на визуальную новеллу. Такой смешанный жанр задал тон и для большинства последующих игр, написанных для INSTEAD.

Код игр для INSTEAD пишется на Lua, а сам движок использует в своей работе SDL и в данный момент работает в Linux/Windows/Mac OS X.

Развитие

За прошедшее время проект не стоял на месте: вокруг него образовалось небольшое сообщество разработчиков, создан сайт проекта (http://instead.syscall.ru), поддерживается форум и содержательная wiki для пользователей и авторов игр.

Программирование все еще остается во многом искусством. Начать проект легко, но определить заранее и в деталях во что он разовьется – часто невозможно, особенно для игрового движка. С ростом числа игр, INSTEAD расширял свои возможности. Некоторые из них никогда не планировались при начале работы над проектом. В качестве примера, можно привести игру «Кайлет», которая вышла одновременно с выпуском версии 1.2.0, и игру «Зеркало», выпущенную чуть ранее. Обе игры написаны для INSTEAD одним автором, Вадимом Балашовым, и являются переносом одноименных игр с ZX-Spectrum. Может показаться, что перенос игр с архитектуры почти 30 летней давности – это пустая трата времени, но для жанра, на который рассчитан INSTEAD проверка временем – это только плюс.

В оригинальной игре «Зеркало» использовалась система меню, традиционная для многих квестов этой архитектуры, и которая принципиально отличается от системы управления игр на INSTEAD. Тем не менее, в INSTEAD версии «Зеркала», а затем и в «Кайлет» (последняя игра в оригинале использовала текстовый ввод), реализовано именно такое оригинальное меню, при этом код меню написан целиком на Lua, что показывает достаточную гибкость движка. Также, в этих играх широко представлена простая анимация, что стало возможным в после выпуска INSTEAD 0.9.2.

Кайлет: перенос игры с ZX-Spectrum

Все игры, выпущенные командой разработчиков INSTEAD размещены в специальном репозитории в виде zip архивов. В целях повышения удобства установки и обновления игр, в феврале этого года был запущен проект Instead launcher. Instead-launcher это средство для установки, запуска и обновления игр прямо из сети. Проект написан на QT4 и работает на ОС Linux и Windows. instead-launcher

instead-launcher: средство для установки и обновления игр из Internet

Игры

За прошедшее время, кроме первой игры «Возвращение квантового кота» официально было выпущено более десяти игр, жанр которых довольно сильно варьируется.

В качестве примера, чтобы дать представление об играх на этом движке, кратко рассмотрим некоторые из них.

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

Карантин: игра с нелинейным сюжетом

Игра «Escape The Toilet» выполнена в жанре игр «Escape The Room» и при этом является головоломкой. К интересной особенности этой игры можно отнести тот факт, что вся графика в ней выполнена в «Blender», имитируя интерфейс современных трехмерных игр. С помощью наложения изображений, удалось добиться эффекта взаимодействия с игровыми объектами. Игра сложная, но никого не оставит равнодушным.

Escape The Toilet -- квест-головоломка

Несколько игр сейчас находятся в разработке. Одна из них разрабатывается автором движка и продолжает традиции первой игры для INSTEAD. Игра носит название «Куба» и должна выйти уже в ближайшее время. Куба

Куба

Кроме игр, которые специально написаны для INSTEAD, в репозитории также находятся около шестнадцати игр, написанных на языке URQL. Язык URQL широко известен в узких кругах любителей интерактивной литературы в России. Этот язык имеет довольно самобытную историю и сообщество и характеризуется крайне простым и минималистичным синтаксисом. Запуск URQ игр на INSTEAD стал возможным благодаря специальному модулю URQ, который с точки зрения движка INSTEAD является … игрой, загружающей другую игру. Отметим, что на данный момент для ОС Linux не было работающего проигрывателя URQ игр, если не считать запуск оригинального интерпретатора «FireURQ» в WINE.

С полным списком доступных для загрузки игр вы можете ознакомиться на сайте проекта.

Версия 1.2.0

Версия INSTEAD 1.2.0 содержит самое большое количество нововведений относительно прошлой версии, за всю историю проекта. Среди изменений есть полезные нововведения как для игрока, так и для автора игр.

Основными изменениями для игрока стали:

  • возможность запуска и установки игр прямо из меню INSTEAD, при этом поддерживается установка непосредственно из zip-архива. Ранее, если не использовался Instead-launcher, пользователь должен был распаковать игру в один из предопределенных каталогов;
  • удаление игр прямо из меню INSTEAD;
  • улучшения в интерфейсе игры;
  • режим переносимого («portable») приложения;
  • порт для Mac OS X;

При этом, версия 1.2.0 стала едва ли не самой значительной с точки зрения разработчика игр. За время прошедшее с момента выпуска 0.7.5 накопился опыт, который позволил выявить узкие и сомнительные особенности движка. В последней версии библиотека написания игр значительно переработана. При этим удалось сохранить полную совместимость «снизу-вверх». Основными изменениями для разработчика стали:

  • улучшенная документация и wiki;
  • модульная система (около 15 модулей, которые позволяют: работать с клавиатурой, таймером, отслеживать клики мыши по картинкам сцены, автоматически делать отступы в начале параграфов и др.);
  • отладчик;
  • более простая работа с переменными;
  • динамическая подгрузка исходного кода игры;
  • другие улучшения в API.

Кроме этого, стартовал проект редактора игр «PyIge», написанного на python3.

Заключение

За прошедшие полтора года проект заметно «вырос», пройдя путь от игры-эксперимента к практически законченному opensource продукту со своей специализацией. Помогла ему в этом и удачно выбранная архитектура и открытая модель разработки, которая привлекла и привлекает в проект энтузиастов.

До встречи,
Peter Kosyh в 13:08