Still plugging away at bits for PackBSP 2.0. This next part probably isn't half as impressive as a picture, but I'll post pictures once the GUI's at the right stage.
The program is examining the TF2 Swamp-Pack demo map, and figuring out what needs to be included in the map if it were to be distributed stand-alone. (This is a replacement for the "pakrat" program with some major improvements.)
Near the end you can see which files were detected as "missing", broken into "required" and "optional" missing items. You can see it catches that a cubemap has not been built.
The whole thing takes about 1.5 seconds to run, although in this unit test that's not counting the time it would normally take to interrogate the Steam/SDK metadata for discovering SDK paths and GCF dependencies.
- Code: Select all
To Pack: models/props_swamp/row_boat_ref.mdl
To Pack: models/props_swamp/row_boat_ref.phy
To Pack: models/props_swamp/row_boat_ref.vvd
To Pack: models/props_swamp/row_boat_ref.SW.vtx
To Pack: models/props_swamp/row_boat_ref.DX90.vtx
To Pack: materials/Models/props_swamp/row_boat_diffuse.vmt
To Pack: materials/Models/props_swamp/row_boat_diffuse.vtf
To Pack: models/props_swamp/row_boat_ref.DX80.vtx
To Pack: materials/swamp/overlays/algae001.vmt
To Pack: materials/swamp/Overlays/algae001.vtf
To Pack: models/props_swamp/tree_swamp_02.mdl
To Pack: models/props_swamp/tree_swamp_02.vvd
To Pack: models/props_swamp/tree_swamp_02.DX90.vtx
To Pack: models/props_swamp/tree_swamp_02.phy
To Pack: models/props_swamp/tree_swamp_02.DX80.vtx
To Pack: models/props_swamp/tree_swamp_02.SW.vtx
To Pack: materials/Models/props_swamp/tree_swamp_02.vmt
To Pack: materials/models/props_swamp/tree_swamp_02.vtf
Skipped: {MaterialNode : path=materials/tools/toolsskybox.vmt}
To Pack: models/props_swamp/shroom_ref_01_cluster.mdl
To Pack: models/props_swamp/shroom_ref_01_cluster.DX80.vtx
To Pack: materials/models/props_swamp/shroom_diffuse.vmt
To Pack: materials/Models/props_swamp/shroom_diffuse.vtf
To Pack: models/props_swamp/shroom_ref_01_cluster.vvd
To Pack: models/props_swamp/shroom_ref_01_cluster.SW.vtx
To Pack: models/props_swamp/shroom_ref_01_cluster.DX90.vtx
To Pack: models/props_swamp/signpost001.mdl
To Pack: materials/models/props_swamp/sign001.vmt
To Pack: materials/Models/props_swamp/sign001.vtf
To Pack: models/props_swamp/signpost001.DX90.vtx
To Pack: models/props_swamp/signpost001.phy
To Pack: models/props_swamp/signpost001.vvd
To Pack: models/props_swamp/signpost001.SW.vtx
To Pack: models/props_swamp/signpost001.DX80.vtx
To Pack: models/props_swamp/cattails_ref01.mdl
To Pack: materials/models/props_swamp/cattails.vmt
To Pack: materials/models/props_swamp/cattails.vtf
To Pack: models/props_swamp/cattails_ref01.SW.vtx
To Pack: models/props_swamp/cattails_ref01.DX80.vtx
To Pack: models/props_swamp/cattails_ref01.DX90.vtx
To Pack: models/props_swamp/cattails_ref01.vvd
To Pack: models/props_swamp/buttress_tree_stump_small_ref.mdl
To Pack: models/props_swamp/buttress_tree_stump_small_ref.DX80.vtx
To Pack: materials/Models/props_swamp/buttress_stump.vmt
To Pack: materials/Models/props_swamp/buttress_stump.vtf
To Pack: models/props_swamp/buttress_tree_stump_small_ref.SW.vtx
To Pack: models/props_swamp/buttress_tree_stump_small_ref.DX90.vtx
To Pack: models/props_swamp/buttress_tree_stump_small_ref.vvd
To Pack: models/props_swamp/buttress_tree_stump_small_ref.phy
Skipped: {ModelNode : path=models/props_mining/barbedfence_set01.mdl, skins=[0], physics=false}
Skipped: {MaterialNode : path=materials/water/water_2fort_beneath.vmt}
Skipped: {MaterialNode : path=materials/tools/toolsblack.vmt}
To Pack: models/props_swamp/buttress_tree_small_ref.mdl
To Pack: models/props_swamp/buttress_tree_small_ref.DX90.vtx
To Pack: models/props_swamp/buttress_tree_small_ref.phy
To Pack: models/props_swamp/buttress_tree_small_ref.DX80.vtx
To Pack: materials/Models/props_swamp/buttress_leaves.vmt
To Pack: materials/models/props_swamp/buttress_leaves.vtf
To Pack: models/props_swamp/buttress_tree_small_ref.SW.vtx
To Pack: models/props_swamp/buttress_tree_small_ref.vvd
To Pack: models/props_swamp/gator_ref.mdl
To Pack: models/props_swamp/gator_ref.phy
To Pack: models/props_swamp/gator_ref.SW.vtx
To Pack: models/props_swamp/gator_ref.DX90.vtx
To Pack: models/props_swamp/gator_ref.vvd
To Pack: materials/models/props_swamp/gator_diffuse.vmt
To Pack: materials/Models/props_swamp/gator_diffuse.vtf
To Pack: models/props_swamp/gator_ref.DX80.vtx
To Pack: materials/skybox/sky_night_02up.vmt
To Pack: materials/skybox/sky_night_02up.vtf
To Pack: materials/skybox/sky_night_02lf.vmt
To Pack: materials/skybox/sky_night_02lf.vtf
To Pack: materials/skybox/sky_night_02ft.vmt
To Pack: materials/skybox/sky_night_02ft.vtf
To Pack: materials/skybox/sky_night_02rt.vmt
To Pack: materials/skybox/sky_night_02rt.vtf
To Pack: materials/skybox/sky_night_02bk.vmt
To Pack: materials/skybox/sky_night_02bk.vtf
To Pack: materials/skybox/sky_night_02dn.vmt
Skipped: {MiscFileNode : path=materials/skybox/sky_night_01dn.vtf}
To Pack: materials/swamp/nature/blendswampdirttograss001.vmt
Skipped: {MiscFileNode : path=materials/Nature/dirtground001_height-ssbump.vtf}
To Pack: materials/swamp/Nature/swampmud003.vtf
To Pack: materials/swamp/Nature/swampgrass001.vtf
To Pack: models/props_swamp/jetti_ref.mdl
To Pack: models/props_swamp/jetti_ref.DX90.vtx
To Pack: materials/models/props_swamp/jetti_diffuse.vmt
To Pack: materials/Models/props_swamp/jetti_diffuse.vtf
To Pack: models/props_swamp/jetti_ref.phy
To Pack: models/props_swamp/jetti_ref.SW.vtx
To Pack: models/props_swamp/jetti_ref.DX80.vtx
To Pack: models/props_swamp/jetti_ref.vvd
To Pack: models/props_swamp/oar_ref.mdl
To Pack: models/props_swamp/oar_ref.DX90.vtx
To Pack: models/props_swamp/oar_ref.phy
To Pack: materials/models/props_swamp/oar_diffuse.vmt
To Pack: materials/Models/props_swamp/oar_diffuse.vtf
To Pack: models/props_swamp/oar_ref.DX80.vtx
To Pack: models/props_swamp/oar_ref.SW.vtx
To Pack: models/props_swamp/oar_ref.vvd
To Pack: maps/swamp_vignette_1_particles.txt
To Pack: particles/bugs.pcf
To Pack: particles/zapper.pcf
To Pack: particles/goo_swamp.pcf
To Pack: particles/lightning.pcf
To Pack: particles/smoke.pcf
To Pack: particles/buoy_effects.pcf
To Pack: particles/waterdrips.pcf
To Pack: particles/awe_swamp.pcf
To Pack: particles/cloud.pcf
To Pack: particles/rain_with_collision.pcf
To Pack: particles/fire01.pcf
Skipped: {MaterialNode : path=materials/tools/toolsnodraw.vmt}
To Pack: models/props_swamp/tree_swamp_01.mdl
To Pack: models/props_swamp/tree_swamp_01.vvd
To Pack: models/props_swamp/tree_swamp_01.SW.vtx
To Pack: models/props_swamp/tree_swamp_01.phy
To Pack: materials/Models/props_swamp/tree_swamp_01.vmt
To Pack: materials/models/props_swamp/tree_swamp_01.vtf
To Pack: models/props_swamp/tree_swamp_01.DX80.vtx
To Pack: models/props_swamp/tree_swamp_01.DX90.vtx
Missing (required): {MiscFileNode : path=materials/maps/swamp_vignette_1/c-256_192_256.vtf}
Missing (required): {MaterialNode : path=materials/WATER/WATER_SWAMP.vmt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_korean.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/shroom_ref_01_cluster.phy}
Missing (optional): {MiscFileNode : path=models/props_swamp/shroom_ref_01_cluster.ani}
Missing (optional): {MiscFileNode : path=models/props_swamp/oar_ref.ani}
Missing (optional): {MiscFileNode : path=maps/graphs/swamp_vignette_1.ain}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_russian.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_german.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/tree_swamp_02.ani}
Missing (optional): {MiscFileNode : path=models/props_swamp/cattails_ref01.ani}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_finnish.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_japanese.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_tchinese.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_danish.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_french.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_schinese.txt}
Missing (optional): {SoundscapeNode : path=scripts/soundscapes_swamp_vignette_1.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_english.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_dutch.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_swedish.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/tree_swamp_01.ani}
Missing (optional): {MiscFileNode : path=models/props_swamp/buttress_tree_stump_small_ref.ani}
Missing (optional): {MiscFileNode : path=models/props_swamp/row_boat_ref.ani}
Missing (optional): {MiscFileNode : path=models/props_swamp/signpost001.ani}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_polish.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/jetti_ref.ani}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_italian.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/buttress_tree_small_ref.ani}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_spanish.txt}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_portuguese.txt}
Missing (optional): {MiscFileNode : path=models/props_swamp/cattails_ref01.phy}
Missing (optional): {MiscFileNode : path=maps/swamp_vignette_1_norwegian.txt}
Missing (optional): {MaterialNode : path=materials/vgui/maps/menu_photos_swamp_vignette_1.vmf}
Missing (optional): {MiscFileNode : path=models/props_swamp/gator_ref.ani}
Dependency crawling complete in 1.523 seconds.