Texture and other statistics for a variety of doom maps. I somehow got inspired to make these stats following a discussion on a possible "free iwad" or "texture replacement wad", and I wondered which textures are actually used the most. I whipped up a quick utility to spit out the map data, suitable for processing using "sort" & "uniq -c". I fed it the following 12 wads, which I hope are fairly representative for iwad texture usage: doom2 plutonia tnt doom requiem 10sector 10secto2 hr strain mm mm2 icarus which generated over 50 meg of program output, or 130k after sort/uniq, and 15k in summarized/edited form below. below are the stats, enjoy. Some suprises in there, too. --Aardappel top-100 UPPER/LOWER/MID textures: 1726120 - 45598 METAL WALL47_1 vert metal bolts 42211 SUPPORT3 WALL42_3 vert metal strips 25504 METAL2 RW33_1 metal panels 16820 GSTONE1 WALL48_1/2/3/4 big marble bricks 12690 SHAWN2 AG128_1 grey gradient 12164 STEPTOP RIPW15 brown step 9869 TEKGREN2 RW37_2 green panelled tech wall 8382 BRICK1 RW1_3 small brown bricks 8340 BRICK7 RW24_2 brown bricks 8331 BROWN1 WALL02_1/2/3 light brown tech wall with top trim 8057 STONE2 W28_8 big grey bricks 7616 BSTONE2 RW1_2 small brown stones 7499 STONE6 RW18_3 brown flat rock wall 7068 ASHWALL3 RW22_2 dark brown rubble 6915 STONE4 RW18_1 grey flat rock wall (as STONE6) 6792 BROWN96 WALL62_1 browngreen tech wall with top trim 6791 DOORTRAK DOORTRAK uhh... 6739 BRICK9 RW24_4 brown bricks (as BRICK7) 6690 BIGBRIK1 RW23_3 big dark brown bricks 6238 DOORSTOP TTALL1_2 grey gradient door trim 6168 SLADWALL WLA128_1 green tech trim (same as top BROWNGRN) 5862 SILVER1 RW32_1 grey gradient with trim (similar SHAWN2) 5820 SUPPORT2 SUPPORT2 dented gradient lift side 5596 MARBGRAY RW7_2 grey marble with green trim top & bot 5386 BROWNGRN WALL62_2 green tech wall with top trim (as BROWN96) 5198 MARBLE1 MWALL1_1 green marble 5051 WOODMET1 RW26_1 vert wood with horiz bolted metal across 4926 COMPSPAN COMP03_4 metal panels (similar METAL2) 4820 BRICK10 RW41_1 green brick 4814 LITE3 WLITA0/B0/C0 wide light 4617 ASHWALL2 RW22_1 dark grey rubble 4307 STONE 4270 BRICK8 4187 TANROCK5 4057 ROCKRED1 3952 STARTAN3 3882 GRAY1 3801 LITE5 3773 MARBLE2 3701 WOOD5 3691 COMPBLUE 3670 WOOD1 3668 STEP5 3633 STONE3 3528 STEP4 3510 MIDBARS3 3461 METAL1 3409 NUKE24 3395 SP_ROCK1 3375 BRONZE1 3296 BSTONE1 3154 SP_HOT1 3145 BROWNHUG 3143 ZIMMER3 3104 BRICK6 3079 WOOD8 2950 MARBLE3 2831 GRAY5 2707 ASHWALL4 2640 ROCK5 2601 BIGBRIK2 2444 MIDGRATE 2438 DOOR3 2435 GRAY7 2398 ROCK1 2395 TANROCK4 2370 WOOD9 2363 ZIMMER5 2262 STEP6 2206 IKMET2 2205 SFALL1 2179 NUKEDGE1 2146 BRICK5 2106 STARTAN2 2103 PANCASE2 2041 TEKLITE 2034 GRAYBIG 1970 BRONZE3 1967 A_METL16 1957 BRICK2 1869 WOOD12 1862 AWIRON 1860 STARGR1 1801 STEP2 1794 BROWN144 1790 STEPLAD1 1784 AWMETAL2 1751 TANROCK3 1737 PIPEWAL2 1733 COMPTALL 1727 ICKWALL1 1612 AWWOOD 1607 REDWALL 1542 BFALL1 1493 ZZWOLF1 1470 A_METL8 1469 ROCK3 1452 STARG3 1420 PIPE2 top-10 UPPER textures: 650481 - 14747 METAL 7822 SUPPORT3 7201 METAL2 3580 SHAWN2 3303 TEKGREN2 3196 GSTONE1 1975 BRICK1 1908 ASHWALL3 1873 BROWN1 top-10 MID textures: 461454 - 24393 SUPPORT3 17598 METAL 11434 STEPTOP 11029 METAL2 8356 GSTONE1 6573 DOORTRAK 5642 STONE2 5133 SHAWN2 5087 DOORSTOP top-10 LOWER textures: 614185 - 13253 METAL 9996 SUPPORT3 7274 METAL2 5268 GSTONE1 3977 SHAWN2 3481 TEKGREN2 3026 STEP5 2619 STONE4 2376 BRICK7 2332 BRICK1 top-100 FLATS (FLOOR+CEILING) 14504 CEIL5_2 browngreen 10061 F_SKY1 8215 FLOOR7_1 brown 5271 CEIL5_1 dark grey 4564 FLAT5_4 light grey 4334 RROCK03 dark grey rubble 4075 FLAT23 grey gradient 3796 SLIME15 light grey metal tile 3766 FLAT1 grey 3403 FLAT19 light grey 3245 MFLR8_2 brownish rubble 3235 CEIL3_5 grey brick tile 3205 DEM1_5 green marble 3115 SLIME14 light grey metal tile (as SLIME15) 3003 FLOOR7_2 green marble (as DEM1_5) 2920 FLAT20 tiny light grey tiles 2840 FLOOR4_8 dark grey hexagons 2681 FLAT5_5 light brown 2629 FLAT5_2 wooden planks 2338 FLAT14 dark blue 2312 RROCK09 light brown 2301 RROCK12 light brown small stones 2214 FLOOR5_1 dark grey hexagons (as FLOOR 4_8) 2175 FLAT18 light grey with rim (similar FLAT19) 2125 FLOOR5_4 light brown brick 2030 FLAT10 dark brown rubble 1933 FLAT5_1 wooden tiles 1909 RROCK10 small bricks 1670 FLOOR0_3 grey overlapping bits 1650 DEM1_6 marble tiles 1513 NUKAGE1 1476 GRASS1 1426 FLAT4 1387 FWATER1 1337 FLOOR0_1 1313 BLOOD1 1200 FLAT5_8 1164 CEIL3_3 1107 CRATOP1 1098 FLAT1_2 1094 RROCK11 1089 FLAT1_1 1077 FLOOR6_2 1060 MFLR8_1 1020 FLAT5 1016 SLIME13 965 FLOOR3_3 956 RROCK18 946 MFLR8_3 908 MFLR8_4 896 FLAT3 892 CEIL1_1 877 TLITE6_5 852 GATE3 806 SLIME16 784 TLITE6_6 773 FLAT5_3 742 CEIL4_1 699 FLOOR0_5 691 FLOOR4_6 668 RROCK17 647 GATE4 646 RROCK19 643 FLOOR0_7 643 CEIL3_1 627 AFMETAL 623 SFLR6_1 616 RROCK13 614 FLAT9 613 RROCK16 612 RROCK04 609 CEIL3_2 583 CEIL4_2 568 GRNROCK 560 STEP2 559 GATE1 555 RROCK15 554 CEIL1_2 536 GRASS2 522 CRATOP2 508 STEP1 504 AFMET4 502 TLITE6_1 497 FLAT5_7 493 LAVA1 474 FLOOR5_3 461 SPECT2 455 RROCK14 452 FLOOR1_6 446 FLOOR0_2 423 FLOOR6_1 405 CEIL4_3 393 CEIL3_4 381 FLOOR5_2 375 ADEL_F04 374 ADEL_F10 366 FLOOR4_5 359 GATE2 353 ADEL_F11 341 RROCK05 top-10 FLATS (FLOOR only) 4513 CEIL5_2 4052 FLOOR7_1 2466 FLOOR4_8 2398 FLAT5_4 1987 SLIME15 1958 SLIME14 1912 FLOOR5_1 1784 DEM1_5 1703 FLAT23 1702 FLAT1 top-10 FLATS (CEILING only) 9991 CEIL5_2 9846 F_SKY1 4163 FLOOR7_1 3831 CEIL5_1 3084 RROCK03 2471 CEIL3_5 2372 FLAT23 2166 FLAT5_4 2064 FLAT1 1809 SLIME15 THING types (monsters): 15055 3001 imp 8803 9 former human sergeant 5317 65 heavy weapon dude 4895 3004 former human 4536 3002 demon 3024 66 revenant 2585 58 spectre 2560 3005 cacodemon 2333 3006 lost soul 2293 69 hell knight 1881 3003 baron of hell 1637 68 arachnotron 1443 67 mancubus 933 64 arch-vile 824 71 pain elemental 383 16 cyber-demon 150 7 spider mastermind THING types (pickups): 5321 2014 1% health 4938 2008 Shotgun shells 4668 2012 Medikit 4661 2011 Stimpak 4085 2046 Box of Rockets 3846 2015 +1% armor 3806 2049 Box of Shells 2578 2010 A rocket 2035 2007 Ammo clip 1974 2048 Box of Ammo 1482 17 Cell charge pack 1257 2047 Cell charge 883 2001 Shotgun 783 82 Double-barreled shotgun 697 8 Backpack 656 2003 Rocket launcher 576 2002 Chaingun 550 2018 Green armor 508 2013 Soulsphere 435 2004 Plasma gun 412 2025 Radiation suit 385 2019 Blue armor 312 83 Megasphere 307 2023 Berserk 260 2006 Bfg9000 230 2005 Chainsaw 206 2024 Invisibility 151 2022 Invulnerability THING types (decoration): 3426 2035 Barrel 1769 46 Tall red firestick 1351 57 Short red firestick 939 24 Pool of blood and flesh 880 2028 Floor lamp 830 34 Candle 656 45 Tall green firestick 561 44 Tall blue firestick 549 56 Short green firestick 526 86 Short techno floor lamp 508 54 Large brown tree 490 15 Dead player 472 43 Burnt tree: gray tree 467 70 Burning barrel 429 48 Tall, techno pillar 400 80 Pool of blood THING types (spawns): 2842 14 Teleport landing 2177 11 Deathmatch start 397 1 Player 1 start 373 2 Player 2 start 371 3 Player 3 start 366 4 Player 4 start THING options: 73464 7 1/2/3/4/5 19042 15 1/2/3/4/5 + deaf 9017 6 3/4/5 7272 4 4/5 6627 14 3/4/5 + deaf 5173 12 4/5 + deaf 4953 23 1/2/3/4/5 + DM 1950 1 1/2 1444 3 1/2/3 1085 9 1/2 + deaf 686 31 1/2/3/4/5 + deaf + DM 632 2 3 582 11 1/2/3 + deaf SECTOR special: 78001 0 2218 8 Light oscillates 1621 17 Light flickers on and off randomly 1361 7 Damage -2/5% health 1239 9 Secret 876 1 Light random off 711 5 Damage -5/10% health 489 16 Damage -10/20% health 411 2 Light blink 0.5 second 329 13 Light blink 1.0 second, synchronized 284 12 Light blink 0.5 second, synchronized 246 3 Light blink 1.0 second SECTOR light level 14459 160 6742 144 6518 128 5570 255 5321 150 4496 180 4310 192 4148 140 3555 130 3254 200 2772 176 2565 120 2135 170 2095 155 2062 112 1186 175 1075 135 1046 100 SECTOR height: 18238 128 9499 0 6434 64 5464 96 4510 72 3047 112 2831 80 2260 256 2005 192 1750 160 1682 144 1597 104 1486 120 1471 88 1200 176 1123 32 LINE types: 589292 0 5374 97 Telpt WRm tport - - - Teleport 2798 1 mDoor nSRm door med 4 - open/close 2529 48 Spec n-- - - - - Scrolling wall 2424 62 Lift SR lift fast 3 - lift 1876 126 Telpt WRm tport - - - Teleport monsters only 1702 123 Lift SR lift turbo 3 - lift 1186 109 rDoor W1 blaze turbo - - open 939 117 mDoor nSR blaze turbo 4 - open/close 926 38 Floor W1 mover slow - - down to LEF 832 88 Lift WRm lift fast 3 - lift 684 23 Floor S1 mover slow - - down to LEF 652 52 Exit nW- clunk - - - End level, go to next level 598 19 Floor W1 mover slow - - down to HEF 578 2 rDoor W1 door med - - open LINE flags 280544 1 Impassible 164296 4 Two-sided 23543 12 Two-sided + Upper Unpegged 22906 28 Two-sided + Upper Unpegged + Lower Unpegged 20969 17 Impassible + Lower Unpegged 20223 20 Two-sided + Lower Unpegged 14764 0 [single sided, yet passable??] 13744 132 Two-sided + Not on Map 10300 129 Impassible + Not on Map 5902 5 Impassible + Two-sided 5100 6 Two-sided + Block Monsters 5009 9 Impassible + Upper Unpegged 4932 36 Two-sided + Secret // program to generate the data for stats: takes any number of wads as // command line arguments, and spits out data that needs to be processed // by sort & uniq // program assumes little indians :) #include #include #include struct sidedef { short xoff, yoff; char upper[8], lower[8], mid[8]; short secref; }; struct sector { short floor, ceil; char ftex[8], ctex[8]; short light, special, tag; }; struct linedef { short from, to, flags, type, tag, right, left; }; struct thing { short x, y, angle, type, options; }; char temp[9]; char *t(char *t) { strncpy(temp, t, 8); temp[8] = 0; return temp; }; void th(thing *t) { printf("tt %d\n", t->type); printf("to %d\n", t->options); }; void line(linedef *l) { printf("lf %d\n", l->flags); printf("lt %d\n", l->type); }; void side(sidedef *s) { printf("wa %s\n", t(s->upper)); printf("wa %s\n", t(s->lower)); printf("wa %s\n", t(s->mid)); printf("up %s\n", t(s->upper)); printf("lo %s\n", t(s->lower)); printf("mi %s\n", t(s->mid)); }; void sect(sector *s) { printf("sf %s\n", t(s->ftex)); printf("sf %s\n", t(s->ctex)); printf("ff %s\n", t(s->ftex)); printf("cf %s\n", t(s->ctex)); printf("sh %d\n", s->ceil-s->floor); printf("sl %d\n", s->light); printf("ss %d\n", s->special); }; void lump(char *l, int len, char *name) { if(strncmp(name, "SIDEDEFS", 8)==0) { for(int i = 0; i