Skip to content

Engine Modding Surface

LopeKinz edited this page Sep 26, 2026 · 1 revision

Modifiable Engine Interface

Generated via tools/survey_engine.py against the actual installation. Each line indicates: Type, count in-game, whether user data is text (editable) or binary, and what the type is responsible for.

==================================================================================================== WOLFENSTEIN: THE NEW ORDER - MODDB FILE SURFACE

Type Count Text? Purpose / Most Common Fields

sample 61318 binary Descriptor for an Ogg stream, no audio data sound 43782 mixed Sound shaders: volume, range, variants voicetrack 30627 binary
anim 20837 binary Animation data - binary cm 8661 binary Collision model - binary particle 5344 mixed Particle systems: blood, smoke, sparks, explosions material 4172 TEXT Texture references, shaders, virtual texture coordinates [stageprogram entityDef 3182 TEXT All living and placed entities: enemies, players, objects [abilityNa voiceover 2880 TEXT Voice output assignment [tracks] model 2800 binary
image 2566 binary Image data (BIM) - HUD and UI, not world surfaces md6Def 1600 TEXT Model hull: mesh reference, hitboxes, tags, inheritance [event, prtMeshDist 1484 binary
breakable 1331 TEXT Breakable objects [worldCollisionOnly, model, linearFriction] discreteAnimation 1319 binary
renderProg 846 mixed Shader programs renderParm 810 TEXT Render parameters baseModel 755 binary Geometry (md6mesh) - binary, not editable cuttableResource 733 mixed Cuttable geometry per map skeleton 663 binary Skeleton - binary fx 654 TEXT Effect composition (particles + sound + light + decals) [type, star table 638 TEXT Curves and value tables (falloff, time curve) env 627 TEXT Environment/lighting profiles [renderParms, userEnvMap, envMapRo file 627 mixed Arbitrary files (e.g., debugmenu.txt, mapresources) cg 565 binary
jointconversion 439 binary
atlas 431 binary Texture atlases damage 431 TEXT Damage values, gore types, ragdoll impulse, cut radius [damage animWeb 279 TEXT Animation state graph [edge, toState, blendParms] projectile 245 TEXT Flight behavior, spread, aim assist, damage reference [sound0, soun projectileImpactEffect 208 TEXT sndImpact, particleImpact, decalMaterial, decalSize, fleshEffect ammo 207 TEXT Ammo type, projectile reference [projectileDecl, internal flare 189 TEXT width, height, mtr, color, position weapon 176 TEXT Handling: fire rate, magazine, dual-wield, zoom, models [validA job 169 TEXT jobNameId, jobSummaryId, jobType, jobParent, jobMaterial subWeb 158 TEXT alias, name, wrap, edge, toState aiBehavior 149 TEXT AI behavior building blocks [setting, fireLeanLeft, fireLeanRight] skins 147 TEXT Material override (Skins, clothing, blood variants) [blood, wet, modelLOD 147 TEXT model, megatexturedModel, models, distance, dimShadows tutorialEvent 140 TEXT tutorialImage, headingText, bodyText, bodyTextPC, unlockIndex gore 93 TEXT Which body parts a model can lose (gorePieces) [decal inventoryItem 90 TEXT Inventory items, prices, icons, stackability [internalName, icon secrets 78 TEXT type, entityName, name, desc, secretType foliage 75 TEXT quadWidth, quadHeight, widthVariance, heightVariance, rndFlipHoriz playerArmor 73 TEXT armorAmount, itemType, pickupName, icon, giveable aiBehaviorVo 72 TEXT voiceOver, interval, intervalMax, priority, playOnce health 71 TEXT internalName, entityDef, quickSlotGroup, giveable, dropable aiTurnParms 57 TEXT maxAngle, predictTurns impactSounds 56 TEXT soundInterval, defaultSound, metalSound, stoneSound, fleshSound achievement 50 TEXT Achievements [achievementName, description, perk] cloth 46 TEXT mass, gravity, friction, width, height destructiblePiece 44 TEXT particleSystem, destructiblePieceInfo, soundToPlayWhenBroken, heal aiEvent 39 TEXT Events the AI reacts to [initialPoolSize, eventClass, pri mapInfo 37 TEXT videoFile, prettyMapName, discNumber, layerMask, vmtrChunkNumber aas 37 binaer AI Navigation Network - binaer articulatedFigure 35 TEXT model, clipMask, selfCollision, contents, body1 glass 35 TEXT destroySound, impactSound, impactParticle, destroyFillParticle, de loadingscreen 33 TEXT tips, loadIndex, mapName, tauntImage, layers ribbon 31 TEXT material, duration, endWidth, fadeOutFraction, startWidth twitchPain 30 TEXT jointGroupName, aliasName, damageDir, jointGroups, damageDirection trackingParms 29 TEXT value, kickScale, rate, acceleration, deceleration soundmixing 26 TEXT bus, gain, name, enabled, compressor automap 25 TEXT worldMin, worldMax, screenMin, screenMax, mapMaterial glassModel 25 binaer
vmtrPreload 24 TEXT material, preloadList, spawnSpot, sharedList goreBehavior 23 TEXT Probability per Gore Type, Scaling by Damage [goreType staticParticleModel 22 binaer
trailbeam 21 TEXT end, trailProperties, material, color, duration chapter 18 TEXT displayName, layers, map, type, parts ebolt 15 TEXT material, startWidth, endWidth, branchStartWidth, maxBranchAngle impactParticles 15 TEXT metalPrt, stonePrt, woodPrt, cardboardPrt, liquidPrt batteryWeapon 12 TEXT validAmmoDecl, scale, initialAmmoDecl, validAmmoClips, pitch laserCutterUpgrade 12 TEXT lockUpgrade, internalName, icon, itemToUpgrade, removeOnUse playerUpgradeAmmo 12 TEXT type, amount, slots throwable 12 TEXT projectileDecl secrettype 11 TEXT sortId, displayName, pickupName, bonusType, pickupSound swfresource 11 TEXT name, sound, material, snapToPixel, font lasercutter 10 TEXT meshesHiddenWithUpgrade, meshesShownWithUpgrade, validAmmoDecl, sc dragJoints 10 TEXT ghostJointDistance, maxBend, baseJoint, joints, subWebs foliageModel 10 binaer
faction 8 TEXT factionNameId, relationships, otherFaction, attitude, parentFactio walkIK 8 TEXT foot, ankle, knee, hip, forward facialAnimSet 7 TEXT normalGlances, focusFidgets font 6 binaer
visemeSet 6 TEXT alias, phonemeSet, visemeSilence, phonemeSilence, visemes difficultysetting 5 TEXT aiIncomingDamageScale, playerIncomingDamageScale, check_respawnHea gamemodesp 5 TEXT startingHealth, startingArmor, gameModeType, gameDifficulty, displ weaponUpgrade 5 TEXT internalName, icon, entityDef, weaponToUpgrade, lockUpgrade staticImage 5 TEXT fileName enigma 4 TEXT requiredSecrets, gameMode, codes layer 4 TEXT
video 4 binaer
lootPool 3 TEXT
credits 1 TEXT entryType, localizedStr, entry0, creditList footstepEvents 1 TEXT landEventDecl, sneakEventDecl, walkEventDecl, runEventDecl, sprint globalflag 1 TEXT name, saveID, flags handIK 1 TEXT attach, hand, foreArm, elbow, shoulder targetinglaser 1 TEXT scale, retain, pitch, yaw, weaponSlot reachIK 1 TEXT armInfo, hand, elbow, shoulder playerProps 1 TEXT materialView, materialSide, frameDamageScale, fadeOut, fadeOutDura rollBones 1 TEXT rollSourceJoint, rollDestJoint, rollAmount, rollBones morphVertices 1 binaer
vehicle 1 TEXT maxSpeed, wheelJoint, wheelRadius, wheelOffset, suspensionUp vehicleWindowKit 1 TEXT tagName, normalModelName, brokenModelName, collisionModelName, max specialEvent 1 TEXT specialEventType

203843 Assets, 105 Types -- of which 80 are fully text-based and thus directly editable

Counting Rule

The 105 types split here triply: 80 TEXT, 5 mixed (sound, particle, renderProg, cuttableResource, file — Text Decls and their binary counterparts under the same type name), and 20 binary.

TNO-Modding-Surface.md refers to these same 105 types as "84 text, 21 binary". This is not a different measurement value, but a different counting rule: tools/survey_modding_surface.py knows no "mixed" class, but decides per type based on one sample (is_text()): over 95% printable characters in the first 4096 bytes. Four of the five mixed types end up on the text side, one on the binary — 80 + 4 = 84 and 20 + 1 = 21.

Whoever quotes the number should therefore specify which of the two rules is meant. "Directly editable without side effects" are the 80.

Note on generation. The block above is the output of tools/survey_engine.py. The line for sample has been manually corrected here: tools/survey_engine.py:45 continues to describe the type as "Raw audio data (Ogg Vorbis)", which Audio.md §3 refutes in all 61,318 entries. Until the line in the tool is updated, a rerun will bring back the error.

Clone this wiki locally