01-02-2015
ПРИНТЕД #0

------------------------------------------------------------
                         ПРИНТЕД #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,  кроме   постепенного   улучшения
архитектурных    решений    и    повышения    встраиваемости
текстовой-квестовой части у меня нет.  Просто  он  позволяет
делать то, что нравится.   Он  будет  развиваться  ровно  то
время,   пока   кто-то   пишет   игру   с    его    помощью.
И никаких социальных сетей!

До встречи! 

До встречи,
Peter Kosyh в 21:00