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 forsamplehas been manually corrected here:tools/survey_engine.py:45continues to describe the type as "Raw audio data (Ogg Vorbis)", whichAudio.md§3 refutes in all 61,318 entries. Until the line in the tool is updated, a rerun will bring back the error.