Настроение NPC может зависеть от того насколько удовлетворены его потребности.
Пускай на рынке имеются следующие товары:
1. хлеб
2. мясо
3. картина
4. шляпа
Задача NPC - получить максимальное удовлетворение от потребления.
Т.о. при походе на рынок решается задача оптимизации.
F(х, м, к, ш)->max, х*цх+м*цм+к*цк+ш*цш=C
х, м, к, ш - количества соответствующих товаров
цх, цм, цк, цш - цены на них
F - функция выражающая удовлетворение
C - cash, наличные средства
для оптимизации может использоваться генетический алгоритм. при этом результаты работы алгоритма могут использоваться как начальное приближение при следующем походе на рынок.
F может иметь произвольный вид. Например может начисляться штраф за недоедание/переедание - если суммарное количество покупаемых съестных товаров меньше/больше определенной величины (порога насыщения).
ninja
Эти проблемы (профукивания денег персонажем) возникают на высокой стадии общества.
А нам-бы что-то приземлёное обозначить.
Иначе башню начнём строить с верхушки - это опасно ))
Тоесть, я призываю отказаться пока от влияния денег на население.
Пусть будет полу-перво-бытная толпа. Большая семья-стая. Потребляют лиш то, что
сумели добыть люди из авангарда племени. Денег нет, но распределение добычи
должно по каким-то правилам происходить.
Можно начать со звериных принцыпов.
да может такое экономическое поведение слишком сложное для игры жанра РПГ
но как вариант - мне кажется имеет право на существование
в социальном симуляторе например
зы
в первобытной общине всё поровну делили
http://scepsis.ru/library/id_1153.html
ninja
Я не против шляп и прочего.
Просто, мясо можно на первое место поставить, а картину на четвёртое ))
И разделить как-то ярко стадии экономики.
1. Мясо-ягодная община. (мужикам поровну и отдельно бабам с детями поровну)
2.
3. Хлебная фараонщина (рабы, стражники, руководство)
4.
5. Шляпная феодальщина (почти как современость, есть драг-камни, деньги-железки и локальные базары)
4.
7. Картинный капитализм (есть тока обман и кредитки, а всё остальное не колышит)
Главное требование к алгоритмам потребления - они должны работать быстро. В городе например живет 3000 NPC
Можно 1 раз в игровые сутки просчитывать их потребление. Допустим, для каждого уровня доходов есть список (вектор) ежедневного потребления продуктов.
И еще есть список товаров долгосрочного пользования. NPC покупает эти товары раз в месяц от начала к концу списка. Если долгосрочный товар полностью износился - то он в зависимости от приоритетности добавляется в начало, середину или конец списка.
В таком виде система потребления будет работать в сотни раз быстрее, чем если каждый день для каждого NPC решать задачу линейной оптимизации (линейного программирования)
А раз в месяц можно запускать систему переопределения векторов потребления. И делать этот как раз по алгоритмам линейной оптимизации, которые Вы предложили. Но только не для каждого NPC, а для каждого уровня доходов и каждой социальной группы, к которой принадлежит NPC. Тогда вместо 3000 оптимизаций нужно будет провести примерно 20.
Алгоритмы потребления я скорее всего в любом случае сделаю и оттестирую. Дело в том, что они мне нужны еще и для моего другого, не игрового проекта - http://www.rus-portal.org/doc/wto/
PolariusBear
Ты затронул больную точку..
течение игрушечного времени в игре.
Я пока для своей РПГ не смог справиться с такой трудной фишкой и отказался от течения времени.
Как ты хочеш решать эту проблему.
Может быть ты где-то читал.
Или в DLL будет процедура SetNewDay(); , которую автор игры должен вызывать сам ?
Интересная тема, почему заглохла и может есть какое то обновление?
GOAP - это алгоритм, изобретенный Джеффом Оркиным для игры F.E.A.R. и представляет собой алгоритм, который может определять последовательность действий для достижения определенной цели. Вы определяете набор целей и действий с условиями и эффектами, а система соединит их вместе за вас. Когда задана цель и текущее состояние игры, алгоритм может определить лучший набор действий для достижения заданной цели.
По простому - скоринговая система, похожая на эристический анализ в А* Pathfind алгоритмах. Либо есть цель и просчитываются варианты ее достижения с абстрактной оценкой стоимости. Либо цель - пластичная, а оценка - напротив имеет цель выбора приоритета выбора. Это 2 вар более характерен для описанной задачи