From 077269b9c9099f511047fe1f20a31e06eb2ba04b Mon Sep 17 00:00:00 2001 From: sasheg dev <152582704+SashegDev@users.noreply.github.com> Date: Tue, 20 Oct 2026 23:01:36 +0300 Subject: [PATCH] =?UTF-8?q?PLAN:=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= =?UTF-8?q?=D1=8B=20=D0=B8=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=BE=D0=B2,=20=D0=B2=D0=B5=D1=80=D1=81=D1=82=D0=B0?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2,=20=D1=81=D0=BA=D1=80=D0=B0=D0=BF=D0=B0=20?= =?UTF-8?q?=D0=B8=20=D1=81=D0=BE=D0=BA=D0=B5=D1=82=D0=BE=D0=B2=20=D0=BF?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=80=D0=BE=D0=B9=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PLAN.md | 160 +++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 148 insertions(+), 12 deletions(-) diff --git a/PLAN.md b/PLAN.md index 0374549..7ed86e6 100644 --- a/PLAN.md +++ b/PLAN.md @@ -161,15 +161,96 @@ building privileges» — лозу строить можно всегда, ул **Гниение (decay):** лоза и дерево теряют здоровье через несколько часов и разваливаются, камень/металл/броня — через дни. Открытие/закрытие двери с замком сбрасывает таймер гниения. -### 1.6 Что из этого берём мы +### 1.6 Инструменты: сбор, урон, износ -- Строительные объекты — **наши кастомные предметы** (не блоки мира). -- Ставятся **свободно**, внутренние **снаппятся** к поставленным (сокеты на объектах). -- **Два вида проёмов**: малый (только одиночная дверь) и большой (двойные/гаражные, но не - одиночные). -- Уровни (tier) и прочность — как в Rust, плюс **тег `admin`** (см. п. 2.2) для объектов, - которые нельзя ставить обычному игроку. -- Столб/устойчивость и гниение — **позже**, по необходимости. +У каждой пары «инструмент × класс ресурса» — три числа: **сколько прочности узла +снимает удар**, **какую долю узла разрушает удар** и **сколько урона наносит**. + +| инструмент | ресурс | прочности за удар | доля разрушения | урон | +|---|---|---|---|---| +| **Камень** (rock) | дерево | 0.3 | 0.5 | 10 | +| **Камень** | руда | 0.3 | 0.5 | 5 | +| **Камень** | животное | 0 | 0.5 | 10 | +| **Каменный топор** | дерево | ×2 от камня | ~0.33 | 10 | +| **Каменная кирка** | руда | 0.3 | **0.15** | 16 | +| **Каменная кирка** | дерево | 5.0 | 0.334 | 5 | +| **Каменная кирка** | животное | 1.0 | 0.2 | 10 | + +Отсюда: камень рубит дерево **за 2 удара**, кирка копает руду **за ~7 ударов**, +кирка рубит дерево **за 3 удара**. Топор «собирает вдвое больше камня, но бьёт +чуть медленнее металлического топора». + +**Урон по постройкам** (по уровням постройки: лоза → дерево → камень → металл → броня): + +| инструмент | лоза | дерево | камень | металл | броня | +|---|---|---|---|---|---| +| Камень | **9** | 0.2 | 0.2 | 0.1 | 0.1 | +| Каменный топор | 3.0 | 2.1 | 0.3 | 0.15 | 0.15 | +| Каменная кирка | 3.4 | 1.14 | 0.64 | 0.27 | 0.27 | + +**Прочность (износ) инструмента:** у камня ограниченная, предмет изнашивается и +ломается. Урон по частям тела (голова/грудь/руки/ноги): камень 20/10/8/8, +каменный топор 27/15/12/12, каменная кирка 35/17/13/13. Дальность: камень 1.25, +топор и кирка 1.5. + +### 1.7 Таблица: предмет → верстак → скрап + +**`bench`** — уровень верстака, который открывает рецепт: 0 = крафтится сразу, +1 = нужен верстак 1, 2 = верстак 2, 3 = верстак 3. + +| предмет | bench | крафт | время | скрап на чертёж | +|---|---|---|---|---| +| Камень (rock) | 0 | 10 камня | 5 с | — (не исследуется) | +| Каменный топор | 0 | 200 дерева + 100 камня | 30 с | 75 (hatchet) | +| Каменная кирка | 0 | 200 дерева + 100 камня | 30 с | 125 (icepick) | +| Строительный план | 0 | 20 дерева | — | 20 | +| Верстак 1 | 0 | 500 дерева + 100 металла + 50 скрапа | 60 с | — | +| Верстак 2 | 1 | 500 металла + 20 ХМ + 500 скрапа | 60 с | — | +| Верстак 3 | 2 | 1000 металла + 100 ХМ + 1250 скрапа | 60 с | — | +| Стол исследований | 1 | 200 металла + 20 скрапа | 60 с | — | +| Salvaged Hammer | 1 | — | — | 75 | +| Salvaged Hatchet | 1 | — | — | 75 | +| Salvaged Pick Axe | 1 | — | — | 125 | +| Salvaged Sword | 1 | — | — | 20 | +| Salvaged Axe | 2 | — | — | 125 | +| Salvaged Icepick | 2 | — | — | 125 | +| Timed Explosive Charge | 3 | — | — | 500 | + +**Скрап на чертёж** по тирам предмета: **20 / 75 / 125 / 500**. Полные списки +предметов с их скрапом — в вики (страница Research Table); исключения, которые +важно помнить: + +- **высокоскоростная стрела — 0 скрапа** (единственная с нулём); +- **Укреплённое стекло — 50** (между 20 и 75); +- постройки: лоза/дерево/бетон/шторы/бойницы/малый водосбор — 20; гаражные ворота, + колючая баррикада, большой водосбор, решётка пола, полка, кровать, дроп-бокс, шкаф — 75; + сетка-фенси, ворота клетки, стена клетки, окна, калитка, лестница, люк, двойная + дверь листа — 125; бронедверь, бронедвойная дверь, каменные врата — 500. + +**Ресурсы** (дерево, камень, металл, ХМ, сера, скрап) — не крафтятся, а +собираются; у них рецепта нет вовсе. + +### 1.8 Строительные объекты и сокеты + +**Объекты** (одинаковый набор на каждый уровень): квадратный фундамент, +треугольный фундамент, лестница на фундаменте, квадратный пол, треугольный пол, +стена, полустена, низкая стена, **малый дверной проём**, **большой проём**, окно, +настенная рамка, рамка пола, лестница, крыша, столб. + +**Куда что снаппится** (это и есть «сокеты»): + +| объект | сокеты | +|---|---| +| Фундамент | 4 стороны → стена; верх → пол; низ → подвал/фундамент | +| Стена | верх → пол или рамка пола; **проём под дверь**; сторона → соседняя стена | +| Пол | верх → внутренние блоки (сундук, верстак, печь, шкаф); низ → потолок | +| Крыша / потолок | **проём под дверь** (в потолке — для выхода наверх) | +| Малый проём | только **одиночная** дверь | +| Большой проём | **двойные двери** и **гаражные**; одиночные — нельзя | + +**Свободное размещение:** строительные объекты ставятся **как угодно**, без +привязки к сетке мира; привязка есть только у внутренних блоков — к уже +поставленным строительным. --- @@ -361,8 +442,63 @@ ROLE_ELDER / ROLE_CREATOR`). --- -## 6. Что дописать +## 6. Как продолжить (для VPS и для другого агента) -- [ ] Полные таблицы предмет→требуемый верстак и предмет→скрап (из вики). -- [ ] Точная таблица сбора по классам ресурсов (дерево/руда/животное/лоза/камень/металл). -- [ ] Список строительных объектов и их сокеты (что куда снаппится) — по п. 1.5. +### 6.1 Сборка и проверка + +```powershell +rsx-protocol\scripts\build.ps1 # и test.ps1 (22 проверки) +rsx-server-core\scripts\build.ps1 # и test.ps1 (49 проверок) +rsx-client\scripts\build.ps1 # и test.ps1 (128 проверок) +game-fork\scripts\prepare-game.ps1 # пересобрать форк из ванильного jar (медленно) +game-fork\scripts\compile-game.ps1 # только компиляция форка (быстро) +``` + +**Порядок важен:** `rsx-protocol` → потом `rsx-server-core` (он компилируется +против `rsx-protocol\build\classes`) → потом `rsx-client` → потом форк. +Форк компилируется против `rsx-client\dist\rsx-loader.jar` и +`rsx-protocol\dist\rsx-protocol.jar` — если меняли протокол, пересобери его +**до** форка, иначе форк соберётся против старого jar. + +### 6.2 Запуск + +```powershell +rsx-server-core\scripts\run-server.ps1 -Port 25565 +rsx-client\scripts\run-game.ps1 # клиент +``` + +Клиент для проверки: `--server 127.0.0.1 --port 25565` плюс токен лаунчера +(`--accessToken`, `--uuid`, `--username`). + +### 6.3 Что не сделано (по порядку) + +1. **Шаг A** — предметы, инвентарь, реестр, протокол инвентаря, рендер предмета + в руке и в слоте, стартовый камень. +2. **Шаг B** — `Dig`/`BreakProgress` в протоколе, состояние ломания на сервере, + правила инструмента, тег `admin`, 4 клиентских патча. +3. **Шаг C** — структуры (узлы), сбор, постройка по сокетам. +4. **Шаг D** — конфиг, мир 4000×4000 один раз, барьер. +5. **Шаг E** — транспорт на NIO. +6. **Шаг F** — DistantView. + +### 6.4 Мелочи, которые легко упустить + +- **Текстуры предметов — временные** (взяты из ремейка как заглушки). **ПОМЕТКА: + заменить на свои.** Ассеты ремейка обфусцированы: каждый файл **XOR-ится одним + байтом**, ключ = `файл[0] ^ 0x89` (у `rock.png` это 0x20). Декод: + `key = b[0] ^ 0x89; for (i) b[i] ^= key;` +- Пути: `G:\RustNotMC` (репозиторий), `G:\decompiled-rustex` (референс, только читать), + `G:\rustexremake` (исходники ремейка с ассетами). +- Скрипты — **ASCII без BOM** (PS 5.1 читает без BOM в ANSI и ломает парсер). +- В PowerShell **нет heredoc**: сообщения коммитов пишем в файл и `git commit -F`. +- Класс-паттерн SSH: `git config core.sshCommand "ssh -i C:/Users/User/.ssh/id_ed25519_zernmc -o IdentitiesOnly=yes"`. +- Коммиты по-русски, комментарии в коде — по-английски. +- Тесты: `scripts\test.ps1` у каждого модуля, всё на голом JDK, без фреймворков. + +### 6.5 Дописать в этот файл + +- [ ] Полные таблицы предмет→верстак и предмет→скрап (из вики; основное уже в п. 1.7). +- [ ] Таблица сбора по всем классам ресурсов (часть в п. 1.6). +- [ ] Список строительных объектов с сокетами (основное в п. 1.8). +- [ ] Что решили по ролям: из лаунчера или свои на сервере (вопрос в п. 5). +- [ ] Стоимость и время каждого рецепта, который будем реализовывать.