🌐 🇷🇺 Русский · Language · Язык · 語言 · Idioma · Sprache · भाषा · لغة
C2UI — Custom to User Interface — редактор Source Filmmaker в современной оболочке: тот же контент, тот же формат сессий, та же модель данных, интерфейс в духе библиотеки Steam и редактора Unreal Engine 5.
Source Filmmaker — сильный инструмент, интерфейс которого остался в 2012 году. C2UI не заменяет его и не переделывает: задача — сделать SFM немного современнее и удобнее.
Редактор находит установленный SFM, подключает его как библиотеку контента — модели, материалы, текстуры, сессии — и работает с теми же файлами в том же формате. Всё, что сделано в SFM, открывается в C2UI, и наоборот.
Первая цель — полная совместимость с SFM, включая кости и риги. Дальше — то, чего в SFM не хватало.
┌──────────────┐ ┌──────────────────────────────┐
│ C2UI │ ──── "где SFM?" ─────▶│ SourceFilmmaker/game/ │
│ │ │ usermod/gameinfo.txt │
│ свой UI │ ◀───── монтирует ─────│ tf/ hl2/ tf_movies/ … │
│ свой рендер │ только чтение │ models/ materials/ dmx │
└──────────────┘ └──────────────────────────────┘
- Переносимый. Ничего не пишется вне папки программы: настройки в
App/User, кэш вApp/Cache, временное вApp/Temporary. Удалили папку — не осталось следа. - Не запускает SFM. Нет процесса, которым надо управлять, нет окон, которые надо перехватывать. Установка читается как пакет контента.
- Форматы проверены, а не предположены. Каждая читалка сверена с настоящей установкой; там, где формат делает что-то неочевидное, код об этом говорит.
- Сохранение точное. Сессия, прочитанная и записанная без изменений, — тот же самый файл.
- Ядро без зависимостей.
Core/и все тесты работают на голом Python; Qt и OpenGL нужны только окну.
C2UI_SDK/
├── README.md
├── Core/ ядро: форматы, виртуальная ФС, индекс, мосты к установкам
│ ├── API/ контракт для редактора, инструментов и плагинов
│ ├── Code/ движок: анимация, операторы, лица, правки
│ │ └── formats/ читалки Valve: mdl vvd vtx vmt vtf dmx bsp
│ └── dev-kit/ слоты SDK (пустые) и мосты к установкам
├── App/ редактор: библиотека контента, рендер, окно
│ ├── Code/ библиотека контента, окно, настройки
│ │ ├── render/ сцена, рендерер OpenGL, шейдеры, камера
│ │ └── ui/ таймлайн, дерево сессии, инспектор, graph editor, докинг
│ ├── Data/ ресурсы программы, только чтение
│ ├── User/ данные пользователя — никогда не удаляются
│ └── Cache/ индекс контента, шейдеры, миниатюры
├── Tools/ локализация, инструменты UI, плагины (позже)
│ ├── Launcher/ лаунчер
│ ├── Market Load/ клиент маркетплейса плагинов (позже)
│ ├── Localization/ создание переводов
│ ├── NewPlugins/ создание плагинов
│ └── UI/ темы и рабочие пространства
├── Testing/ тесты, побайтовые фикстуры, один раннер
│ ├── core/ движок
│ ├── app/ редактор
│ └── fixtures/ поддельная установка, модели, текстуры
└── GIT&DOCK/ README, готовность и лицензия на 32 языках
Путь от «где Source Filmmaker?» до кадра на экране проходит через пять слоёв; каждый следующий знает только о предыдущем.
- Мост (
Core/dev-kit/bridge_sfm) находит установку через Steam, читаетgameinfo.txtи отдаёт пути контента в порядке движка.sfm.exeне запускается. - Виртуальная ФС и индекс (
Core/Code/vfs.py,content_index.py) накладывают эти пути друг на друга, как Source: первый найденный файл побеждает. Индекс — один файл SQLite вApp/Cache, поэтому обход 70 000 файлов делается один раз. - Форматы (
Core/Code/formats) читают файлы Valve без сторонних библиотек:.mdl.vvd.vtx— модель,.vmt.vtf— материал и текстура,.dmx— сессия,.bsp— карта. Каждая читалка проверена на всей установке; сессия записывается обратно байт в байт. - Сессия — граф элементов DMX.
animation.pyвычисляет каналы в момент времени,operators.pyвыполняет выражения и констрейнты ригов,flex.pyдвигает лица,pose.pyсобирает матрицы костей. Каждая правка идёт черезediting.pyкак команда с отменой. - Редактор (
App/Code) собирает из этого сцену (render/scene.py) и рисует её собственным рендерером на OpenGL 3.3 (renderer.py,shaders.py): свет сессии, лайтмапы и освещение карты — картинка пока далека от SFM и дорабатывается. Панели (ui/) — таймлайн, дерево сессии, инспектор, graph editor, докинг в духе UE5.
Всё, что программа пишет, остаётся в её папке: App/User — настройки, App/Cache — индекс и кэш, App/Temporary — журнал. Core/ не пишет ничего и не зависит от Qt, поэтому движок и тесты работают на голом Python; Qt и OpenGL нужны только окну. Инструменты в Tools/ собираются строго поверх Core/API — так проверяется, что API достаточен и для сторонних плагинов.
Нужны Windows, Python 3.13 и установленный Source Filmmaker.
git clone https://github.com/Arkomiko/SFM_C2UI.git
cd SFM_C2UI
python -m venv .venv
.venv/Scripts/python.exe -m pip install -r Tools/Launcher/requirements.txt
.venv/Scripts/python.exe Tools/Launcher/c2ui.pyПри первом запуске SFM ищется через Steam; если не нашёлся — программа спросит. Ctrl+O открывает сессию, Space — воспроизведение, C — камера шота, T/R — перемещение/поворот, M — motion editor, G — graph editor, Ctrl+Z — отмена, Ctrl+S — сохранить. Камера как в SFM: правая кнопка — осмотр, с зажатой правой WASD ZX — полёт (Shift быстрее), средняя — панорама, колесо — наезд, Alt+левая — орбита. Клик по персонажу выбирает кость под курсором (или её ручку рига). Панели перетаскиваются за заголовок. Тесты не требуют ничего:
python Testing/run.pyБлижайшее
- Облик карты: вода, prop_dynamic, гобо-текстуры света,
$bumpmapи$envmap, тени от света сессии. - Звук в экспортируемом видео.
- Плагины
.c2plgи клиент маркетплейса вTools/Market Load; затем темы и рабочие пространства. - Звук на таймлайне, частицы, wrinkle-карты, пресеты и слои motion editor, касательные в graph editor.
Дальше
- Производительность на полных картах: инстансинг статичных пропов, кэш поз.
- Переработка движка: новые параметры компиляции карт для улучшенного освещения и теней, лимит карты 120 000 юнитов.
- Упакованный лаунчер со своим Python и автообновлением; локализация редактора.
Собственный код C2UI распространяется по лицензии C2UI: свободно для личных и некоммерческих нужд; коммерческое использование — только по письменному согласию автора; при модификации — ссылка на оригинальный проект и автора Arkomiko. Плагины и аддоны — по лицензии C2UI — Plugins & Addons (C2UI‑Pl&AD).
Source Filmmaker, Team Fortress 2 и движок Source принадлежат Valve; проект читает их форматы, не содержит их файлов и работает только с вашей копией SFM из Steam.
