Difference between revisions of "Class IDs"
(Restore last known version from tm-wiki.org) |
(update info, add cat) |
||
Line 1: | Line 1: | ||
− | Class IDs are a mechanism used internally in | + | '''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 | + | == 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 | + | |
+ | 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 | + | 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)