PLAN: таблицы инструментов, верстаков, скрапа и сокетов постройки

This commit is contained in:
sasheg dev
2026-10-20 23:01:36 +03:00
parent 1861aaa408
commit 077269b9c9
+148 -12
View File
@@ -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).
- [ ] Стоимость и время каждого рецепта, который будем реализовывать.