# Мысли про возможность подружить Twine и INSTEAD
be_nt_all(syscall,46) — All
2019-02-25 14:50:20


Сильно подробно писать, что такое Twine не буду (лучше таки допишу техчасть в https://ru.wikipedia.org/wiki/Twine — пока отложил, стараяь следовать принципу Википедии «лучше сослаться на вторичный источник (книга, статья в журнале), чем на первичный (документация)» и подбор этих самых вторичных источников — отдельная песня), но в общем — движок книг-игр. На html и JS. Изначально — на основе TiddlyWiki (кто не в курсе что это, легко нагуглить на руссском). У нас больше известен клон AXMA Story Maker. Закрытый и проприетарный — я так понимаю, чтобы не нарушать GPL авторы сего чуда повторили функционал Twine 1, используя те же «запчасти», вроде TiddlyWiki, лицензированные под BSD/MIT. Про аксму больше не буду, так как проприетарный клон свободного софта — «это некрасиво и невкусно». И да, основное преимущество твайна/аксмы — представление игры в наглядном виде — связанные стрелками переходами прямоугольники-комнаты.

Помню я был какой-то похожий редактор, генерящий (в том числе) код для [IN]STEAD 2. Но Instead — он не только (и не столько) для книг игр. Он вообще для много чего, но изначально (как не раз писал и говорил Пётр Косых) — для механики а ля Goblins Quest. И таких игр для INSTEAD всё ещё (кажется) больше всего.

Я тут прикинул, можно ли дописать один из викидвижков Twine (а в Twine-2 их на выбор три штуки) с тем, чтобы реализовать такую механику, не сломав этот самый дизайнер с квадратиками и стрелочками. Получается, что вполне.

Хотя если это сделать на базе низкоуровневого (по отношению к JS и HTML) Twine-Snowman, или сохраняющем архитектуру TiddlyWiki Twine-SugarCube, для мира Instead это не даст ни-че-го. JavaScript на Lua не переводится, и Instead игру ты так не сгенеришь. Хотя в качестве Proof of Concept можно начать с этого.

Ну а куда после такого PoC двигаться дальше? Но ведь где три фреймворка, там можно создать и четвёртый. Берём Lua in browser (можно https://daurnimator.github.io/lua.vm.js/lua.vm.js.html — но путь без emscripten в виде https://fengari.io/ мне видится куда изящней), держим в голове STEAD 3 и сочиняем такой «язык разметки игр и историй», который бы экспортировался в исходный код игры для Instead 3 максимально естественно.

Я думаю, такая штука, если получится, живя рядом с Instead, в довольно «раскрученном» сообществе Twine, да и просто в качестве визуального редактора инстед-игр для непрограммистов, на популяризацию Instead сыграть вполне может. А вы как думаете, стоит в эту сторону копать?

# Re: Мысли про возможность подружить Twine и INSTEAD
Peter(syscall,1) — be_nt_all
2019-02-26 17:50:28


> Я думаю, такая штука, если получится, живя рядом с Instead, в довольно «раскрученном» сообществе Twine, да и просто в качестве визуального редактора инстед-игр для непрограммистов, на популяризацию Instead сыграть вполне может. А вы как думаете, стоит в эту сторону копать?

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

Но времени всегда мало, тратя его на инструмент (который лично мне не очень удобен, мне проще писать код) -- я забираю его у совего творчества. И это обидно. Поэтому на данном этапе я сосредоточился на том, чтоб писать истории. А проект - открыт! Если кто то сделает что-то новое - я буду только рад. :)

# Re: Мысли про возможность подружить Twine и INSTEAD
Kerbal(tavern,21) — be_nt_all
2019-02-27 08:19:43


Такая вот забавная штука, рисующая блоки и стрелочки: https://habr.com/ru/post/333750/

# Re: Мысли про возможность подружить Twine и INSTEAD
be_nt_all(syscall,46) — Kerbal
2019-02-28 16:28:31


А ещё есть представление программы в виде паззла. Scratch/App Inventor/Blockly. Тоже (сейчас) всё на JS/HTML5 (хотя первый скрэтч был на смолтоке). И кстати прикручивание Blockly для кодирования того, что внутри блока будет альтернативой прикручиванию Lua in Browser в виде φεγγάρι. Блокли-диаграммы можно будет транслировать и в JS, и в Lua. И Блокли, к разработке которого приложили руку люди из MIT и Google выглядит куда основательней и надёжней, чем разработка двух программистов с версией 0.1.4.

/me in thinking…

С Blockly может получится продукт с действительно минимальным уровнем вхождения. Для имеющих какой-никакой опыт программирования — чересчур минимальным, но «Вотъ тебѣ Богъ, а вотъ и порогъ», не в смысле, что совсем уходи, а в смысле, что Instead ждёт новых разработчиков и Twinestead я задумал именно как порог туда.

Второй путь… Ну там в перспективе светит более легковесная альтернатива Instead-em. Хотя в любом случае — не на 100% c sdl-instead совместимая (хотя стремится к совместимости с большинством игр можно)… Тоже, конечно, цель интересная, но от первоначальной цели (понизить порог вхождения, на базе имеющегося twine-сообщества попытаться сформировать какое-никакое англоязычное сообщество instead-писателей) — несколько в стороне.

Так что пока выберу Blockly, а Fengari-Lua отложу на когда-нибудь после (хотя штука очень интересная).

# Re: Мысли про возможность подружить Twine и INSTEAD
be_nt_all(syscall,46) — be_nt_all
2019-02-28 16:41:34


http://blockly.ru/blockly-html/index.html — вот так с помощью Блокли можно верстать на html, пример программирования собственно логики, если кто никогда скретча/блокли не видел, ну, хотя-бы на заглавной оф. сайта https://developers.google.com/blockly/

Так что внутри текста планирую оставить только что-то вроде
Перед хижиной стоит мой старенький {пикап} Toyota.

# Re: Мысли про возможность подружить Twine и INSTEAD
be_nt_all(syscall,46) — be_nt_all
2019-02-28 17:33:29


> Ну там в перспективе светит более легковесная альтернатива Instead-em.

Похоже Technix пару лет назад уже написал. https://github.com/instead-hub/instead-js Там, конечно, lua.vm.js — Fengari тогда ещё не было.

Кстати автор и мейнтейнер lua.vm.js, как раз и стал вторым разработчиком Fengari, объявив свой проект устаревшим. Так что заменить lua.vm.js на Fengari там сам Бог велел (я в теме Техникса уже отписался на эту тему).

В общем буду иметь эту штуку в виду но начну с JS и Blockly.

# Re: Мысли про возможность подружить Twine и INSTEAD
Peter(syscall,1) — be_nt_all
2019-02-28 18:23:07


> В общем буду иметь эту штуку в виду но начну с JS и Blockly.

Еще есть такая тема, генерить код для мета-парсера. В принципе, метапарсер поддерживается instead-js. В теории, парсерные игры могут взлететь в режиме чат-ботов, которые я недавно запустил. Это просто на уровне идей. :)

# Re: Мысли про возможность подружить Twine и INSTEAD
techniX(syscall,26) — be_nt_all
2019-02-28 18:30:34


Когда-то на instead-js я в качестве proof-of-concept делал вот такую штуку:
https://technix.github.io/instead-playground/
Т.е. пишешь код в редакторе, а сбоку он сразу же в instead-js выполняется. Впрочем, дальше этого эксперимента дело не пошло.

Так что если захочешь развивать instead-js - буду только рад :)

# Re: Мысли про возможность подружить Twine и INSTEAD
be_nt_all(syscall,46) — Peter
2019-02-28 19:43:42


> Еще есть такая тема, генерить код для мета-парсера.

Есть :). Но пока point-and-click. Прикидываю, какие кубики надо определить для Блокли, чтобы делать комнаты и предметы по твоим «прописям» в документации.