ПРИНТЕД #0

1 февраля 2015 г.
http://instead.syscall.ru


Привет всем! Идея начать выпуск периодической сборки новостей, связанных с проектом INSTEAD, пришла ко мне во время чтения электронных газет на БК 0010 (теплых и ламповых!). Мне показалось, что будет забавно периодически выпускать подобные выпуски. Ну а взлетит или нет -- увидим.

Заниматься этим делом, думаю, буду сам, но от помощи в любом виде не откажусь. Так что, если вам есть что написать или чем помочь, а также есть вопросы и темы для будущих выпусков -- пишите письма на gl00my at mail.ru. В теме письма укажите: PRINTEAD.

Петр Косых

Новости


Для первого выпуска расскажу о самых основных изменения за последние пару месяцев.

INSTEAD на iOS

Версия для iOS возникла спонтанно. Моя жена намекнула мне, что хорошо было бы поиграть в цветные шарики (INSTEAD LINES) на большом экране iPad. Я говорю - нет INSTEAD на iOS. Она мне говорит - да брось ты, есть!

Через пару дней мне удалось собрать INSTEAD для iOS и запустить шарики.

Для этого я использовал:

  • Хакинтош на ноутбуке Lenovo
  • Xcode 5.1
  • jailbreak от taig для iOS 8.1.2

Таким образом, формально, INSTEAD прекрасно пашет на iOS, но протолкнуть его в AppStore это отдельная война, для которой я не солдат...

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

А если вам просто хочется поиграть на jailbroken устройстве -- ставьте! Игры закачиваются в Documents/.instead/games...

Именно на этой версии я прошел Miner Bold. :)

Выпуски INSTEAD

Месяц назад после длительного перерыва была выпущена версия 2.2.0. Из важных видимых изменений, кроме упомянутой выше iOS версии, стоит назвать модуль finger для работы с мультитач экранами мобильных устройств, а также актуальная английская документация! Да, в проекте появился fiction_account, человек из США, который помог с переводом документации, а также с локализацией одной из игр.

А вчера я выпустил корректирующую версию 2.2.1, в которой, наконец то, осуществлен переход на SDL2. До кучи, я еще ее собрал с luajit.

Многие тут обвиняют INSTEAD в ориентации на гиков, мол все у них там не для обычных смертных. Это не так! Чтобы развеять эту беспочвенную клевету, рассказываю на пальцах.

SDL2 - новая версия библиотеки, которая используется для отображения игры. Версии для Android и iOS давно собираются с SLD2, но не смотря на свою широкую известность, в библиотеке немало багов и особенностей.

Но SDL2, в целом, написана лучше и работает быстрее предыдущей SDL, которая до сих пор использовалась в Windows сборках. Настала пора перейти на новые технологии! Что это значит?

  • Унификация. Разрабатывая игру на Windows, вы знаете, что она будет работать абсолютно также и на iOS/Android.
  • Скорость.
  • При использовании звуков, используйте самплы только с частотами: 11025, 22050, 44100 Hz. Это связано с тем что SDL2 на данный момент не поддерживает ресамплинг некратных частот.

Теперь о luajit. Все знают, что игры под INSTEAD пишутся на lua. Lua -- это интерпретатор, который превращает текст программы во внутреннее представление и затем, выполняет ее шаг за шагом. luajit - компилирует программу прямо в памяти и прямо в набор команд процессора! Тем самым скорость работы программы может возрасти в десятки раз!!! Код на luajit выполняется реально очень быстро!

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

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

В конфигурационном файле с настройками можно задать строчку:

debug = 1

И больше не нужно будет писать -debug в командной строке!

Еще появился параметр -vsync, который тоже можно вбить в файл (или указать в командной строке). Полезная вещь для direct режима, тогда отрисовка в играх типа Miner Bold станет плавней, за счет небольшого повышения нагрузки на процессор.

Материк попадет в Steam?

Ошеломляющая новость. Игра "Материк" от Василия Воронкова прошла гринлайт и ей дали зеленый свет на попадание в Steam! Для этого надо совсем немного -- перевести на английский, что на данный момент почти свершившийся факт (с помощью коллеги из США). А пока этого не произошло -- вы можете совершенно бесплатно и легально запустить русскую версию на INSTEAD.

Новый INSTEAD LAUNCHER

Легендарный (да да!) автор jhekasoft пилит новый ланчер на python. Он явно будет хорош для юниксоидов, так как питон позволит написать его красиво, но я боюсь, что для Windows пользователей установка python станет барьером.

Ланчер уже хорошо работает в консоли (в том числе и на Windows) и сейчас ведется разработка на gui. Подробности ищите на нашем форуме.

Лаборатория INSTEAD


INSTEAD в каком то смысле можно назвать экспериментальной платформой. С ним бывает интересно играть. :) Опишу основные извращения, которые были проделаны за последние пару месяцев.

Эксперименты с love2d

Движок INSTEAD в качестве языка программирования использует Lua. Не смотря на то, что основным назначением движка, как вы знаете, является интерактивная литература и текстографические квесты, его можно использовать для написания простых 2d игрушек.

Как многие слышали, существует проект love2d, который направлен на создание 2d игр и также использует Lua. Конечно, в love2d упор сделан на игры другого плана, но все-таки мне было интересно и я провел один эксперимент.

Я взял одну простую игру: SCRUMBLE SLUG с LD31 и написал мелкую прослойку, которая позволила запустить игру в INSTEAD. Игра находится в песочнице репозитория: http://instead-games.ru/game.php?ID=192.

Посмотрел на love2d, хороший движок. Какие плюсы?

  • широкие (огромные) возможности по работе с 2d графикой;
  • использует Lua;

Какие минусы?

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

В общем, хороший движок, но для простых 2d игр я и дальше буду использовать INSTEAD. ;)

Визуальная новелла на INSTEAD

v.v.b -- ветеран INSTEAD -- занялся портированием одной визуальной новеллы. Как это часто у него бывает, работа идет на перспективу (то есть -- медленно), но в качестве выхлопа можно назвать экспериментальный модуль визуальных новелл, который вы можете взять и поиграть. Демонстрационная игра: СЕКТОР 37 доступна здесь: http://instead-games.ru/game.php?ID=191

Краткая документация прямо в исходниках, или почитайте ветку на форуме: http://instead.syscall.ru/talk/index.php/168-vn-37/0

Модуль можно использовать и в классических играх, для оформления.

PHP INSTEAD

Человеком с ником epoxa была создана веб версия INSTEAD. На этот раз это PHP, с работающим на веб сервере lua. Прекрасно запускает классику. Можно посмотреть некоторые переведенные игры: http://vvproject.ru/games

Ну что сказать? Круто! Исходники движка, после некоторого морального давления были открыты (про моральное давление -- шутка) и теоретически, это можно повторить у себя на сервере. Те, кто хотел веба, фактически, его получили. Где игры?

ИГРЫ


А вот же они!

Собственно, то, что называется, ради чего. Игр на самом дело за этот год было выпущено мало. Но, возможно, эта тенденция в этом году будет прервана. Конечно, в этом разделе описаны только некоторые игрушки.

Новогодняя Сказка

Spline он же автор репозитория, сделал маленький шедевр. Игра, на мой взгляд, замечательна своей простой непосредственностью. Графику рисовал его приятель, и она тоже прекрасна. В общем, не смотря на то, что Новый Год уже прошел, ничто не мешает запустить эту игру сейчас и получить удовольствие от этой маленькой истории. По словам vvb, эта игра напомнила ему атмосферу "Кота". Жаль, что spline редко выдает, пусть даже короткие, но законченные игры.

Игра Miner Bold

Да да. Уже слышу брюзжание по поводу неверного пути INSTEAD. :) Действительно, в очередной раз я выпустил игрушку, которая не является простым текстовым приключением, и вообще не является квестом (хотя это еще как посмотреть!).

В этот раз, это скурпулезно перенесенная с БК 0010 аркадная головоломка Bolder Dash. Да, я знаю, Bolder пишется как Boulder. Но именно так она была названа на БК. Ее автор подсмотрел игру на Атари и сделал свой вариант. Который, на мой взгляд, в тысячу раз круче. Вообще, за те 25 лет, что прошли с того времени, когда мои глаза вытекали от мерцания 4х цветов палитры БК на телевизоре, я так и не нашел аналогов. Наверное, самое близкое это rocks and diamonds, но тоже не то.

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

Я действительно не знаю, как рассказать о геймплее, но игра точно не похожа на привычный Болдер Даш и я даже специально назвал ее: Miner Bold. Недавно я прошел 76 уровней и могу сказать, что это крутая игра! Моего в этой игре почти нет, кроме концовки и некоторого оформления.

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

Для того, чтобы передать механику оригинала мне пришлось дизассемблировать оригинал. В процессоре PDP-11 прекрасный набор команд! Кстати, недавно я узнал, что автор игры писал ее прямо в машинных кодах....

В общем, если не боитесь игры-вызова, если ваш внутренний мир еще не совсем потонул в липком болоте соцсетей и казуальщины -- рекомендую!

Кружок программирования


Объекты без хандлов

Исторически, для декораций в INSTEAD использовались vobj. Но на самом деле, в современных версиях INSTEAD есть еще один довольно удобный способ. Это создание безымянных объектов. Например:

home = room {
    nam = 'Милый дом';
    dsc = [[Я дома. Тут ничего нет!]];
    obj = {
        obj {
            nam = 'кровать';
            dsc = [[В пустой комнате стоит {кровать}.]];
            act = [[Сейчас не время спать! Время спасать 
галактику!]];
        };
    }
}

Как вы видите, я просто создал объект прямо в комнате. Без хандла. Таким образом он не засоряет пространство объектов.
Вы даже можете писать use/used обработчики и идентифицировать объект конструкцией вида:

if stead.nameof(w) == 'кровать' then ...

Надеюсь, это вам пригодится!

Слухи


Есть слухи, что автор Туалетов, zloyvov, пишет игру в несвойственном (или свойственном?) ему жанре. На INSTEAD. Больше информации нет. Правда, для того, чтобы он не забросил игру, его нужно мотивировать. Автору нужно внимание и слова поддержки. Пишите - я ему передам. :)

Есть слухи, что epoxa и spline тоже что то пишут. Но допишут ли?

Есть слухи, что excelenter, который давно не пишет игр под INSTEAD довольно успешно выступает с чиптьюн музыкой собственного приготовления. Ищите twistboy на soundcloud!

Метафизика


Постепенно, с ростом возможностей движка, часто слышу вопрос, который сформулирован примерно так: "Куда идет INSTEAD?". На самом деле, никуда он не идет. Он был и остается просто средством для написания "других" игр, а также поводом существования кружка программирования INSTEAD.

В эпоху соц-сетей и интернета как поля для информационных войн, мне нравится НЕИНТЕРАКТИВНОСТЬ текстографических игр. Они успокаивают. Мне также нравятся старые игры, так как отсутствие степеней свободы и символичность графики часто скрывает за собой вызов. То, чего так боятся делать современные издатели игр. Игра превращается с диалог с автором, а не в потакание слабостям. Старые игры не уговаривают и не упрашивают.

Представьте себе тетрис, в котором фигуры обсчитываются box2d (то есть падают с ускорением, вращаются плавно и так далее). Тетрис в таком варианте перестает быть тетрисом.

Или представьте себе сказку, переписанную прозой.

В общем, никаких целей у движка быть не может, и откровенно говоря, никакой roadmap, кроме постепенного улучшения архитектурных решений и повышения встраиваемости текстовой-квестовой части у меня нет. Просто он позволяет делать то, что нравится. Он будет развиваться ровно то время, пока кто-то пишет игру с его помощью. И никаких социальных сетей!

До встречи!