20-02-2016
ПРИНТЕД #3

В связи с выходом новой версии, вышел новый ПРИНТЕД! Прочитать можно на страничке журнала.

------------------------------------------------------------
                        ПРИНТЕД #3
                     20 февраля 2016 г.
                http://instead.syscall.ru
------------------------------------------------------------
Привет всем, кто на связи!  Последний выпуск принтеда  вышел
уже почти год назад.  Как я и обещал, выпуски  ПРИНТЕДА  без
игр не имеют смысла, поэтому такой вот  период  молчания  не
стал неожиданностью.  И все-таки, повод для  нового  выпуска
появился.

Во первых, за прошедшее время вышло несколько неплохих  игр.
Во вторых, вышел INSTEAD 2.4.0, в котором было сделано масса
изменений и нововведений.  Ну и в третьих, ровно 7 лет назад
вышла в свет первая  публичная  версия  INSTEAD!   Возможно,
кто-то из  вас  в  это  время  ходил  в  школу,  и  даже  не
догадывался о том,  что  мир  уже  изменился  и  никогда  не
останется  прежним.   :)  А  для  ностальгирующих  старичков
ссылка: https://www.linux.org.ru/news/games/3518942 

Так что INSTEAD идет в школу. :)

P.S. Пользуясь случаем, хочу передать привет v.v.b., с 
теплыми воспоминаниями о том, как все начиналось...

                                                  Петр Косых
============================================================
                          Новости
============================================================
------------------------------------------------------------
                 Закрытие ifprint.org
------------------------------------------------------------

Василий   Воронков   объявил   о   скором   закрытии   этого
замечательного журнала, посвященному ИЛ.   Я  тоже  приложил
руку к этому проекту, поэтому мне немного грустно.   Тем  не
менее, недостаточный интерес сообщества к написанию  статей,
размолвки и прочее зло мира сего сделали свое дело.   Журнал
долгое  время  жил  без  новых  материалов,  период   оплаты
хостинга  заканчивается  и  как  итог,  мы  теряем  ifprint.

Я забрал все pdf выпуски журнала и разместил их на ifhub: 
http://ifhub.ru/blog/ifprint/1694.html

Правда, тот факт, что Василий хоть не  надолго,  но  все  же
объявился в среде РИЛ обрадовал меня.  По  крайней  мере  мы
знаем, что Василий жив и здоров.  Если кто то не играл в его
прекрасные игры:  Лидия,  Переход,  Материк  --  обязательно
советую это сделать!

------------------------------------------------------------
                    INSTEAD 2.4.0
------------------------------------------------------------

Пока я пишу эти строки, INSTEAD еще не выпущен.   По  правде
сказать, выпуск этой версии побил все рекорды по срокам.   Я
планировал релиз еще около месяца назад, но число  изменений
оказалось  настолько  большим,  что  отладка  и   дальнейшая
доработка заняла все это время. Надеюсь, если вы читаете эти 
строки, релиз состоялся.

У меня есть любимые версии инстеда, и 2.4.0 станет одной  из
них.  Дело в том, что в этой версии я доделал все те вещи, о
которых  думал  уже  давно,  но  все  откладывал  их   из-за
неясности  решений.   К  счастью,  решения  нашлись,  версия
выходит.  Отдельно  хочется  выразить  благодарность  Антону
Колосову, за его помощь и за порт на  Android  (INSTEAD-NG),
который стал просто идеальным.  Про конкретные фичи движка я
расскажу в этом выпуске принтеда.

============================================================
                          Игры
============================================================

Я расскажу про  некоторые  игры,  которые  мне  запомнились.
Пусть не обижаются авторы остальных шедевров.   Возможно,  я
просто не посмотрел вашу игру.  Или не прошел ее до конца  и
мне стыдно в этом признаться. :)

------------------------------------------------------------
                Башня - 60 // Caveman
------------------------------------------------------------

Корпус N6.
Корпус N6...
Корпус N6...

Если  при  этих  словах  вас  захлестывает  волна  смешанных
чувств, то скорее всего вам не надо ничего рассказывать. Для 
остальных  расскажу,   что   "Корпус   N6"   стал   символом
незавершенного  проекта.   Прекрасная  графика,   интересный
сюжет, рабочая демо-версия...  Ничего не предвещало беды, но
автор игры исчез на несколько  лет,  лишний  раз  подтвердив
роковое правило "Есть анонс -- нет  игры"...   Исчез,  чтобы
вернуться с игрой ... "Башня-60!"

Да, игра недлинная.  Да -- оформлена  попроще.   Но  тем  не
менее,  это  одна  из  немногих  законченных,   симпатичных,
добротно сделанных игр. И главное -- это квест, приключение!  
Рекомендую к прохождению.

------------------------------------------------------------
            Миссия турист и Шизофрения // Ordos
------------------------------------------------------------

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

Недавно Ordos залил в репозиторий уже бету "Шизофрении", 
думаю, стоит ее посмотреть.

Опять же, в этих играх я встретил добрый старый  квест.   Не
натужные попытки экспериментов с психикой читателя, а старый
добрый  жанр,  каким  мне  и   хотелось   бы   его   видеть.

Надеюсь, Ordos еще порадует любителей жанра своими играми.

------------------------------------------------------------
                    Игры Атона Колосова
------------------------------------------------------------

Скажу честно, я не особенный любитель книг-игр.  Но глядя на
энтузиазм Антона, я по крайней мере, проникаюсь уважением  к
его творчеству.  Если бы не Антон, многие фичи INSTEAD так и
не были бы реализованы.  А про  порт  на  андроид  я  вообще
молчу.  

В творчестве Антона удивительно все!  И то, что код для  его
игр генерится программно (зато мы теперь знаем,  что  инстед
ВЫДЕРЖИТ! ВЫДЕРЖИТ!!!). И что в играх на INSTEAD может быть 
видео (!!!) И бесстрашное  использование  3-D  отрендеренных
изображений на сотни мегабайт в png!!! И анимация игрального 
кубика, выкатывающегося  прямо  с  полей  игры...   Уххх....

В общем, спасибо тебе, Антон!  Твое  творчество  бесстрашно,
отважно  и  экспериментально.   А  злопыхатели  пусть  пишут
критические статьи, которые мы все равно  не  будем  читать!

Да, а игр у Антона вышло уже несколько: 

- Фронтир (в соавторстве с Таро)
- Дикий остров (в Steam!)
- Am i a monster? 

И  пишутся  новые!   В  общем,  удачи  во  всех   творческих
начинаниях, Антон!

============================================================
                Что нового в INSTEAD 2.4.0
============================================================

Сегодня, вместо кружка программирования я расскажу об  самых
заметных изменениях в INSTEAD 2.4.0.

------------------------------------------------------------
                      Режим hires
------------------------------------------------------------

INSTEAD  поддерживает  механизм  масштабирования  тем,   что
позволяет запускать игру в разных разрешениях. Для игры этот 
механизм прозрачен: с точки зрения самой игры, она работает,
скажем, в резрешении темы 800x600.  А окно инстеда растянуто
на   1024x768.     Это    возможно    благодаря    механизму
масштабирования тем.  В настройках INSTEAD вы можете выбрать
нужное разрешение  из  списка  и,  при  желании,  перейти  в
полноэкранный режим.

Вот  именно  переход  в  полноэкранный   режим   имел   свои
особенности.   Дело  в  том,  что  по  умолчанию  в  INSTEAD
установлен параметр разрешения "как в теме".  Это  означает,
что  при  нажатии  alt-ввод  или  при  выборе  в  настройках
полноэкранного  режима  мы,  кроме  перехода  в  fullscreen,
переходили в то самое  разрешение,  которое  было  задано  в
теме. Обычно, что то вроде 800x600. На современных мониторах 
это выглядело не очень  хорошо,  особенно  если  говорить  о
шрифтах.  Да, можно было выбрать в списке нужное разрешение,
но тогда при выходе из полноэкранного режима -- мы  получали
огромное  окно,  которое  и  таскать  получается  с  трудом.

Теперь, в настройках напротив выбора  полноэкранного  режима
появился пункт "HQ" (соответствует параметру -[no]hires). По 
умолчанию режим hires включен и приводит к такому поведению:
при переходе в  полноэкранный  режим,  INSTEAD  переходит  в
максимально доступное для монитора разрешение и масштабирует
тему к этому разрешению.

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

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

------------------------------------------------------------
                 Множественные темы игры
------------------------------------------------------------

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

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

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

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

Фактически, игра может нести с собой несколько тем, и  игрок
волен выбрать  любое  оформление  из  разработанных  автором
игры.

Таким образом, решается  с  одной  стороны  проблема  разных
пропорций (например, автор игры может предусмотреть темы для
пропорций 4x3, 16x9 или даже для вертикальной ориентации), а
с другой  --  предоставляется  дополнительное  средство  для
художественного самовыражения.  Можно делать темы  с  разной
цветовой   гаммой   или   с   высоким/низким    разрешением.

Еще один бонус  --  формат  тем  в  таком  режиме  полностью
совпадает с форматом тем самого инстеда, в отличие от режима
единственного файла theme.ini -- где пути относительны корня
игры, и вы не сможете просто так взять  такую  тему  себе  в
INSTEAD и играть в ней другие игры.  В  новом  механизме  --
такие темы взаимозаменяемы!

Я  не  буду  здесь  описывать  способ  использования  нового
механизма тем, недавно я доработал документацию и сейчас  вы
все найдете там.  Но механизм крайне  прост:  в  вашей  игре
должен быть каталог themes/ в котором в  своих  подкаталогах
будут  расположены  темы.   Обязательно  наличие   темы   по
умолчанию -- themes/default.

Интересно, кто первый сделает игру с несколькими темами?  :)

------------------------------------------------------------
                   Режим standalone
------------------------------------------------------------

Не смотря на то, что INSTEAD был создан для конкретной  игры
"Возвращение квантового кота",  я  всегда  понимал,  что  он
должен стать платформой для моих игр (о том, что кто то  еще
кроме меня будет писать игры на INSTEAD  --  я  и  помыслить
тогда не мог).  Кроме того, я воспринимал движок именно  как
интерпретатор (это даже заложено в его названии), и  поэтому
схема  его  использования  была   именно   такой   --   есть
интерпретатор и пачка игр к нему.  В меню есть пункты: выбор
игры,  выбор  темы.   Информация  --  рассказывала  о  самом
INSTEAD, а не об игре.

Но потом как то  так  оказалось,  что  движок  заработал  на
разных ОС, что некоторые игры даже попали в  Steam,  что  на
движке стали появляться аркадные игры.  У людей, не знакомых
с ИЛ возникали вопросы. Хорошо, я скачал игру про кота. Что 
это за странное меню?  Половина неработающих настроек, выбор
игры... Что за...?

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

Сначала возник режим standalone приложения: когда  создается
каталог appdata/ в  котором  расположены  все  сейвы,  игра,
настройки.  Автор, отредактировав языковые файлы в lang/ мог
сделать   присутствие   INSTEAD   в   роли    универсального
интерпретатора -- минимальным.

В версии 2.4.0 появились возможности, еще  более  упрощающие
создание отдельных игры. 

Во первых, меню Информация  теперь  содержит  информацию  об
игре.  Используется информация из тегов игры: Name,  Author,
Version и  Info  (новый  тег,  который  может  достигать  4х
строк). Например:

--$Name: Это моя супер игра!$
--$Author: Pupkin'2016$
--$Version:1.0$
--$Info:Эта игра про\nКОТИКОВ!!!$

Теперь, у авторов появился стимул  заполнять  теги  в  своих
играх. Ибо в противном случае карточка с информацией об игре 
будет очень аскетичной.

Во вторых,  появился  особый  режим,  задаваемый  с  помощью
командной  строки:  -standalone,  в  котором  нет  некоторых
пунктов меню, сбивающих с толку. 

Чтобы сделать создание отдельной игры  еще  проще,  появился
режим профилей.   Профиль  -  это  файл  с  ключами  INSTEAD
заданными  в   формате:   <ключ>=значение,   который   можно
подключить  параметром  -profile  <путь  к  файлу>,  или  же
положить в каталог с настройками INSTEAD. В этом случае файл 
называется profile.

Что это означает?  Что для создания отдельной игры в windows
теперь достаточно  сделать  следующую  структуру  каталогов:

  appdata/
    games/
        mygame/
          main.lua
    profile

А в профайле строки:

 standalone = 1
 game = mygame

При запуске  .exe  файла  --  будет  запущена  ваша  игра  в
standalone режиме.  

Ты пользуешься Linux или BSD? Тебе плевать на windows и .exe 
файлы?  Что ж,  standalone  режим  пригодится  и  тебе,  мой
красноглазый брат. :)

Дело в том, что в standalone  режиме  отключается  песочница
INSTEAD,   и   все   пути   к   библиотекам   Lua   остаются
немодифицированными. Что это значит? А это значит, что твоя 
игра  в  standalone   режиме   может   пользоваться   любыми
разработанными  lua  модулями,  установленными  в   системе.

Кроме  того,  одним   из   таких   применений,   ты   можешь
воспользоваться прямо  сейчас.   Собери  instead  2.4.0.   В
doc/examples есть замечательный файл  webinst.lua.   Поставь
для своей системы пакет luasocket и запусти инстед так  (про
то,  что  запускаешь  из  терминала  я  даже  не  заикаюсь):

$ sdl-instead -lua doc/examples/webinst.lua

Если все сделано правильно, ты увидишь... увидишь список игр 
с  http://instead-games.ru   Поставить   игру   можно   так:

$ sdl-instead -lua doc/examples/webinst.lua minerbold

Почему это работает?  Потому что  запуск  скриптов  инстедом
всегда осуществляется в standalone режиме.  Так что,  можешь
поизучать  webinst.lua  и  начать  писать   свои   хакерские
скрипты... Кхмм кхммм... Это же не статья для журнала Хакер, 
возвращаюсь в академический стиль. :)

Еще  одна  полезная  (и   пока   эксперементальная)   штука:
scr.gfx.icon параметр в теме.   Это  дает  возможность  игре
менять иконку приложения.  На самом деле нет  пока  ясности,
как это будет работать в разных ОС, так что статус  фичи  --
эксперимент.  Пробуйте, пишите...

------------------------------------------------------------
                   Прочие изменения
------------------------------------------------------------

Не буду описывать все изменения, перечислю самые значимые из
них.

Теперь стало проще делать титульные экраны, так как появился
тег txty --  вертикальный  табулятор.   В  документации  уже
описан. Но примеры всегда понятней, поэтому:

  dsc = txty('50%', 'middle').."PART I";

Глядя на игру "Рок" от epoxa (ох, а я ведь  не  написал  про
нее!  Но если честно, эта игра оказалась  для  меня  слишком
брутальной.   Там  встречаются  металлисты  с  глазами   без
зрачков, и подозреваю, есть еще более страшные  вещи,  вроде
циничного юмора.  И я в итоге побоялся  ее  пройти.   :)  Но
оформление запомнилось! Игру тепло встретили в РИЛ.) так вот 
глядя  на  эту  игру,  мне  тоже  захотелось  сделать  режим
переходов внизу текста.  Теперь в  теме  вы  можете  задать:

  win.ways.mode = bottom

И увидеть переходы внизу сцены. В режиме embedded графики -- 
переходы будет прямо под текстом.  В  остальных  режимах  --
переходы будут иметь фиксированное  положение  под  областью
сцены.

Новый ключ -noconfig поможет сбросить  конфигурацию  INSTEAD
на дефолтную.

Новый ключ -modes <список  режимов  через  запятую>  поможет
задать список допустммых разрешений.

Масштаб шрифта теперь отображается в процентах.   Также,  вы
можете использовать -fontscale <проценты>.  

Ну вот, вкратце, все.  Надеюсь, повод (в виде  готовых  игр)
для   выхода   новых   версий   принтеда   не   за   горами.

============================================================
                          Слухи
============================================================

Есть слухи, что игры все-таки  пишутся.   Ждем  и  надеемся!

Также прошел слух, что в репозитории модуль КР теперь идет с
большущей   пачкой   игр.    Только   т-с-с-сс,    никому!!!

============================================================
                       Метафизика
============================================================

Прошло 7 лет с момента анонса первой версии INSTEAD.   Думал
ли я, что проект будет жить так долго и станет таким,  каким
он стал?  Точно нет!  Я бы сказал даже, если бы я  знал  все
заранее, я бы, может быть, и не стал бы начинать этот  путь.
Написал  бы  движок  для  личных  нужд  и  своих  игр  и  не
ввязывался бы ни во что большее.

Нет, не потому что  мне  не  нравится  то,  что  получилось.
Просто осознание всех сложностей и рутинности процесса часто
отпугивает.   Дорогу  осилит  идущий.    Это   очень   точно
характеризует отношение к творческому процессу.   Ты  просто
начинаешь делать что то  и  двигаешься  вперед,  протаптывая
тропу и получая удовольствие от процесса  творчества.   Если
забивать  голову  "планом  развития"   и   прочими   вещами,
творчество превращается в работу.

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

Например, сейчас в своей работе я  использую  идеи  INSTEAD.
Да, это странно звучит,  но  действительно,  при  разработке
маршрутизаторов я ворую идеи из INSTEAD!  Правда, и обратный
процесс также имеет место. :) Как так произошло? Творчество 
это часто эксперимент, когда  мы  не  знаем  что  именно  мы
получим,  но  есть  шанс  получить  что-то   совсем   новое.

Вот это меня очень привлекает в творчестве. Программирование 
все еще творчество, как бы не хотели нас в  этом  разуверить
топ менеджеры в туфлях с тонкими носками и тонкими папками с
бумагами в руках.  А программирование текстовых  приключений
-- творчество тем более, особенно для лирически  настроенных
программистов.  :) Здорово,  что  INSTEAD  оказался  удачным
экспериментом.

До встречи на полях ПРИНТЕДА!

До встречи,
Peter Kosyh в 11:20