logo.aleks Versus Поиск по сайту:
  Главная | Регистрация | Вход   Приветствую Вас Гость | RSS
Майнпаги
тыц
Стихи.РУ
Проза.РУ
Aleks Versus на LI
Я на Самиздате
читательский дневник
На Книготопии

«MAGICON.FB»

История разработки движка

01.12.2013(1.2.0)

Выявлена ошибка в работе механизма разрядки оружия не позволявшая заряжать оружие по-новой. Устранена. Исправлено некорректное поведение replace.obj, не передававшей правильный ай-ди.

02.12.2013(1.2.1)

Выявлена ошибка связанная с недоработкой плеера версии 5.7.0. $result – общий массив для всех локаций, из-за чего результат, записанный в него может теряться, и воспроизводится не необходимое значение, а иное. Изначально предполагалось, что расширение массива за счёт индексации $result поможет решить проблему, однако поскольку в результат функции передаётся всегда значение $result[0], это значение может быть затёрто при обращении к вложенным функциям. Следовательно, было необходимо перестроить функции так, чтобы результат записывался в $result только в конце выполнения функции. Таким образом были вновь переправлены все подпрограммы движка и баз данных.

05.12.2013(1.2.2)

C подачи Taunco добавил в движок функцию отрисовки шкалы. Типа здоровье, мана, выносливость. Отрисовывает шкалу с использованием рисунков из базы рисунков base.img, что позволяет проверять наличие требуемого рисунка ещё до отрисовки. Если рисунок отсутствует, или передаётся цвет символов заполнения, шкала отрисовывается в виде символов в моноширинном шрифте.

В связи с появлением новой функции был сделан набросок опции интерфейса «отрисовка статов героя». Статы отрисовываются в виде шкал четырёх цветов.

Пересмотрена концепция генерируемых гиперссылок для объектов. Теперь объекты создаются и привязываются к ссылке во время спавна. И не удаляются. Это будет загромождать таблицу данных объектами, которые возможно никогда не будут использоваться, однако это позволит создавать несколько объектов на одну ссылку. Немного доработана локация int.link. Не закончена. Подправлен функционал локации del.obj. Теперь можно удалять только дочерние объекты, не затрагивая родительский объект.

06.12.2013(1.2.3)

В базу base.new.obj добавлен пустой объект для формирования абсолютно новых объектов. Так, если необходимо создать абсолютно новый объект используя базу, можно воспользоваться этим пустым объектом.

Вновь пересмотрена концепция объектов в ссылках. Подробнее описано в спецификации link.obj.txt

charge_array[] - для ссылок: сколько раз спавнилась

kolvo_array[] - метка. Если 0 — производим спавн, если 1 не производим спавн. Если 2 — предметов больше нет.

Выявлена и исправлена ошибка в проверке на перемещение объекта prv.obj.id. Ошибка состояла в том, что не учитывался полностью перемещённый объект, который перемещался в уже существующий, а из прежнего места удалялся.

07.12.2013(1.2.4)

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

11.12.2013(1.2.5)

Системная переменная $GAME_INTERFACE['obj.image.stat'] имеет два значения «show» - показывать изображения предмета в описании, и «hide» - не показывать изображения предмета в описании. Если не указывать эту переменную, то по умолчанию изображения показываются.

12.12.2013(1.2.6)

Пересмотрена форма записи освещённости локации, теперь она указывается в теге [place::place].

Разработка концепции магической энергии принадлежащей текущему месту потребовала как-то запоминать текущее время на локации. Вводить новый столбец не хотелось, поэтому будет использоваться $kolvo_array[]. Для локаций в $kolvo_array[] записывается последний момент посещения. Это позволяет высчитывать из периода респавна разные плюшки.

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

13.12.2013 (1.2.7)

Разработка концепции магической энергии привела к конструированию локаций работы с магической энергией. Это были локации magic.megenergy.set magic.megenergy.spwn magic.megenergy.spell. Поскольку на локациях повторялся практически один и тот же код с разницей в вычислениях, было решено оставить только одну общую локацию, выполняющую все четыре функции. Выставление магических энергий локации (set), регенерация магических энергий локации (respawn), проверка соответствия магических энергий локации требованиям заклинания (prove), расход магических энергий локации заклинанием (spell).

Создана локация magic.add.spell, добавляющая заклятие в указанную книгу магии.

Доведён до ума механизм чтения заклинаний. На примере заклинания Перст Гемеры механизм обкатан. Теперь это полноценная конструкция, способная обрабатывать заклинания вида, как расходующие ману, так и расходующие магическую энергию местности.

18.12.2013 (1.2.8)

Добавлена новая команда для отладчика «goto», которая позволяет осуществлять переход на указанную локацию. Если локация указана неверно, отладчик выдаёт соответствующее сообщение. Название локации указывается без кавычек.

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

Изменены порядки переходов. Теперь, если GAME_VALUE['goto'] = 0, не сбрасываются различные счётчики локации. Вместо определения по $time['goto'].

Исправлены мелкие недочёты на локации remastering.obj. В частности убраны некоторые неиспользуемые теги и заменены на используемые.

Создана функция get.loc.id, которая получает айди места, в независимости от того, находится герой на локации места или «в сундуке».

27.12.2013 (1.2.9)

Введена локация сравнения списков типов prv.onTarget. Списки имеют вид:

[оружие] [двуручное] [меч]

Локация имеет два режима. One – результат верен, если хотя бы одно совпадение типов верно. All – результат верен, если все типы совпадают.

Поправлены некоторые функции. Добавлена возможность сбрасывать на локации предметы лишь определенных типов.

28.12.2013 (1.2.10)

Добавлена новая чит-команда. main html – выводит текст из окна основного описания так, как бы он выглядел при usehtml = 0.

15.04.2014 (1.3.0)

Изменён концепт локаций специальных возможностей. Теперь специальные возможности будут указываться в теге [spec: :spec]. Например для локации крафтинга [spec:[smithing]:spec]. Это позволит избежать размножения обязательных локаций. Немного нагрузит локацию [chest], но не сильно. В связи с необходимостью хорошенько переработать код, версия движка изменена на 1.3.0. Резервные копии сделаны.

Введён генератор заголовков локаций для локаций-хранилищ. Добавлена надстройка для процедуры menu.obj.put – menu.obj.put.onAltar, фиксирующая ай-ди объекта, который нужно подзарядить. Осталось дело за малым: написать первый алтарь и процедуру подзарядки от принесённых в жертву вещей.

Задумано полномасштабное изменение записи ссылок в динамическом тексте. Сейчас они слишком сложны.

17.04.2014(1.3.1)

Изменён синтаксис динамических записей в тексте.

Теперь теги <DIN#: :#DIN> - используются только для выделения динамических конструкций с кодом внутри. Поддерживаются любые уровни вложенности. Единственное: требуется верно соблюдать нумерацию - открывающий и закрывающий тег должны иметь одинаковый номер. Номера тегов в одном куске текста не должны повторяться, но могут быть любыми. Следить за порядком номеров нет необходимости. Раньше требовалось соблюдать порядок нумерации. К сожалению не удалось добиться от регэкспа распознавания нежелательных слов в строках, а так и нумерация этих тегов оказалась бы лишней.

(/) - по прежнему распознаётся, как пол, вложенность идентичных конструкций не поддерживается. Прочие конструкции:

[th]утро|день|вечер|ночь[/th] — как видно, теперь теги заключены в угловые скобки с обеих сторон. Вложенность тегов подобного рода не ограничена. Однако нельзя использовать внутри этих текстов угловые скобки, поскольку конструкция может быть неверно распознана. Если есть необходимость вывести угловые скобки на экран (поместив внутри тегов), используйте мнемоники &#91; и &#93;

Наборы тегов будут пополняться.

18.04.2014(1.3.2)

Пересмотрена концепция составления идентификаторов гиперссылок. Теперь они вводятся в текст с помощью простых тегов. Так же пересмотрена концепция ай-ди локаций и хранилищ. Теперь ай-ди может не включать конструкцию вида [б:00]_, а может содержать одно из ключевых слов. Для локации места place; место; и т. д. Смотри документацию по идентификаторам. Это позволит упростить написание кода и исключит вложения угловых скобок в неподходящих местах.

22.04.2014(1.3.3)

Переработан и упрощён интерпретатор общего интерфейса. Изменены режимы. Подробнее о них будет составлена соответствующая спецификация. Доработана функция алтаря «принести в жертву». Осталось доработать функции «зарядить предмет» и «прокачаться». Но функция прокачаться будет доступна ещё не скоро.

29.04.2014(1.3.3.1)

Слегка подправлена локация int.inventory.obj. Теперь всем предметам в игре можно задать один цвет.

22.05.2014(1.3.3.2)

Расширена база текстов b.w.s и база текстов-объектов base.new.bodypart в целях добавления строки дополнительного описания, поясняющей игроку, почему он не может использовать предмет. Скорректированы некоторые другие мелочи в визуализации.

23.05.2014(1.3.3.3)

Подправлен алтарь. Доработаны функции «зарядить предмет». Добавлено свойство божества в charge_array[], подсчитывающее баланс между добрыми делами и злодеяниями.

Подправлены сообщения между базой текстов «b.w.s» и базой текстов «game.help» - более удобная и простая поддержка помощи по интерфейсу. Введена база текстов движка «b.d.t» - перенесены тексты, отвечающие за пункты меню и некоторые другие. В будущем планируется вынести из движка вообще все тексты и цвета для того, чтобы обеспечивать более удобную перекройку интерфейса. Подправлены интерпретаторы дневников. Теперь из под настроек можно сменить представление дневника. Доработаны разные мелочи.

08.06.2014(1.3.3.4)

Скорректирована локация onNewLoc. Теперь можно писать динамическое описание в поле «Описание» в Qgen, что даст молодым авторам некую свободу. Программа сама будет очищать и перезаписывать экран.

21.10.2014(1.3.4.0)

Изменён порядок записи ссылки в тексте. Теперь текст ссылки вписывается следом за коротким словом, т. е. ссылка в тексте имеет вид:

[lnk]SHORT_WORD|Первый вариант|Последний вариант[/lnk]

Таким образом из тела ссылки исключаются теги [name: :name] [other: :other]. Соответственно поправлен код некоторых локаций.

Исправлена ошибка на локации int.diary, приводившая к неверному возвращению экрана игры по закрытии дневника после смены режимов отображения.

25.10.2014(1.3.4.1)

Переработаны и исправлены локации торговли. Теперь диалоги торговли и сундуков создаются в общей локации [chest]. Так же немного расширены функции локаций места. В идеале это позволит генерировать локации с вложенными локациями, и прочим, автоматически, т. е. делать стандартные локации и лабиринты. Исправлены мелкие ошибки.

26.10.2014(1.3.4.2)

Исправлены мелкие ошибки локации inputText.

27.10.2014(1.3.4.3)

Исправлена ошибка функции prv.obj.pay, приводившая к тому, что можно было продавать предмет без добавления денег в кошелёк.

Исправлены ошибки функции take.obj, приводившие к неверным обращениям. Исправлены мелкие ошибки. Добавлена функция logs error в inputText, которая выводит только логи ошибок.

Добавлена вспомогательная процедура “kill.var.olegus”, которая удаляет элемент массива по текстовому индексу. Может удалять до восьми элементов одновременно.

28.10.2014(1.3.4.4)

Исправлена структура надстроек алтаря. Теперь нет нужды добавлять новый признак [on Altar]. Структура скорректирована в соответствии с общей механикой движка.

Расширен функционал функции get.daughter.obj. Теперь можно задать дополнительный фильтр, проверяющий присутствует ли в $run_array[] строка соответствующая регулярному выражению.

Исправлен и расширен функционал inputText. Описание команд лежит в файле commandcom.txt.

01.11.2014(1.3.4.5)

Собраны механизмы вывода дополнительных текстов на локации:

  • $dvar[] - массив, куда помещаются строки текста, выводимого на локации до тех пор, пока герой не перейдёт на новую локацию. Строки можно добавлять (и соответственно выводить) только на втором обновлении описания локации. Т.е. если герой только перешёл на локацию с другой локации массив уничтожится и ни одна строка не будет выведена. Если же добавить строку в массив, когда герой находится на текущей локации, и вновь зайти на текущую, строка появится на экране.

  • $tvar['приветствие.'+$args['LID']] – переменная приветствия. Может использоваться для генерации фразы, которая должна быть получена лишь один раз, а потом постоянно выводиться. Не обрабатывается интерпретатором динамических текстов из под служебной локации onNewLoc, т. е. автору нужно самому озаботиться обработкой, если она нужна. Удаляется фраза приветствия предыдущей локации. Обязательно удаляется, но даже если не будет удалена, ничего страшного, поскольку фраза с предыдущей локации не будет выведена на текущей. Текст переменной приветствия будет выведен перед остальным описанием локации.

  • $lvar['локация.дополнительные тексты'] — переменная дополнительного текста, который будет выведен один раз в описании локации. Выводится до диалоговых реплик $dvar[], но после остального описания. Т.е. в конце описания как такового. Как и значение $lvar['локация.исходник'], удаляется после вывода описания локации на экран. Т.е. каждый раз нужно заново заполнять, если есть необходимость. Может служить для формирования дополнительных текстов например при переходах.

Пока это все способы дополнения текстов основного описания и мне кажется, что пока больше не нужно.

Исправлены мелкие ошибки на локации prv.obj.pay, добавлены тексты в базы текстов. Слегка изменено поведение реплик торговцев в соответствии с новыми возможностями вывода дополнений к тексту основного описания. База base.dialog.seller заменена базой b.d.s, которая соответствует новым спецификациям баз.

04.11.2014(1.3.4.6)

Собрана функция, выбирающая строки по разделителю «cut.str.inArray»

06.11.2014(1.3.4.7)

Функция cut.str.inArray вынесена в библиотеку easy.math.qsp, где называется #str.inArray#.

Немного подправлена структура локации int.loc.interface.

19.11.2014(1.3.4.8)

Изменена функция get.tag.num. Теперь из одиночных тегов можно извлекать не только непробельные значения. Подробнее см. документацию по вспомогательным функциям.

Разработана концепция диалогов для персонажей. Собран механизм разбора диалога на реплики и занесения их в микробазу.

20.11.2014(1.3.4.9)

Удалена переменная $floor и заменена на $GAME_VALUE['inventory.floor']. Слегка изменена функция int.inventory. Продолжаю работать над движком диалогов. Пока продвинулся недалеко. По большей части дорабатывал концепцию.

Изменена функция get.tag.cont. Сделана чуть проще, и расширена возможностью получать содержимое html-тегов. Вложение однотипных html-тегов при этом не поддерживается.


<- Назад (стр. 1)
 
Copyright MyCorp © 2018
Конструктор сайтов - uCoz
aleksversus@mail.ru
lex666endless@rambler.ru
437337904
Наверх