Полу-кастомный игрок и каталог объектов ремейка
Игрок: - RsxPlayer extends EntityPlayerSP: наш игрок с нашими числами движения. - RsxMovementInput extends MovementInputFromOptions: отменяет ванильный множитель подкрадывания 0.3 и ставит наш. - RsxPlayerTuning: подкрадывание 1.5 блока/с (было ~1.3), прыжок 1.35 блока (было 1.25). Прыжок считается по высоте: v = 0.42 * sqrt(h / 1.25) = 0.43713. Правило пользователя: значение меньше заданного не принимается, остаётся 1.5. Переопределяется из командной строки: -Drsx.sneakSpeed, -Drsx.jumpHeight. - Мобы прыгают как в ванилле: переопределение в RsxPlayer, а не в EntityLivingBase. - Три строки патчей в ванильное дерево: PlayerControllerMP создаёт RsxPlayer, Minecraft создаёт RsxMovementInput. Вся логика в нашем коде. - Форк собирается чисто, 3278 классов. Каталог: - tools/catalog-remake.py собирает assets/rustex/CATALOG.md и catalog.json. - Что нашли у ремейка: 218 предметов (46 одежды, 44 ресурса, 33 оружия, 31 медицина, 21 инструмент, 17 построек, 11 боеприпасов, 11 разных, 4 ловушки), 91 объект nextgen (бочки, ящики, двери, верстаки, печи, руда, модели монументов), 553 модели .obj (384 оружия с перезарядкой, 128 деталей постройки, 36 мебели, 4 руды), 133 иконки предметов, 2004 звука, текстуры монументов и животных, скины игрока (9 файлов 256x256 плюс 9 с моргающими глазами) в assets/rustex/player/. - Скины игрока - текстуры ремейка, модель тела ванильная. Декомпил ремейка лежит на диске: G:\src-decoded (5207 файлов, строки расшифрованы). Поведение клиента можно читать, а не угадывать: конфиг оружия с отдачей, схема viewmodel, формат данных. Значения же приходят с сервера, в клиенте только схема и значения по умолчанию. План дополнен разделами 2.8 (игрок) и 2.9 (декомпил).
This commit is contained in:
@@ -753,6 +753,42 @@ ROLE_ELDER / ROLE_CREATOR`).
|
||||
(MTSDF, 2048×2048, тайлы 64×64) по именам `rusticon` из базы предметов.
|
||||
- **Пометка: заменить на свои** (см. п. 6).
|
||||
|
||||
### 2.8 Игрок: полу-кастомный объект
|
||||
|
||||
Игрок — **ванильный, но с нашими числами движения**. Класс `RsxPlayer extends
|
||||
EntityPlayerSP` (в `src-overlay`), рядом `RsxMovementInput extends
|
||||
MovementInputFromOptions` и `RsxPlayerTuning` с числами.
|
||||
|
||||
| что | ванильно | у нас |
|
||||
|---|---|---|
|
||||
| скорость подкрадывания | ~1.30 блока/с (множитель 0.3) | **1.5 блока/с** (множитель 0.34746) |
|
||||
| высота прыжка | 1.25 блока (импульс 0.42) | **1.35 блока** (импульс 0.43713) |
|
||||
|
||||
- Скорость прыжка считается по высоте: `v = 0.42 · √(h / 1.25)`.
|
||||
- Подкрадывание: ванильный множитель 0.3 отменяется и ставится наш.
|
||||
- **Правило пользователя:** если задать значение меньше, оно не принимается —
|
||||
подкрадывание остаётся 1.5 блока/с, прыжок 1.5 блока. Значения по умолчанию
|
||||
(1.5 и 1.35) через это правило не проходят.
|
||||
- Переопределяется из командной строки: `-Drsx.sneakSpeed=1.6 -Drsx.jumpHeight=1.4`.
|
||||
- Мобы прыгают как в ванилле: переопределение живёт в `RsxPlayer`, а не в
|
||||
`EntityLivingBase`.
|
||||
- Патчи в ванильное дерево — три строки (`PlayerControllerMP` создаёт
|
||||
`RsxPlayer`, `Minecraft` создаёт `RsxMovementInput`), вся логика — в нашем коде.
|
||||
|
||||
### 2.9 Декомпил ремейка лежит на диске
|
||||
|
||||
`G:\src-decoded` (5207 файлов, строки расшифрованы), также `G:\src`,
|
||||
`G:\builds\v31\src{,-decoded}` и `G:\decompiled-rustex`. Это **исходники клиента
|
||||
ремейка** — читаемый Java. Значит, поведение клиента можно смотреть, а не
|
||||
угадывать: конфиг оружия с отдачей (`recoilYawMin`, `recoilPitchMax`,
|
||||
`ADSScale`, `movementPenalty`, `shotsUntilMax`, `aimconeCurve`), схема
|
||||
viewmodel (`sway`, `bob`, `crouch`, `lower`, `freeLook`), формат данных —
|
||||
Unity-подобные ключи (`m_Name`, `MonoBehaviour`), читаются через `ctkmb`.
|
||||
|
||||
**Важно:** сами **значения** приходят с сервера (Unity-ассеты), в клиенте есть
|
||||
только схема и значения по умолчанию. Урон, отдача и спрей огнестрела — серверные
|
||||
данные; в клиенте только магазин, тип патрона, зум ADS, прочность и reach.
|
||||
|
||||
---
|
||||
|
||||
## 3. Архитектура
|
||||
@@ -997,8 +1033,15 @@ rsx-client\scripts\run-game.ps1 # клиент
|
||||
восстанавливается по сигнатуре формата: PNG — `b[0] ^ 0x89`, OGG — `b[0] ^ 0x4F`,
|
||||
JSON — `b[0] ^ 0x7B`. Уже декодировано: `assets/rustex/` (1.65 ГБ, 19 тыс. файлов).
|
||||
Скрипты: `tools/extract-rustex-assets.py`, `tools/extract-items.py`,
|
||||
`tools/extract-sounds.py`. **Осталось непрочитанным:** 553 `.obj`, 106 `.rrs`,
|
||||
113 `.nbt` — у них не однобайтовый шифр, нужен разбор кода.
|
||||
`tools/extract-sounds.py`, `tools/catalog-remake.py`.
|
||||
**Каталог всего, что есть у ремейка:** `assets/rustex/CATALOG.md` +
|
||||
`catalog.json` (218 предметов, 91 объект nextgen, 553 модели `.obj`
|
||||
(384 оружия, 128 постройки, 36 мебели, 4 руды), 133 иконки, 2004 звука,
|
||||
текстуры монументов и животных, скины игрока в `assets/rustex/player/`).
|
||||
- ⚠️ **Классы ремейка прочитать нельзя без взлома загрузчика.** Классы в `game.jar`
|
||||
помечены `DE AD C0 DE` и зашифрованы своим форматом (не однобайтовым XOR, как
|
||||
ассеты). **Но декомпил лежит на диске** — `G:\src-decoded` (п. 2.9): читать
|
||||
поведение клиента можно, REA не нужен.
|
||||
- **Текстуры предметов — временные** (взяты из ремейка как заглушки, иконки из
|
||||
`assets/rustex/gamejar/assets/rustex/icons/atlas.png`). **ПОМЕТКА: заменить на свои.**
|
||||
- **База предметов** — `rsx-protocol/src/main/resources/items/items.csv` (218 шт,
|
||||
|
||||
Reference in New Issue
Block a user