commit 1d10a969301c9c73b4e302b304e10baf50f70b48 Author: Maxim Snesarev Date: Sun Jan 18 15:11:13 2026 +0300 Add detailed technical specification for village economy simulation (v2) diff --git a/docs/design/village-tz-v2.md b/docs/design/village-tz-v2.md new file mode 100644 index 0000000..a92670c --- /dev/null +++ b/docs/design/village-tz-v2.md @@ -0,0 +1,91 @@ +# Симуляция экономики деревни (Техническое задание v2) + +## 1. Общие положения +Симуляция агентная, пошаговая. Основная цель — наблюдение за формированием экономических связей и выживанием популяции при заданных правилах. + +### Цикл симуляции +1. **День:** Длится **10 шагов**. Агенты активны (работают, торгуют, потребляют). +2. **Ночь:** Длится **1 шаг**. Все агенты спят. +3. **Итого сутки:** 11 шагов. +4. **Синхронизация:** Все агенты делают ход одновременно. Следующий шаг наступает, когда все завершили выбор действия. + +## 2. Модель Агента + +### Жизненные показатели (Максимумы / Старт) +При падении любого показателя (кроме Энергии) до 0 агент умирает. + +| Показатель | Макс | Старт | Расход (Пассив) | Примечание | +| :--- | :--- | :--- | :--- | :--- | +| **Энергия** | 100 | 80 | -2 / ход | Не умирает при 0, но не может совершать активные действия | +| **Голод** | 100 | 80 | -2 / ход | | +| **Жажда** | 50 | 40 | -3 / ход | Убывает быстрее голода | +| **Тепло** | 100 | 100 | -2 / ход | | + +### Инвентарь +* Ограниченное количество слотов (например, 10 или по весу). +* При переполнении новые ресурсы исчезают (или не могут быть добыты). +* Стартовый капитал: **100 Монет**. + +## 3. Экономическая Модель + +Вводится универсальная валюта — **Монеты** (Coins), чтобы решить проблему бартера. + +### Механика Рынка (Биржа) +Торговля происходит через общий реестр заявок (Order Book), доступный всем агентам мгновенно. +1. **Продажа:** Агент выставляет лот: `{Товар, Кол-во, Цена за шт.}`. +2. **Покупка:** Агент ищет самый дешевый лот нужного товара и покупает его. +3. **Видимость:** Все видят все заявки. + +### Ценообразование и "Парадокс цены" +Для решения проблемы, когда неэффективный работник продает дороже, используется разделение цен: +1. **Себестоимость:** `(Потраченная Энергия * Стоимость Энергии) / Кол-во товара`. +2. **Рыночная цена:** Динамическая. + * Агент выставляет товар по *Себестоимости* (или с небольшой наценкой). + * Если товар не покупают `N` ходов -> Агент снижает цену (скидка), даже ниже себестоимости, чтобы выжить. + * Если товар купили быстро -> В следующий раз агент повышает цену. + +## 4. Ресурсы и Производство + +| Ресурс | Источник (Действие) | Эффект | Срок жизни | Примечание | +| :--- | :--- | :--- | :--- | :--- | +| **Мясо** | Охота | Голод +30, Энергия +5 | 5 ходов | Сытное, быстро портится | +| **Ягоды** | Собирательство | Голод +5, Жажда +2 | 20 ходов | "Консервы", мало насыщают | +| **Вода** | Добыча воды | Жажда +40 | ∞ | Не портится | +| **Дерево** | Рубка | Топливо для костра | ∞ | | +| **Шкура** | Охота (побочный) | Крафт -> Одежда | ∞ | | +| **Одежда** | Ткачество (из Шкуры) | Снижает потерю тепла на 50% | 50 ходов | Изнашивается | +| **Тепло** | Костер (из Дерева) | Тепло +10/ход (пока горит) | 1 ход | Активное действие (разжечь) | + +## 5. Баланс Действий (Draft) + +| Действие | Расход Энергии | Результат (Успех) | Риски/Шансы | +| :--- | :--- | :--- | :--- | +| **Сон (Ночь)** | +60 (Восст.) | - | - | +| **Отдых (Днем)** | +10 (Восст.) | - | Пропуск хода | +| **Охота** | -15 | 1-3 Мяса, 0-1 Шкуры | Шанс успеха 70% | +| **Собирательство** | -5 | 2-5 Ягод | Шанс 100% | +| **Рубка дерева** | -10 | 1-2 Дерева | Шанс 90% | +| **Добыча воды** | -5 | 1 Вода | Шанс 100% | +| **Ткачество** | -8 | 1 Одежда (нужна 1 Шкура) | | +| **Разведение костра**| -5 | +Тепло (нужно 1 Дерево) | | +| **Торговля** | -1 | Выставить/Снять лот | Не тратит ход? (обсуждаемо) | + +## 6. Логика ИИ (Приоритеты) + +Агенты используют систему приоритетов ("Пирамида Маслоу") для принятия решений: + +1. **Критическое состояние (< 20%):** + * Если Голод/Жажда/Тепло < 20% -> **ВЫЖИВАНИЕ**. + * Потребление из инвентаря -> Покупка на рынке -> Добыча (если есть силы). +2. **Усталость:** + * Если Энергия слишком низкая для работы -> **ОТДЫХ**. +3. **Экономическая эффективность:** + * Если профильный ресурс переполняет инвентарь -> **ПРОДАЖА**. + * Если нет инструментов/сырья -> **ПОКУПКА**. +4. **Рутина:** + * Выполнение основной работы (Охота/Собирательство/Крафт). + +## 7. Нерешенные вопросы / На будущее +1. **Социальное взаимодействие:** Передача ресурсов без денег? +2. **Репродукция:** Появление новых агентов? +3. **Обучение:** Повышение навыка охоты со временем (снижение затрат энергии)? diff --git a/docs/design/village-tz.md b/docs/design/village-tz.md new file mode 100644 index 0000000..e05b8cf --- /dev/null +++ b/docs/design/village-tz.md @@ -0,0 +1,64 @@ +# Симуляция экономики деревни + +# Краткое описание + +Идея заключается в том, чтобы проверить как образуется экономика при разных заданных условиях. Первая версия симуляции будет довольно простой с упрощениями. Есть некоторое количество агентов, у которых есть следующие индикаторы: энергия, голод, жажда, тепло. Любые действия агентов тратят энергию. Она восстанавливается отдыхом, сном и едой (ночью все обязательно спят). Голод со временем усиливается, поэтому агенты должны добыть еду. Они могут охотиться (тратит больше энергии) или заниматься собирательством (мясо и растительность в разной степени утоляют голод). Для утоления жажды нужно достать воду (одно действие). Для поддержания тепла нужно дерево (сначала срубить его, затем использовать для прогревания (а-ля костер) \- 2 действия), или шкура (охотимся и затем из шкуры получаем одежду). Если какой-либо из индикаторов дойдет до нуля – агент умирает. У каждого агента также есть некоторое “хранилище” в которое они могут складывать добытые ресурсы (но количество слотов ограничено). Когда агент понимает, что у него есть незакрытая потребность, но при этом у него, например, нет возможности самому сделать необходимые действия – агент может произвести торговлю. Из хранилища товары можно покупать/продавать. Стоимость равна затраченной энергии. Например, если охотник потратил 10 единиц энергии и добыл 5 кусков мяса, то стоимость 1 куска \= 10 / 5 \= 2 у.е.. При этом другой охотник мог потратить 30 единиц энергии и при этом добыть только 1 кусок мяса (неудачная охота), и тогда у него стоимость одного куска будет \= 30 / 1 \= 30 у.е.. При торговле агенты как-то должны выбирать хотят или не хотят они торговаться с определенными агентами (пока опускаем наценку, торг, кредиты \- это добавим позже). Ну и в целом, наверное, желание торговаться должно чем-то регулироваться (не быть рандомным или слишком топорным). Как было описано ранее, для закрывания некоторых потребностей нужно совершить несколько действий (напр. чтобы согреться), но с помощью торговли можно сократить количество действий (т.е. потратить меньше энергии). Например, купить у другого агента шкуру (вместо того, чтобы охотиться), и потом самому уже из него сделать одежду. + +# Симуляция + +1. Симуляция происходит пошагово +2. Симуляция имеет цикл день-ночь +3. Ночь длится один шаг +4. Ночью все агенты спят (восполняют энергию) +5. В течение шага житель может совершить одно действие +6. Шаги всех жителей происходят одновременно +7. Шаг заканчивается, когда все жители сообщили о конце хода +8. У жителей есть три потребности: + 1. Голод + 1. Голод увеличивается каждый шаг + 2. Голод восстанавливается путем потребления пищи + 2. Жажда + 1. Жажда увеличивается каждый шаг + 2. Жажда восстанавливается путем потребления воды + 3. Тепло + 1. Тепло уменьшается каждый шаг + 2. Потеря тепла уменьшается при носке одежды + 3. Тепло восстанавливается при нахождении у костра +9. В симуляции есть следующие ресурсы: + 1. Дерево + 2. Вода + 3. Мясо + 4. Шкура +10. Есть следующие виды деятельности: + 1. Охота + 2. Собирательство + 3. Добыча воды + 4. Рубка дерева + 5. Ткачество + 6. Разведение костра +11. Работа: + 1. Работа тратит энергию + 2. Работа приносит соответствующий ресурс согласно распределению +12. У каждого жителя есть энергия: + 1. Энергия тратится на каждом ходе с работой + 2. Энергия восстанавливается во время отдыха и во время ночного сна +13. В симуляции следующие цепочки производства: + 1. Охота \-\> Мясо \+ Шкура + 2. Мясо \-\> (-) Голод + 3. Шкура \-\> Ткачество \-\> Одежда + 4. Одежда \-\> (модификация на расход) Тепло + 5. Добыча воды \-\> Вода + 6. Вода \-\> (-) Жажда + 7. Рубка дерева \-\> Дерево + 8. Дерево \-\> Разведение костра \-\> (+) Тепло +14. Порча: + 1. Еда портится через несколько шагов + 2. Одежда портится через несколько шагов +15. Инвентарь: + 1. Все ресурсы занимают определенное место в инвентаре + 2. Ресурсы из инвентаря можно выкидывать +16. Торговля: + 1. Торговля может происходить на любом шаге, кроме ночи + 2. Цена товара вычисляется напрямую из затраченной энергии согласно формуле + +# \ No newline at end of file