Skip to content

xuevertalex-web/RFMapToolMain

Repository files navigation

RFMapToolSharp

Консольный инструмент на C# (.NET 8) для извлечения геометрии карт RF Online и экспорта в .glb.

Что делает проект

  • Ищет папку Map/map клиента RF Online.
  • Обрабатывает карты пакетно:
    • все карты,
    • одну карту по номеру,
    • карты по фильтру имени.
  • Читает геометрию из .bsp (BSP parser).
  • Читает материалы из .r3m (если файл найден).
  • Читает текстуры из .r3t и конвертирует DDS → PNG в памяти.
  • Экспортирует результат в GLB через SharpGLTF.
  • Копирует папку Spt в каталог экспорта и добавляет SPT-объекты как debug-маркеры (кубы).
  • Складывает результат в RF_Release/<map_name>/<map_name>.glb.

Что сейчас работает

  • Сборка проекта проходит (dotnet build без ошибок).
  • Экспорт базовой геометрии карты из BSP.
  • Базовое применение материалов и текстур (где данные корректно читаются).
  • Обработка прозрачности для части материалов (эвристики по имени и alpha type).
  • Пакетная обработка нескольких карт.
  • Для карты Sette добавлен экспорт BSP-анимации для ObjectId 1/2 в glTF animations (TRS-каналы).
  • Для Sette добавлен расширенный диагностический пакет по mg89..92:
    • build_trace_mg89_92.json
    • mg_face_vertices_89_92.json
    • mg_face_index_stream_89_92.json
    • mg_triangles_emitted_89_92.json
    • vertex_pool_ranges.json
    • face_plane_metrics_89_92.json
    • transform_usage_89_92.json
    • corner_order_signature_89_92.json
    • triangle_quality_89_92.json
    • uv_gradient_89_92.json
    • face_neighbor_graph_89_92.json

Актуальный статус (2026-05-18)

  • Временный donor-режим удален из рабочего пайплайна.
  • Основной экспорт снова формирует RF_Release/<map>/<map>.glb без отдельного Sette_Donor.
  • Диагностика по mg89..92 оставлена только для Sette, чтобы не засорять остальные карты.

Ограничения и что пока не работает полноценно

  • SPT-объекты экспортируются не реальными моделями, а debug-кубами (позиция, поворот, масштаб сохраняются).
  • Нет полноценной загрузки и привязки игровых моделей объектов из SPT (по modelName) в GLB.
  • Поддержка некоторых форматов пока частичная или в виде задела:
    • .ebp, .rvp, .r3x читаются в коде, но не интегрированы в финальный экспорт сцены.
  • Качество материалов и UV может отличаться от игры на сложных картах.
  • Проект сейчас ориентирован на Windows-окружение и структуру папок клиента RF Online.

Известные проблемы

  • В части исходников и комментариев встречаются текстовые артефакты (кракозябры, mojibake, битая кодировка).
  • Проблема связана со смешением кодировок (UTF-8/Windows-1251) в старых файлах.
  • На работу экспорта это обычно не влияет, но ухудшает читаемость кода и логов.

Зависимости

  • .NET 8
  • SharpGLTF
  • Pfim
  • SixLabors.ImageSharp

Известные технические моменты

  • В зависимостях есть предупреждение безопасности для SixLabors.ImageSharp 3.1.7 (NU1902, medium).
  • В коде есть несколько компиляторных warning'ов (nullable, unused, unreachable), но критичных ошибок сборки нет.

Как запустить

dotnet build -c Debug
dotnet run

Дальше в консоли выбрать режим экспорта (все карты, одна карта, по фильтру).

Roadmap

  • Подгрузка реальных моделей объектов из SPT вместо debug-кубов.
  • Более точная реконструкция материалов и шейдерных параметров RF.
  • Интеграция данных .ebp, .rvp, .r3x в GLB-сцену.
  • Чистка warning'ов, исправление кодировок в исходниках и обновление уязвимых пакетов.

Поисковые ключи

RF Online, RFOnline, Rising Force Online, RF map tool, RF Online map export, RF Online BSP, RF Online R3M, RF Online R3T, RF Online SPT, RF Online GLB, RF Online GLTF, RF Online modding, RF Online tools.

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors

Languages