Начало работы с движком FOnline
Это первая страница для разработчика, который открыл репозиторий движка и хочет понять, что читать, что собирать и где проходит граница между движком и игрой.
Модель проекта
Сам по себе FOnline не является законченной игрой. Это переиспользуемый движок, который обычно подключается как подмодуль Engine/ внутри репозитория игры.
Ответственность разделена так:
- Репозиторий движка: среда выполнения, инструменты, модули сборки, конвейер ресурсов, скриптовый мост, упаковка для платформ, сторонний код и документация движка.
- Репозиторий игры: контент, скрипты, конфигурация проекта, пресеты, оформление, нативные расширения игры, решения по развёртыванию и документация конкретной игры.
Если вопрос относится к переиспользуемому поведению среды выполнения, инструментам движка, механике платформенной сборки или скриптовым и нативным контрактам, документируйте его здесь, в Engine/Docs/. Если вопрос относится к контенту, балансу, заданиям, текстам, картам или политике выпуска конкретной игры, документируйте его в документации этой игры.
Что читать сначала
- Прочитайте обзор репозитория в README.ru.md.
- Пройдите проверяемое руководство по первому headless-проекту.
- Запустите первый игровой клиент, затем внесите первое изменение контента и добавьте первый автоматизированный тест.
- Прочитайте Встраивание FOnline, чтобы понять, как игровой проект подключает движок.
- Перед другими действиями с CMake или платформенными пакетами прочитайте Процесс сборки.
- Для знакомства со структурой исходного кода откройте Source/README.ru.md.
- При изменении сгенерированных файлов, стадий CMake, упаковки или платформенных рабочих каталогов откройте BuildTools/README.ru.md.
Частые задачи
Я хочу создать или изучить игровой проект
Пройдите Первый headless-проект FOnline, изучите готовый
минимальный проект, а затем уроки
игрового примера Minimal Multiplayer.
После этого прочитайте Встраивание FOnline.
Корневые файлы CMake, .fomain, каталоги контента, скрипты и настройки выпуска
должны принадлежать репозиторию игры. Движок должен оставаться переиспользуемым.
Я хочу собрать проект или запустить тесты
Начните с Процесса сборки. Предпочитайте пресеты и задачи подключающего проекта. Предположения, сделанные только по движку, легко оказываются неверными, потому что реальные имена целей и пакетов, а также сгенерированные API-файлы задаются проектом.
Я хочу работать с gameplay scripts
Начните со Scripting для общего lifecycle и backend matrix. Для .fos modules используйте Стиль AngelScript и рефакторинг, а для .cs assemblies, async/cover analysis, build, bake, runtime и packaging — Managed C# scripting. Native scripting пока является зарезервированным placeholder, а не реализованным gameplay backend.
Я хочу отлаживать нативный код
Используйте нативную, AngelScript и Managed отладку. Там описаны symbols, mixed stacks, crash diagnostics, native debugger behavior, live attach AngelScript, Managed diagnostics и validation boundaries.
Я хочу работать с Web или Android
Используйте платформенную документацию:
Я хочу разобраться с разделением updater/runtime
Используйте раздел о client runtime и updater. ABI между хостом и средой выполнения клиента, а также протокол обновления достаточно сложны, поэтому их не следует восстанавливать только по коду.
Я хочу изменить nullability в скриптовом или нативном API
Используйте Nullability.md. Сохраняйте согласованность C++ annotations, generated AngelScript/Managed types, runtime checks и analyzers.
Правило документирования
Документация должна находиться рядом со своей областью ответственности:
- Общее переиспользуемое поведение движка ->
Engine/Docs/. - Входные страницы исходного кода или инструментов сборки ->
Engine/Source/README.md,Engine/BuildTools/README.mdили тематические файлы вEngine/Docs/. - Поведение конкретной игры ->
Docs/подключающего проекта.
При изменении поведения обновляйте отвечающий за него документ в том же изменении. Читатель не должен восстанавливать новые правила по исходному коду.