Fission SDK · C++ technical reference

Fission Layer Reference

Every layer/entity-name prefix registered by the Fission entity factories — gameplay pieces, cutters, particles, collectables, presentation and scene-structure layers — what each one means, and the animation, sound and particle files associated with it.

C++ runtime Source-derived defaults Constraints & caveats Reviewed 07 Sep 2026, against ~/Documents/dev/SDK/fission

Reference at a glance

current repository behavior
48
Registered prefixes
16
Collectable-family prefixes
4
Cutter layers
C++
Runtime scope

Browse and search

press Escape to clear

How to read this guide

reference section

A Fission scene is built from named layers. Every entity factory (fsCEntityFactory and its game-specific subclasses, principally gfCHogEntityFactory) looks at the leading characters of a layer name to find a registered "construction plan" and attach the matching C++ components. The prefix is what turns a plain layer into a piece, a cutter, a collectable, an emitter, or a piece of scene structure. Prefixes are matched literally and are case-sensitive; a name gfCHogEntityFactory cannot resolve to a plan asserts as an unknown entity type at level load.

Minigame piece, cutter and logic layers

reference section

Registered by gfCHogEntityFactory and detailed fully in the Minigame Parameter Reference; listed here for a complete prefix index.

PrefixLayer typeMeaningAssociated files
ROTRotate pieceDiscrete-rotation puzzle piece; each tap advances one stepcomponents/rotate/
CURRotate cutterCuts Rotate pieces from stencil art; also positions the minigame in place of legacy originX/originYgfICutterComponent.cpp, components/rotate/
FLPFlipsaw pieceSwap-to-solve piece, with optional inherited rotationcomponents/flipsaw/
FLPLGCFlipsaw logicgfCFlipsawMiniGameLogicComponent; tracks completion across FLP piecescomponents/flipsaw/
CUFFlipsaw cutterCuts Flipsaw pieces; also usable to position the minigamegfICutterComponent.cpp, components/flipsaw/
SLDSlidasquare pieceClassic or cyclic row/column sliding-puzzle tilecomponents/slidasquare/
CUSSlidasquare cutterCuts Slidasquare tiles; also usable to position the minigamegfICutterComponent.cpp, components/slidasquare/
JIGJigsaw pieceDraggable, optionally rotating and clustering jigsaw piececomponents/jigsaw/
JIGLGCJigsaw logicgfCJigsawMiniGameLogicComponent; deck, drag and completion logiccomponents/jigsaw/
CUJJigsaw cutterCuts jigsaw pieces, including tongue/groove edges; also usable to position the minigamegfICutterComponent.cpp, components/jigsaw/
PRSPairs pieceMatching-pairs card; numeric suffix sets the match groupcomponents/pairs/
JTDJoin the Dots layerOrdered-tap entity; numeric suffix sets tap order, dummy names count as completecomponents/joinTheDots/
DIFSpot the Difference layerPaired difference hotspot; naming alone drives behaviourcomponents/spotTheDiff/
WRDWord Search layerGrid/tile-set word-search minigame logic; WRD-Minigame also positions itcomponents/wordGames/wordSearch/
WTGWord Tiles layerPhrase-building tile layout minigamecomponents/wordGames/wordTiles/

Particle layers

reference section

PAR and PRC name emitter layers rather than gameplay pieces. Both are read by the fsRenderer particle components and construct their emitter from a referenced particle .txt file; see the Particle Parameter Reference for the file format.

PrefixComponentAssociated files
PARfsCParticleEmitterComponentparticles/PAR-<name>.txt, searched in the level's localized particles folder then the global particles/ folder
PRCfsCParticleCloudEmitterComponentSame particle .txt, plus a spawn-cloud PNG from the localized level layers folder, the ordinary layers folder, then a PNG beside the particle file
PHTgfCPhotographableComponent + fsCParticleEmitterComponentSame particle .txt convention as PAR; also flagged photographable for the in-game camera minigame

Word Search sub-entity layers

reference section

gfCMinigameWordComponent registers two further prefixes used inside a Word Search grid, distinct from the WRD layer that carries the grid logic itself.

PrefixMeaning
WSWWord Search word entity — one hidden word to find.
WSIWord Search image entity — a sprite paired with a WSW word (fsCSpriteComponent attached).

Collectable and pickable layers

reference section

All of these derive gfICollectableComponent (directly, or via gfCTappableCollectableComponent / gfCGroupCollectableComponent), so they share the same on-collection asset lookup — see Collection asset chain.

PrefixMeaning
PCKRandom pickable — ordinary hidden-object list item.
HOMRandom pickable homophone — list item shown only in English-locale builds.
REQRequired pickable — must be found to complete the scene.
HDNHidden pickable — concealed list item (e.g. behind a mask or fold).
BNSBonus pickable — optional item collected into the bonus pick list.
BSLBonus silhouette pickable — "lost and found" style silhouette item.
BSPBonus photo pickable — collected via the photo-capture minigame.
BNBBonus-bonus pickable — secondary bonus round item.
BSSBonus staff pickable — bonus item counted with the staff/bonus list.
PCGGroup pickable — gfCGroupCollectableComponent; several sprites collected as one list entry.
TSKTask — gfCTaskComponent; a rollover/task-list objective.
HOTHot collectable — gfCHotComponent; a mandated item that changes the cursor on hover.
TRPTrap — gfCTrapComponent; a non-mandatory collectable, typically a hazard/decoy.
PRELock — gfCLockComponent; collected by dragging a matching INS key onto it.
INVInventory item — gfCInventoryComponent; collected into the player's inventory with a spin-to-sack effect.
INTInventory tool — gfCInventoryComponent variant for a reusable tool rather than a consumed item.

Draggable key layer

reference section

Identifier: INS (gfCDraggableKeyComponent). Dragged onto a matching PRE lock layer to collect it. INS does not go through gfICollectableComponent, so it has its own asset conventions instead of the chain below.

AssetPath convention
Inventory iconinventoryIcons/<name>.png
Hit-test delegateinventoryIcons/<name>C_hit.png (optional, refines the drag hit area)
Icon offsetinventoryIcons/<name>.txt (optional xOffset/yOffset key-value pair)
Drop soundaudio/sfx/<name>.wav

Presentation and incidental layers

reference section
PrefixMeaningAssociated files
ANMIncidental animation — fsCAnimatingSpriteComponent, a looping or one-shot background animationSee Animation layer files
TXTScene text — gfCSceneTextComponent, localized on-scene textcomponents/gfCSceneTextComponent.cpp
MASKPlain masked sprite; also the fallback for any hyphen-less layer namecomponents/gfCMaskComponent.cpp
NAVNavigation hotspot — gfCNavigateComponent, moves the player between scenescomponents/gfCNavigateComponent.cpp
ATRActor — fsCActorComponent, a scripted/animated charactercomponents/actor/fsCActorComponent.cpp
TUTTutorial hotspot — gfCTutorialComponent, drives the tutorial sequencercomponents/gfCTutorialComponent.cpp
parallaxParallax layer — gfCParallaxComponent, a depth-scrolling background sprite (lower-case prefix)components/gfCParallaxComponent.cpp
3DS3D scene sprite — fsC3dSceneSpriteComponent (fs3d builds only)libs/fs3d/components/fsC3dSceneSpriteComponent.cpp

Scene-structure layers

reference section
PrefixMeaning
BackgroundSub-scene marker — gfCHogSubSceneComponent. Authored as a lower-case "background" layer name (last path segment); the loader rewrites it to this prefix before lookup.
GenBackgroundGenerated sub-scene marker — gfCGeneratedHogSubSceneComponent, used for procedurally generated sub-scenes.
SUBSub-scene navigation hotspot — gfCSubSceneNavigateComponent, moves the player between sub-scenes.

Visibility modifiers

reference section

A single-character modifier can be prepended before any other prefix on a layer name (fsCNameComponent::mHiddenPrefix / mVisiblePrefix), read by gfCVisibilityStateComponent. It is stripped before the normal prefix lookup and adds a visibility-toggle component to the entity.

ModifierMeaning
-Entity starts hidden; some other trigger makes it visible.
+Entity starts visible; some other trigger can hide it.

Collection asset chain

reference section

Every layer in Collectable and pickable layers goes through the same lookup, driven by gfCCollectionEffectFactory and gfICollectableComponent, once it is collected. Each step is tried in order and the first matching file wins; more than one can fire (an SFX plays alongside a visual effect).

StepFile looked upNotes
1. Collection animation<sceneFolder>/<name-without-prefix>.xml, then .scmlPlayFirst XML tried first, then Spriter SCML. Must not be a looping animation.
2. Collection particleparticles/PAR-<name-without-prefix>.txtMinigame-piece collectables use the miniGameCollectionParticle app setting instead of a per-entity file.
3. Default fadenoneFallback fade-out of the entity's own sprite when no lock/hot component and no other effect fired.
4. Collected SFX<sceneFolder>/<name-without-suffix>.txtA pointer text file whose contents are trimmed and used as the actual sound-asset path, then played.
5. Post-collection particleparticles/PAR-<name-without-prefix>-post.txtFires once the collection effect(s) above finish; disabled again on reset.
6. Post-collection markerGlobal asset, not per-entityAdded only when the level table sets postCollectionVisible; the marker animation comes from the level's postCollectionVisibleMarker setting, falling back to the app-wide diffFoundMarker setting.

Several prefixes also add a bespoke movement effect and a global (not per-entity) sound on top of the chain above:

Prefix(es)Extra effectGlobal sound setting
REQ, PCK, PCG, HOM, HDNTrail to the pick listsfxCollectHOGList
BNSSpin to the bonus trash binsfxCollectTrash
BNBSpin to the extra-bonus binsfxCollectTrash (shared)
BSLTrail to the "lost and found" bonus pick listsfxCollectLostFound
BSPphotoCollectionParticle effectsfxPhotoEffect
INV, INTSpin to the inventory sacksfxInventoryEffect
HOT— (only if no other effect fired)sfxHotEffect

Animation layer files

reference section

An ANM layer (fsCAnimatingSpriteComponent) resolves its animation data by trying four candidate filenames in order, relative to the scene folder, and using the first one that exists:

OrderCandidate file
1ANM-<name-without-prefix>.xml (PlayFirst-style animation)
2ANM-<name-without-prefix>.scml (Spriter)
3<full layer name with the ANM- prefix stripped>, no extension appended
4<full layer name>, unmodified, as a last-resort literal path

Naming and prefix mechanics

reference section
RuleDetail
Prefix extractiongfCHogEntityFactory cuts the name at its first hyphen, then strips any remaining leading digits, so both ROT-piece1 and a hyphen-less ROT2 resolve to prefix ROT.
Case sensitivityPrefixes are matched exactly as registered; ROT and rot are different, unregistered strings.
Visibility modifierA leading - or + (see Visibility modifiers) is stripped before the prefix lookup above runs.
Hyphen-less fallbackAny layer name with no hyphen at all (and that isn't the parallax prefix) is treated as a MASK-type plain sprite by default.
background rewriteA layer whose final path segment is literally "background" (lower case) is rewritten to the Background prefix before lookup.
Unresolved prefixgfCHogEntityFactory::entityConstruct() asserts "Unknown entity type" for any prefix with no registered plan — see the AGM caveat above.

Source map

reference section

Primary files reviewed against ~/Documents/dev/SDK/fission; update this guide whenever a registered prefix, its component, or its asset-resolution order changes:

libs/fsAppCore/src/fsCEntityFactory.cppgameModules/gfHogCore/src/gfCHogEntityFactory.cppgameModules/gfHogCore/src/gfCCollectionEffectFactory.cppgameModules/gfHogCore/components/gfCHogLevelLoaderComponent.cppgameModules/gfComponents/gfILevelLoaderComponent.cppgameModules/gfComponents/gfICollectableComponent.cppgameModules/gfComponents/components/{gfCTappableCollectableComponent,gfCGroupCollectableComponent,gfCHotComponent,gfCTrapComponent,gfCLockComponent,gfCTaskComponent,gfCDraggableKeyComponent,gfCNavigateComponent,gfCTutorialComponent,gfCPhotographableComponent,gfCVisibilityStateComponent}.cppgameModules/gfComponents/components/subScene/{gfCSubSceneComponent,gfCSubSceneNavigateComponent}.cppgameModules/gfHogCore/components/{gfCMaskComponent,gfCSceneTextComponent,gfCParallaxComponent,gfCGeneratedHogSubSceneComponent}.cppgameModules/gfGameCore/components/gfCInventoryComponent.cppgameModules/gfMinigameCore/components/wordGames/gfCMinigameWordComponent.cpplibs/fsRenderer/src/components/{fsCAnimatingSpriteComponent,fsCParticleEmitterComponent,fsCParticleCloudEmitterComponent}.cpplibs/fsAppCore/src/components/actor/fsCActorComponent.cpplibs/fsAppCore/src/components/fsCNameComponent.cpplibs/fs3d/components/fsC3dSceneSpriteComponent.cpp