ТОМ2 - платформа для парсерных игр

Объявление

Открыт сайт tom2-game.ru.


Последнюю версию платформы можно скачать здесь.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.



Версия 0.9.4.x

Сообщений 31 страница 52 из 52

31

ASBer написал(а):

будет рекомендована как основная официальная версия.

Хорошо.

ASBer написал(а):

опять надолго уйдет в подполье.

Плохо.
:)
А как насчёт плагинов? Они будут в ветке 0.9.4.х или в "подпольной"?

32

Alexandr написал(а):

А как насчёт плагинов? Они будут в ветке 0.9.4.х или в "подпольной"?

Плагины будут в следующей версии 0.9.4.7
По факту они уже есть, надо лишь доделать их загрузку, что является небольшой доработкой.

33

Версия 0.9.4.7 альфа

- Сделана загрузка плагинов.
  Плагины должны иметь 2е расширение - .plg.dll
  Плагины грузятся при старте платформы из папки движка и из подпапки \plugins в каталоге движка.
  А также при запуске игры из папки игры и из подпапки \plugins в каталоге игры.

- Добавлена интерфейсная функция pause() / пауза(). Рекомендуется использовать вместо тэга <pause>.

- Доработана обработка ошибки с незакрытыми скобками в коде игры.

34

Прошу погонять эту версию как следует  :tomato:
Эта ветка разработки скоро закрывается! :canthearyou:

35

Есть какие-то проблемы со счётными объектами. Точно не пойму в программе это или в стандартной библиотеке.
Вот одно из мест:

> осм
Простенький дворик....(прим.: гороха в локации нет!).... очередную шалость.
> положить 2 горошины
Ты положил здесь 1 горошину.
> осм
  Простенький дворик.... здесь есть 2 горошины..... шалость.

Т.е. действие отображается неправильно, а выполняется правильно. Если заглянуть в стандартную библиотеку:

персонаж.положил(Что,Куда)
{ Что = очистить_лексему(Что)
  if(told)
  { if(свобода_воли(Что,Куда)==нет)
      return //персонаж отказался выполнить действие, или выполнил его по-своему
  }
  if(Куда)
  { Куда = очистить_лексему(Куда)
    Куда + Что
    if(Куда.item[Что]) //удалось положить
      %{this} {act*this} {Что.lex*Вп} {Куда.пред_в} {Куда*Вп}.
  }
  else
  { loc + Что
    if(loc.item[Что]) //удалось положить
      %{this} {act*this} здесь {Что.lex*Вп}. //просто положил на пол или что там вместо пола...
  }
}

Ничего нет про количество, значит цифры подставляются движком. Или я где-то ошибаюсь... :dontknow: В общем ошибка есть, но в движке или в игре, не знаю.

И ещё:

> взять из мешка 7 горошин
Ты огляделся по сторонам и сунул лапку в мешок с горохом.
Ты вытащил из мешка 5 горошин.
3 горошины просыпались на пол.

Разве указываемое кол-во не влияет на выполнение действия?

36

Alexandr написал(а):

Т.е. действие отображается неправильно, а выполняется правильно.

Угу, в неопубликованной версии 0.9.3.2 я над этим голову изрядно поломал. Забросил.
Буду решать в 0.10.x.x
Без изрядной перекройки основ правильного отображения количества не добиться  :dontknow:

Alexandr написал(а):

Разве указываемое кол-во не влияет на выполнение действия?

В мышах это отдельная сюжетная ветка, в которой указанное количество игнорируется. Конечно это неправильно, но в мышах много подобных историческисложившихся рудиментарных мест...  :dontcare:
Их бы надо переписать с чистого листа...  :writing:

37

Версия 0.9.4.8 beta
- финальная версия. Код переписан с учетом требований потокобезопасность.

Исходники распространяются под the zlib/libpng License.

38

Просьба потестить на многоядерных/многопроцессорных системах, у кого есть возможность.  :flag:
Есть подозрение что с мультипоточностью не всё в порядке... :surprise:

UPD
Тестить без плагинов (удалить их из каталога).
В первую очередь интересует устойчивость самого движка.

39

Сохранение не работает. Пишет array::Item() Index out of range!
Начали писать полноценный квест, ох боюсь сейчас ошибки повсплывают как грибы после дождя. :insane:

40

Упс! действительно поломалось... :surprise:
Полез чинить...  :unsure:

41

Версия 0.9.4.9 beta (багфикс)
- исправлено сохранение игр;
- добавлен выбор значения свойств по локации (предмет_по_месту);
- интерфейс переписан с учётом потокобезопасности.
- речевой плагин временно убран из архива - не корректно завершает работу.

42

Обновил последнюю версию. Номер версии апать не стал, т.к. изменился только интерфейс.
Интерфейс теперь знает про тэг <body>, правда пока только в части background. Пример прилагается.

43

Версия 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>

еще пока не сделано:
- не исправлена ошибка, возникающая при выгрузке плагинов.
- пути файлов в тегах берутся относительно папки движка, а не игры.

44

ASBer написал(а):

еще пока не сделано:
- не исправлена ошибка, возникающая при выгрузке плагинов.

Методом научного тыка удалось выяснить что ошибка возникает если плагины грузятся из tom.dll и не проявляется, если грузить их в TOM.exe
Т.е. если перенести загрузку-выгрузку плагинов из движка в интерфейс, то всё Ок.
Почему это так - мне не понятно  %-)

45

ASBer написал(а):

Почему это так - мне не понятно

Dll - от природы странная штука. А такое насильственное использование их как загрузка dll из другой dll - тем более. Потому и советуют при написании dll пихать проверки везде где только можно и быть предельно аккуратными, что-бы хоть как-то уменьшить число "фантомных" ошибок. Тебе ещё повезло - ты пишешь на Си. В Delphi дела обстоят куда сложнее. Страшно подумать, как там приходится извращаться. Менталитет заядлого делфииста во многих местах не стыкуется с технологией dll.

46

Версия 0.9.4.11 beta

Новое в версии:

    * загрузка/выгрузка плагинов перенесена из движка в интерфейс и доработана;
    * плагин speech.plg.dll (чтение текста голосом) доработан и возвращен в архив;
    * плагин tommsi.plg.dll (воспроизведение музыки и звуков) требует доработки и временно исключен из архива;
    * исправлены пути для загрузки фоновых картинок - теперь пути берутся относительно каталога игры;
    * в тэге <body> теперь работает параметр bgcolor= пример: <body background=bg.jpg bgcolor=red>
    * можно задавать произвольные цвета текста и фона с помощью шестнадцатеричных чисел в формате RGB; пример: <body text=F94500>
    * небольшое улучшение парсера: при неоднозначности между объектом и локацией предпочтение отдаётся объекту.

47

Не мог бы ты выложить исходники последней версии первого ТОМа (0.9.4.11 beta, на сколько я понял)?
Понадобилось написать интерпретатор скриптов, хочу посмотреть, как это устроено у тебя. Может позаимствую пару идей, если не против. ^^

48

Угу, мог бы.
Если быть точным, последняя версия - 0.9.4.12, она использована в игре Dugway 2011, но отдельно сама по себе не публиковалась.

Alexandr написал(а):

Может позаимствую пару идей, если не против.

Не против конечно.

49

Исходники  версии 0.9.4.12 beta
Распространяются под the zlib/libpng License.

50

Alexandr написал(а):

Понадобилось написать интерпретатор скриптов, хочу посмотреть, как это устроено у тебя.

Саш, только учитывай что все версии 0.9.4.х - это промежуточная химера с двумя головами.
Например в v0.9.3.1 есть модуль parser.cpp, а в v2.0.0.x есть модуль tokenizer.cpp, который является его дальнейшим развитием и существенно переработан.
А в версиях 0.9.4.х есть ОБА этих модуля, работающих параллельно. Это может несколько запутать...

51

Спасибо. Попробую разобраться.
Хотя-бы примерно посмотрю, всё-равно нужно будет много чего своего добавить для поставленной задачи.

52

Alexandr написал(а):

Понадобилось написать интерпретатор скриптов

Вот тут http://www.gamedev.ru/community/toolcor … /UniScript есть статья по теме и с кодом. Правда я глубоко не вникал, оценить полезность не берусь.