Приложения и точки входа
Этот документ сопоставляет точки входа приложений в Source/Applications/ и их wiring в BuildTools.
Владение build target
Исходные файлы приложений принадлежат движку, но target names и включение часто зависят от проекта. BuildTools/cmake/stages/Applications.cmake создаёт targets из этих точек входа с помощью project variables, включая FO_DEV_NAME, platform options и feature toggles режимов client/server/library/headless.
Поэтому документ называет source entrypoints и роли, а не универсальные конечные target names.
Проверенные пути исходного кода
Source/Applications/ASCompilerApp.cppSource/Applications/AnimationViewerApp.cppSource/Applications/BakerApp.cppSource/Applications/BakerLib.cppSource/Applications/ClientApp.cppSource/Applications/ClientLib.cppSource/Applications/MapperApp.cppSource/Applications/ManagedScriptBakerApp.cppSource/Applications/ParticleViewerApp.cppSource/Applications/ServerApp.cppSource/Applications/ServerDaemonApp.cppSource/Applications/ServerHeadlessApp.cppSource/Applications/ServerServiceApp.cppSource/Applications/TestingApp.cppBuildTools/cmake/stages/Applications.cmakeBuildTools/cmake/helpers/Build.cmake
Файлы точек входа
Source/Applications/ClientApp.cpp- точка входа host исполняемого client.Source/Applications/ClientLib.cpp- точка входа client runtime library для workflow с разделением host/runtime.Source/Applications/ServerApp.cpp- точка входа стандартного server application.Source/Applications/ServerDaemonApp.cpp- вариант server в стиле daemon.Source/Applications/ServerHeadlessApp.cpp- вариант headless server.Source/Applications/ServerServiceApp.cpp- вариант server в стиле service.Source/Applications/MapperApp.cpp- точка входа инструмента Mapper.Source/Applications/AnimationViewerApp.cpp- standalone host preview critter animation.Source/Applications/ParticleViewerApp.cpp- standalone host preview baked particles.Source/Applications/BakerApp.cpp- точка входа baking build/resources.Source/Applications/BakerLib.cpp- точка входа baking library при композиции baking как library.Source/Applications/ASCompilerApp.cpp- точка входа AngelScript compiler.Source/Applications/ManagedScriptBakerApp.cpp- standalone entrypoint генерации Managed C# API и compilation, используемыйCompileManagedScripts.Source/Applications/TestingApp.cpp- точка входа приложения test runner.
Wiring CMake
BuildTools/cmake/stages/Applications.cmake является главным источником создания application targets. Он использует helpers AddExecutableApplication и AddSharedApplication для executable или shared-library outputs и назначения platform-specific properties.
Наблюдаемые patterns wiring:
- Client executable и client runtime library создаются, когда включены client builds.
- Headless variants используют headless frontend libraries, где это применимо.
- Варианты server выбираются server/platform/service options.
- Mapper, AnimationViewer и ParticleViewer создаются вместе при включённом
FO_BUILD_MAPPER. Viewers переиспользуют client и baker services, но не запускают Mapper или networked client loop. - Test applications помечаются как testing apps для отдельной обработки от product runtime apps.
- AngelScript compiler и Managed script baker являются отдельными script build applications. Их generated project targets существуют только при включённом соответствующем backend.
Перед объявлением target доступным прочитайте CMake stage. Доступность может зависеть от platform и project options.
Hook настроек запуска клиента
Приложения, создающие ClientEngine, вызывают предоставленный проектом ClientStartupSettingsHook(GlobalSettings&, int32_t clientIndex, bool embedded) непосредственно перед созданием client:
ClientApp.cppвызывает его для standalone client сclientIndex = 1иembedded = false.ServerApp.cppвызывает его для каждого GUI embedded client после копирования app settings в принадлежащий clientGlobalSettings.ServerHeadlessApp.cppвызывает его для каждого headless embedded client после копирования app settings в принадлежащий clientGlobalSettings.
Встроенные в server clients сохраняют отдельные settings objects на всё время жизни своего ClientEngine. Это позволяет встраивающему проекту менять per-client settings, включая auth identity, AI-control ports, diagnostics или transport toggles, не изменяя server App->Settings или уже созданные clients. Hook предназначен только для startup-time configuration; после создания ClientEngine продолжают действовать обычные client/server authority и правила script-visible settings.
Standalone animation и particle viewers также создают ClientEngine, но намеренно используют application settings напрямую и не вызывают gameplay startup hook: у них нет account, network session или embedded client index.
Какую точку входа проверять?
- Client startup или host/runtime behavior:
ClientApp.cpp,ClientLib.cpp, Client Updater. - Жизненный цикл сервера:
ServerApp.cppи серверные варианты, Серверная среда выполнения. - Resource generation:
BakerApp.cpp,BakerLib.cpp, Baking Pipeline. - Script compilation:
ASCompilerApp.cppдля AngelScript иManagedScriptBakerApp.cppдля Managed C#; см. Scripting, Managed C# scripting и Generated API and Metadata. - Автоматизация Mapper:
MapperApp.cpp, инструменты Mapper. - Animation inspection:
AnimationViewerApp.cpp,Source/Tools/AnimationViewer.*, просмотр анимации и частиц. - Particle inspection:
ParticleViewerApp.cpp,Source/Tools/ParticleViewer.*, просмотр анимации и частиц и Particle Format. - Tests:
TestingApp.cpp, Source/Tests README и Testing.
Правило документации
При добавлении или изменении application entrypoint:
- Обновите
BuildTools/cmake/stages/Applications.cmakeили его helpers, если меняется создание target. - Обновите этот файл ролью entrypoint.
- Обновите тематический subsystem doc, если меняется runtime behavior.
- Обновите
BuildTools/PackageInterface.json, если меняются package roles или compatibility. - Проверяйте через соответствующий preset/target встраивающего проекта, а не предполагаемый универсальный target name.