FOnline Engine
Current master GitHub
Документация Docs/ru/tutorials/getting-started.md

Начало работы с движком FOnline

Это первая страница для разработчика, который открыл репозиторий движка и хочет понять, что читать, что собирать и где проходит граница между движком и игрой.

Модель проекта

Сам по себе FOnline не является законченной игрой. Это переиспользуемый движок, который обычно подключается как подмодуль Engine/ внутри репозитория игры.

Ответственность разделена так:

  • Репозиторий движка: среда выполнения, инструменты, модули сборки, конвейер ресурсов, скриптовый мост, упаковка для платформ, сторонний код и документация движка.
  • Репозиторий игры: контент, скрипты, конфигурация проекта, пресеты, оформление, нативные расширения игры, решения по развёртыванию и документация конкретной игры.

Если вопрос относится к переиспользуемому поведению среды выполнения, инструментам движка, механике платформенной сборки или скриптовым и нативным контрактам, документируйте его здесь, в Engine/Docs/. Если вопрос относится к контенту, балансу, заданиям, текстам, картам или политике выпуска конкретной игры, документируйте его в документации этой игры.

Что читать сначала

  1. Прочитайте обзор репозитория в README.ru.md.
  2. Пройдите проверяемое руководство по первому headless-проекту.
  3. Запустите первый игровой клиент, затем внесите первое изменение контента и добавьте первый автоматизированный тест.
  4. Прочитайте Встраивание FOnline, чтобы понять, как игровой проект подключает движок.
  5. Перед другими действиями с CMake или платформенными пакетами прочитайте Процесс сборки.
  6. Для знакомства со структурой исходного кода откройте Source/README.ru.md.
  7. При изменении сгенерированных файлов, стадий 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/ подключающего проекта.

При изменении поведения обновляйте отвечающий за него документ в том же изменении. Читатель не должен восстанавливать новые правила по исходному коду.

Введите запрос.