Forum.iFiction.Ru

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

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

Вы не зашли.

0    0    #1
12.12.2008 16:54

Olegus t.Gl.
Участник (+1055, -249)
Откуда: Москва
Зарегистрирован: 01.03.2001
Сообщений: 2881
Вебсайт

Расположение персонажа в пространстве внутри отдельной локации

А вот действительно, как лучше реализовать описанную здесь ситуацию в идеальном варианте, т.е. не привязываясь к конкретной платформе?

Korwin написал:

Столкнулся с такой проблемой: сесть и встать и лечь фактически синонимы. В результате в игре "встать на стул" и "сесть на стул" приводят игрока в одно и то же положение. В итоге может возникнуть ситуация, когда стоя на полу герой не достает книжку с полки, а сидя на стуле - достает. Кто-что думает по этому поводу?

Один вариант был озвучен (ASBer) — добавление ещё одного свойства "isSitting" у персонажа игры.
Какие будут ещё идеи?

Неактивен

0    0    #2
12.12.2008 19:38

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Расположение персонажа в пространстве внутри отдельной локации

Когда персонаж лежит на кровати, "встать" должно обозначать встать с кровати или на кровать?

А нельзя ли так: взять переменную ПОЛОЖЕНИЕ и объект Т на котором герой находится. Если объект Т указывает на ничто (пусто), значит игрок не находится ни на одном из объектов, иначе говоря на полу.

Если же указывается в Т какой-либо объект, то значит игрок находится на объекте. Различия между на объекте и в нем должны диктоваться лишь только от свойства (или класса) самого объекта, т.е. контейнер или поверхность. Различия между тем, что игрок стоит в сундуке или на сундуке уже стоит различать свойствами сундука, которые определяют его как конйтенер или поверхность в зависимости от сделанного над ним действия игроком (ну это уже больше к свойству относится). Т.е. у неоднозначных объектах Т должно быть свойство, которое сможет определить, чем в данный момент действия является сам объект Т по отношению к игроку. Грубо говоря ложить игрока в сундук или на сундук.

А теперь в зависимости от положения определить возможность выбранного действия. Например, описанная проблема Корвином выглядит так, есть стул и полка, сам игрок. Игрок сможет достать книгу с полки только если, он окажется на поверхности позволяющей ему дотянуться до полки. Т.е. стул в данном случае подразумевается поверхность выше пола, но на нее можно не только встать, но и сесть. Тогда с помощью пременной ПОЛОЖЕНИЕ мы определяем текущее положение игрока, а с помощью переменной Т (это объект) мы узнаем на каком объекте игрок находится в данном пололжении. А уж на встал ли он на открытый снудук (иначе в него) или на стул (или закрытый сундук) мы определяем доп. свойством (описано выше), которое указывает на данное отношение объекта Т к игроку.

В итоге получается, что в случае с Корвиной ситуацией игроку нужно перменной Т указывать на стул и иметь положение "стоять", а сам стул своим свойством будет указывать, что он в данный момент поверхность, а если его перевернуть тогда контейнер, т.о. образом он косвенно указывает высоту игрока. И при этом не получится стоят на перевернутом стуле достать книжку с полки и т.д. (все зависит от вашей фантазии).

А теперь вернемся к цитате, здесь ситуация в сравнении с корвином (если ставить туже цель) проще, но сложнее в том, что игроку нужно определить, что он может делать из своего положения. Здесь есть объект - кровать и игрок. В данном случае известно, что ПОЛОЖЕНИЕ лежит, то все проще паренной репы. Ам, вы GrAndrey, что чаще делаете не задумываясь при этом, встаете с кровати или на кровать? Логичный ответ, с кровати. Следовательно в данном вопросе игрок встает с кровати только в том случае, если был введен только глагол встать. Если же будет встать на кровать, то оно и понятно, игрок встанет на кровать. Подведя итог, скажу, что все зависит от определенных вами правил в игре. В физическом мире, играя нормальным игроком, мы будем вставать с кровать при попытке встать из положения лежа на кровати. Для тех кто все же не понял уточняю, автор руководствуясь законами того мира, который он создает, определяет логичные действия без дополнительных определений, а сами эти же доп. определения говорят о  совершении другого действия или того же самого (например встать и встать с кровати - синонимичные действия).

Так что задаваясь определенными вопросами, сначало определите какой мир будет у вас и каким законам он подчиняется, как станут вести себя персонажи этого мира в действиях, в которых нет особой конкретики ( в нашем мире у людей все также). Уж извините за вопрос, вы когда какаете в туалете, вы это делаете очень конкретно и осознано (может вы еще и процесс со всеми командами в парсере представляете lol ) или ....?
З.Ы.
На мой взгляд глупо зажимать определения в коде платформы, лучше предоставить нужный инструмент, а авторам привыкнуть к тому, что без знания теории алгоритмов, то бишь программирования - нормальной игры не сделаешь. Или согласиться со всей направленностью выбранной вами платформой, раз уж она вам так облегчает создание квеста. wink

Отредактировано Eten (12.12.2008 19:39)

Неактивен

0    0    #3
13.12.2008 11:21

Eten
Участник (+9, -307)
Откуда: Балаково, Санкт-Петербург.
Зарегистрирован: 21.05.2007
Сообщений: 1416
Вебсайт

---

Re: Расположение персонажа в пространстве внутри отдельной локации

Про теорию алгоритмов, признаться, не понял

GrAndrey уже привел по этому поводу в 9 посте.

А уж если конкретно, то без знания теории алгоритмов не возможно построить нормальный алгоритм. В нашем случае - эффективно вопсользоваться всеми инструментами языка. Т.к. любой язык в той или иной мере предпологает использование известных приемов и методик составления разных алгоритмов под разные цели. Т.е. методики, приемы и прочее знание об алгоритмах - теория алгоритмов. Зная ее и зная язык платформы, ты можешь создать даже самую сложную игру. Именно поэтому от человека зависит, сможет он создать квест или нет, а не от платформы. Исключением является лишь, направленность платформ (т.е. их языков) на ИЛ, что сильно облегчает разработку квестов.

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru