Новая версия Прототип 10 выпуск 1.
Изменения:
Отличия от 9го прототипа (с 05.09.2012):
д + Теперь работают роли на уровне Движка.
д + В роли добавлены триггеры для проверки доступности вложенных объектов.
к + Роль "контейнер" теперь проверяет, закрыт ли контейнер, и выводит описание вложенных предметов в зависимости от этого.
д + Инструкция "Вернуть значение" (return) для возврата результата, например, из триггеров.
д + Орператор "в" для проверки, входит ли предмет в коллекцию.
к + В игре "ZorkPort" можно открывать ящик и читать письмо.
д + Коллекция "Пустота" для симуляции создания и удаления объектов.
д * Улучшено вылавливание ошибок.
я ~ Папка Samples теперь называется Games.
д + Добавлено подробное логирование в файл ifml2.log.
ifml2-53426 контейнер и плоскость:
д + у объекта можно проверять наличие роли, а также получать значение свойства, данное ролью
к + "осмотреть" теперь описывает и лежащие сверху предметы
Неактивен
Загрузка...
Произошла ошибка: java.lang.NullPointerException
at ifml2.om.Hook.toString(Hook.java:47)
at java.text.MessageFormat.subformat(Unknown Source)
at java.text.MessageFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at java.text.MessageFormat.format(Unknown Source)
at ifml2.FormatLogger.debug(FormatLogger.java:28)
at ifml2.om.OMManager$1.afterUnmarshal(OMManager.java:47)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.Loader.fireAfterUnmarshal(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StructureLoader.leaveElement(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.endElement(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.SAXConnector.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(Unknown Source)
at ifml2.om.OMManager.loadStoryFromXmlFile(OMManager.java:84)
at ifml2.engine.Engine.loadStory(Engine.java:60)
at ifml2.players.guiplayer.GUIPlayer.loadStory(GUIPlayer.java:114)
at ifml2.players.guiplayer.GUIPlayer.main(GUIPlayer.java:103)
at ifml2.Launcher.main(Launcher.java:29)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
at com.install4j.runtime.launcher.WinLauncher.main(Unknown Source)
Неактивен
Нашёл, это был "Спелеолог". Вот исправленная версия - Прототип 10 выпуск 2
Неактивен
Привет создателю ЯРИЛА!
Хотелось бы задать несколько вопросов:
1. Можно ли в Редакторе заменить отдельные команды из библиотеки глаголов или нужно ее отклучать совсем?
2. Как задавать условия? Интересует синтаксис.
3. Какие операции с переменными (кроме присваивания) поддерживает интерпретатор? Если поддеживает, то как это реализуется на практике?
4. Стили оформления редактируются в xml?
Неактивен
Привет
johnbrown написал:
1. Можно ли в Редакторе заменить отдельные команды из библиотеки глаголов или нужно ее отклучать совсем?
Можно. Нужно просто создать команду, которая по шаблонам будет совпадать с библиотечной. При поиске подходящего шаблона сначала рассматриваются команды истории и только потом команды библиотек. Также ещё можно перехватить в локациях или предметах любые команды - если, к примеру, нет необходимости полностью переделывать логику команды для всех предметов/мест, а только для некоторых.
johnbrown написал:
2. Как задавать условия? Интересует синтаксис.
Синтаксис подобен выражениям в других компьютерных языках - он почти математический + некоторые особенности. Поддерживаемые операции:
с логическими величинами - "и", "или", "не";
проверка вхождения элемента в коллекцию - "в";
получение значения свойства - точка (".") - используется в виде <объект>.<свойство>;
сравнение - "=";
сложение - "+".
Строковые литералы должны быть в двойных или одинарных кавычках. Скобки пока не поддерживаются. Операторы будут добавляться.
johnbrown написал:
3. Какие операции с переменными (кроме присваивания) поддерживает интерпретатор? Если поддеживает, то как это реализуется на практике?
В переменную можно записать значение любого выражения. В том числе, и выражения с этой же переменной - нужно просто использовать её в качестве операнда. К примеру, в переменную "x" можно положить значение выражения "x + 1", в итоге переменная увеличится на 1.
johnbrown написал:
4. Стили оформления редактируются в xml?
Стили оформления пока не поддерживаются, но есть в планах, как и графика.
Неактивен
В переменную можно записать значение любого выражения.
Т.е. матемаматические операции полностью поддерживаются? А, скажем, rnd будет генериться?
А динамическое изменение свойств, описания комнат, объектов поддерживается?
На сколько вообще проект будет похож на ADRIFT, если, конечно, это есть в планах? Какие планы по развитию платформы, если не секрет?
Можно. Нужно просто создать команду, которая по шаблонам будет совпадать с библиотечной.
А, кстати, где можно шаблон посмотреть? Нужно в файл библиотеки лезть? Из Редактора никак? Там, вроде, только просмотр всех глаголов доступен.
Отредактировано johnbrown (07.01.2014 22:25)
Неактивен
johnbrown написал:
В переменную можно записать значение любого выражения.
Т.е. матемаматические операции полностью поддерживаются? А, скажем, rnd будет генериться?
Нет, пока не полностью. Похоже, вычитания ещё нет. ) Но это всё будет добавляться, просто пока острой необходимости не было. Добавить недолго. Рандом пока не работает, но тоже будет. Думаю, как его лучше реализовывать, чтобы было наиболее удобно пользоваться.
johnbrown написал:
А динамическое изменение свойств, описания комнат, объектов поддерживается?
Несистемные свойства можно менять динамически, но в Редакторе пока нет поддержки (только в XML). Динамические описания комнат реализованы сейчас через перехваты в локациях. А что имеется в виду под динамическим изменением объектов?
johnbrown написал:
На сколько вообще проект будет похож на ADRIFT, если, конечно, это есть в планах? Какие планы по развитию платформы, если не секрет?
Довольно сильно похож на Адрифт, насколько я могу судить... Какие-то планы видно в трекере http://www.hostedredmine.com/projects/i … ry_id=2469
Неактивен
johnbrown написал:
На сколько вообще проект будет похож на ADRIFT, если, конечно, это есть в планах?
В планах взять всё лучшее из Адрифта, переработать, адаптировать под русский и добавить своего. Если автор не передумает.
Неактивен
johnbrown написал:
А что имеется в виду под динамическим изменением объектов?
Сорри, не так написал. Динамическое изменение свойств предметов (объект - контейнер, объект может быть съеден).
В ЯРИЛе такие свойства реализованы ролями. Динамического навешивания/снятия ролей пока не планировалось. Нужно ли оно?
Неактивен
Динамического навешивания/снятия ролей пока не планировалось. Нужно ли оно?
В АДРИФТе, по-моему это реализовано. Ну, конечно, много не мало, но мне, если честно, рнд сейчас не хватает ) , ну, и справки какой-то минимальной. В АДРИФТЕ, кстати есть встроенная справка по матфункциям, очень удобно в одном клике от окна ввода. В целом, конечно, понятно,на то оно и мышинное программирование, но есть не очевидные моменты. Вообще, есть смысл сейчас писать на ЯРИЛ? Может быть такое, что новые версии не будут поддерживать старые игры?
Неактивен
johnbrown написал:
Динамического навешивания/снятия ролей пока не планировалось. Нужно ли оно?
В АДРИФТе, по-моему это реализовано. Ну, конечно, много не мало, но мне, если честно, рнд сейчас не хватает ) , ну, и справки какой-то минимальной. В АДРИФТЕ, кстати есть встроенная справка по матфункциям, очень удобно в одном клике от окна ввода. В целом, конечно, понятно,на то оно и мышинное программирование, но есть не очевидные моменты.
В ЯРИЛе пока нет матфункций) РНД - можно сделать и пораньше. Как его будет наиболее удобно использовать? Мне кажется, он чаще всего используется для каких-то случайных событий, нежели просто для генерации случайного числа. Для случайного выбора между n-ым кол-вом альтернатив, думаю, лучшим вариантом будет создание инструкции-ветвления (типы switch или case в других языках, или множественный if), с указанием случайного выбора ветви.
Или сейчас больше необходимо именно случайное число (каких-то очков, предметов и т.д.)?
johnbrown написал:
Вообще, есть смысл сейчас писать на ЯРИЛ? Может быть такое, что новые версии не будут поддерживать старые игры?
Смысл уже есть, т.к. игры уже можно писать. А платформа будет развиваться и дальше. Я постараюсь решить проблему с совместимостью, но в крайнем случае будет либо конвертация под новые версии, либо просто достаточно будет запускать игру в старой версии.
Неактивен
johnbrown написал:
ну, и справки какой-то минимальной. В АДРИФТЕ, кстати есть встроенная справка по матфункциям, очень удобно в одном клике от окна ввода. В целом, конечно, понятно,на то оно и мышинное программирование, но есть не очевидные моменты.
На справку пока не хватает времени. Альтернатива - или новые функции и исправление багов, или справка. Притом при добавлении функций нужно постоянно обновлять справку.
Вообще, есть Skype-чат по ЯРИЛу, там сидят (кроме меня) уже поднаторевшие авторы, которые завсегда помогут и подскажут. Могу добавить в чат, если интересно и есть скайп-аккаунт.
Неактивен
В ЯРИЛе пока нет матфункций) РНД -можно сделать и пораньше. Как его будет наиболее удобно использовать?Мне кажется, он чаще всего используется для каких-то случайных событий, нежели просто для генерации случайного числа. Для случайного выбора между n-ым кол-вом альтернатив, думаю, лучшим вариантом будет создание инструкции-ветвления (типы switch или case в других языках, или множественный if), с указанием случайного выбора ветви. Или сейчас больше необходимо именно случайное число (каких-то очков, предметов и т.д.)?
Rand(x,x1)
Мне бы этого хватило, т.к., как я понял, уже сейчас можно повесить перехват событий на переменную.
Неактивен