Тема закрыта
Добрый день, друзья.
Мне тут по долгу службы (а компания, где я работаю, сейчас разрабатывает ролевую онлайн-игру) необходимо написать движок для воспроизведения текстовых мини-игр на 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)
Неактивен
Было бы хорошо прикрутить таблицы. Потому что часто бывает нужно для визуализации вывести текст столбцами рядом, или картинку и текст рядом.
Неактивен
И ещё явно не хватает возможности поменять фон, рамку сделать например. Вообще возможность сменить "тему". Визуализация часто много значит для погружения игрока в игру, даже такая мелкая, как рамка на фоне игры.
По функционалу, не хватает автоматической переменной, в которую записывалось бы с какого параграфа мы пришли на текущий, чтобы можно было вернуться назад всегда. Ведь я могу сделать много завязок на один параграф, но сделать возврат будет проблематично.
Неактивен
Умм, а вместо ссылки нельзя вставить объект никак? Что-то не выходит каменный цветок.
<<set $объект = 'рассказ'>>
так,
[[проверка ссылки|<<print $объект>>]]
или хотя бы так
[[проверка ссылки|$объект]]
чтобы можно было сделать. Потому что может потребоваться запомнить имя локации. То же самое с картинками. Если бы путь можно было вставлять из переменной, это многое бы упростило.
Неактивен
Спасибо за ответы. ![]()
Неактивен
Да, есть ещё такая тема, когда смотришь превью из редактора, он записывает временный штмл файл куда-то на системный диск в спец папку (к которой у меня в вин7 нет никакого доступа), и этот путь никак не поменять. А потому не подгружает картинку. То есть, чтобы её увидеть, приходится компилить штмл файл в папку с картинкой.
Можно как-то это поправить, например в настройках менять путь или чтобы он по умолчанию создавал в папке с редактором этот временный файл, не знаю?
Неактивен
Ну хотя бы дневную и ночную
Это было бы уже что-то.
Неактивен
Было бы замечательно, если бы вы хотя бы подстановки сделали до 15 августа, потому что без них игру писать проблематично. Всё, конечно, зависит от задумки, но ограничиваться не хочется.
Ждать релиза ведь ещё долго, насколько я понимаю.
Неактивен
DoubleDragon написал:
Релиз на 14-е августа как раз назначен.
Ооо!! Тогда подожду, спасибо.
Неактивен
Вот знакомимся, да ![]()
Неактивен
А что с форматированием текста? Есть ли какая-то возможность сделать ссылку по центру строки?
Неактивен
Было бы ещё отлично прикрутить к редактору хотя бы минимальную проверку орфографии. Вот за что авторы сказали бы огромное спасибо. Потому что часто, когда быстро печатаешь, еле успевая за мыслью, в тексте появляются трудновычитываемые очепятки.
Неактивен
sosiskin написал:
Ajenta написал:
вместо ссылки вставить объект
<<set $объект = 'рассказ'>>
[[проверка ссылки|<<print $объект>>]]да, это было бы просто шикарно!
А ещё будет очень хорошо, чтобы StoryMenu рефрешилось (обновлялось) с каждым циклом (нажатием на ссылку).
Например, открывает игрок новую локацию, и в сторименю появляется опция "Пойти туда-то" (чтоб в любой момент можно было переместиться в ту локацию). А в ситуации когда нельзя туда пойти, то эта опция из сторименю исчезает.
Ну, а в самом меню это всё можно циклами if-then прописывать. Или как-то ещё.
Это бред. Менюшка нужна именно для хелпа или об авторе или ещё чего служебного. Пихать в неё действия совершенно ни к чему, для этого ссылки есть.
Неактивен
DoubleDragon написал:
В версии Mac OS X кстати орфография проверятся. Вся сложность в том, что господа из Мкрософт не дают почему-то такую возможность по дефолту, хотя это им ничего не стоит.
Ну, мака, к сожалению, не имею. И в ближайшем будущем вряд ли обзаведусь. ![]()
Отредактировано Ajenta (28.06.2012 19:04)
Неактивен
Ajenta написал:
sosiskin написал:
Ajenta написал:
вместо ссылки вставить объект
<<set $объект = 'рассказ'>>
[[проверка ссылки|<<print $объект>>]]да, это было бы просто шикарно!
А ещё будет очень хорошо, чтобы StoryMenu рефрешилось (обновлялось) с каждым циклом (нажатием на ссылку).
Например, открывает игрок новую локацию, и в сторименю появляется опция "Пойти туда-то" (чтоб в любой момент можно было переместиться в ту локацию). А в ситуации когда нельзя туда пойти, то эта опция из сторименю исчезает.
Ну, а в самом меню это всё можно циклами if-then прописывать. Или как-то ещё.Это бред. Менюшка нужна именно для хелпа или об авторе или ещё чего служебного. Пихать в неё действия совершенно ни к чему, для этого ссылки есть.
Хотя туда кажется и сейчас можно напихать всего, что душе угодно. Вроде же не запрещает программа.
Неактивен
Вета написал:
Спасибо за ответ!
А параметры в виде шкалы? (например, шкала отношения нпц к герою)
Переменная-счётчик и несколько картинок с разными параметрами под условиями - и вот тебе шкала.
апд: Только тут событий нет, так что придётся обновлять руками всё время, то есть условия эти везде прописывать, где надо.
Отредактировано Ajenta (29.06.2012 00:25)
Неактивен
Картинки действительно не отображаются в фаерфоксе, но отображаются в IE - причём это касается вроде бы только пнг.
Вот игра http://dreamtream.ru/play/nedetskayaskazka/ - можете проверить.
Отредактировано Ajenta (02.07.2012 13:52)
Неактивен
Спасибо.
апд. Больше всего, как и Вету, меня беспокоит красный цвет ссылок невозвратных. Если учесть, что в нормальной текстовой игре обычно их много нужно, выглядит это всё отвратительно.
Отредактировано Ajenta (02.07.2012 17:07)
Неактивен
DoubleDragon написал:
http://sm.axmasoft.com/examples/noback.png
Надеюсь такой вариант устроит и авторов и читателей?
С подчёркиванием? Хммм.. Ну, так тоже не сильно красиво конечно.
Вот представьте ситуацию, когда у вас в тексте несколько возвратных переходов и несколько невозвратных, единый стиль нарушен, особенно если они перемежаются. Семь штук в разной последовательности в столбик. Игроку неудобно, потому что он должен думать что означает разница в написании этих ссылок, автору неудобно, потому что ломается стиль игры.
Неактивен
ИМХО, возвратных переходов по системной кнопке вообще не должно быть, а если автор хочет возврат, то он ставит сам кнопку бэк. Просто в обычных играх это прописывается вручную, что я считаю правильным.
апд. Какое я могу предложить решение. Сделать эту кнопку отключаемой по системной переменной. Потому что при интерактивном рассказе она может понадобиться, не спорю, но при любой игре это зло. И если её отключить, то выводить все ссылки единым стилем, если же не отключать, то будет как было.
Отредактировано Ajenta (02.07.2012 18:11)
Неактивен
DoubleDragon написал:
Ajenta написал:
ИМХО, возвратных переходов по системной кнопке вообще не должно быть, а если автор хочет возврат, то он ставит сам кнопку бэк. Просто в обычных играх это прописывается вручную, что я считаю правильным.
Хорошо, а как тогда быть с сохранением состояния? Тоже читерство по-своему. Без кнопки назад игрок будет бесконечно сохраняться... Вроде он должен получать удовольствие от игры, а мы возвращаем его к ранним хардкорным играм времён ZX-Spectrum. За читателей/игроков в нашей ситуации мы должны бороться, имхо.
Есть такое понятие - шаг назад, когда с игроком в игре произошла смерть, он может откатиться на предыдущее состояние. Обычно такое делается автоматом. Но кнопка "Назад" может побудить игрока пользоваться ею всё время.
По поводу спектрума, не думаю, что стоит преувеличивать так сильно. У нас не хардкор и игроков мы любим. Сохранения нужны и важны. Они дают возможность откатиться, но откатываться туда, где сохранился игрок, а не на любой шаг игры. Это обычная практика. Не думаю, что стоит её ломать.
Неактивен
Повторю, а то вдруг затерялось
"Какое я могу предложить решение. Сделать эту кнопку отключаемой по системной переменной. Потому что при интерактивном рассказе она может понадобиться, не спорю, но при любой игре это зло. И если её отключить, то выводить все ссылки единым стилем, если же не отключать, то будет как было."
Неактивен
goraph написал:
Ajenta написал:
ИМХО, возвратных переходов по системной кнопке вообще не должно быть, а если автор хочет возврат, то он ставит сам кнопку бэк. Просто в обычных играх это прописывается вручную, что я считаю правильным.
Я не считаю что это правильно. Невозвратные переходы вообще не нужны. В "обычных играх" это прописывается вручную просто потому что русскоязыные менюшные движки не поддерживают возвраты из-за непродуманной архитектуры. Во всех парсерных играх возвраты есть с конца 80х наверное, возвраты были даже на спектруме. Отключать возвраты и делать невозвратные переходы одинаковыми, это такое же издевательство над игроком как и неожиданное отключение сохранений.
Издеваешься? Про парсерные он вспомнил.
Ну, в любом случае ссылки надо делать одинаковые все, или нафиг убирать возвраты, или нафиг убирать невозвраты, вот и всё.
Только я даже не представляю как может всё поломаться из-за этих возвратов, особенно если учесть выставляемые в процессе игры переменные, которые могут тупо закарраптиться этими самыми возвратами. И это ни один автор не продумает и не отследит потом. (
апд. И я, если честно, не понимаю зачем предупреждать игрока, что он нажимает невозвратную ссылку, если ему всё равно придётся нажать её для продолжения. Чтобы успеть осмотреть остальное вокруг? Так если оно нужно по сюжету, то невозвратных и не будет, пока он всё не осмотрит, надо немного и автору доверять. В общем, излишние заморочки. Тут реально надо отделять текстовые игры и интерактивные истории, где хочется просто перечитать какой-то ранее шедший параграф и вернуться обратно. Но тут, насколько я поняла, движок позиционируется как и для текстовых игр тоже.
Отредактировано Ajenta (03.07.2012 02:41)
Неактивен
goraph написал:
Ajenta написал:
ИМХО, возвратных переходов по системной кнопке вообще не должно быть, а если автор хочет возврат, то он ставит сам кнопку бэк. Просто в обычных играх это прописывается вручную, что я считаю правильным.
Я не считаю что это правильно. Невозвратные переходы вообще не нужны. В "обычных играх" это прописывается вручную просто потому что русскоязыные менюшные движки не поддерживают возвраты из-за непродуманной архитектуры. Во всех парсерных играх возвраты есть с конца 80х наверное, возвраты были даже на спектруме. Отключать возвраты и делать невозвратные переходы одинаковыми, это такое же издевательство над игроком как и неожиданное отключение сохранений.
А если уж делать возвраты возможными всегда, то надо делать их как полноценное анду, а не как сейчас просто переход на предыдущую локацию. Надо сохранять состояние и на него откатываться. А сейчас там вообще зациклить можно, как в примере с "об авторе" и "об игре".
Неактивен
DoubleDragon написал:
Выложил очередное обновление 0.6.5: http://sm.axmasoft.com/ru/
Что нового.
1. Добавлена возможность поиска по тексту статей и названию параграфов. Обратите внимание, что в Навигаторе в закладке Параграфы снизу появилось поле поискового запроса. При закрытом навигаторе быстро перейти в него можно через шорткат Ctrl+F.
2. Макрос <<random>>. Выдержка из обновлённого мануала:
Если Вы хотите присвоить объекту (переменной) случайное числовое значение (целое), то воспользуйтесь для этого макросом random. Например, чтобы присвоить объекту сила случайное значение от 0 до 99, напишите следующее:
<<random $сила = 99>>
Если нужно получить значение от 1 до 100, то просто прибавьте потом к значению единицу:
<<set $сила = $сила+1>>
За рандом большое спасибо. ![]()
Неактивен
Тема закрыта