Редактор mQuest + игра "Разрушитель"



Как Вам движок?
Отличный! Попробую его улучшить!
0%
 0%  [ 0 ]
Отличный! Попробую написать какой-нибудь квест!
33%
 33%  [ 2 ]
Неплохой, как-нибудь разберусь с ним.
16%
 16%  [ 1 ]
Слишком сложный, не заинтересовало!
16%
 16%  [ 1 ]
Не заинтересовало, в нем нет ничего особенного!
16%
 16%  [ 1 ]
Меня подобные вещи не интересуют.
16%
 16%  [ 1 ]
Всего голосов : 6

Пт Май 04, 2012 1:26
matew

Здравствуйте!
Хочу предать Вашему суду мой редактор квестов Matew Quest. В качестве демонстрации он содержит квест "Разрушитель", созданный по одноименной книге Стива Джексона. Там еще есть 32 урока по работе с движком и мой недоделанный квест, на который у меня вряд ли найдется время в обозримом будущем. Установки не требуется – просто запускаете mQuest.exe.

Чем он лучше других? Прежде, я хотел бы сделать небольшое вступление.
И так, мне с детства нравились текстовые квесты. Однако меня всегда поражала убогость квестовых движков – как по внешнему виду, так и по возможностям языка. Я знал, что могу создать нечто лучшее, ну и, наконец, решился. Запустите программу и Вы, даже ничего не понимая в программировании, оцените, сколько труда было в него вложено (писал все это один человек, то есть я).
Но время идет. Я окончил университет, получил хорошую работу. Однако теперь я должен много читать, и далеко не книги-игры. Начал работать над диссертацией. Женился на любимой женщине, у меня родилась малявочка. В общем, я считаю себя счастливым человеком, но у меня больше нет времени заниматься своим детищем.
Мне очень не хотелось бы, чтобы редактор так и сгинул на моем винте (а ведь так чуть не случилось, когда винт навернулся – чудом нашлась резервная копия). Поэтому, я хочу передать его "всему человечеству". В архиве есть исходники. Каждый желающий волен делать с ним все, что хочет. Единственное условие – не убирать мое имя из списка авторов.

Теперь к вопросу о том, чем мой движок Matew Quest лучше других. Ниже я постарался перечислить основное, то, чего нет почти нигде. Все написать все-равно не получится.

  1. Отображение. Во-первых, все элементы в игре отображаются в HTML, следовательно, на локации (аналог раздела в книге) можно нагородить все что угодно, включая флэш, скрипты и видео с ютуба. Этот момент кое-где реализован, но там нету вот чего: организована связь между событием в браузере (напр., клик мыши по картинке), и реакцией движка. И еще: квестописателю не обязательно знать HTML - в редакторе все необходимые тэги можно вставить "кнопочками", ну а самые основные, которые нужно понимать (вроде <br> вместо переноса строки), описаны в Первом Уроке (я создал 32 урока по работе с движком).
  2. Действия на локации. Действия можно удалить, скрыть или сделать недоступными после посещения без написания какого-либо кода. Также можно Сохранить/Восстановить действия в точно таком состоянии, в котором они сейчас на экране.
  3. Визуальная часть. Под каждое окно (окно описаний, окно предметов и др.) можно вставить отдельный css-файл (или несколько). Основные моменты, как цвет текста/фона, картинка на заднем плане, можно настроить из редактора. Все эффекты переходов (плавное появление, растяжение и др.) можно настроить и просмотреть результат в режиме редактора. Дополнительно ко всем эффектам, встроенным в Internet Explorer, есть еще два варианта моего "эффекта печатной машинки".
  4. Локации (то же, что разделы в книгах). Есть доступ к любой локации в любой момент времени. Отслеживается кол-во посещений, откуда совершен переход, каким образом (как обычно или с помощью карты – см. ниже) и др. Можно создавать локации "на лету". Можно сохранить / восстановить все, что сейчас на экране. Можно "пометить" любую строку, а потом ее заменить/удалить, не изменив все остальное.
  5. Предметы (то, что герой находит во время странствий). Отслеживание количества предметов, отдельная обработка для исчисляемых (напр., деньги), и не исчисляемых. Так, если добавляется второй неисчисляемый – не происходит ничего (т. е. нет необходимости в дополнительной проверке на наличие предмета); если кол-во исчисляемых становится равным нулю – автоудаление (но, если надо, кол-во может быть и отрицательным). Любой предмет можно обозначить как "экипировку" (щит, меч, броня и т. д.). Организованы обработчики одевания и снятия предмета, где можно ограничить кол-во одетых предметов одного типа (нельзя надеть пять шлемов), изменить характеристики персонажа и т. д.
  6. Меню. Создание меню предмета (вроде "Осмотреть", "Использовать" и т. д.) без единой строчки кода. Возможен вывод меню в любое время, даже без клика по предмету.
  7. Таймеры. Создание практически неограниченного кол-ва таймеров, каждого со своим интервалом. Возможность приостановить / запустить таймеры, по одному или все разом.
  8. Карты. Возможность создания любого кол-ва карт. Возможность создания карт на картинке-подложке. Автопереход на нужную локацию по клику на клетке карты (можно разрешить / запретить / разрешить только на уже посещенные). "Туман войны". Автоопределение направления движения. В Уроке 21 показано, как добавлять действия "Пойти направо", "налево", "вперед" и "назад" в зависимости от направления движения.
  9. Звук. Проигрывание звука организовано с помощью списков воспроизведения, коих может быть сколько угодно, равно как и аудиофайлов в каждом из них. После включения плей-листа начинается проигрывание аудиофайлов (по очереди или в случайном порядке). Можно определить какой файл из какого списка воспроизведения проигрывается в данный момент времени, а также длину трека. Отдельно, можно проиграть любой файл не из списка-воспроизведения (поверх фонового звука, напр., скрип двери, возглас врага и т.д.).
  10. Герои. Можно создать неограниченное кол-во персонажей (главным образом, для сражений (см. ниже)). Каждому герою, помимо картинки и стандартных характеристик, а именно: Жизнь, Сила, Защита, Сила Магии, Сопротивление Магии, Скорость, Удача, Дух, Мана, можно назначить любые другие. В Уроках показано, как добавить Ловкость, которая дает шанс увернуться от удара. Можно назначить кто этот герой (человек, животное, робот, нежить и т. д.) и наделить, в зависимости от этого, любыми нужными способностями (невосприимчивостями, уязвимостями и т. д.). У каждого есть набор свойств, определяющих поведение персонажа в бою (кого и как будет атаковать, какую магию и как часто использовать и др.). Также один персонаж может принадлежать другому. Элементарно организовывается прокачка героя.
  11. Магии. Магии – неотъемлемая часть движка. Из всех созданных магий можно создать каждому герою свою Книгу Магий. Можно создать магию, действующую только во время боя / только вне боя / работающую всегда. При этом условие доступности магии может быть сколь угодно сложным. Магии разделены по типу – действуют на врага / на друга / на всех и др. Можно создать как простые магии (напр., отнимающие определенное кол-во жизни), так гораздо более сложные (напр., призвание других персонажей). Призванные персонажи могут уничтожиться со смертью их создателя, а могут продолжать бой после его смерти.
  12. Способности. Под способностями подразумеваются любые эффекты (как в магиях), но, в отличии от магий, они имеют продолжительность действия (на постоянной основе, 3 раунда боя, 5 переходов между локациями и т. д.). Они могут быть положительными и отрицательными. Например, "Ядовитый удар" (20% шанс отравить врага в бою) – положительная способность, а "Отравлен" (отнимает 10 здоровья каждый раунд боя) – отрицательная. Способностями, как и магиями, можно наделить героев в редакторе с самого начала, а можно наделить их во время игры.
  13. Битва. Бой на моем движке – это не просто набор случайных событий. Система боя отличается высокой лабильностью. Так, в квесте "Разрушитель" боевка кардинально отличается от той, которая была мною задумана. Тем не менее, я сделал так, что бои проходят точно так же, как в книге, и это было совершенно не сложно. Можно поставить свою формулу для расчета повреждения, использовать предметы в бою для нанесения удара, добавлять любое количество своих типов ударов (Удар рукой, ногой, левой пяткой …), организовывать побег с поля боя и т. д. В бою могут учавствовать любое количество персонажей, как против, так и на стороне героя. Дружественными персонажами можно управлять или предоставить им биться самостоятельно. Можно добавить героя посреди боя. Например, несложно организовать такой сценарий: Герой начинает биться с одним зомби. Каждые 2 раунда в бой вступает еще один зомби, их становиться все больше и больше. Если герой продержался 10 раундов, то ему на помощь приходит крутой Дядя Вася, который первым ходом лечит героя, ну а дальше мочит зомби по 2 штуки за ход. Ведется история боя, которую можно показать по завершении. И т. д.
  14. Подстановка слова в правильной форме в зависимости от количества (больше никаких "У Вас 21 монетЫ"). Можно запретить / разрешить сохранение по условию любой сложности, можно получить время от начала игры, от начала боя, от перехода на текущую локацию, можно организовать продолжение своего квеста с параметрами, с которыми была закончена первая часть, ну, и т. д.
  15. Система помощи при создании квеста. Мною составлено около 800 файлов помощи по всем свойствам, функциям, блокам языка движка. Но это вовсе не значит, что все это надо запомнить! Наоборот, запоминать-то особо ничего и не надо. Все дело в системе помощи, которая встроена в редактор буквально на каждом шагу! В левой части экрана меняете свойство чего-либо, в правом – развернутая справка. Начинаете писать код – раскрывается список с возможными вариантами (поэтому код пишется быстро с минимумом очепяток), написали название функции – под ней появляется описание того, что она делает и ее параметры, а в верхнем меню появляется ссылка на развернутую помощь с примером использования. Единственное, что все-таки прочитать надо, если собираетесь написать квест – это основы моего языка в папке [Путь к программе]/Help/General/ Все это позволяет писать квесты значительно быстрее, чем на любом другом движке.
  16. Макросы. Тот же самый язык движка можно использовать и во время написания квеста. Так, например, можно тремя строчками кода создать сотню локаций. Или изменить что-либо по условию… да мало ли еще что!
  17. Система глобального поиска (и замены) по всему квесту с разными настройками, сохранение всего удаленного в корзине, возможность скрыть те элементы, которые сейчас не используются… и т. д.
  18. Командная строка. Здесь, помимо основного, а именно запроса на ввод какого либо текста игроком, можно запустить на исполнение любую команду (первый символ "?" – получить результат (напр., ?Hero&#91;'Вася'&#93;.Life&#41;, с "#" – выполнить код (напр., #Object&#91;'Деньги'&#93;.Add 100)). Такое можно и на других движках. Отличие моего в том, что больше нет проблем с читерством: запустили квест из редактора – значит это режим тестирования, все ок; запустили не из редактора – режим игры, команды писать нельзя. А на редактирование квеста можно поставить пароль (пароль на редактирование, НО НЕ НА ИГРУ – это принципиальная позиция).

К сожалению, для того, кто захочет дописать движок, все не так радужно. Я ведь не знал, что так получится! К тому же я ни одним боком не программист. Движок начинал писать давно, на Visual Basic 6.0. Если по уму, то его надо переводить на платформу .NET (тот же Basic или более популярный C#). Дееспособного конвертора не существует – только вручную. Код плохо откомментирован, корявый (я не программист, если кто забыл). Когда я недавно пересматривал его, то понял, насколько многие вещи можно было написать проще. При желании движок можно ускорить раза в 2, просто оптимизировав код (хотя серьезных тормозов и так нет). Напишу еще раз для тех, кто захочет разобраться в коде: не надо обо мне так думать, я не программист!


Серьезных глюков в движке не обнаружено. Считайте его &beta;-версией, поскольку он должным образом не протестирован. Вот известные глюки:

  1. Самый серьезный глюк: редко, когда квест запускается из редактора, а затем закрывается и происходит обратная загрузка его в редактор, портится файл с квестом.
    Лечение: в папке с квестом ([Путь к программе]/Quests/[короткое имя квеста]/) заменить файл "main.qst" на его резервную копию "main.qst.bak" (резервная копия создается автоматически после каждого успешного запуска). Происходит такое, видимо, когда юзер, во время загрузки, от нетерпения, начинает клацать мышью где попало. Когда я создавал на своем движке квест "Разрушитель" на 460 локаций, такое произошло один раз.
  2. Иногда, только в Windows 7, при запуске программы, а также при запуске квеста с одновременным включением звука, не прорисовывается окно (т. е. на экране контуры окна, залитого серым цветом). Также такое бывает после завершения боя (когда происходит динамическая смена css-файла). При перемещении мыши под курсором все элементы проявляются. Лечение: кликнуть мышью по чему-нибудь в окне программы, или же свернуть / развернуть окно. Происходит это из-за каких-то проблем совместимости старенького Visual Basic 6.0 и Windows 7.
  3. Бывает, когда в режиме редактора указатель стоит на каком-нибудь свойстве, и производится глобальный поиск с переходом на найденный результат, это свойство заполняется какой-то ерундой. Лечение: просто вернуть то, что было. А лучше перед поиском убрать указатель со свойства.

Вроде все. Надеюсь, Вам понравится.

Скачать Matew Quest можно здесь: rapidshare.com/files/2787606203/q_release.rar
размер 66 Мб


Внешний вид при запуске

Первый урок. Демонстрация HTML

Пример боевки. Начало боя.

Книга Магий.

Пример боевки. Дружественный персонаж лечит главного героя.

Один из уроков. Бой завершен, смотрим историю боя.

Редактор. Встроенная помощь выбранному свойству.

Редактор. Работа с картой.

Редактор. Встроенная помощь по выбранному классу.

Редактор, печать кода. Информация о той функции, название которой ввели. Под курсором – что функция делает и ее параметры. Справа от курсора – список значений, которые может принимать вводимый параметр. В меню сверху появилась ссылка на развернутую помощь по функции.

Пт Май 04, 2012 10:39
Магистр Таро
26  63  Меценат

Проделанная работа впечатляет. Посмотрю сегодня вечером подробнее.
Более профессиональное мнение выскажут наверное Джуманджи и Логгер Smile


_________________
Ситуация воспринятая, как "Реальная" - становится реальной по своим Последствиям
Пт Май 04, 2012 12:56
Ergistal
9  316  7  5  Герой легенд

Спасибо, очень интересно. Если редактор настолько хорош, насколько написал автор, и при этом ещё и достаточно прост в освоении, то попробуем на нём сделать игрушку.

Добавил через 1 час 9 минут 21 секунд:

У кого ругается на элементы Active-X скачайте патчик и закиньте в корень редактора.

rghost.ru/37906017


_________________
Стремится вперёд и побеждать собственную лень, слабость и отговорки, чтобы достичь цели.
Пт Май 04, 2012 15:28
Ergistal
9  316  7  5  Герой легенд

Работа автором конечно проделана колоссальная. Он практически написал редактор языка-программирования приспособленный для квестов.

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


_________________
Стремится вперёд и побеждать собственную лень, слабость и отговорки, чтобы достичь цели.
Пт Май 04, 2012 16:28
Jumangee
Во всех бочках затычка

Да, работа проделана действительно ОЧЕНЬ большая, но... очень много работы было сделано "не в ту сторону". Абсолютно не понятный интерфейс, его не то что "интуитивно понятным", но даже дружественным не назовёшь, даже несмотря на то, что он на 99% похож на интерфейс QSP, да – это к "плееру", интерфейс редактора ЕЩЁ хуже. К сожалению, я не умею в один-два абзаца сжать всё своё понимание "удобного интерфейса", поэтому считайте это субъективной критикой.
Тем не менее, это ещё цветочки. Самое плохое, что ни у редактора, ни у игр созданных этим редактором нет будущего, ну разве что – полное переписывание. Почему? Со времён Visual Basic 6 мир сильно изменился, мир заполонили компьютеры всех форм и размеров, а программа с трудом запускается под WindowsXP. Вы скажете – есть много других платформ – QSP/URQ/..., но у них есть либо кроссплатформенность, либо своя группа поддержки или даже то и другое вместе.
Вы скажете – можно создавать игры в редакторе, а плеер написать другой. Я думаю, что в этом тоже мало смысла. Чтобы довести до ума редактор мне кажется потребуется больше сил, чем написать новый: избавившись от "граблей" старого кода и имея в голове четко понимаемую цель написать хорошую программу будет гораздо проще.

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

ps Подбор музыки в "разрушителе" ужасный, хуже его – только подбор картинок. А 50-метровую коллекцию картинок и музыки надо вырезать, обычно у каждого автора своя подборка.

Пт Май 04, 2012 20:34
matew

Спасибо всем, кто испытал мой движок!
Пишу не из дому, так что кратко

По поводу интерфейса – этого я и боялся больше всего! Если мне, как автору, все быстро и понятно, то человеку, который видит это все впервые, солгасен – сложновато... Постараюсь в ближайшее время создать доступный мануал. Если разобраться, то там все просто
По поводу отсутствия будущего: пускай мой движок не кроссплатформенный, но в среде Виндовз-то он раотает нормально! Я не совсем понял, что значит "с трудом запускается"? У меня и на Вин7 64 все работает как надою И уверен, что и на Виндовз 8 все будет работать! А если дело в dll-ках, то их можно прилагать к релизу! QSP, если не ошибаюсь, тоже не кросспатформенная!

На остальное отвечу позже.
Спасибо всем, особенно за правду!

Сб Май 05, 2012 5:04
matew

Эргистал: да, карты параграфов действительно нет. Честно говоря, я даже мало представляю как это сделать на моем движке. Ведь переход на другой параграф может быть необязательным. Ну, например, зависеть от удачи. Или же он может зависеть от результата боя. Или еще от чего, что в данный момент мне и в голову не прийдет! А расстановка переходов "ручками" только все усложнит. Но не буду спорить – карта параграфов с авторасстановкой переходов была бы очень полезной, и, то, что не умею я, кому-то может показаться элементарным.

Jumangee:
1) Про интерфейс плеера. Ну а там-то что не так? Расположение окон действительно один в один с привычным многим QSP (а зачем изобретать велосипед?). А интерфейса как такового там, по большому счету, и нет. Небольшое меню – и все! PS: это я не возмущаюсь, это я прошу пояснить.
2) Про интерфейс редактора: критика принята, согласен. Интуитивно понятный интерфейс, в отличие от моего, в мануале не нуждается. Как я уже писал, попробую все изложить максимально просто.
3) По поводу переписывания на новой платформе. Да, работы много. Но тут есть один бонус – это сам движок в чистом виде. Его можно использовать где угодно, (и я ничего против этого не имею). Поясняю:
Здесь есть кто-нибудь, кто умеет писать программы? Если да, то хоть в одной Вашей проге есть возможность писать макросы, как Microsoft Office или 1С? Вот! А если этот движок "вычленить", то его можно легко приспособить под работу с БД, составлению отчетов, созданию и сортировке документов и т. д. И не надо говорить, что это дольше, чем написать все с нуля! Больше всего времени уходит не на написание кода, а на продумывание логики и исправление багов. А тут все готово! И именно в самом движке я не нашел ни единого бага!

4) Visual Basic 6. Да, это уже раритет, с Вами не поспоришь. Только редактор начинал писаться тогда, когда он был очень популярным. И, как я писал, все работает даже под 64-разрядной Win7.
Эргистал, спасибо за ссылку. Я был уверен, что с времен WinXP проблем с запуском программ, написанных в Visual Basic 6, не будет. Видимо, ошибался. Может, это зависит от версии WinXP (Home edition, Enterprise или как ее там...)

5) А к "Разрушителю" не придирайтесь! Была поставлена задача показать возможности движка на реальном примере. Приципиальный момент – это безглючность и, в частности, проходимость. А на картинки и музыку ушло бы в несколько раз больше вермени, чем на перевод книги а на мою платформу. Поэтому взял то, что "валялось под ногами".
Кстати, о скорости написания квеста на примере Разрушителя. Зная свою платформу, я: передрал и .doc-а все локации с описаниями за 1 вечер; создал и проверил все действия, предметы и персонажей за 4 вечера; проверка всего и мелкая коррекция – еще один вечер. Ну, и прохождение игры с поиском багов, еще 3 вечера. Вроде бы и не мало, но сравните, сколько бы понадобилось времени на других движках.

Сб Май 05, 2012 16:39
matew

Выложил видеоурок по работе с редактором Smile

Скачать (50 Мб) можно здесь rapidshare.com/files/1814028844/Getting_Started_-_копия.mp4

Посмотреть – здесь:



Добавил через 1 минута 21 секунд:

Вот же-ш! Видео на Youtube перезалью и отпишусь!

Сб Май 05, 2012 21:04
matew

Разделил видео на 2 части и перезалил в Ютуб

Часть 1



Часть 2



Общая продолжительность – около 25 минут

Пт Май 11, 2012 0:12
Jumangee
Во всех бочках затычка

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

Вс Май 13, 2012 2:17
matew

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

По поводу программирования "продвинутых" вещей поспорить сложно. Конечно, например, на чистом С# возможностей несоизмеримо больше. Вопрос только во времени, затраченном на написание квеста. Но на самом-то деле возможности моего движка и так достаточно большие. Просто чтобы это понять, надо хоть немного в нем разобраться. А если нет желания в нем разбираться – что ж, понимаю. Надо было больше уделить внимания интерфейсу и внешнему виду. Мало кто захочет колупаться в непонятной проге, супервозможности которой не подтвердил никто, кроме автора. Круг замкнулся.
Еще надо было сделать перевод квеста в java-script. Потенциально никаких сложностей в этом нет. В итоге – кроссплатформенность. Может тогда был бы другой разговор. Ведь самое ценное, что у меня есть – боевка, которую можно настроить как угодно, никто и близко не реализовал и, скорее всего, никогда не реализует. Если, конечно, Вы ее видели.

Ну, что не сделано, то не сделано.
В целом все понятно. Всем спасибо за потраченное время! Smile

Вс Май 20, 2012 21:31
LastElf
Свободный искатель

Вопрос к автору: можно ли настраивать редактор под себя? Меня, в частности, интересует возможность вставки заготовленных фрагментов JavaScript на локациях квеста. Хотелось бы автоматизировать процесс создания книг-игр со скриптами, но собственного редактора у меня пока нет, пишу в текстовом редакторе с подсветкой HTML и JavaScript-кода.
Может, я и возьмусь за портирование Вашего движка на C#. Не хотелось бы, чтобы такой труд пропал зря. Можно было бы добавить сюда мои собственные наработки по скрещиванию URQL с JavaScript. Если разделить редактор и собственно плеер квестов, думаю, может получиться вполне конкурентоспособный движок. Если у Вас все завязано на HTML, то помимо Windows можно было бы сделать и универсальную Silverlight-версию плеера, работающую в браузере.

Чт Май 24, 2012 23:38
matew
Вопрос к автору: можно ли настраивать редактор под себя?

Разумеется!
Во-первых, есть функции LW.AddScript, RemoveScript и ExecScript. Первые две динамически загружают / выгружают файлы со скриптами (*.js), третья – выполняет скрипт. Например, если в глобальном обработчике перехода на новую локацию добавить строчку
LW.ExecScript 'alert&#40;"Это сообщение выведено посредством JavaScript!"&#41;;'
то это сообщение будет выдаваться при переходе на любую локацию.

Во-вторых, Текст скрипта можно прописать прямо в описании локации (Description).

В-третьих, когда создается новый квест, в его папку копируются все необходимые html-файлы, а именно:
Act.html – окно действий
Cmd.html – окно командной строки
Desc.html – окно описаний и вывода меню
Loc.html – окно локаций
Magic.html – окно магий
Map.html – окно с картой
Obj.html – окно предметов
Убирать из них ничего нельзя, а добавлять – сколько угодно. Например, вписать имя автора или подключить свои скрипты, prototype.js или jQuery.js – что угодно.
css-файлы подключаются из редактора.

В-четверых, есть связь между движком и событиями javascriptа – свойство UserSendProc объекта Location. К примеру, при нажатии на кнопку <input> можно запустить функцию, написанную на самом движке (вместе с каким-нибудь параметром). Как оно работает показано в первом уроке.

Представьтесь для добавления комментариев - регистрация в один клик!
Разделы форума