будет рекомендована как основная официальная версия.
Хорошо.
опять надолго уйдет в подполье.
Плохо.
А как насчёт плагинов? Они будут в ветке 0.9.4.х или в "подпольной"?
ТОМ2 - платформа для парсерных игр |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » ТОМ2 - платформа для парсерных игр » Бета-тестирование » Версия 0.9.4.x
будет рекомендована как основная официальная версия.
Хорошо.
опять надолго уйдет в подполье.
Плохо.
А как насчёт плагинов? Они будут в ветке 0.9.4.х или в "подпольной"?
А как насчёт плагинов? Они будут в ветке 0.9.4.х или в "подпольной"?
Плагины будут в следующей версии 0.9.4.7
По факту они уже есть, надо лишь доделать их загрузку, что является небольшой доработкой.
- Сделана загрузка плагинов.
Плагины должны иметь 2е расширение - .plg.dll
Плагины грузятся при старте платформы из папки движка и из подпапки \plugins в каталоге движка.
А также при запуске игры из папки игры и из подпапки \plugins в каталоге игры.
- Добавлена интерфейсная функция pause() / пауза(). Рекомендуется использовать вместо тэга <pause>.
- Доработана обработка ошибки с незакрытыми скобками в коде игры.
Прошу погонять эту версию как следует
Эта ветка разработки скоро закрывается!
Есть какие-то проблемы со счётными объектами. Точно не пойму в программе это или в стандартной библиотеке.
Вот одно из мест:
> осм
Простенький дворик....(прим.: гороха в локации нет!).... очередную шалость.
> положить 2 горошины
Ты положил здесь 1 горошину.
> осм
Простенький дворик.... здесь есть 2 горошины..... шалость.
Т.е. действие отображается неправильно, а выполняется правильно. Если заглянуть в стандартную библиотеку:
персонаж.положил(Что,Куда)
{ Что = очистить_лексему(Что)
if(told)
{ if(свобода_воли(Что,Куда)==нет)
return //персонаж отказался выполнить действие, или выполнил его по-своему
}
if(Куда)
{ Куда = очистить_лексему(Куда)
Куда + Что
if(Куда.item[Что]) //удалось положить
%{this} {act*this} {Что.lex*Вп} {Куда.пред_в} {Куда*Вп}.
}
else
{ loc + Что
if(loc.item[Что]) //удалось положить
%{this} {act*this} здесь {Что.lex*Вп}. //просто положил на пол или что там вместо пола...
}
}
Ничего нет про количество, значит цифры подставляются движком. Или я где-то ошибаюсь... В общем ошибка есть, но в движке или в игре, не знаю.
И ещё:
> взять из мешка 7 горошин
Ты огляделся по сторонам и сунул лапку в мешок с горохом.
Ты вытащил из мешка 5 горошин.
3 горошины просыпались на пол.
Разве указываемое кол-во не влияет на выполнение действия?
Т.е. действие отображается неправильно, а выполняется правильно.
Угу, в неопубликованной версии 0.9.3.2 я над этим голову изрядно поломал. Забросил.
Буду решать в 0.10.x.x
Без изрядной перекройки основ правильного отображения количества не добиться
Разве указываемое кол-во не влияет на выполнение действия?
В мышах это отдельная сюжетная ветка, в которой указанное количество игнорируется. Конечно это неправильно, но в мышах много подобных историческисложившихся рудиментарных мест...
Их бы надо переписать с чистого листа...
Версия 0.9.4.8 beta
- финальная версия. Код переписан с учетом требований потокобезопасность.
Исходники распространяются под the zlib/libpng License.
Просьба потестить на многоядерных/многопроцессорных системах, у кого есть возможность.
Есть подозрение что с мультипоточностью не всё в порядке...
UPD
Тестить без плагинов (удалить их из каталога).
В первую очередь интересует устойчивость самого движка.
Сохранение не работает. Пишет array::Item() Index out of range!
Начали писать полноценный квест, ох боюсь сейчас ошибки повсплывают как грибы после дождя.
Упс! действительно поломалось...
Полез чинить...
Версия 0.9.4.9 beta (багфикс)
- исправлено сохранение игр;
- добавлен выбор значения свойств по локации (предмет_по_месту);
- интерфейс переписан с учётом потокобезопасности.
- речевой плагин временно убран из архива - не корректно завершает работу.
Обновил последнюю версию. Номер версии апать не стал, т.к. изменился только интерфейс.
Интерфейс теперь знает про тэг <body>, правда пока только в части background. Пример прилагается.
Версия 0.9.4.10 beta
- ударение в лексемах более не влияет на парсер;
- в тэге <body> теперь работают стандартные параметры "text", "link", "topmargin", "bottommargin", "leftmargin", "rightmargin"
например:
%<body background=foto\bgStart.jpg text=aqua leftmargin=100 rightmargin=80 topmargin=50>
еще пока не сделано:
- не исправлена ошибка, возникающая при выгрузке плагинов.
- пути файлов в тегах берутся относительно папки движка, а не игры.
еще пока не сделано:
- не исправлена ошибка, возникающая при выгрузке плагинов.
Методом научного тыка удалось выяснить что ошибка возникает если плагины грузятся из tom.dll и не проявляется, если грузить их в TOM.exe
Т.е. если перенести загрузку-выгрузку плагинов из движка в интерфейс, то всё Ок.
Почему это так - мне не понятно
Почему это так - мне не понятно
Dll - от природы странная штука. А такое насильственное использование их как загрузка dll из другой dll - тем более. Потому и советуют при написании dll пихать проверки везде где только можно и быть предельно аккуратными, что-бы хоть как-то уменьшить число "фантомных" ошибок. Тебе ещё повезло - ты пишешь на Си. В Delphi дела обстоят куда сложнее. Страшно подумать, как там приходится извращаться. Менталитет заядлого делфииста во многих местах не стыкуется с технологией dll.
Новое в версии:
* загрузка/выгрузка плагинов перенесена из движка в интерфейс и доработана;
* плагин speech.plg.dll (чтение текста голосом) доработан и возвращен в архив;
* плагин tommsi.plg.dll (воспроизведение музыки и звуков) требует доработки и временно исключен из архива;
* исправлены пути для загрузки фоновых картинок - теперь пути берутся относительно каталога игры;
* в тэге <body> теперь работает параметр bgcolor= пример: <body background=bg.jpg bgcolor=red>
* можно задавать произвольные цвета текста и фона с помощью шестнадцатеричных чисел в формате RGB; пример: <body text=F94500>
* небольшое улучшение парсера: при неоднозначности между объектом и локацией предпочтение отдаётся объекту.
Не мог бы ты выложить исходники последней версии первого ТОМа (0.9.4.11 beta, на сколько я понял)?
Понадобилось написать интерпретатор скриптов, хочу посмотреть, как это устроено у тебя. Может позаимствую пару идей, если не против.
Угу, мог бы.
Если быть точным, последняя версия - 0.9.4.12, она использована в игре Dugway 2011, но отдельно сама по себе не публиковалась.
Может позаимствую пару идей, если не против.
Не против конечно.
Исходники версии 0.9.4.12 beta
Распространяются под the zlib/libpng License.
Понадобилось написать интерпретатор скриптов, хочу посмотреть, как это устроено у тебя.
Саш, только учитывай что все версии 0.9.4.х - это промежуточная химера с двумя головами.
Например в v0.9.3.1 есть модуль parser.cpp, а в v2.0.0.x есть модуль tokenizer.cpp, который является его дальнейшим развитием и существенно переработан.
А в версиях 0.9.4.х есть ОБА этих модуля, работающих параллельно. Это может несколько запутать...
Спасибо. Попробую разобраться.
Хотя-бы примерно посмотрю, всё-равно нужно будет много чего своего добавить для поставленной задачи.
Понадобилось написать интерпретатор скриптов
Вот тут http://www.gamedev.ru/community/toolcor … /UniScript есть статья по теме и с кодом. Правда я глубоко не вникал, оценить полезность не берусь.
Вы здесь » ТОМ2 - платформа для парсерных игр » Бета-тестирование » Версия 0.9.4.x