Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
27.12.2007 22:46

tadsloser
Участник
Зарегистрирован: 27.12.2007
Сообщений: 16

Рационализаторское предложение

Появление хороших IF на русском:  «Ожидание утра»,  «Дримор», «Оружие Ли Гуана», подвигло меня на эксперименты с системой - на которой эти игры были написаны - RTADS.

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

Да, генераторы GrAnd-а и FighteR-а хорошо справляются со своей задачей (последний чуть лучше), а именно – с генерацией падежных форм. Но в связке с RTADS использовать генераторы не очень-то удобно, кроме того, они не решают проблемы разбухания кода.

В связи с вышесказанным у меня возникло несколько идей-тем к размышлению. Возможно все это - банальности (или даже бред:), что можно объяснить тем, что
с RTADS я познакомился чуть больше недели назад.

Итак, очень бы хотелось писать
noun = 'стул' 'табурет' (или даже noun = 'стул'), а RTADS
понимала бы как
noun ='стула' 'стулу' 'стул' 'стулом' 'стуле' 'стулу#d' 'стулом#t'
          'табурета' 'табурету' 'табурет' 'табуретом' 'табурете'  'табурету#d' 'табуретом#t'

1.) Формат лекс. свойств.

Код:

// использует addword(…) и, возможно, external_generator(…)
generator: function(obj);

// внешний генератор
external_generator: external function(…);

sample: object
noun = 'стул#мену' 'табурет#мену'
// где м – мужской, е – ед. число, н – неодуш., у – ударение на посл. слог.

// …

// где-то дальше вызывается generator(self)
;

Здесь есть проблема - где и когда вызывать generator(self), и вообще, возможно ли это?

Подобное можно провернуть и с sdesc, задав свойства rdesc, ddesc и т.д. с произвольными значениями в базовом классе и добавив соответствующую функциональность в generator.

2.) Псевдо-препроцессорная обработка (во словцо придумал:).

Что-то вроде:
forms game.t > game_with_forms.t

Где forms – консольный римейк генератора GrAnd-а или FighteR-а, заменяющий строки вида
noun = 'стул#мену' 'табурет#мену'
на 
noun ='стула' 'стулу' 'стул' 'стулом' 'стуле' 'стулу#d' 'стулом#t'
          'табурета' 'табурету' 'табурет' 'табуретом' 'табурете' 'табурету#d' 'табуретом#t'

и добавляющий rdesc, ddesc и т.д.

Этот подход можно применить и для генерации синонимов (конечно не основных, а «страховочных»).
Хотя здесь не меньше трудностей: необходимость в хорошем словаре, всевозможные глюки (например, герой заходит в комнату, где находится родник, неся с собой ключ) и т.д.

P.S.
Все это тема к размышдению, т.е. достаточных знаний RTADS и морфологии, для реализации всего этого, у меня нет:)

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru