www.mudconnector.su

Национальный мадконнектор.
Текущее время: Чт мар 28, 2024 6:54 pm

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Обработка команд.
СообщениеДобавлено: Пн фев 23, 2015 11:16 am 
Не в сети

Зарегистрирован: Пн авг 17, 2009 9:35 am
Сообщений: 26
Навеяно темой о развитии языка команд.
Сформулирую проблему.
Команда в маде - это попытка выполнить какое-то действие персонажем. За вычетом служебных команд типа редактирования описания персонажа и так далее, которые обычно выполняются не прямо в игре. Итак, команда - это действие. От социала, до попытки произнести заклинание или создать вещь. Однако результат действия - успех, частичный успех, провал - зависит в том числе от состояния персонажа. Спит он, стоит, сидит, в здравом ли уме, может ли разговаривать, видеть и слышать. Чем больше эффектов от применения заклинаний и умений мы вводим, тем больше количество состояний персонажа. Вдобавок, состояния могут взаимодействовать между собой. Например, если мы произносим заклинание, которое жертва должна услышать для его успеха, то глухой персонаж окажется к нему невосприимчив.
Собственно, вопрос.
А как бы достаточно изящно выполнить обработку команд в зависимости от состояния персонажа? Для каждой команды составлять длиннющие списки флагов "тут можно, тут нельзя" и сравнивать при каждом выполнении команды?
Пока что есть только идея группировать состояния и аффекты во множества, а для команды указывать, каким множествам она соответствует/не соответствует. Чуть лучше, но только чуть.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка команд.
СообщениеДобавлено: Вт фев 24, 2015 12:24 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
В далекой придалекой галактике, 10 лет назад... кстати это даже работало, но в свет не вышло.

Каждая команда имела список того, что необходимо для её использования.
Список этот был довольно из большого количества параметров, но вовсе не бесконечного.

Например чтобы ударить кого-то веслом по башке нужно
2 свободных руки
зрение
итп

а чтобы вскрыть замок нужно
2 свободных руки
ХХ свободных пальцев на каждой
зрение
точное координация движения

чтобы скастить спелл нуден
разум незамутненный
а если он не ареа
зрение
а если надо делать пассы руками
две или одна свободных руки
итп

В отличии от абстрактных флагов типа silenced тут проще сообразить на этапе создания команд
как и что для каждой команды нужно.
Но даже тут пришлось вводить некие интегральные состояния типа "может стоять на ногах",
"может перемещаться" итп.

Осталось непонятным как обрабатывать "костыль", и умение "пнуть".
То-ли "пинаться можно" если ног больше одной, а костыль дает +1 ногу,
то-ли должен быть признак "конечность для пинания" и костыль дает +1,
а каждая нога у гуманойда кроме первой тоже +1.
(таким образом трехногий гуманойд мог бы пинаться двумя ногами)
Второе нравится меньше.

В общем и целом яб рекомендовал ничего не придумывать, а описывать "что есть".
Заметьте, если ногу отрубят, то не надо вообще никаких флагов ставить, при попытке пнуть,
если конечность только одна - неудача. Если снять костыль - и останешься стоять на одной ноге - тоже.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка команд.
СообщениеДобавлено: Вт фев 24, 2015 5:07 pm 
Не в сети

Зарегистрирован: Пт сен 04, 2009 10:17 pm
Сообщений: 214
В дополнение к множествам, можно было бы еще добавить, на мой обывательский взгляд, наследование свойств команд от общих к частным.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обработка команд.
СообщениеДобавлено: Вт фев 24, 2015 5:20 pm 
Не в сети
Site Admin

Зарегистрирован: Пт май 16, 2008 4:14 pm
Сообщений: 1416
Так это аффекты - это другое.

Тут речь о другом, у человека есть как известно ограниченное количество атомарных чувств.
Например вкус... без него распознавание яда невозможно.
Или зрение... не нужно для распознавания яда, но нужно для многого другого.
Осязание, обаняние... все это атомарные вещи.

Есть возможности... количество конечностей... итд итп...

А слепоты нету... точнее есть что-то что "выбивает глаз"... а если у существа нет глаз, то нет и зрения.

Речь тут о том, чтобы стараться вводить простые свойства, а не сложные.
Не надо видит-не видит, надо есть зрение-нету.
Не надо флаг "может заметить чувака на горе", надо "имеет зрение" и "может поднимать голову вверх".


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron