Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
07.04.2012 19:33

DoubleDragon
Модератор (+391, -32)
Откуда: Москва
Зарегистрирован: 07.04.2012
Сообщений: 1760
Вебсайт

Разработчик "AXMA Story Maker"

Делаю замену Twine (Tweebox)

Добрый день, друзья.

Мне тут по долгу службы (а компания, где я работаю, сейчас разрабатывает ролевую онлайн-игру) необходимо написать движок для воспроизведения текстовых мини-игр на javascript. Эти мини-игры будут вставлены в основную канву игры в качестве небольших квестов. Ещё один нюанс - эти игры будут писать разные люди, использующие разные ОС и что важно - эти люди ну совсем не программисты. Поэтому всё должно быть наглядно и по-русски.

Twine (Tweebox) неплохо подошёл бы для решения этого вопроса, но, к сожалению, он уже давно не обновлялся и при всех своих достоинствах плохо работает с кириллической кодировкой (возникают ошибки во время редактирования пассажей и при импорте/экспорте текстовых исходников). Тут ещё и узнал, что автор проект забросил. Но идея визуального проектирования повествования, заложенная в Twine, очень хороша, и жаль от неё отказываться.

В общем пришлось написать свой велосипед, обратно совместимый по исходникам с Tweebox и с аналогичным интерфейсом. В настоящее время редактор "допиливается" и тестируется. Есть три сборки - для Windows, Mac OS X и Linux.

Сейчас реализовано следующее:
- визуальное проектирование, аналогичное Twine;
- нативная поддержка любых кодировок (внутри всё крутится в utf-8);
- совместимость с исходными кодами игр Tweebox;
- корректная подсветка синтаксиса во время редактирования;
- собственый компилятор игр в один компактный независимый html-файл;
- адаптация для экранов мобильных браузеров.

Если кому интересно, выложу скриншоты и бета-версию.

Последняя версия всегда лежит по адресу http://sm.axmasoft.com/ru/

По этой ссылке можно посмотреть "Руководство пользователя AXMA Story Maker":
http://sm.axmasoft.com/ru/help.html

Отредактировано DoubleDragon (17.06.2012 10:35)

Неактивен

0    0    #2
30.06.2012 12:02

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Баги и пожелания можно в этой-же теме?

Баги:
- При создании нового параграфа, если сразу же щёлкнуть "удалить". Происходит влет без сохранения, мелкая, но неприятная ловушка.
- при сохранении файла автоматом не даёт расширение ".sm" из-за чего получаются нечитаемые редактором текстовые файлы. Приходится при сохранении имя прописывать ручками, типа "Game_test.sm"


Пожелания:
- Сделать автоматическую генерацию перехода, перетягиванием мышки от параграфа к параграфу.
Т.е. на карте параграфов схватил например и потащил стрелочку до целевого параграфа, а комп сгенерировал в конце параграфа переход типа [[Новая локация]].


Вопрос:

Как можно реализовать инвентарь? Чтобы к нему был доступ с любой  позиции игры, и возвращался в последний параграф.


Спасибо.

Неактивен

0    0    #3
30.06.2012 12:47

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Вроде даёт расширение... Какая версия ОС?

WinXP SP3

Не даёт именно при переименовании. Например файл по умолчанию "Моя история" без проблем сохраняется.
Но меняем название на "История с приведениями" и тут же расширение исчезает, файл становится не читаемым текстовым.  Приходится писать именно "История с приведениями.sm"

Как можно реализовать инвентарь? Чтобы к нему был доступ с любой  позиции игры, и возвращался в последний параграф.

Через макрос <<set>> создаёте объект и присваиваете ему значение, например, <<set $ключ=1>>, а где нужно, проверяете через макрос <<if>>. Если я правильно понял вопрос.

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

Я имел в виду, похоже, как из меню вызывается "StoryAuthor", т.е. в любой момент просмотрел, и вернулся на параграф с которого начинал.

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

Неактивен

0    0    #4
30.06.2012 13:03

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Как можно реализовать инвентарь? Чтобы к нему был доступ с любой  позиции игры, и возвращался в последний параграф.

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

1. В параграфе "StoryMenu" просто делаем ссылку например на параграф "Инвентарь". И он появляется в меню, вернутся можно кнопочкой back.

Неактивен

0    0    #5
30.06.2012 14:07

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Предложение:

Сделать внутри параграфа, при редактировании список всех используемых переменных (как в навигаторе в вкладке объект).
А то сейчас приходится сохранять во внешний текстовый файл и оттуда вставлять, чтобы не путаться.

Неактивен

0    0    #6
30.06.2012 17:23

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Может в браузере дело?

Я потестил и с ифом и просто. Вроде бы работает.

Единственное, я картинки сохранял не на локальном компе, а прописывал сетевой путь.


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

Неактивен

0    0    #7
01.07.2012 02:25

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Вета написал:

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

1. Изменение переменных в процессе перехода. Приходится создавать кучу дополнительных параграфов.
2. Неудобная система надписей по ссылке внутри параграфа (action) - приходится ради красиво названной ссылки называть параграф длинными именами. Почему бы не сделать как с невозвратной ссылкой - параграф+имя ссылки?
3. Еще было бы отлично, если бы разного вида ссылки по стилю и по цвету в самой игре не отличались друг от друга, потому что смотрится некрасиво, когда все это пестрит.
4. Мне не хватает нормального инвентаря с перечнем предметов, висящего сбоку. Приходится извращаться, это неудобно опять же.
5. Отсутствие стрелок в редакторе между параграфами, если ссылка отличается от обычной.
6. Автоматический переход на новую строку, когда создаешь ссылку. А если я хочу сделать ссылкой слово в тексте?
7. Отсутствие системы обнуления ВСЕХ переменных сразу, типа killall. Приходится обнулять каждую, это неудобно.

Навскидку smile
И что-то не пойму, как опубликовать игру на свой сайт... Нажимаю публикация на сайт, ничего не происходит...

Вета, отлично сформулировали. Согласен по всем пунктам (5 только не понял).
Вот DoubleDragon сразу поле для деятельности как расширилось smile

Неактивен

0    0    #8
03.07.2012 02:21

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

DoubleDragon
Хочу сказать СПАСИБО. Я не успеваю качать новые версии редактора, так быстро исправляются выявленные баги и пожелания пользователей. И это хорошо.



Насчёт невозвратных ссылок, согласен, что лучше  делать галочку в настройках по желанию автора "Все возвратные ссылки" или "все не возвратные".

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

Неактивен

0    0    #9
04.07.2012 15:16

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

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

Т.е. сейчас работает только формат: 

[[+Тест2]]

А хотелось бы.

[[Уточнить, что он имеет в виду|+Тест2]]


Или я неправильно использую?

Неактивен

0    0    #10
04.07.2012 16:21

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Вроде и не обидно, спасибо, за подсказку! Сам не заметил. Руководство перечитал сразу а обновлений не видел.

Неактивен

0    0    #11
05.07.2012 10:56

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

1. Новое поведение кнопки Назад и макроса <<back>> (значение переменных ВОССТАНАВЛИВАЕТСЯ).
2. Исправлена ошибка с переносами строк.

Большое спасибо! То что нужно, это радует!

Неактивен

0    0    #12
05.07.2012 13:56

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Пусть функция расставляет старые (уже добавленные в историю) параграфы, а новые пусть добавляются там, где был сделан клик. Если же добавление было инициировано кнопкой панели инструментов, пожалуйста - пусть добавляется в рядок.

А при правом клике по параграфу и из меню "добавить параграф", новый параграф формируется ниже, и сразу же соединён с "материнским"  ссылкой типа [[Параграф2]]

smile

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

2. Исправлена ошибка с переносами строк.

Чего-то незаметно. Всё равно постоянно пропускает 1 строку. Поэтому приходится или писать сплошным текстом, или как абзац пропускать 1 строку. Переменные в рядок не лезут, а стремятся смыться на новую строку.

Неактивен

0    0    #13
05.07.2012 14:54

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

 спойлер…

DoubleDragon
Не первую строку, а одну строку.  Ну в принципе это наверное и не ошибка, не заморачивайся. Просто редактируешь параграф, когда подтверждешь "океем" он переформатируется, делая пропуск строки в каждой строке где был нажат Enter. Те не переходит на следующую, а именно пропускает пустую троку.  И в игре каждый макрос, текст получаются отделены пустой строкой.
Но опять же это не большая проблема, можно привыкнуть.

Narratius
Это  такая мелочь, что даже не мешает. Кто тебе мешает щёлкнуть "да" чтобы сохранить или "нет" чтобы выйти без сохранения?  А если нужно конкретно "сохранить как" тогда ручками в меню.

DoubleDragon

Есть более интересная и полезная проблема.  Возможно ли сделать экспорт?
Не нужно особых наворотов или распознования макросов.
Достаточно чтобы автоматом определялась граница параграфа, его № или наименование, и исходящие ссылки.
Тогда можно будет писать в ворде, с проверкой ошибок, и просто удобно. А потом переконвертировать в АХМА, и  настроить вручную переменные параметры.


Например такой текст:

269
Вставляете призмы в пазы. Как и ожидали, подходит тютелька в тютельку.
Когда они со щелчком становятся на место, их наполняет разноцветное свечение.
Раздается мягкий завывающий звук, и черные линзы также вспыхивают красным
свечением.
Ощущаете  покалывание  на  коже. Мгновение  дезориентации  и
невесомости…
Сцена изменилась. Теперь вы стоите на краю пустынной равнины. Древняя
каменная стена пересекает равнину как ряд щербатых зубов. На дальней стороне
равнины  возле  черной  стены  пещеры  видите  пьедестал. На  его  вершине
установлена  Эмблема  Победы, ради  которой  вы  подвергались  всем  опасностям
последних часов! Теперь она почти у вас в руках!
Параграф [271].

270
После восстановления перед следующей Спиралью у него три решки и два
орла. У вас две решки и два орла. Вы начали было обдумывать свой ход, но вас
прерывает Киеф, собравший монеты. При виде вашего изумления он поясняет:
- Ты должен видеть, что ты проиграл, правда?
Параграф [271].

271
Свистящий  ветер  дует  с  дерева. Каменная  кора  покрывается  тысячей
усмехающихся  ртов, кричащих  и  зовущих  вас. Тысячи  обгорелых  пальцев
протягиваются  из  пропасти, которую  вы  не  в  силах  вообразить, маня  вас
присоединиться к ним. Чувствуете надвигающееся безумие…
Есть  ли  у  вас  окаменевшее  сердце? Если  да – параграф [270]. Если  такого
предмета нет, вы должны полагаться на собственную силу воли, чтобы пройти это
испытание (параграф [273]).

273
Вы погибли.

http://s44.radikal.ru/i103/1207/00/d2976509e588.jpg

Прошу прощения, за огромные скрины, не знаю как на форуме их приуменьшить.

Отредактировано Ergistal (05.07.2012 14:56)

Неактивен

0    0    #14
05.07.2012 16:32

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Ура, ура, ура..

Придумал сам как импорт сделать.

Неактивен

0    0    #15
05.07.2012 16:44

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Вета,  имеется в виду папка AXMA Story Maker Libs, она устанавливается при установке.

Неактивен

0    0    #16
09.07.2012 00:53

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

И все-таки большая просьба подумать над сменой переменных в процессе перехода между параграфами. Очень полезная штука...и очень нужная. Намного удобнее, чем менять переменные в самом параграфе. А то приходится создавать кучу параграфов лишних и загромождать пространство. А так я бы в одном параграфе по условиям выводила.

Это действительно было бы удобно.
По изменения значение переменных в пути:
Первый вариант:
Чтобы особо не изменять саму структуру редактора и не вводить новый класс объектов такое предложение. Сделать вид ссылки "безусловный переход".  И тогда можно создавать "технические" параграфы, без текста и видимых ссылок.  Программа читает текст, выполняет все условия, но как только натыкается на "безусловный переход" автоматом перескакивает на целевой параграф. Т.е. игрок не щёлкает на ссылки.

Например:

#Рассчёт боёвки
Random Победа
if  Победа = 1
"Безуловный переход Победа"
else if Победа = 0
"Безуловный переход Поражение"
endif

Ещё, как вариант (чтобы место не загромождать на карте параграфов) можно сделать чек-бокс (галочку). "Технический параграф", который  отображается на карте параграфов мааленьким ромбиком.

Второй вариант
Цеплять в хвост ссылки ещё паровозик из макросов.

Choise 'Обед' 'Вы решили  пообедать в бигмаке!'
set $Сытность + 1
set $Денег - 10
set $Пузо +5
choiseend


По возврату!
Откат на большое число шагов, хоть на начало игры ИМХО не нужен. Для этого рестарт есть и система сохранялок.

1. Кнопку "назад" вверху странички, сделать откатом на 1 шаг с восстановлением переменных.  Причём ещё сделать общий на игру чек-бокс, с галочкой откат (разрешён/запрещён).

2. Макрос <<Back>> усложнить до return, возврат из подпрограммы.
В каком-то месте игры мы "посылаем" игрока в подпрограмму", делаем обработку в целой ветке параграфов и не забываем вернутся в точку откуда уехали.

Это полезно для  действий, которые могут вызваться из любой точки игры, после которых нужно продолжить играть дальше. Это позволит, например, вынести боёвку в отдельную структуру, чтобы после сражения вернутся туда, где закончил.
Или например в книге-Игре Браславского "Верная шпага короля". Есть очень однообразные ночёвки с такими условиями.

Если игрок сыт, тогда  можно лечь спать,
Если игрок не сыт, и у него есть еда, вычесть 1 еду и лечь спать,
Если игрок не сыт и у него нет еды, вычесть 2 выносливости.

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

3. И как мой вопрос выше, можно ли автоматизировать импорт текста в редактор?  В ручную получалось, но довольно таки не удобно, и не знаю, как вылавливать баги на большом тексте, любой пробел может стать критическим.

Отредактировано Ergistal (09.07.2012 01:44)

Неактивен

0    0    #17
09.07.2012 01:02

Ergistal
Участник (+33, -3)
Откуда: Крым
Зарегистрирован: 25.05.2011
Сообщений: 133
Вебсайт

Лучший графический редактор - Ваше воображение, загрузи и наслаждайся.

Re: Делаю замену Twine (Tweebox)

Ссылка ПО УСЛОВИЮ из первой локации "Узнать, что беспокоит персонажа" не появляется, хотя переменная меняет свое значение при нажатии на первую ссылку.

А вы изменяете значение  переменой  $перс случайно не в параграфе "инфа_путь"?

Если да, тогда ошибка понятна,
Переменные обрабатываются только на входе в параграф. И редактор увидит изменившееся значение $перс только после выхода из параграфа 1. Параграф "1"  не обновляет переменные, которые вы изменили ссылкой с "+" внутри параграфа.

Может я не совсем понятно объясняю.

И мне кажется вам проще решить эту ситуацию внешним параграфом, без значка "+".

Мне кажется, программисту будет сложно обойти такую заморочку. Хотя я могу и ошибаться.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru