Audience: Engine Contributor
This reference is a practical index into the engine APIs most demo users and contributors touch. It is not a generated Doxygen replacement.
Components use macros from engine/ecs/component_registry.h.
FATE_COMPONENT(MyComponent)
FATE_COMPONENT_HOT(MyHotComponent)
FATE_COMPONENT_COLD(MyColdComponent)Each macro supplies:
COMPONENT_NAMECOMPONENT_TYPE_IDCOMPONENT_TIERenabled
The enabled field is intentionally part of serialized component layout.
Header: engine/ecs/component_meta.h
Core API:
ComponentMetaRegistry::instance()registerComponent<T>()registerComponent<T>(customToJson, customFromJson)registerAlias(alias, canonical)findByName(name)findById(id)forEachMeta(fn)
Use custom serializers when a component has runtime-only fields that cannot be represented directly as JSON. SpriteComponent does this for its live texture pointer.
The public demo registration path currently registers:
| Component | Purpose |
|---|---|
Transform |
Position, rotation, and scale for scene entities. |
SpriteComponent |
Texture-backed 2D sprite rendering and sprite-sheet fields. |
TileLayerComponent |
Tile layer data for editor-authored maps. |
Registered in:
engine/components/register_engine_components.h
The local full tree currently registers these component names. Treat this list as a source snapshot, not a permanent contract.
Regenerate with:
rg -o "registerComponent<[^>]+>" game\register_components.h engine\components\register_engine_components.hCurrent unique registered names:
AnimatorAppearanceComponentArenaNPCComponentBankerComponentBankStorageComponentBattlefieldNPCComponentBoxColliderCharacterFlagsComponentCharacterStatsComponentChatComponentCollectionComponentCombatControllerComponentCostumeComponentCraftingNPCComponentCrowdControlComponentDamageableComponentDroppedItemComponentDungeonNPCComponentEnemyStatsComponentFactionComponentFriendsComponentGuardComponentGuildComponentGuildNPCComponentInnkeeperComponentInteractSiteComponentInventoryComponentLeaderboardNPCComponentMarketComponentMarketplaceNPCComponentMobAIComponentMobNameplateComponentNPCComponentNameplateComponentParticleEmitterComponentPartyComponentPetComponentPetFollowComponentPlayerControllerPointLightComponentPolygonColliderPortalComponentQuestComponentQuestGiverComponentQuestMarkerComponentShopComponentSkillManagerComponentSpawnPointComponentSpawnZoneComponentSpriteComponentStatusEffectComponentStoryNPCComponentTargetingComponentTeleporterComponentTileLayerComponentTradeComponentTransformZoneComponent
Many of these are full-game components. Public demo docs should not promise them unless they are included in the release package.
Header: engine/ecs/archetype.h
Important types:
ArchetypeIdRowIndexArchetypeColumnArchetypeTypeInfoArchetypeStorage
Important methods:
registerType<T>()registerTypeById(cid, size, alignment)findOrCreateArchetype(typeIds)addEntity(archId, handle)
Structural changes can migrate entities between archetypes. Re-fetch component pointers after add/remove/destroy operations.
Headers:
engine/ecs/prefab.hengine/ecs/prefab_variant.h
Use prefabs for authorable entity templates. Components must be registered in ComponentMetaRegistry to serialize and deserialize reliably.
Header: engine/asset/asset_registry.h
Important types:
AssetKindAssetStateAssetLoaderAssetSlotAssetHandle
Important methods:
registerLoader(loader)load(path)loadAsync(path)processAsyncLoads(maxPerFrame)isReady(handle)isResolved(handle)pendingAsyncCount()queueReload(path)processReloads(currentTime)find(path)clear()setSource(source)readBytes(assetKey)readText(assetKey)recentReads()
Threading rule: queueReload is thread-safe. Most other registry operations are main-thread-only.
Header: engine/render/texture.h
Important methods:
TextureCache::instance()load(path)get(path)clear()setVRAMBudget(bytes)vramBudget()estimatedVRAM()touch(path)evictIfOverBudget()entryCount()advanceFrame()placeholder()requestAsyncLoad(path)processUploads(maxPerFrame)hasPendingLoads()
The default VRAM budget is 512 MB. Device recommendations are in engine/platform/device_info.*.
Header: engine/job/job_system.h
Important types:
JobCounterCounterPoolJobSystem
Important methods:
JobSystem::instance()init(workerCount)shutdown()submit(jobs, count)submitFireAndForget(jobs, count)tryPushFireAndForget(job)waitForCounter(counter, target)fiberScratchArena()
Worker fibers are for background work. Keep ECS mutation, editor state mutation, and GPU upload on the main thread unless a system explicitly documents otherwise.
Header: engine/platform/device_info.h
Important methods:
getPhysicalRAM_MB()getDeviceTier()recommendedVRAMBudget()getThermalState()getDisplayRefreshRate()recommendedFPS()
Device tiers:
- Low: 200 MB VRAM budget.
- Medium: 350 MB VRAM budget.
- High: 512 MB VRAM budget.
Headers:
engine/net/packet.hengine/net/game_messages.hengine/net/net_client.hengine/net/net_server.hengine/net/reliability.hengine/net/packet_crypto.h
Current source protocol version:
PROTOCOL_VERSION = 20Do not duplicate large packet tables by hand without a regeneration command. Packet IDs and payloads change as the full game evolves.