Difference between revisions of "Class IDs"

From Mania Tech Wiki
Jump to navigation Jump to search
(Restore last known version from tm-wiki.org)
 
(update info, add cat)
Line 1: Line 1:
Class IDs are a mechanism used internally in TrackMania, mainly in [[PAK|.pak]] and [[GBX|.gbx]] files. A class ID is a 32-bit integer that references a class which can interpret a given piece of data.
+
'''Class IDs''' are a mechanism used internally in the [[GameBox]] engine, mainly in [[GBX|.gbx]] and [[PAK|.pak]] files. A class ID is a 32-bit unsigned integer that references a class which can interpret a given piece of data.
  
 
For example, a .gbx file could have as class ID 0x03043000, which corresponds to the class "CGameCtnChallenge". This shows that the file contains a track definition. Another example is a file in a .pak archive with class ID 0x09022000: this is CPlugFileJpg, so the file is a JPEG image.
 
For example, a .gbx file could have as class ID 0x03043000, which corresponds to the class "CGameCtnChallenge". This shows that the file contains a track definition. Another example is a file in a .pak archive with class ID 0x09022000: this is CPlugFileJpg, so the file is a JPEG image.
  
Classes are organized into 16 groups called ''engines''. Each class can also be subdivided into a number of ''chunks''. These three indices are laid out in the class ID as follows:
+
== Organisation ==
 +
 
 +
Classes are organised into 16 groups called ''engines''. Each class can also be subdivided into a number of ''chunks''. These three indices are laid out in the class ID as follows:
  
 
  engine class chunk
 
  engine class chunk
Line 10: Line 12:
 
Each class also includes publicly accessible fields and methods. For details on this, see [[Scripting]].
 
Each class also includes publicly accessible fields and methods. For details on this, see [[Scripting]].
  
==Engine and class IDs==
+
== Engine and class IDs ==
These are all the existing engines and classes as found in TMF.
+
 
 +
These are all the existing engines and classes as found in TrackMania Forever.
  
 
  engine
 
  engine
Line 1,008: Line 1,011:
 
     008 CGameCtnPlaygroundActionModel
 
     008 CGameCtnPlaygroundActionModel
  
==Class ID mappings==
+
== Class ID mappings ==
 +
 
 
The last engine in the list of engines is 0x24, "TrackMania". It used to contain a lot of classes which have now been moved to more generic engines, like 0x03 (Game). This is the case for e.g. challenges, which used to be 24 003 000 but are now 03 043 000.
 
The last engine in the list of engines is 0x24, "TrackMania". It used to contain a lot of classes which have now been moved to more generic engines, like 0x03 (Game). This is the case for e.g. challenges, which used to be 24 003 000 but are now 03 043 000.
  
Since TrackMania needs to stay compatible with older gbx files, it maps old class IDs to new ones when loading the file. This only happens up to the class level; chunk indices stay the same.
+
Since the GameBox engine needs to stay compatible with older .gbx files, it maps old class IDs to new ones when loading the file. This only happens up to the class level; chunk indices stay the same.
  
 
  24003000 -> 03043000
 
  24003000 -> 03043000
Line 1,162: Line 1,166:
 
  0301C000 -> 2E002000
 
  0301C000 -> 2E002000
  
==Class IDs by file extension==
+
== Class IDs by file extension ==
 +
 
 
When loading a file, TrackMania determines the class to parse it with by querying a table with the file's extension. The exception is .gbx files, where extension detection is hardcoded (and so .gbx is not found in the table).
 
When loading a file, TrackMania determines the class to parse it with by querying a table with the file's extension. The exception is .gbx files, where extension detection is hardcoded (and so .gbx is not found in the table).
  
Line 1,202: Line 1,207:
 
  .wav        09031000 (CPlugFileWav)
 
  .wav        09031000 (CPlugFileWav)
 
  .zip        09084000 (CPlugFileZip)
 
  .zip        09084000 (CPlugFileZip)
 +
 +
[[Category:Internals]]

Revision as of 13:48, 5 June 2017

Class IDs are a mechanism used internally in the GameBox engine, mainly in .gbx and .pak files. A class ID is a 32-bit unsigned integer that references a class which can interpret a given piece of data.

For example, a .gbx file could have as class ID 0x03043000, which corresponds to the class "CGameCtnChallenge". This shows that the file contains a track definition. Another example is a file in a .pak archive with class ID 0x09022000: this is CPlugFileJpg, so the file is a JPEG image.

Organisation

Classes are organised into 16 groups called engines. Each class can also be subdivided into a number of chunks. These three indices are laid out in the class ID as follows:

engine class chunk
03     043   000

Each class also includes publicly accessible fields and methods. For details on this, see Scripting.

Engine and class IDs

These are all the existing engines and classes as found in TrackMania Forever.

engine
    classes
    ...
00
    105 CMwCmdExpStringConcat
01 MwFoundations
    001 CMwNod
    003 CMwEngine
    005 CMwCmd
    006 CMwParam
    007 CMwParamClass
    008 CMwParamStruct
    009 CMwParamAction
    00C CMwParamBool
    00D CMwParamEnum
    00E CMwParamInteger
    00F CMwParamIntegerRange
    010 CMwParamNatural
    011 CMwParamNaturalRange
    012 CMwCmdFastCall
    013 CMwParamReal
    014 CMwParamRealRange
    015 CMwParamString
    016 CMwParamVec3
    017 CMwParamIso3
    018 CMwParamColor
    019 CMwParamVec2
    01A CMwParamIso4
    01C CMwCmdBuffer
    01E CMwCmdFiber
    01F CMwParamVec4
    020 CMwCmdBufferCore
    022 CMwClassInfoViewer
    024 CMwParamProc
    026 CMwRefBuffer
    027 CMwParamRefBuffer
    028 CMwParamStringInt
    029 CMwStatsValue
    030 CMwCmdBlock
    031 CMwCmdInst
    032 CMwCmdAffectIdent
    033 CMwCmdAffectParam
    034 CMwCmdCall
    035 CMwCmdFor
    036 CMwCmdIf
    037 CMwCmdWhile
    038 CMwCmdExp
    039 CMwCmdExpAdd
    03A CMwCmdExpAnd
    03B CMwCmdExpBool
    03C CMwCmdExpBoolIdent
    03D CMwCmdExpBoolParam
    03E CMwCmdExpDiff
    03F CMwCmdExpDiv
    040 CMwCmdExpEgal
    041 CMwCmdExpInf
    042 CMwCmdExpInfEgal
    043 CMwCmdExpMult
    044 CMwCmdExpNeg
    045 CMwCmdExpNot
    046 CMwCmdExpNum
    047 CMwCmdExpNumIdent
    048 CMwCmdExpNumParam
    049 CMwCmdExpOr
    04A CMwCmdExpPower
    04B CMwCmdExpSub
    04C CMwCmdExpSup
    04D CMwCmdExpSupEgal
    04E CMwCmdExpString
    04F CMwCmdExpStringIdent
    050 CMwCmdExpStringParam
    052 CMwCmdScript
    053 CMwCmdExpNumBin
    054 CMwCmdExpBoolBin
    055 CMwCmdExpNumFunction
    056 CMwCmdExpClass
    057 CMwCmdExpClassIdent
    058 CMwCmdExpClassParam
    059 CMwCmdExpEnum
    05A CMwCmdExpEnumParam
    05B CMwCmdSwitch
    05C CMwCmdExpVec2
    05D CMwCmdExpVec2Ident
    05E CMwCmdExpVec2Param
    05F CMwCmdExpVec3
    060 CMwCmdExpVec3Ident
    061 CMwCmdExpVec3Param
    062 CMwCmdExpIso4
    063 CMwCmdExpIso4Ident
    064 CMwCmdExpIso4Param
    065 CMwCmdBlockCast
    066 CMwCmdSwitchType
    067 CMwCmdBlockMain
    068 CMwCmdScriptVar
    069 CMwCmdScriptVarBool
    06A CMwCmdScriptVarClass
    06B CMwCmdScriptVarFloat
    06C CMwCmdScriptVarInt
    06D CMwCmdScriptVarIso4
    06E CMwCmdScriptVarString
    06F CMwCmdScriptVarVec2
    070 CMwCmdScriptVarVec3
    071 CMwCmdAffectIdentBool
    072 CMwCmdAffectIdentClass
    073 CMwCmdAffectIdentIso4
    074 CMwCmdAffectIdentNum
    075 CMwCmdAffectIdentString
    076 CMwCmdAffectIdentVec2
    077 CMwCmdAffectIdentVec3
    078 CMwCmdAffectParamBool
    079 CMwCmdAffectParamClass
    07A CMwCmdAffectParamEnum
    07B CMwCmdAffectParamIso4
    07C CMwCmdAffectParamNum
    07D CMwCmdAffectParamString
    07E CMwCmdAffectParamVec2
    07F CMwCmdAffectParamVec3
    080 CBlockVariable
    082 CMwCmdSleep
    083 CMwCmdWait
    084 CMwCmdLog
    085 CMwCmdExpVec2Add
    086 CMwCmdExpVec2Sub
    087 CMwCmdExpVec2Neg
    088 CMwCmdExpVec2Mult
    089 CMwCmdExpVec3Add
    08A CMwCmdExpVec3Sub
    08B CMwCmdExpVec3Neg
    08C CMwCmdExpVec3Mult
    08D CMwCmdExpVec3MultIso
    08E CMwCmdExpVec3Product
    08F CMwCmdExpIso4Mult
    090 CMwCmdExpIso4Inverse
    091 CMwCmdExpNumDotProduct2
    092 CMwCmdExpNumDotProduct3
    093 CMwCmdContainer
    094 CMwCmdReturn
    095 CMwCmdBreak
    096 CMwCmdContinue
    097 CMwCmdProc
    098 CMwCmdBlockProcedure
    099 CMwCmdBlockFunction
    09A CMwCmdExpBoolFunction
    09B CMwCmdExpClassFunction
    09C CMwCmdExpIso4Function
    09D CMwCmdExpStringFunction
    09E CMwCmdExpVec2Function
    09F CMwCmdExpVec3Function
    0A0 CMwCmdArrayAdd
    0A1 CMwCmdArrayRemove
    0A2 CMwCmdExpClassThis
    0A3 CMwCmdExpStringTrunc
    0A4 CMwCmdExpEnumIdent
    0A5 CMwCmdAffectIdentEnum
    0A6 CMwCmdScriptVarEnum
    0A7 CMwCmdExpStringUpDownCase
    0A8 CMwCmdExpNumCastedEnum
    0A9 CMwCmdExpEnumCastedNum
    0B0 CMwParamQuat
    0C0 CMwCmdFastCallUser
    0D0 CMwParamMwId
03 Game
    000 CGameEngine
    001 CGameRule
    002 CGamePlayer
    003 CGameControlPlayer
    004 CGameProcess
    005 CGameApp
    006 CGameMasterServer
    007 CGameMobil
    008 CGameNod
    009 CGameMenu
    00A CGameNetFormGameSync
    00B CGameMenuFrame
    00C CGameSystemOverlay
    00D CGamePlayground
    00E CGameNetPlayerInfo
    00F CGameNetwork
    010 CGameNetFormTunnel
    012 CGameControlPlayerNet
    013 CGameControlPlayerInput
    015 CGameBulletModel
    017 CGameManialinkEntry
    018 CGameScene
    019 CGameMenuColorEffect
    01A CGameCtnCollector
    01B CGameCtnCollectorList
    01C CGameCtnCollectorVehicle
    01D CGameCtnChapter
    01E CGameCtnCatalog
    01F CGameCtnArticle
    020 CGameNetOnlineEvent
    022 CGameNetOnlineNews
    023 CGameCamera
    024 CGameCtnMediaBlock3dStereo
    025 CGameNetTeamInfo
    027 CGameAvatar
    028 CGameNetOnlineMessage
    029 CGameCtnMediaBlockTriangles
    02A CGameRemoteBuffer
    02B CGameRemoteBufferPool
    02C CGameRemoteBufferDataInfo
    02D CGameInterface
    02E CGameNetServerInfo
    02F CGameNetForm
    030 CGameDialogs
    031 CGameSkin
    032 CGameMenuScaleEffect
    033 CGameCtnCollection
    034 CGameCtnMediaBlockEditor
    035 CGameCtnObjectInfo
    036 CGameCtnBlockUnitInfo
    037 CGameFid
    038 CGameCtnDecoration
    039 CGameCtnDecorationAudio
    03A CGameCtnDecorationMood
    03B CGameCtnDecorationSize
    03C CGameCtnDecorationTerrainModifier
    03D CGameAdvertising
    03E CGameAdvertisingElement
    03F CGameGhost
    040 CGameControlCameraMaster
    042 CGameControlCameraEffectAdaptativeNearZ
    043 CGameCtnChallenge
    044 CGameCtnChallengeInfo
    045 CGameOutlineBox
    046 CGameCtnParticleParam
    047 CGameHighScore
    048 CGameCtnPainterSetting
    049 CGameLeagueManager
    04A CGameCtnMediaBlockEditorTriangles
    04B CGameCtnMediaBlockTriangles2D
    04C CGameCtnMediaBlockTriangles3D
    04D CGameNetOnlineNewsReply
    04E CGameCtnBlockInfo
    04F CGameCtnBlockInfoFlat
    050 CGameCtnBlockInfoFrontier
    051 CGameCtnBlockInfoClassic
    052 CGameCtnBlockInfoRoad
    053 CGameCtnBlockInfoClip
    054 CGameCtnBlockInfoSlope
    055 CGameCtnBlockInfoPylon
    056 CGameCtnBlockInfoRectAsym
    057 CGameCtnBlock
    058 CGameCtnBlockUnit
    059 CGameCtnBlockSkin
    05A CGameCtnPylonColumn
    05B CGameCtnChallengeParameters
    05C CGameCtnZone
    05D CGameCtnZoneFlat
    05E CGameCtnZoneFrontier
    05F CGameCtnZoneTest
    060 CGameCtnMediaVideoParams
    061 CGameCampaignsScoresManager
    062 CGameSkillScoreComputer
    063 CGameCampaignScores
    064 CGameChallengeScores
    065 CGameGeneralScores
    066 CGameManialinkBrowser
    067 CGameNetFormAdmin
    068 CGameNetFileTransfer
    069 CGameNetFormTimeSync
    06A CGameNetFormCallVote
    06B CGameControlCamera
    06D CGameControlCameraFree
    06E CGameControlCameraOrbital3d
    06F CGameControlCameraEffect
    070 CGameControlCameraEffectGroup
    071 CGameControlCameraEffectShake
    072 CGameControlCameraTarget
    073 CGameRace
    076 CGameLadderRanking
    077 CGameCtnMediaBlock
    078 CGameCtnMediaTrack
    079 CGameCtnMediaClip
    07A CGameCtnMediaClipGroup
    07C CGameCtnMediaBlockCamera
    07D CGameCtnMediaBlockUi
    07E CGameCtnMediaBlockFx
    07F CGameCtnMediaBlockFxBlur
    080 CGameCtnMediaBlockFxColors
    081 CGameCtnMediaBlockFxBlurDepth
    082 CGameCtnMediaBlockFxBlurMotion
    083 CGameCtnMediaBlockFxBloom
    084 CGameCtnMediaBlockCameraGame
    085 CGameCtnMediaBlockTime
    086 CGameCtnMediaClipPlayer
    087 CGameCtnMediaBlockEvent
    088 CGameRaceInterface
    089 CGameManiaNetResource
    08A CGamePlayerInfo
    08B CGamePlayerCameraSet
    08C CGamePlayerProfile
    08D CGamePlayerScore
    08E CGameLeague
    08F CGameCtnChallengeGroup
    090 CGameCtnCampaign
    091 CGameCtnGhostInfo
    092 CGameCtnGhost
    093 CGameCtnReplayRecord
    094 CGameCtnReplayRecordInfo
    095 CGamePlayerOfficialScores
    096 CGameLadderRankingLeague
    097 CGameLadderRankingPlayer
    099 CGameLadderRankingSkill
    09A CGameControlCard
    09B CGameControlCardManager
    09C CGameControlDataType
    09F CGameCtnMediaBlockCameraSimple
    0A0 CGameCtnMediaBlockCameraOrbital
    0A1 CGameCtnMediaBlockCameraPath
    0A2 CGameCtnMediaBlockCameraCustom
    0A3 CGameCtnMediaBlockCameraEffect
    0A4 CGameCtnMediaBlockCameraEffectShake
    0A5 CGameCtnMediaBlockImage
    0A6 CGameCtnMediaBlockMusicEffect
    0A7 CGameCtnMediaBlockSound
    0A8 CGameCtnMediaBlockText
    0A9 CGameCtnMediaBlockTrails
    0AA CGameCtnMediaBlockTransition
    0AB CGameCtnMediaBlockTransitionFade
    0AC CGameCtnMediaBlockUiSimpleEvtsDisplay
    0AD CGameCtnMediaClipViewer
    0AE CGameCtnCursor
    0AF CGameCtnEditor
    0B1 CGameCtnMediaTracker
    0B2 CGamePopUp
    0B3 CGameCtnEdControlCam
    0B4 CGameCtnEdControlCamCustom
    0B5 CGameCtnEdControlCamPath
    0B6 CGameSafeFrame
    0B7 CGameSafeFrameConfig
    0B8 CGameCtnPainter
    0B9 CGameControlGrid
    0BA CGameControlGridCard
    0BB CGameCtnNetServerInfo
    0BC CGameControlCardCtnChallengeInfo
    0BD CGameControlCardGeneric
    0BE CGameControlCardLeague
    0BF CGameControlCardCtnNetServerInfo
    0C0 CGameControlCardNetOnlineNews
    0C1 CGameControlCardLadderRanking
    0C2 CGameControlCardMessage
    0C3 CGameCalendar
    0C4 CGameCalendarEvent
    0C5 CGameControlCardCalendar
    0C6 CGameControlCardCalendarEvent
    0C7 CGameControlCardProfile
    0C8 CGameControlCardCtnReplayRecordInfo
    0C9 CGameCtnMenus
    0CA CGameLadderRankingCtnChallengeAchievement
    0CB CGameCtnNetForm
    0CC CGameRemoteBufferDataInfoFinds
    0CD CGameRemoteBufferDataInfoRankings
    0CE CGameRemoteBufferDataInfoSearchs
    0CF CGameTournament
    0D0 CGameChampionship
    0D1 CGameCtnMasterServer
    0D2 CGameCtnNetwork
    0D3 CGameCtnApp
    0D5 CGameControlCardCtnArticle
    0D6 CGameControlCardCtnCampaign
    0D7 CGameControlCardChampionship
    0D8 CGameControlCardCtnChapter
    0D9 CGameControlCardCtnGhost
    0DA CGameControlCardCtnGhostInfo
    0DB CGameControlCardNetOnlineEvent
    0DC CGameControlCardNetTeamInfo
    0DD CGameControlCardCtnVehicle
    0DE CGameControlGridCtnCampaign
    0DF CGameControlGridCtnChallengeGroup
    0E0 CGameCtnEditorScenePocLink
    0E1 CGameAnalyzer
    0E2 CGamePlaygroundInterface
    0E3 CGamePlayerAttributesLiving
    0E4 CGamePlayerScoresShooter
    0E5 CGameCtnMediaBlockGhost
    0E6 CGameEnvironmentManager
    0E7 CGameDialogShootVideo
    0E8 CGameManialinkFileEntry
    0E9 CGameNetDataDownload
    0EA CGameCampaignPlayerScores
    0EB CGameLoadProgress
    0EC CGameNetFormBuddy
    0ED CGameLadderScoresComputer
    0EE CGameLadderScores
    10D CGameCtnMacroBlockInfo
    114 CGameCtnMacroDecals
    14C CGameCtnBlockInfoTransition
 04 Graphic
    001 GxLight
    002 GxLightBall
    003 GxLightPoint
    004 GxFog
    005 GxLightAmbient
    006 GxLightNotAmbient
    007 GxLightDirectional
    008 GxFogBlender
    00A GxLightFrustum
    00B GxLightSpot
05 Function
    002 CFuncKeys
    003 CFuncKeysTrans
    004 CFuncKeysTransQuat
    005 CFuncSkel
    006 CFuncKeysSkel
    007 CFuncSkelValues
    008 CFuncKeysCmd
    00A CFuncKeysPath
    00B CFuncPlug
    00C CFuncLightIntensity
    00D CFuncTreeTranslate
    00E CFuncEnum
    00F CFuncSin
    010 CFunc
    011 CFuncShader
    012 CFuncKeysVisual
    013 CFuncKeysSound
    014 CFuncShaders
    015 CFuncShaderLayerUV
    016 CFuncShaderFxFactor
    017 CFuncColor
    018 CFuncLight
    019 CFuncLightColor
    01A CFuncKeysReal
    01B CFuncVisual
    01C CFuncTree
    01D CFuncVisualShiver
    01E CFuncTreeRotate
    01F CFuncTreeBend
    020 CFuncPathMesh
    021 CFuncPathMeshLocation
    02A CFuncKeysReals
    02B CFuncVisualBlendShapeSequence
    02C CFuncManagerCharacter
    02D CFuncManagerCharacterAdv
    02E CFuncGroup
    02F CFuncGroupElem
    030 CFuncKeysNatural
    031 CFuncTreeSubVisualSequence
    032 CFuncTreeElevator
    033 CFuncShaderTweakKeysTranss
    034 CFuncWeather
    035 CFuncPuffLull
    036 CFuncEnvelope
    037 CFuncSegment
    038 CFuncColorGradient
    039 CFuncFullColorGradient
    03A CFuncClouds
    03C CCurveInterface
    042 CFuncCurvesReal
    043 CFuncCurves2Real
    044 CFuncNoise
06 Hms
    001 CHmsCamera
    002 CHmsCorpus
    003 CHmsItem
    004 CHmsZone
    005 CHmsZoneDynamic
    006 CHmsPortal
    007 CHmsPoc
    008 CHmsZoneElem
    009 CHmsZoneOverlay
    00A CHmsListener
    00B CHmsPocEmitter
    00C CHmsLight
    00D CHmsSoundSource
    00E CHmsPortalProperty
    00F CHmsCorpusLight
    010 CHmsViewport
    011 CHmsPrecalcRender
    012 CHmsShadowGroup
    014 CHmsForceField
    015 CHmsForceFieldBall
    016 CHmsForceFieldUniform
    017 CHmsFogPlane
    018 CHmsPicker
    019 CHmsCollisionManager
    01D CHmsConfig
    020 CHmsItemShadow
    021 CHmsPackLightMap
    022 CHmsPackLightMapCache
    023 CHmsPackLightMapMood
    024 CHmsPackLightMapAlloc
    025 CHmsCorpus2d
    026 CHmsAmbientOcc
07 Control
    001 CControlBase
    002 CControlContainer
    003 CControlEffectSwitchStyle
    004 CControlUiElement
    005 CControlEffect
    006 CControlLabel
    007 CControlButton
    009 CControlEntry
    00A CControlEnum
    00B CControlSlider
    00C CControlLayout
    00D CControlListItem
    00E CControlUiDockable
    00F CControlList
    010 CControlEffectSimi
    011 CControlEffectMotion
    012 CControlForm
    013 CControlOverlay
    014 CControlUiRange
    015 CControlGrid
    016 CControlFrame
    017 CControlStyle
    018 CControlField2
    019 CControlUrlLinks
    01A CControlTimeLine
    01B CControlQuad
    01C CControlEffectMaster
    01D CControlCredit
    01E CControlColorChooser
    01F CControlColorChooser2
    021 CControlSimi2
    022 CControlTimeLine2
    023 CControlEffectCombined
    024 CControlDisplayGraph
    025 CControlEffectMoveFrame
    026 CControlFrameStyled
    027 CControlStyleSheet
    028 CControlListMap
    029 CControlListMap2
    02A CControlCurve
    02B CControlIconIndex
    02C CControlMediaPlayer
    02D CControlRadar
    02E CControlMediaItem
    02F CControlImage
    030 CControlPager
    031 CControlText
    032 CControlFrameAnimated
08 Motion
    001 CMotion
    027 CMotionFunc
    028 CMotions
    029 CMotionCmdBase
    02B CMotionShader
    02D CMotionCmdBaseParams
    02E CMotionPlaySound
    02F CMotionPlaySoundMobil
    030 CMotionPath
    031 CMotionPlay
    032 CMotionPlayCmd
    033 CMotionTrack
    034 CMotionPlayer
    035 CMotionTrackMobilRotate
    036 CMotionSkelSimple
    037 CMotionSkel
    038 CMotionLight
    039 CMotionTrackMobilMove
    040 CMotionTrackVisual
    041 CMotionTrackMobilPitchin
    042 CMotionTrackTree
    043 CMotionTeamActionInfo
    044 CMotionTeamManager
    045 CMotionTeamAction
    046 CMotionManagerCharacter
    047 CMotionManagerCharacterAdv
    048 CMotionGroupPlayers
    049 CMotionBone
    04A CMotionTrackMobilScale
    04B CMotionManager
    04C CMotionEmitterLeaves
    04D CMotionManagerLeaves
    04E CMotionManaged
    051 CMotionWindBlocker
    052 CMotionManagerMeteo
    053 CMotionManagerWeathers
    054 CMotionWeather
    055 CMotionDayTime
    056 CMotionTimerLoop
    057 CMotionManagerMeteoPuffLull
    058 CMotionEmitterParticles
    059 CMotionManagerParticles
    05A CMotionParticleType
    05B CMotionParticleEmitterModel
09 Plug
    001 CPlugAudio
    002 CPlugShader
    003 CPlugCrystal
    004 CPlugShaderGeneric
    005 CPlugSolid
    006 CPlugVisual
    008 CPlugBitmapHighLevel
    009 CPlugVisualIndexedLines
    00A CPlugVisualOctree
    00B CPlugBitmapRenderShadow
    00C CPlugSurface
    00E CPlugVisualIndexedTriangles2D
    00F CPlugSurfaceGeom
    010 CPlugVisualSprite
    011 CPlugBitmap
    012 CPlugBitmapApply
    013 CPlugVisualLines
    014 CPlugVisualLines2D
    015 CPlugTreeVisualMip
    016 CPlugVisualStrip
    017 CPlugVisualVertexs
    019 CPlugFilePack
    01A CPlugSound
    01B CPlugSoundMood
    01C CPlugMusic
    01D CPlugLight
    01E CPlugVisualIndexedTriangles
    020 CPlugFile
    021 CPlugBitmapRenderLightFromMap
    022 CPlugFileJpg
    023 CPlugFileTga
    024 CPlugFileDds
    025 CPlugFileImg
    026 CPlugShaderApply
    027 CPlugVisualQuads
    028 CPlugVisualTriangles
    029 CPlugVisualHeightField
    02A CPlugVisualIndexedStrip
    02B CPlug
    02C CPlugVisual3D
    02D CPlugFileFont
    02F CPlugFileGen
    030 CPlugFileSnd
    031 CPlugFileWav
    032 CPlugFileAvi
    035 CPlugFileFidContainer
    036 CPlugBitmapPacker
    037 CPlugMusicType
    039 CPlugAudioEnvironment
    03A CPlugMaterialCustom
    03B CPlugVisualGrid
    03C CPlugVisualPath
    03D CPlugFilePng
    03E CPlugBlendShapes
    03F CPlugTreeGenText
    040 CPlugFileGPU
    041 CPlugFileText
    042 CPlugFileVsh
    044 CPlugBitmapPack
    045 CPlugFilePsh
    046 CPlugBitmapPackElem
    047 CPlugBitmapAddress
    048 CPlugBitmapPackInput
    049 CPlugFileFidCache
    04A CPlugVisual2D
    04B CPlugVisualQuads2D
    04D CPlugFont
    04E CPlugFontBitmap
    04F CPlugTree
    051 CPlugTreeGenerator
    052 CPlugRessourceStrings
    055 CPlugFileI18n
    056 CPlugVertexStream
    057 CPlugIndexBuffer
    058 CPlugBitmapRenderHemisphere
    05A CPlugFileOggVorbis
    05B CPlugBitmapRenderPortal
    05C CPlugBitmapRenderPlaneR
    05D CPlugModelShell
    05E CPlugSoundSurface
    05F CPlugFileBink
    060 CPlugFileVideo
    062 CPlugTreeLight
    064 CPlugSoundMulti
    065 CPlugSoundVideo
    066 CPlugPointsInSphereOpt
    067 CPlugShaderPass
    068 CPlugShaderSprite
    069 CPlugShaderSpritePath
    06A CPlugVisualIndexed
    06B CPlugTreeFrustum
    072 CPlugModelTree
    073 CPlugModelMesh
    074 CPlugFileVHlsl
    075 CPlugFileGPUV
    076 CPlugFileGPUP
    077 CPlugFilePHlsl
    079 CPlugMaterial
    07A CPlugMaterialFx
    07B CPlugMaterialFxFlags
    07C CPlugMaterialFxFur
    07D CPlugMaterialFxs
    07E CPlugBitmapSampler
    080 CPlugBitmapShader
    081 CPlugMaterialFxDynaBump
    082 CPlugMaterialFxDynaMobil
    083 CPlugMaterialFxGenUvProj
    084 CPlugFileZip
    086 CPlugBitmapRender
    087 CPlugBitmapRenderWater
    088 CPlugBitmapRenderCubeMap
    089 CPlugBitmapRenderCamera
    08A CPlugBitmapRenderVDepPlaneY
    08B CPlugFileSndGen
    08C CPlugMaterialFxGenCV
    08E CPlugSoundEngine
    08F CPlugSoundEngineComponent
    090 CPlugBitmapRenderSolid
    091 CPlugBitmapRenderSub
    092 CPlugModel
    093 CPlugFileGpuFx
    094 CPlugFileGpuFxD3d
    095 CPlugFileVso
    096 CPlugFilePso
    098 CPlugFileModel
    099 CPlugFileModelObj
    09A CPlugTreeGenSolid
    09B CPlugFileModel3ds
    09C CPlugModelLodMesh
    09D CPlugModelFur
    09E CPlugBitmapRenderOverlay
    09F CPlugBitmapRenderLightOcc
    0A0 CPlugViewDepLocator
    0A1 CPlugTreeViewDep
    0A2 CPlugDecoratorTree
    0A3 CPlugDecoratorSolid
    0A4 CPlugModelFences
    0A6 CPlugFurWind
0A Scene
    000 CSceneEngine
    001 CScene
    002 CScene2d
    003 CScene3d
    004 CSceneSector
    005 CSceneObject
    006 CSceneGate
    007 CSceneLocation
    008 CScenePath
    009 CScenePoc
    00A CSceneCamera
    00B CSceneLight
    00C CSceneController
    00D CSceneListener
    00E CSceneSoundSource
    010
    011 CSceneMobil
    012 CSceneToy
    014 CSceneObjectLink
    015
    016 CSceneToyCharacterDesc
    017 CScenePickerManager
    01D CPlugBitmapRenderScene3d
    01E CSceneSoundManager
    01F CSceneMessageHandler
    029
    02A
    02B
    02C CSceneMobilClouds
    02D CSceneToyBroomstick
    02E
    030
    031
    032
    033
    034 CSceneFxColors
    035 CSceneFxSuperSample
    036 CSceneLocationCamera
    037 CSceneToyRock
    038 CSceneFxFlares
    039
    03A CSceneFxNod
    03B CSceneFxBloom
    03C
    03D CSceneFxToneMapping
    03E CBoatSailState
    03F CSceneFxBloomData
    040 CSceneConfig
    041 CSceneConfigVision
    042 CSceneMood
    043 CSceneFxStereoscopy
    044 CSceneFxHeadTrack
    04F CSceneToyDisplayProgress
    050 CSceneToyDisplayHistogram
    051 CSceneToyDisplayGraph
    059 CSceneField
    05D CSceneMoods
    05E CSceneMobilLeaves
    05F CSceneToyMotorbike
    060
    061
    062 CSceneTrafficGraph
    063 CSceneTrafficPath
    067 CSceneToyFilaments
    068 CSceneMobilTraffic
    069 CSceneMobilFlockAttractor
    06A CSceneExtraFlocking
    06B CSceneMotorbikeEnvMaterial
    06C CSceneExtraFlockingCharacters
    06D CSceneVehicleSpeedBoat
    06E CSceneToySubway
    06F CSceneToyBird
    070 CSceneMobilSnow
    071 CSceneToyLeash
    072 CSceneFx
    073 CSceneFxVisionK
    074 CSceneFxOverlay
    076 CSceneFxCompo
    077 CSceneFxDepthOfField
    078 CSceneFxMotionBlur
    079 CSceneFxCameraBlend
    07A CSceneFxGrayAccum
    07B CSceneFxDistor2d
    07C
    07D
    07E CSceneFxOccZCmp
    080
    090 CSceneToyTrain
    100 CSceneToyBoat
    101 CSceneToySea
    104 CSceneToyStem
    105 CBoatTeamDesc
    106 CBoatTeamActionDesc
    107 CBoatTeamMateActionDesc
    108 CManoeuvre
    109 CBoatTeamMateLocationDesc
    10A CSceneToySeaHoule
    10B CBoatSail
    10C CSceneToySeaHouleTable
    10D CSceneToySeaHouleFixe
    10E CBoatParam
    401 CSceneToyCharacter
0B System
    000 CSystemEngine
    001 CSystemMouse
    002 CSystemKeyboard
    003 CSystemWindow
    005 CSystemConfig
    007 CNodSystem
    008 CSystemFid
    009 CSystemFids
    00A CSystemFidFile
    00B CSystemFidsFolder
    00C CSystemFidsDrive
    00D CSystemCmdLoadNod
    00E CSystemFidMemory
    00F CSystemCmdDuplicateNod
    010 CSystemCmdExec
    011 CSystemCmdAssert
    013 CSystemConfigDisplay
    014 CSystemPackManager
    015 CSystemPackDesc
    016 CSystemFidBuffer
    017 CSystemNodWrapper
    018 CSystemData
0C Vision
    001 CVisionViewport
    00A CVisionViewportDx9
    00B CDx9DeviceCaps
    012 CVisionResourceFile
10 Audio
    001 CAudioPort
    002 CAudioBufferKeeper
    003 CAudioSound
    004 CAudioMusic
    005 CAudioSoundEngine
    006 CAudioSoundSurface
    007 CAudioSoundMulti
    008 CAudioPortNull
    020 COalAudioPort
    021 COalAudioBufferKeeper
    022 COalDevice
12 Net
    001 CNetNod
    002 CNetServerInfo
    003 CNetClientInfo
    004 CNetFormTimed
    007 CNetFormQuerrySessions
    008 CNetFormEnumSessions
    009 CNetFormPing
    00C CNetServer
    00D CNetClient
    00F CNetConnection
    010 CNetFormConnectionAdmin
    012 CNetHttpClient
    013 CNetHttpResult
    014 CNetMasterServer
    015 CNetMasterHost
    018 CNetFileTransfer
    019 CNetMasterServerInfo
    01A CNetFileTransferNod
    01B CNetFileTransferForm
    01C CNetFileTransferDownload
    01D CNetFileTransferUpload
    01E CNetSource
    020 CNetIPC
    021 CNetFormRpcCall
    022 CNetUPnP
    028 CNetIPSource
    029 CNetMasterServerUptoDateCheck
    030 CNetURLSource
13 Input
    001 CInputPort
    002 CInputPortDx8
    003 CInputPortNull
    006 CInputBindingsConfig
    007 CInputDevice
    008 CInputDeviceMouse
    00A CInputDeviceDx8Mouse
    00B CInputDeviceDx8Keyboard
    00C CInputDeviceDx8Pad
14 Xml
    001 CXmlNod
    002 CXmlAttribute
    003 CXmlComment
    004 CXmlDeclaration
    005 CXmlDocument
    006 CXmlElement
    007 CXmlText
    008 CXmlUnknown
    009 CHdrComment
    00A CHdrDeclaration
    00B CHdrDocument
    00C CHdrElement
    00D CHdrText
    00E CHdrUnknown
24 TrackMania
    001 CTrackMania
    013 CTrackManiaEditor
    014 CTrackManiaRace
    015 CTrackManiaSwitcher
    016 CTrackManiaEditorFree
    017 CTrackManiaEditorPuzzle
    018 CTrackManiaRace1P
    026 CTrackManiaEditorTerrain
    02E CTrackManiaMenus
    02F CTrackManiaNetwork
    030 CTrackManiaNetForm
    031 CTrackManiaPlayer
    032 CTrackManiaControlPlayerInput
    035 CTrackManiaNetworkServerInfo
    036 CTrackManiaPlayerInfo
    037 CTrackManiaRaceNetRounds
    03D CTrackManiaEditorCatalog
    041 CTrackManiaMatchSettings
    042 CTrackManiaRace2PTurnBased
    044 CTrackManiaRaceNet
    045 CTrackManiaRaceNetTimeAttack
    051 CTrackManiaEditorInterface
    056 CTrackManiaRaceNetLaps
    057 CTrackManiaEditorIcon
    058 CTrackManiaEditorIconPage
    06E CTrackManiaControlCheckPointList
    078 CTrackManiaRace1PGhosts
    07E CTrackManiaReplayRecord
    07F CCtnMediaBlockEventTrackMania
    080 CTrackManiaPlayerCameraSet
    085 CGameControlCameraTrackManiaRace
    086 CGameControlCameraTrackManiaRace2
    087 CGameControlCameraTrackManiaRace3
    08C CTrackManiaControlPlayerInfoCard
    08F CTrackManiaControlCard
    090 CControlTrackManiaTeamCard
    092 CCtnMediaBlockUiTMSimpleEvtsDisplay
    09C CTrackManiaMatchSettingsControlGrid
    09F CTrackManiaRaceScore
    0B5 CTrackManiaPlayerProfile
    0BE CTrackManiaControlRaceScoreCard
    0BF CTrackManiaControlScores
    0C4 CTrackManiaControlMatchSettingsCard
    0C6 CTrackManiaRaceInterface
    0D0 CTrackManiaRaceAnalyzer
    0D1 CTrackManiaEnvironmentManager
    0D2 CGameControlCameraFollowAboveWater
    0D3 CTrackManiaEditorSimple
    0D4 CTrackManiaControlScores2
2E GameData
    000 CGameDataEngine
    001 CGameCtnCollector
    002 CGameItemModel
    003 CGameAttributes
    004 CGameAttribute
    005 CGameAttributesStartPoint
    006 CGameObjectPhyModel
    007 CGameObjectVisModel
    008 CGameCtnPlaygroundActionModel

Class ID mappings

The last engine in the list of engines is 0x24, "TrackMania". It used to contain a lot of classes which have now been moved to more generic engines, like 0x03 (Game). This is the case for e.g. challenges, which used to be 24 003 000 but are now 03 043 000.

Since the GameBox engine needs to stay compatible with older .gbx files, it maps old class IDs to new ones when loading the file. This only happens up to the class level; chunk indices stay the same.

24003000 -> 03043000
24004000 -> 03033000
24005000 -> 0304E000
24006000 -> 03036000
24007000 -> 03057000
24008000 -> 03058000
24009000 -> 030D4000
2400A000 -> 0301A000
2400B000 -> 03044000
2400C000 -> 0305B000
2400D000 -> 0301F000
2400E000 -> 0301D000
2400F000 -> 0301E000
24011000 -> 0305A000
24012000 -> 030D1000
24019000 -> 030CE000
2401A000 -> 03039000
2401B000 -> 03092000
2401C000 -> 0305C000
2401D000 -> 0305D000
2401E000 -> 0305E000
2401F000 -> 03038000
24020000 -> 0304F000
24021000 -> 03050000
24022000 -> 03051000
24023000 -> 03052000
24024000 -> 03053000
24025000 -> 03054000
24027000 -> 0302D000
24028000 -> 030CB000
24029000 -> 03055000
2402A000 -> 030BB000
2402B000 -> 030D2000
2402C000 -> 0305F000
2402D000 -> 0307E000
24033000 -> 030D3000
24034000 -> 0308D000
24038000 -> 03090000
24039000 -> 0308F000
2403A000 -> 03059000
2403B000 -> 030CC000
2403C000 -> 0301B000
2403E000 -> 0301C000
2403F000 -> 03093000
24040000 -> 0303B000
24046000 -> 03035000
24047000 -> 03047000
24048000 -> 030AF000
24049000 -> 030E0000
2404A000 -> 0308C000
2404D000 -> 0308A000
2404E000 -> 03002000
2404F000 -> 03073000
24050000 -> 0303A000
24052000 -> 030AE000
24053000 -> 030C9000
24054000 -> 03045000
24059000 -> 030B8000
2405A000 -> 03080000
2405D000 -> 030B1000
2405E000 -> 03086000
2405F000 -> 03081000
24061000 -> 03078000
24062000 -> 03078000
24063000 -> 03087000
24064000 -> 03056000
24065000 -> 0307F000
24066000 -> 03085000
24067000 -> 030A2000
24068000 -> 030A8000
24069000 -> 0307C000
2406A000 -> 03077000
2406B000 -> 03082000
2406C000 -> 030B2000
2406D000 -> 03084000
2406F000 -> 030A7000
24070000 -> 030A0000
24071000 -> 0308B000
24072000 -> 03094000
24073000 -> 030CD000
24075000 -> 030A9000
24076000 -> 03079000
24077000 -> 0307A000
2407A000 -> 030A1000
2407B000 -> 030B3000
2407C000 -> 030B4000
2407D000 -> 030B5000
24081000 -> 030A5000
24082000 -> 030AA000
24083000 -> 030AB000
24084000 -> 030A3000
24088000 -> 030A4000
24089000 -> 030A6000
2408A000 -> 030AD000
2408B000 -> 0309F000
24091000 -> 0307D000
24094000 -> 030AC000
24095000 -> 03095000
24097000 -> 030DE000
24098000 -> 030DF000
24099000 -> 0309A000
2409A000 -> 030BC000
2409B000 -> 03048000
240A0000 -> 0308E000
240A1000 -> 030BE000
240A2000 -> 0309B000
240A3000 -> 0309C000
240A4000 -> 030B9000
240A5000 -> 030BA000
240A6000 -> 030BF000
240A8000 -> 030BD000
240A9000 -> 030DB000
240AB000 -> 0303C000
240AC000 -> 030C1000
240AD000 -> 03096000
240AE000 -> 03097000
240AF000 -> 030C3000
240B0000 -> 030C4000
240B1000 -> 030D0000
240B2000 -> 030D7000
240B3000 -> 030C6000
240B4000 -> 030CF000
240B6000 -> 030C0000
240B7000 -> 030DC000
240B8000 -> 03098000
240B9000 -> 030B6000
240BA000 -> 030B7000
240BB000 -> 030C5000
240BC000 -> 030D8000
240BD000 -> 03046000
240C0000 -> 03089000
240C1000 -> 030DD000
240C2000 -> 030D6000
240C3000 -> 030C8000
240C5000 -> 030D5000
240C7000 -> 03088000
240C8000 -> 030D9000
240C9000 -> 03099000
240CA000 -> 030CA000
240CB000 -> 030C2000
240CC000 -> 03091000
240CD000 -> 030DA000
240CE000 -> 030C7000
240CF000 -> 03083000
0900D000 -> 0900F000
09063000 -> 09026000
0301A000 -> 2E001000
0301C000 -> 2E002000

Class IDs by file extension

When loading a file, TrackMania determines the class to parse it with by querying a table with the file's extension. The exception is .gbx files, where extension detection is hardcoded (and so .gbx is not found in the table).

.3ds        0909B000 (CPlugFileModel3ds)
.avi        09032000 (CPlugFileAvi)
.bik        0905F000 (CPlugFileBink)
.cry        09041000 (CPlugFileText)
.dds        09024000 (CPlugFileDds)
.fnt        0902D000 (CPlugFileFont)
.fx         09094000 (CPlugFileGpuFxD3d)
.jpeg       09022000 (CPlugFileJpg)
.jpg        09022000 (CPlugFileJpg)
.mo         09055000 (CPlugFileI18n)
.mpj.cry    09041000 (CPlugFileText)
.mpj.txt    09041000 (CPlugFileText)
.mux        0905A000 (CPlugFileOggVorbis)
.obj        09099000 (CPlugFileModelObj)
.ogg        0905A000 (CPlugFileOggVorbis)
.pak        09019000 (CPlugFilePack)
.phlsl.cry  09077000 (CPlugFilePHlsl)
.phlsl.txt  09077000 (CPlugFilePHlsl)
.png        0903D000 (CPlugFilePng)
.psh.cry    09045000 (CPlugFilePsh)
.psh.txt    09045000 (CPlugFilePsh)
.script.cry 09041000 (CPlugFileText)
.script.txt 09041000 (CPlugFileText)
.text.cry   09041000 (CPlugFileText)
.text.txt   09041000 (CPlugFileText)
.tga        09023000 (CPlugFileTga)
.ttc        0902D000 (CPlugFileFont)
.ttf        0902D000 (CPlugFileFont)
.txt        09041000 (CPlugFileText)
.vhlsl.cry  09074000 (CPlugFileVHlsl)
.vhlsl.txt  09074000 (CPlugFileVHlsl)
.vpp.cry    09041000 (CPlugFileText)
.vpp.txt    09041000 (CPlugFileText)
.vsh.cry    09042000 (CPlugFileVsh)
.vsh.txt    09042000 (CPlugFileVsh)
.wav        09031000 (CPlugFileWav)
.zip        09084000 (CPlugFileZip)