Add detailed technical specification for village economy simulation (v2)

This commit is contained in:
Maxim Snesarev 2026-01-18 15:11:13 +03:00
commit 1d10a96930
2 changed files with 155 additions and 0 deletions

View File

@ -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. **Обучение:** Повышение навыка охоты со временем (снижение затрат энергии)?

64
docs/design/village-tz.md Normal file
View File

@ -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. Цена товара вычисляется напрямую из затраченной энергии согласно формуле
#