Живые NPCФорумЭкономическая активность NPC

Потребление

#0
17:24, 2 фев 2011

Настроение NPC может зависеть от того насколько удовлетворены его потребности.
Пускай на рынке имеются следующие товары:
1. хлеб
2. мясо
3. картина
4. шляпа

  • каждая единица товара приносит определенную величину удовлетворения.
  • при этом действует закон предельной полезности - каждая последующая единица товара приносит меньше удовольствия по сравнению с предыдущей.
  • каждый товар имеет определенную цену и потребление ограничено наличными средствами.
  • Задача NPC - получить максимальное удовлетворение от потребления.
    Т.о. при походе на рынок решается задача оптимизации.
    F(х, м, к, ш)->max, х*цх+м*цм+к*цк+ш*цш=C
    х, м, к, ш - количества соответствующих товаров
    цх, цм, цк, цш - цены на них
    F - функция выражающая удовлетворение
    C - cash, наличные средства

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

    #1
    19:37, 2 фев 2011

    ninja
    Эти проблемы (профукивания денег персонажем) возникают на высокой стадии общества.
    А нам-бы что-то приземлёное обозначить.
    Иначе башню начнём строить с верхушки - это опасно ))

    Тоесть, я призываю отказаться пока от влияния денег на население.
    Пусть будет полу-перво-бытная толпа. Большая семья-стая. Потребляют лиш то, что
    сумели добыть люди из авангарда племени. Денег нет, но распределение добычи
    должно по каким-то правилам происходить.

    Можно начать со звериных принцыпов.

    #2
    20:53, 2 фев 2011

    да может такое экономическое поведение слишком сложное для игры жанра РПГ
    но как вариант - мне кажется имеет право на существование
    в социальном симуляторе например

    зы
    в первобытной общине всё поровну делили
    http://scepsis.ru/library/id_1153.html

    #3
    21:59, 2 фев 2011

    ninja
    Я не против шляп и прочего.
    Просто, мясо можно на первое место поставить, а картину на четвёртое ))

    И разделить как-то ярко стадии экономики.
    1. Мясо-ягодная община. (мужикам поровну и отдельно бабам с детями поровну)
    2.
    3. Хлебная фараонщина (рабы, стражники, руководство)
    4.
    5. Шляпная феодальщина (почти как современость, есть драг-камни, деньги-железки и локальные базары)
    4.
    7. Картинный капитализм (есть тока обман и кредитки, а всё остальное не колышит)

    #4
    12:59, 4 фев 2011

    Главное требование к алгоритмам потребления - они должны работать быстро. В городе например живет 3000 NPC
    Можно 1 раз в игровые сутки просчитывать их потребление.  Допустим, для каждого уровня доходов есть список (вектор) ежедневного потребления продуктов.
    И еще есть список товаров долгосрочного пользования. NPC покупает эти товары раз в месяц от  начала к концу списка. Если долгосрочный товар полностью износился - то он в зависимости от  приоритетности  добавляется в начало, середину или конец списка.
    В таком виде система потребления будет работать в сотни  раз быстрее, чем если каждый день для каждого NPC решать задачу линейной оптимизации  (линейного программирования)

    А раз в месяц можно запускать систему переопределения  векторов потребления. И делать этот как раз по алгоритмам линейной оптимизации, которые Вы предложили.  Но только не для каждого NPC, а для каждого уровня доходов и каждой социальной группы, к которой принадлежит NPC.  Тогда вместо 3000 оптимизаций нужно будет провести примерно 20.

    Алгоритмы потребления я скорее всего в любом случае сделаю и оттестирую.  Дело в том, что они мне нужны еще и для моего  другого, не игрового  проекта - http://www.rus-portal.org/doc/wto/

    #5
    19:07, 4 фев 2011

    PolariusBear
    Ты затронул больную точку..
    течение игрушечного времени в игре.
    Я пока для своей РПГ не смог справиться с такой трудной фишкой и отказался от течения времени.
    Как ты хочеш решать эту проблему.
    Может быть ты где-то читал.
    Или в DLL будет процедура SetNewDay(); , которую автор игры должен вызывать сам ?

    Прошло более 14 лет
    #6
    0:18, 1 авг 2025

    Интересная тема, почему заглохла и может есть какое то обновление?

    #7
    12:15, 19 сен 2025

    GOAP - это алгоритм, изобретенный Джеффом Оркиным для игры F.E.A.R. и представляет собой алгоритм, который может определять последовательность действий для достижения определенной цели. Вы определяете набор целей и действий с условиями и эффектами, а система соединит их вместе за вас. Когда задана цель и текущее состояние игры, алгоритм может определить лучший набор действий для достижения заданной цели.

    По простому - скоринговая система, похожая на эристический анализ в А* Pathfind алгоритмах. Либо есть цель и просчитываются варианты ее достижения с абстрактной оценкой стоимости. Либо цель - пластичная, а оценка - напротив имеет цель выбора приоритета выбора. Это 2 вар более характерен для описанной задачи

    Живые NPCФорумЭкономическая активность NPC