Бета-версия 0.9.0.0 доступна для скачивания: http://ifwiki.ru/ТОМ
В этой версии добавлено определение используемого интерфейса, что дает возможность подстраивать код игры под различные платформы (пока выбор между ТОМ-консолью и Миленой).
Добавлена функция input().
Демоигра адаптирована для проигрывания в Милене, добавлены картинки.
Весь функционал, предусмотренный для версии 1.0 разработан.
До релиза первой версии необходимо провести:
- поиск и исправление багов и глюков, полировку и доводку функционала;
- доработку демоигры про мышек;
- доработку документации;
- разработку набора примеров, полностью покрывающих функционал;
- полное портирование библиотеки рТАДСа (собственной библиотеки к 1й версии не планируется);
- возможно что-то еще забыл...
Отредактировано ASBer (07.01.2009 23:17)
Неактивен
ASBer написал:
- полное портирование библиотеки рТАДСа (собственной библиотеки к 1й версии не планируется);
Изумлен. Это серьезно? Это возможно?
Неактивен
Korwin написал:
ASBer написал:
- полное портирование библиотеки рТАДСа (собственной библиотеки к 1й версии не планируется);
Изумлен. Это серьезно? Это возможно?
Это трудоемко, долго и муторно, но возможно.
Обе системы - парсерные, объектноориентированные, с C++ подобным языком. Это их роднит.
Надеюсь, что портирование библиотеки в дальнейшем позволит портировать игры между платформами, а также облегчит написание игр для ТОМа авторам, имеющим опыт работы в RTADS.
Неактивен
библиотека РТАДСа хороша, но раз уж её перевод является делом трудоёмким, то стоит обратить внимание и на её недостаток: автор небольшого квеста может быть сильно удивлён тем, какие возможности будет иметь игрок в его игре благодаря командам, которые автор и не собирался использовать! помню тестовую головоломку 'волк, коза и капуста', в которой можно было дать капусту козе, которая потом не отдаёт её обратно. так что, реакция типа 'в этой игре Вам не потребуется использовать слово дать ' - очень даже неплохой вариант.
UPD
ещё один момент- библиотека не может быть всенаправленной. т е один автор пишет фэнтезюху, другой- звёздную эпопею. один из них обязательно будет недоволен тем, что его игра будет иметь команды, лоиающие атмосферу игры, о которых автор и не задумывался, и вообще не собирался с ними заморачиваться.
Отредактировано noname (08.01.2009 12:04)
Неактивен
noname написал:
библиотека РТАДСа хороша, но раз уж её перевод является делом трудоёмким, то стоит обратить внимание и на её недостаток: автор небольшого квеста может быть сильно удивлён тем, какие возможности будет иметь игрок в его игре благодаря командам, которые автор и не собирался использовать! помню тестовую головоломку 'волк, коза и капуста', в которой можно было дать капусту козе, которая потом не отдаёт её обратно. так что, реакция типа 'в этой игре Вам не потребуется использовать слово дать ' - очень даже неплохой вариант.
noname, разные мнения есть на этот счет. Я вот считаю, что хорошо, когда возможности стандартной библиотеки шире того, что нужно в игре - ИМХО обрезАть существующие фичи гораздо проще, чем создавать недостающие.
noname написал:
ещё один момент- библиотека не может быть всенаправленной. т е один автор пишет фэнтезюху, другой- звёздную эпопею. один из них обязательно будет недоволен тем, что его игра будет иметь команды, лоиающие атмосферу игры, о которых автор и не задумывался, и вообще не собирался с ними заморачиваться.
Опять-таки - что, так сложно закомментить "лишние" глаголы? Если автору сложно с этим заморачиваться, то, извиняюсь за грубость, в топку таких авторов (точнее, их произведения).
Отредактировано uux (09.01.2009 06:57)
Неактивен
noname написал:
автор небольшого квеста может быть сильно удивлён тем, какие возможности будет иметь игрок в его игре благодаря командам, которые автор и не собирался использовать!
Библиотеку РТАДС я постараюсь сохранить в максимально близком к оригиналу состоянии. Переделывать ее логику в мои планы не входит.
-----
Если же рассуждать о метафизике ИЛ, то чем больше глаголов игра "понимает", тем лучше. Это производит выгодное впечатление и о игре и о платформе.
Другое дело что умолчальные реакции на действия ИМХО должны быть максимально нейтральны, и не приводить к тупиковым состояниям.
Неактивен
стёр старые версии. скачал всё новое. нет примера с черепом. что хочу: простой пример 2х2 локации, где ГГ может перемещаться на север-запад-юг-восток. а то- в примерах этого нет, а в мышках- пока трудно ориентироваться с непривычки.
если не сложно, то лучше 2-а примера: один- см выше, второй- когда каждая локация имеет уникальное имя (мой дом(на поляне) <-> цветочная поляна <-> горная тропа <-> тёмная пещера ), а перемещения осуществляются по названию локации.
хотелось бы начать разбираться с самого простого. предупреждаю: 'въезжать' буду долго. новые простые примеры будут требоваться постоянно. задумки никакой особой нет- просто проба парсера. на основе усвоенного из примеров буду постепенно усложнять свою 'игру'.
upd
как-то я так с порога "наехал"- извиняюсь за стиль. есть желание разбираться. есть желание делать это с помощью автора платформы - не так одиноко, и меньше мозги напрягать придётся
upd
и ещё: как ТОМ-квесты запускать под интерфейс Милены? хотелось бы тестить свои творилова как под консольным так и под графическим интерфейсом.
Отредактировано noname (01.02.2009 23:22)
Неактивен
noname, постараюсь накидать примеров с локациями.
Обновленный пример с черепом, выложу чуть позже, вместе с черным плащем.
Милена нужна версии 2.0 с последним обновлением модулей.
Библиотеру tom.dll в милене нужно заменить на свежую.
Далее в Милене: Файл->Открыть->Выбираем файлы с расширением .tom->Выбираем файл->Open
Или выбрать для открытия файлов.tom Милену как программу по умолчанию (как у меня ).
Отредактировано ASBer (02.02.2009 09:38)
Неактивен
ну, что там? просто перемещение по пустым локациям с переходами. и не нужно ничего на скорую руку в движке 'вылизывать' - дай как есть. я готов ко всему, кроме 'пропадания'. неужели у тя времени совсем нет?
upd
эх, зря я поленился в мышках разобраться- к этому времени вполне мог бы уже содрать перемещения с лабиринта
Отредактировано noname (02.02.2009 21:41)
Неактивен
ну если совсем просто - то примерно так:
файл удален - устарел
Отредактировано ASBer (28.07.2009 13:15)
Неактивен
ок! похоже- то, что нужно, и при этом- довольно просто. сложных примеров мне не надо- я ж сам хочу свою прогу делать. спасибо. буду разбираться. некоторые другие команды из мышек, типа взять, осмотреть, мне более понятны. а на перемещения глянул, и решил попросить помощи.
upd
Перемещения в примере парсерные. Если делать на меню, как в лабиринте у мышек - будет попроще.
хочу попробовать чистого парсера. на правильном русском. без менюшек. и с по-возможности полным контролем над вводом игрока: сколько слов ввёл? какие конкретно? в каких формах? в каком порядке? и т п - может понадобиться для правильного реагирования.
впрочем, что конкретно понадобится- будет видно по ходу работы над прогой. пока для себя решил использовать в своём творилове только простые фразы- без связок 'и', т е каждый ввод- одно действие. зато постараюсь сделать хотя бы одну команду с большим(3-и или более) кол-вом аргументов.
Отредактировано noname (02.02.2009 23:49)
Неактивен
>хочу попробовать чистого парсера. на правильном русском.
- тогда смотри пример по морфологии и разбирайся с ключами.
>с по-возможности полным контролем над вводом игрока: сколько слов ввёл? какие конкретно? в каком порядке?
- смотри глобальную переменную token[]
>в каких формах
- для объектов, возвращаемых парсером, смотри свойство .key
>решил использовать в своём творилове только простые фразы- без связок 'и'
- связки 'и' сейчас сделать крайне затруднительно, это появится только во 2й версии.
>постараюсь сделать хотя бы одну команду с большим(3-и или более) кол-вом аргументов.
- а вот это как раз без проблем.
Отредактировано ASBer (03.02.2009 09:23)
Неактивен
начал врубаться в язык. щазз продумываю структуру будущей программы. редактирую в обычном блокноте.
upd
вопрос такой:
описание локации выводится в двух случаях: когда ГГ входит в комнату, и когда ГГ вводит команду осмотреться
как сделать, что бы в обоих случаях вызывалась одна и та же фунция вывода описания?
при этом стандартный onEnter() тоже нужен - для некоторых локаций он будет определён по-своему, а по умолчанию- должен вызывать вышеупомянутую функцию
попробовал разные способы- чё-та не получилось... по-ходу я не разобрался с использованием функций
хотелось бы мини-микро-примерчик на эту тему, или просто отрывок- что нужно вставить в пример с локациями, что бы это работало
upd
насчёт вложенных локаций: универсальную команду "выйди[из локации]" сделать легко, насчёт "войти в локацию" - чуток посложнее. нужно вводить именованные входы. пока отложил это дело.
хотел сделать пример, похожий на мой с РТАДСа, и заметил такую заморочку: ДО объявления объекта ссылаться на него- некорректно.
т е
location a1.cls=место
.север = a2
.восток = b1
.описание = "моя первая локация"
location b1.cls=место
.север = b2
.запад = a1
.описание = "комната для роботов, которым нечем заняться"
location a2.cls=место
.юг = a1
.восток = b2
.описание = "мой первый объект"
location b2.cls=место
.запад = a2
.юг = b1
.описание = "цветовой код открывает дверь"
не прокатит. нужно вначале прописать все локации, а потом- все переходы. видимо, эта же особенность помешала мне сделать функцию из первой части этого сообщения. учту
upd
не знаю, кому как, а мне удобно, что бы все служебные слова и системные переменные имели только английские имена, что бы оставить русские имена для моих функций и переменных. впрочем, английские имена я тоже буду использовать
Отредактировано noname (04.02.2009 07:35)
Неактивен
unique сейф
.title="сейф%; НдМр; ИпЕч //неодуш, мужск род, именит падеж, ед число
ИпЕч=; РпЕч=ов; ДпЕч=ам; ВпЕч=ы; ТпЕч=ами; ПпЕч=ах"
.lex = .title
.описание="Надёжный сейф."
unique ты
........................................................
.осмотреться()
{
%<location>
%{actor.loc.title}</location>
%{actor.loc.описание}
}
.осмотреть(obj)
{
%obj.описание
}
action осмотреться
.pat = "осмотреться=осмотрись"
action осмотреть
.pat = "осмотреть=осмотри @объект:описание*Вп" //вначале писал просто "осмотреть=осмотри @объект", потом- скопировал с мышек
пишу "осмотреть сейф", выдаёт: "слово <сейф> мне не известно". хм.. а после чего слово становится известно?
Неактивен
В .title сейфа были ошибки:
unique сейф
.title="сейф%; НдМр; ИпЕч; //неодуш, мужск род, именит падеж, ед число
ИпЕч=; РпЕч=a; ДпЕч=у; ВпЕч=; ТпЕч=ом; ПпЕч=е"
.lex = .title
.описание="Надёжный сейф."
и далее...
unique ты
........................................................
.осмотреться()
{
%<location>
%{actor.loc.title}</location>
%{actor.loc.описание}
}
.осмотреть(obj)
{
%{obj.описание}
}
Отредактировано ASBer (04.02.2009 08:56)
Неактивен
noname пишет:
редактирую в обычном блокноте.
- и я тоже
заметил такую заморочку: ДО объявления объекта ссылаться на него- некорректно.
- Да, конечно. ТОМ - это однопроходный интерпретатор. Но есть предопределение объектов:
location a1
location a2
location a3
и далее...
location a1
.описание локации a1
...
location a2
.описание локации a2
...
location a3
.описание локации a3
...
мне удобно, что бы все служебные слова и системные переменные имели только английские имена
Все служебные слова имеют английские имена.
Все служебные слова будут иметь русские синонимы. (сейчас пока не у всех)
Каким именно языком пользоваться - это решение автора игры.
Отредактировано ASBer (04.02.2009 09:24)
Неактивен
описание локации выводится в двух случаях: когда ГГ входит в комнату, и когда ГГ вводит команду осмотреться
как сделать, что бы в обоих случаях вызывалась одна и та же фунция вывода описания?
при этом стандартный onEnter() тоже нужен - для некоторых локаций он будет определён по-своему, а по умолчанию- должен вызывать вышеупомянутую функцию
попробовал разные способы- чё-та не получилось... по-ходу я не разобрался с использованием функций
хотелось бы мини-микро-примерчик на эту тему
Вообще здесь стандартное ООП. Переопределение методов, и вызовы методов классов работают как и везде. Не совсем понял проблему... можно поподробнее?
дополнение:
Хотя небольшой примерчик по функциям и методам действительно лишним не будет.
дополнение:
Добавил в пример входы-выходы и команды войти-выйти
Отредактировано ASBer (04.02.2009 10:41)
Неактивен
ОК!
1. с сейфом действительно лажанулся- там до сейфа были кусты. недопеределал.
2. %{obj.описание} - фигурные скобки позволяют вставлять выражения в оператор вывода?
3. предопределение спасает дело. возможно, для больших квестов, такая 'строгость' сыграет положительную роль.
4. готов ли полный список служебных слов? хорошо бы найти редактор, аналогичный блокноту, но в котором можно их подцвечивать. где-то на форуме упоминали "блокнот++"
5.
Мой дом
Тут тепло и уютно.. На восток выходит деревянная дверь.
> выйти
Цветочная поляна
Тут красиво! На западе поляны стоит симпатичный домик. На севере видна тропа,
уходящая в горы.
> войди в дом
Это предложение непонятно!
> войди в домик
Это предложение непонятно!
> войди
Мой дом
Тут тепло и уютно.. На восток выходит деревянная дверь.
>
поясняю сложность с командой 'войди' : из одной и той же локации могут быть входы в различные другие локации. и даже если вход всего один, то и тогда команда 'войди' без параметра, кажется мне не совсем 'красивой'. таким образом реализация команды 'войди' тесно связана с реализацией переходов по названиям локаций: 'иди в дом', 'войди в дом'... впрочем, кое-что полезное из примера СЗЮВ.tom я-таки вынес.
6. сложность с выводом описания и по входу и по 'осмотреться' была в том, что функция не работала. щазз попробую ещё раз- с фигурными скобками там, где надо, и с предопределением, если понадобится.
Неактивен
2. %{obj.описание} - фигурные скобки позволяют вставлять выражения в оператор вывода?
Фигурные скобки позволяют вставлять выражения в любую строку. Так как все что справа от оператора % это строка, то и в оператор вывода тоже.
4. готов ли полный список служебных слов?
Практически все служебные слова перечислены в Вике на страничке ТОМ: язык программирования. Правда пока не все описаны...
хорошо бы найти редактор, аналогичный блокноту, но в котором можно их подцвечивать.
Думаю пойдет любой редактор с подсветкой синтаксиса Си.
5. поясняю сложность с командой 'войди' : из одной и той же локации могут быть входы в различные другие локации. и даже если вход всего один, то и тогда команда 'войди' без параметра, кажется мне не совсем 'красивой'. таким образом реализация команды 'войди' тесно связана с реализацией переходов по названиям локаций: 'иди в дом', 'войди в дом'...
Добавить параметры в команды совсем не сложно, но тогда для всех входов-выходов будут нужны .title и .lex, и желательно с синонимами. Но так будет правильно.
Отредактировано ASBer (04.02.2009 21:50)
Неактивен
Eten написал:
Хороший редактор с подсветкой СИ и прочих языков - Bred3.
Скачал, посмотрел - в целом понравилось.
но
- разбираться с подсветкой придется долго и серьезно.
- даже просто скопировать подсветку с .cpp на .tom не получилось получилось
- подсветка СИ к ТОМу подходит лишь отчасти, в некоторых местах подсвечивается как ошибки.
Отредактировано ASBer (05.02.2009 13:26)
Неактивен
2Korwin: я еще настройку синтаксиса поковыряю, и выложу. Пока еще сыро.
2Gremour: спасибо, посмотрю!
Неактивен
ASBer, возьми любой файл с подсветкой и глянь че у них там по написано. Методом проб и ошибок дойдешь. К тому же это не так сложно, т.к. видел не раз такие файлы у других разработчиков своих прог со скриптовыми языками.
Ах да, чуть не забыл. Этот плагин клорер используется не только в этом редакторе, так что ты себе облегчишь труд если не на все 100%, то хотя бы на 50%.
Отредактировано Eten (05.02.2009 19:29)
Неактивен