diff --git a/canon/COLLECTIONS_TIMELINE.md b/canon/COLLECTIONS_TIMELINE.md new file mode 100644 index 0000000..e08af2f --- /dev/null +++ b/canon/COLLECTIONS_TIMELINE.md @@ -0,0 +1,195 @@ +# COLLECTIONS_TIMELINE.md — Лимитизация коллекций CS:GO/CS2 2013-2026 + +> **Зачем:** в каноне у каждого скина есть **статус доступности на конкретную дату**. От этого зависит цена. +> +> **Статусы:** +> - **🟢 Active** — активно дропает (из кейса или матча) +> - **🟡 Legacy** — дропает редко, цены растут +> - **🟠 Rare drop** — выведен из активного пула, осталось мало копий +> - **🔴 Retired** — снят с дропа окончательно. Только через рынок. +> - **⚫ Contraband** — запрещён (Howl) — рост экспоненциальный +> - **🎪 Event-only** — выпадал только в Operation, потом — навсегда без дропа + +--- + +## I. CASE COLLECTIONS (~50 кейсов) + +### Древние (2013-2015) — большинство в Retired + +| Кейс | Релиз | Статус 2020 | Статус 2026 | Цена 2020 (FT, медиана) | Цена 2026 | +|---|---|---|---|---|---| +| CS:GO Weapon Case | 13.08.2013 | 🟠 Rare | 🔴 Retired | $20 / 1500₽ | $40 / 4000₽ | +| eSports 2013 | 14.08.2013 | 🔴 Retired | 🔴 Retired | $30 / 2200₽ | $80 / 8000₽ | +| Operation Bravo Case | 17.09.2013 | 🔴 Retired | 🔴 Retired | $100 / 7500₽ | $200 / 20000₽ | +| CS:GO Weapon Case 2 | 09.11.2013 | 🟠 Rare | 🔴 Retired | $10 / 750₽ | $25 / 2500₽ | +| eSports 2013 Winter | 18.12.2013 | 🔴 Retired | 🔴 Retired | $40 / 3000₽ | $100 / 10000₽ | +| Winter Offensive | 18.12.2013 | 🔴 Retired | 🔴 Retired | $40 / 3000₽ | $90 / 9000₽ | +| CS:GO Weapon Case 3 | 12.02.2014 | 🟠 Rare | 🔴 Retired | $25 / 1900₽ | $60 / 6000₽ | +| Operation Phoenix | 20.02.2014 | 🔴 Retired | 🔴 Retired | $30 / 2200₽ | $70 / 7000₽ | +| Huntsman Weapon Case | 01.05.2014 | 🟠 Rare | 🔴 Retired | $15 / 1100₽ | $35 / 3500₽ | +| Operation Breakout | 01.07.2014 | 🔴 Retired | 🔴 Retired | $30 / 2200₽ | $80 / 8000₽ | +| eSports 2014 Summer | 10.07.2014 | 🔴 Retired | 🔴 Retired | $30 / 2200₽ | $80 / 8000₽ | +| Operation Vanguard | 11.11.2014 | 🔴 Retired | 🔴 Retired | $35 / 2600₽ | $90 / 9000₽ | +| Chroma | 08.01.2015 | 🟡 Legacy | 🟠 Rare | $0.50 / 35₽ | $4 / 400₽ | +| Chroma 2 | 15.04.2015 | 🟡 Legacy | 🟠 Rare | $1.50 / 110₽ | $5 / 500₽ | +| Falchion | 26.05.2015 | 🟡 Legacy | 🟠 Rare | $0.40 / 30₽ | $3 / 300₽ | +| Shadow Case | 17.09.2015 | 🟡 Legacy | 🟠 Rare | $0.25 / 18₽ | $2 / 200₽ | +| Revolver Case | 08.12.2015 | 🟡 Legacy | 🟠 Rare | $0.25 / 18₽ | $2 / 200₽ | + +### Хромо/Wildfire эра (2016) + +| Кейс | Релиз | Статус 2020 | Статус 2026 | Цена 2020 | Цена 2026 | +|---|---|---|---|---|---| +| Operation Wildfire | 17.02.2016 | 🔴 Retired | 🔴 Retired | $20 / 1500₽ | $50 / 5000₽ | +| Chroma 3 | 02.05.2016 | 🟡 Legacy | 🟠 Rare | $0.30 / 22₽ | $2 / 200₽ | +| Gamma | 16.06.2016 | 🟡 Legacy | 🟠 Rare | $0.25 / 18₽ | $2 / 200₽ | +| Gamma 2 | 18.08.2016 | 🟡 Legacy | 🟠 Rare | $0.40 / 30₽ | $3 / 300₽ | +| Glove Case | 28.11.2016 | 🟢 Active | 🟡 Legacy | $1.50 / 110₽ | $4 / 400₽ | + +### Glove/Hydra эра (2017) + +| Кейс | Релиз | Статус 2020 | Статус 2026 | Цена 2020 | Цена 2026 | +|---|---|---|---|---|---| +| Spectrum | 15.03.2017 | 🟡 Legacy | 🟠 Rare | $0.80 / 60₽ | $3 / 300₽ | +| **Operation Hydra Case** | 23.05.2017 | 🎪 Event-only | 🎪 Event-only Rare | **$25 / 1900₽** | **$70 / 7000₽** | +| Spectrum 2 | 14.09.2017 | 🟡 Legacy | 🟠 Rare | $0.20 / 15₽ | $1.50 / 150₽ | + +### Совр-эра (2018-2019) + +| Кейс | Релиз | Статус 2020 | Статус 2026 | Цена 2020 | Цена 2026 | +|---|---|---|---|---|---| +| Clutch Case | 15.02.2018 | 🟢 Active | 🟡 Legacy | $0.15 / 11₽ | $1 / 100₽ | +| Horizon Case | 02.08.2018 | 🟢 Active | 🟡 Legacy | $0.15 / 11₽ | $1 / 100₽ | +| Danger Zone Case | 06.12.2018 | 🟢 Active | 🟡 Legacy | $0.20 / 15₽ | $1.50 / 150₽ | +| Prisma | 13.03.2019 | 🟢 Active | 🟡 Legacy | $0.15 / 11₽ | $1.20 / 120₽ | +| CS20 Case | 18.10.2019 | 🟢 Active | 🟡 Legacy | $0.20 / 15₽ | $1.50 / 150₽ | +| Shattered Web Case | 18.11.2019 | 🟢 Active | 🟡 Legacy | $0.20 / 15₽ | $1.20 / 120₽ | + +### Кампания (2020-2022) — наш канон + +| Кейс | Релиз | Статус на 21.08.2020 | Цена 21.08.2020 | Статус 2026 | Цена 2026 | +|---|---|---|---|---|---| +| Prisma 2 | 31.03.2020 | 🟢 Active (свежий) | $0.10 / 8₽ | 🟡 Legacy | $1 / 100₽ | +| **Fracture Case** | 06.08.2020 | 🟢 Active (НОВЕЙШИЙ на старте кампании!) | $0.30 / 25₽ пик → $0.18 / 15₽ через мес | 🟡 Legacy | $1 / 100₽ | +| **Operation Broken Fang Case** | 03.12.2020 | _ещё не вышел_ | — | 🟠 Rare (Operation-locked) | $4 / 400₽ | +| **Snakebite Case** | 03.05.2021 | _ещё не вышел_ | — | 🟡 Legacy | $1 / 100₽ | +| **Operation Riptide Case** | 21.09.2021 | _ещё не вышел_ | — | 🟠 Rare | $3 / 300₽ | +| **Dreams & Nightmares Case** | 20.01.2022 | _ещё не вышел_ | — | 🟡 Legacy | $1.50 / 150₽ | +| Recoil Case | 01.07.2022 | _после кампании_ | — | 🟡 Legacy | $1 / 100₽ | + +### Эпилог (CS2-эра 2023-2026) + +| Кейс | Релиз | Статус 2026 | Цена 2026 | +|---|---|---|---| +| Anubis Collection Case | 09.02.2023 | 🟢 Active | $0.80 / 80₽ | +| Revolution Case | 09.02.2023 | 🟢 Active | $0.60 / 60₽ | +| **Kilowatt Case** | 14.02.2024 | 🟢 Active (с **Charm**-механикой) | $1.20 / 120₽ | +| Gallery Case | 22.08.2024 | 🟢 Active | $0.90 / 90₽ | +| Fever Case | 17.12.2024 | 🟢 Active | $1 / 100₽ | +| Train 2025 Case | 04.04.2025 | 🟢 Active | $0.80 / 80₽ | +| Harlequin Case | 21.01.2026 | 🟢 Active (новейший на момент эпилога) | $1.50 / 150₽ | +| Achroma Case | 21.01.2026 | 🟢 Active | $1.20 / 120₽ | + +--- + +## II. NON-CASE COLLECTIONS (Souvenir + матч-дропы) + +> Эти коллекции — для **match drops** в режимах. Дропают раз в неделю. **Souvenir-версии** — только из Souvenir-Packages турниров. + +| Коллекция | Релиз | Статус 2020 | Знаменитые скины | Канон-роль | +|---|---|---|---|---| +| **The Dust 2 Collection** | 13.08.2013 | 🟡 Legacy match drop | стандарт | Дроп в любом матче на dust2 | +| **The Cobblestone Collection** | 13.08.2013 | 🔴 Retired (Cobble убран из map pool) | **Howl** ⚫, **Dragon Lore** 🔴 | Источник Dragon Lore и Howl | +| **The Mirage Collection** | 13.08.2013 | 🟡 Legacy | стандарт | | +| **The Inferno Collection** | 13.08.2013 | 🟡 Legacy | стандарт | | +| **The Train Collection** | 13.08.2013 | 🔴 Retired (Train убран из active pool 2017, вернулся CS2 2025) | классики | | +| **The Vertigo Collection** | 13.08.2013 | 🟡 Legacy | стандарт | | +| **The 2018 Inferno Collection** | 04.05.2018 | 🟢 Active match drop | обновлённые | | +| **The 2018 Nuke Collection** | 04.05.2018 | 🟢 Active match drop | обновлённые | (убрана из Care Package 01.2026) | +| **The Anubis Collection** | 09.02.2023 | 🟢 Active CS2 | новые | | +| **The Ancient Collection** | 13.10.2021 | 🟢 Active | новые | | +| **The Mirage 2021 Collection** | 21.09.2021 (Riptide) | 🟢 Active | обновл. | | +| **The Dust 2 2021 Collection** | 21.09.2021 (Riptide) | 🟢 Active | обновл. | | +| **The Train 2025 Collection** | 04.04.2025 | 🟢 Active | новые (CS2 Train return) | | +| **The Harlequin Collection** | 21.01.2026 | 🟢 Active (только в Weekly Care Package) | новые (только в эпилоге) | | +| **The Achroma Collection** | 21.01.2026 | 🟢 Active | новые | | + +--- + +## III. КЛЮЧЕВЫЕ ЭКСПОНАТЫ ЛИМИТИЗАЦИИ + +### M4A4 | Howl — Contraband +- **Введён:** 01.05.2014 (Huntsman Weapon Case) +- **Removed → Contraband:** 23.06.2014 (плагиат, **Valve буквально удалила скин с дропа за 7 недель**) +- **Цены:** FN 2020 = ~200k₽ → 2024 = ~700k+₽ → 2026 = ~1.2M+₽ +- Это **единственный Contraband-скин** в CS:GO/CS2 + +### AWP | Dragon Lore — Limited drop +- **Из Cobblestone Collection** (доступен только если играл на Cobble) +- **Cobble убран из active map pool в 2018** → коллекция стала Retired-для-дропа +- Только через Souvenir-Packages с турниров (очень редко) +- **Цены:** FN 2020 = ~200k → 2024 = ~1.5M → 2026 = ~2-3M₽ + +### Operation Hydra Case +- **Вышел 23.05.2017**, **закончился 13.11.2017** (только 6 мес дропал) +- После — **никогда не дропал в матчах** +- Только из старых инвентарей или маркета +- **Цены:** $25 / 1900₽ в 2020 → $70 / 7000₽ в 2026 (рост х2.8 за 6 лет) + +### "EMS Katowice 2014 Holo" стикер +- Турнирный стикер 2014 года +- **Никогда не переиздавался** +- Самый дорогой стикер в истории +- **Цена 2024:** ~$100k+ за штуку +- На скин с этим стикером — цена увеличивается в десятки раз + +### Souvenir AWP | Dragon Lore с подписью KennyS +- Реальная продажа **17.02.2018 за $61k** +- Из Boston Major 2018 Souvenir Package +- В каноне — пасхалка для эпизода 2024+ если игрок ищет "легендарный лот" + +--- + +## IV. ОСНОВНЫЕ ТРИГГЕРЫ ЛИМИТИЗАЦИИ + +| Триггер | Эффект | Пример | +|---|---|---| +| **Removal from drop pool** | Кейс становится Rare → Retired | Bravo Case, Hydra Case | +| **Map removed from active pool** | Коллекция мап-дропа становится Legacy | Cobblestone (2018), Train (2017-2025) | +| **Operation ends** | Operation Case переходит в Active → Legacy → Rare за годы | Broken Fang, Riptide | +| **Plagiarism / legal removal** | Contraband | M4A4 Howl | +| **CS:GO → CS2 transition (27.09.2023)** | Legacy collections становятся менее доступными | Старые карты Source-эпохи | +| **CS2 Weekly Care Package rotation** | Коллекции добавляются/убираются с дропа раз в полгода | Янв 2026: убраны Safehouse/Dust2/2018 Nuke/Inferno; добавлены Harlequin/Achroma | +| **Sticker capsules end** | Капсулы перестают продавать → stickers Limited | Каждый Major имеет свои капсулы, дропают только во время | + +--- + +## V. КАК ИСПОЛЬЗОВАТЬ В КОДЕ + +Каждая коллекция/кейс в JSON-дате имеет: +```json +{ + "name": "Operation Hydra Case", + "released": "2017-05-23", + "drop_status_timeline": [ + {"from": "2017-05-23", "status": "active"}, + {"from": "2017-11-13", "status": "event-ended"}, + {"from": "2018-01-01", "status": "rare"} + ], + "parent_collections": ["Hydra"], + "knife_pool": ["Bayonet", "Karambit", ...], + "key_cost_rub_2020": 190 +} +``` + +Для запроса "статус кейса на дату X" — линейный поиск по `drop_status_timeline`. + +--- + +## TBD + +- Полные списки скинов внутри каждой коллекции (тысячи позиций — пойдут процедурно) +- Точные даты map pool changes по годам +- Sticker capsules timeline (60+ Major + tier-2 events) +- Charm collection (CS2 2024+) +- Patch capsules (Broken Fang 2020+) diff --git a/canon/CS2_TRANSITION.md b/canon/CS2_TRANSITION.md new file mode 100644 index 0000000..98f4f3f --- /dev/null +++ b/canon/CS2_TRANSITION.md @@ -0,0 +1,169 @@ +# CS2_TRANSITION.md — Переход CS:GO → CS2 (27 сентября 2023) + +> **Канон-роль:** В нашей кампании (21.08.2020 — 29.05.2022) CS2 ещё нет. Но **в эпилоге** 27 сен 2023 — переход. Это **большой драм-момент** для фермерского комьюнити. + +--- + +## ТОЧНАЯ ДАТА И ОБЪЯВЛЕНИЕ + +- **27 сентября 2023** — Valve официально запустила Counter-Strike 2 +- **CS:GO стала "Legacy version"** — доступна через bbeta-ветку Steam (`csgo_legacy`) +- Большинство игроков **автоматически переведены на CS2** при следующем запуске +- Mac/Linux поддержка прекращена в CS2 (CS:GO работал на этих платформах, CS2 — только Windows) + +--- + +## ЧТО ИЗМЕНИЛОСЬ — ПЕРЕЧЕНЬ + +### Графика и движок +- **Source 2 движок** (CS:GO был на Source 1, с 2012) +- Новые viewmodels, лучшая физика дыма, smoke grenades теперь объёмные +- Lighting переработан, текстуры повышены +- **Реалистичная анимация воды, ткани** + +### UI и интерфейс +- Полностью переработан UI магазина, инвентаря, меню +- **Inspect-окно для скинов** — улучшено, видны float значения **сразу** +- Inventory: новые фильтры по wear/rarity/StatTrak/Souvenir +- Music kit теперь играет в матче через новый интерфейс + +### Карты +- **Map pool сокращён** — часть удалена, часть переработана +- Удалены: Train, Cache, Cobblestone (давно) +- Добавлены / переработаны: Anubis, Ancient, Inferno 2.0, Mirage 2.0, Nuke 2.0, Vertigo 2.0, Overpass 2.0, Office 2.0 +- **Train вернётся в апреле 2025** в CS2 (после 2-летнего перерыва) + +### Игровые механики +- **Sub-tick netcode** — реакции игрока учитываются с миллисекундной точностью +- Smoke grenades: можно вырубить смог гранатой или стрелять сквозь +- Грейды rebalanced +- Скорости движения, тайминги — чуть изменены + +### Trust Factor 2.0 +- Старая система Trust Factor + Prime теперь работает интегрированнее +- Влияет на матчмейкинг, шанс получить читера в матче +- Multi-аккаунты с одного HWID = низкий Trust Factor → плохие матчи + +### Premier mode (новый рейтинговый) +- Заменил **Wingman + Competitive** для рейтинга +- **CS Rating** (numerical, не звания) — точная цифра +- Major-qualifications идут через Premier + +--- + +## ПЕРЕНОС СКИНОВ И ИНВЕНТАРЯ + +### Точно (по реалу) +- **ВСЕ скины CS:GO автоматически перенесены в CS2** — без действий игрока +- StatTrak, Souvenir, stickers — переносятся +- Float значения сохранены +- Stickers применены на оружии — остаются + +### Что ВЫЯВИЛОСЬ при переходе +- **Некоторые скины выглядят иначе** в Source 2 (новое освещение) +- **Часть стикеров плохо отрисовалась** — Valve фиксила в первые 2 недели +- **Float-значения скинов** — теперь видны прямо в Inspect (раньше только через сторонние сайты) + +### Что ПРОПАЛО +- **Все Music Kits** — работают, но через новый интерфейс +- **Music Box** (старая фича) — удалена +- **Графитти-применение** — переработано, скорость нанесения меньше +- **Hand-cam в Inspect** — изменён угол обзора + +--- + +## ВЛИЯНИЕ НА РЫНОК (для канона) + +### Первые 2 недели (27.09.2023 — 11.10.2023) +- **Цены прыгают ±30-50%** на популярные скины +- Часть игроков **продаёт всё в панике**, рынок завален +- Дешевые/средние скины (Mil-Spec, Restricted) — обвал -20-40% +- Топ-скины (Covert, knives, gloves) — рост +10-30% (коллекционеры покупают) +- **AWP Dragon Lore FN** скакнул с ~$3500 до ~$5000 за день + +### 2 недели — 2 месяца +- Стабилизация +- Mass-фермеры пересматривают стратегию (Care Package замена weekly drop) +- Часть мелких ферм закрывается — невыгодно +- FSM Panel / DM Panel — обновляют софт под CS2 (релиз патчей в окт-нояб 2023) + +### 2-6 месяцев +- Новые типы скинов: **Charm** (с Kilowatt Case фев 2024) +- Trade-Up Contract пересчитан +- Stickers — больше возможностей для craft + +### 6+ месяцев +- Стабильный рост на легаси-скины (Dragon Lore, Howl, ножи) +20-50% к концу 2024 +- Mass-фарма ушло половины игроков +- Те кто остался — на новых панелях с Care Package-логикой + +--- + +## ВЛИЯНИЕ НА ФАРМ-ПАНЕЛИ (для канона) + +| Панель | Что случилось | +|---|---| +| **FSM Panel** | Обновили под CS2 в окт 2023. FSM-режим остался. Цены лицензий те же. | +| **DM Panel** | Обновили в нояб 2023. Deathmatch остался. Mass-update пользователей. | +| **SkyNet** | Обновили в дек 2023. Стабильная. | +| **QFARM (open-source)** | Сообщество обновило в дек 2023, но с лагом. | +| **CapyFarm** | Закрылась (не выдержала переход). | +| **TC Panel** (давно мёртвая) | Не воскресли. | + +--- + +## ВЛИЯНИЕ НА ФЕРМЕРОВ (по тирам, для канона) + +| Тир | Эффект перехода | +|---|---| +| **Тир 1 (школьник 5-10 акков)** | Меньше всего. Care Package требует Prime — кто имел, продолжил. Без Prime — мало что было раньше, мало стало. | +| **Тир 2 (полу-профи 10-50)** | Слабо. FSM/DM обновились — рабочий процесс восстановлен через 2-3 недели. | +| **Тир 3 (профи 50-200)** | Средне. Care Package требует **активного play на каждом акке** — массовый фарм через FSM режим затратнее по времени на акк. Часть стратегий пересмотрена. | +| **Тир 4 (industrial 200+)** | Сильно. Care Package сделал mass-фарм сложнее. Часть индустриальных закрылись или перешли на TF2-фарм / PUBG. | + +--- + +## КАНОН-СЦЕНА В ЭПИЛОГЕ + +### 27.09.2023 (среда) — день перехода +**Tegelram-чат "Свои":** +- Утром: *"пацаны кс2 вышла кто запустил?"* +- К обеду: *"щас половина скинов выглядит иначе"* +- К вечеру: *"FSM ещё не обновили, фарм встал"* +- К ночи: *"продал dragon lore за +25% паника-цене, не жалею"* + +**TG-канал `@octofarm` пост:** +> *"Пацаны, кс2 вышла. Не паникуем. FSM команда обещает обновление к 5 октября. Пока — переключаемся на TF2 фарм или ждём. Кто продаёт скины сейчас — теряет деньги. Сидим на жопе, ждём стабилизации."* + +**В новостях TG-канала "Будни Региона":** +> *"Valve выпустила обновление популярного шутера. Поклонники переходят на новую версию."* + +### Реакция героя (если в эпилоге) +- Видит свой первый защищённый аккаунт (с пролога 2020) — Australium Wrench нетронут, цена даже выросла (+15% за неделю) +- Если у героя был Dragon Lore (low chance) — может продать на пике паники +- Андрюха пишет: *"кс2 хороша. но фарма меньше. возможно завязываем?"* + +--- + +## ИГРОВАЯ МЕХАНИКА В КОДЕ + +### State-машина "CS-era" +- **CSGO_era**: до 27.09.2023 — стандартная weekly drop логика +- **CS2_era**: с 27.09.2023 — Care Package логика (выбор из 4) + +### Сцена дроп-открытия меняется +- **До 27.09.2023:** карусель CS:GO стиль (мини-игра MG-003 сапёр) +- **С 27.09.2023:** окно с 4 предметами, выбор 2 (новая мини-игра) + +### Скины в инвентаре +- **До 27.09.2023:** UI CS:GO стиля +- **С 27.09.2023:** UI CS2 стиля (более чистый, новые иконки) +- Float значения видны **сразу** (раньше — клик в Inspect) + +--- + +## TBD + +- Точная мини-игра Care Package (выбор 2 из 4) — для эпилог-сцен +- Дизайн UI CS2 vs CS:GO в коде (2 версии Inventory-окна) +- Что именно "выглядит иначе" — какие скины Source 2 рендерит особенно красиво/уродливо diff --git a/canon/DATA_PIPELINE.md b/canon/DATA_PIPELINE.md new file mode 100644 index 0000000..1af06e8 --- /dev/null +++ b/canon/DATA_PIPELINE.md @@ -0,0 +1,275 @@ +# DATA_PIPELINE.md — Техническое решение каталога предметов + +> **Проблема:** ~10 000 скинов CS:GO × 5 wear × 10+ лет = миллионы записей цен. Вручную невозможно. +> +> **Решение:** 3-слойная архитектура. Якоря вручную + процедурка + опц. скрейпинг. + +--- + +## I. АРХИТЕКТУРА — 3 СЛОЯ + +### Слой 1: ЯКОРЯ (вручную, 100-150 шт) +**Источник:** `canon/HISTORICAL_STEAM_ITEMS.md` от research-агента (4800 слов). + +**Что покрыто:** +- 30 iconic скинов с реальными ценами по wear/year (Dragon Lore, Howl, Fire Serpent, etc.) +- 50 кейсов с датами выхода и ценами по кварталам +- 13 Australium weapons с ценами 2020-2024 +- 15+ Unusual TF2 effects с типовыми ценами +- PUBG sezony S7-S25 с pass-ценами +- Все CS:GO Operations с pass-ценами и дроп-листами + +**Используется как:** **ground truth** для калибровки процедурного слоя. + +### Слой 2: ПРОЦЕДУРНЫЙ ГЕНЕРАТОР (формула, генерирует тысячи) +**Источник:** `canon/STEAM_ITEMS.md` секция VII (формула ценообразования) + `canon/COLLECTIONS_TIMELINE.md` (статус коллекций по датам). + +**Алгоритм:** +``` +для каждого скина в каталоге: + base = base_price[rarity_tier] # из COLLECTIONS_TIMELINE + status = collection_status_on_date # active/legacy/retired/contraband + + для каждого wear FN/MW/FT/WW/BS: + price = base + × wear_multiplier[wear] # 0.3-4.0 по STEAM_ITEMS.md + × status_multiplier[status] # 1.0-30.0 (retired = expensive) + × time_curve(date, release) # 0.2-5.0 + × stattrak_or_souvenir # 1.0-3.0 + × pattern_jitter() # 0.85-1.15 + + если skin in ANCHORS (якорь из слоя 1): + скорректировать формулу чтобы совпадало с якорем ±10% +``` + +**Что генерируется:** 3000-5000 уникальных скинов × 5 wear = 15-25 тыс записей. + +**Хранится как:** `assets/data/skins.json` — генерируется один раз при build-е. + +### Слой 3: РЕАЛТАЙМ-СКРЕЙПИНГ (опционально, для энтузиастов) +**Источник:** Steam Market public API. + +**Endpoint:** `https://steamcommunity.com/market/priceoverview/?currency=5&appid=730&market_hash_name=` (currency=5 = RUB) + +**Что даёт:** реальная цена на сегодня для любого скина. + +**Использование в игре:** +- В пред-альфа: НЕ используется (offline-only) +- В будущей версии: опциональная "live-pricing" механика для игроков с интернетом + +**Скорость:** Steam ограничивает ~20 req/sec → 30к скинов = 25 минут на полный апдейт. + +--- + +## II. JSON-СТРУКТУРА + +### Файл `assets/data/skins.json` +```json +{ + "version": "1.0.0", + "generated_at": "2026-05-24T15:00:00Z", + "base_date": "2020-08-21", + "skins": [ + { + "id": "awp_dragon_lore", + "weapon": "AWP", + "name": "Dragon Lore", + "collection": "The Cobblestone Collection", + "rarity": "covert", + "category": "rifle_sniper", + "released": "2014-07-01", + "collection_status_timeline": [ + {"from": "2014-07-01", "status": "active"}, + {"from": "2018-04-01", "status": "rare"}, + {"from": "2023-09-27", "status": "legacy_cs2"} + ], + "base_price_rub_2020": 90000, + "wear_multipliers": { + "FN": 2.5, + "MW": 1.7, + "FT": 1.0, + "WW": 0.7, + "BS": 0.5 + }, + "stattrak_available": true, + "souvenir_available": true, + "souvenir_multiplier": 3.0, + "low_float_supported": true, + "is_anchor": true + } + ] +} +``` + +### Файл `assets/data/cases.json` +```json +{ + "cases": [ + { + "id": "fracture_case", + "name": "Fracture Case", + "released": "2020-08-06", + "collection_status_timeline": [ + {"from": "2020-08-06", "status": "active"}, + {"from": "2023-09-27", "status": "legacy_cs2"} + ], + "key_cost_rub_2020": 190, + "drop_weights": { + "mil_spec": 0.7992, + "restricted": 0.1598, + "classified": 0.0320, + "covert": 0.0064, + "knife": 0.0026 + }, + "knife_pool": ["bayonet", "karambit", "m9_bayonet", "..."] + } + ] +} +``` + +### Файл `assets/data/collections_timeline.json` +Структурированный экспорт `canon/COLLECTIONS_TIMELINE.md` в JSON. + +### Файл `assets/data/cs2_transition.json` +События 27.09.2023: смена UI, market shock, panel updates. + +--- + +## III. ГЕНЕРАТОР В GODOT + +### Скрипт `scripts/data/skins_generator.gd` +```gdscript +extends Node + +const ANCHORS_JSON = "res://assets/data/anchors.json" # из HISTORICAL_STEAM_ITEMS.md +const COLLECTIONS_JSON = "res://assets/data/collections_timeline.json" + +func generate_full_catalog(seed_value: int) -> Array: + var rng = RandomNumberGenerator.new() + rng.seed = seed_value + + var anchors = _load_anchors() + var collections = _load_collections() + var catalog = [] + + for collection in collections: + for skin_template in _generate_skins_for_collection(collection, rng): + for wear in ["FN", "MW", "FT", "WW", "BS"]: + var entry = _build_entry(skin_template, wear, collection, rng) + catalog.append(entry) + + return catalog + + +func get_price(skin_id: String, wear: String, on_date: String) -> int: + # Расчёт цены любого скина на любую дату + var skin = _find_skin(skin_id) + var collection_status = _status_on_date(skin.collection, on_date) + var time_curve = _time_curve(skin.released, on_date) + + return skin.base_price \ + * skin.wear_multipliers[wear] \ + * _status_multiplier(collection_status) \ + * time_curve \ + * _daily_jitter(on_date, skin_id) +``` + +### Скрипт `scripts/data/market_simulator.gd` +- Симулирует ежедневные флуктуации ±5-15% +- Среда -10% (канон-механика) +- 5.12.2023 крах -10-20% +- 24.02.2022 курс-скачок +30-50% в RUB +- CS2 transition 27.09.2023 спайк ±30-50% + +--- + +## IV. УПРОЩЁННАЯ ВЕРСИЯ ДЛЯ MVP (пролога) + +### Что нужно в Акте 1-13 пролога +- **Australium Wrench** (1 скин) — захардкоден в коде +- **Кейс кесе го Prime** (после покупки игры) — выпадает что-то от Fracture Case (свежий на 21.08.2020). 5-7 возможных скинов рандомно. +- **Кейс Пабаджи** — Survivor Crate, 5-7 косметик из реала + +**ИТОГО для пролога:** ~15-20 скинов в JSON, не тысячи. Полный генератор — для основной игры. + +### Файл `assets/data/skins_prolog.json` (минимум) +```json +{ + "australium_wrench": { ... }, + "fracture_case_skins": [ + "ak47_legion_of_anubis", + "m4a4_tooth_fairy", + "ump45_gold_bismuth", + "..." + ], + "pubg_survivor_crate_items": [ + "trench_coat", + "leather_jacket", + "..." + ] +} +``` + +--- + +## V. PIPELINE BUILD + +### CLI команда (Forgejo Actions может запускать) +```bash +# Из корня проекта +godot --headless --script scripts/data/build_catalog.gd --seed 42 +# → генерирует assets/data/skins.json (15k записей) +# → проверяет соответствие якорям ±10% +# → выходит с кодом 0 если ок, 1 если рассогласование +``` + +### В `.forgejo/workflows/build.yml` (когда дойдём) +Добавить step: +```yaml +- name: Build catalog + run: godot --headless --script scripts/data/build_catalog.gd --seed 42 +``` + +--- + +## VI. КОГДА ЧТО ДЕЛАТЬ + +| Этап | Что | +|---|---| +| **Сейчас (Акт 1 пролога)** | Не нужен полный каталог. 15-20 скинов руками в `skins_prolog.json`. | +| **Акт 12-13 пролога (3 фарм-акка)** | Добавить 10-20 базовых скинов кесе го/Пабаджи | +| **Эпоха 1 (9 класс)** | Полный каталог: ~3000 скинов через генератор. Реализация `skins_generator.gd`. | +| **Эпоха 3 (10 класс, окт 2021)** | Добавить Riptide коллекции | +| **Эпилог (CS2 transition)** | State-machine "era": до/после 27.09.2023 | +| **Финальный релиз** | Опц. реалтайм-скрейпинг для энтузиастов | + +--- + +## VII. РАЗМЕР DATASET + +| Слой | Записей | Размер JSON | +|---|---|---| +| Anchors (вручную) | 150 | ~50 КБ | +| Процедурный CS:GO/CS2 | 15 000 | ~5-8 МБ | +| TF2 (Mannco + Australium + Unusual) | 8 000 | ~3-5 МБ | +| PUBG | 2 000 | ~1 МБ | +| **ИТОГО** | **25 000** | **~10-15 МБ** | + +**Размер билда:** +15МБ — приемлемо (Godot project = 50 МБ базы, итого ~65МБ — без проблем для Steam $5 игры). + +--- + +## VIII. ТРЕНИНГ-СЛОЙ (опционально, для будущего) + +ML-модель которая обучается на anchors + Steam Market API данных за месяц → может предсказывать цены любого скина с точностью ±10-15%. Запускается в фоне игры, обновляет dataset. + +**Не нужно для пролога.** Опция для долгосрочного развития. + +--- + +## TBD + +- Конкретный JSON-формат якорей (выкатим при первой генерации) +- Карта rarity → base_price (5-7 уровней) +- Какие именно 30 iconic скинов кодируем как якоря (взять из HISTORICAL_STEAM_ITEMS.md) +- Логика state-machine "CS-era" (до/после 27.09.2023)