Mission Filestructure

From The DarkMod Wiki
Revision as of 10:15, 3 May 2017 by Freyk (talk | contribs)
Jump to navigationJump to search



Choosing a PK4 filename

It's important to come up with a unique filename for your PK4 file, as the filename is used by the in-game mission manager to distinguish the packages: it's best to choose a PK4 name that has not been used by other released missions. Furthermore, don't use foreign characters for the filename, stick with the alphanumeric characters A-Z, a-z and 0-9. Please do not include version information in the filename, future updates should have the same filename to properly update via the in-game installer. ../darkmod/fms/levelname.pk4 //path

Mission PK4s

Each TDM mission must be packaged in a PK4 file (a PK4 is just a renamed ZIP archive). The PK4 contains all the files needed to run the mission, including map, cm, aas, proc files, textures, models, scripts, defs, xdata, etc. The contents of the PK4 resemble the folder structure as found in the main darkmod/ directory: textures go into textures/, .def files go to def/ and so on.

Mimimum content of a pk4

At the very minimum, a PK4 archive needs to contain the compiled map and two text files:

maps/outpost.map
maps/outpost.proc
maps/outpost.cm
maps/outpost.aas32
darkmod.txt
startingmap.txt

Easy to see, the above example list of files is based on a mission called outpost. The two text files are needed to display your mission in the "New Mission" dialog in TDM's main menu. See their description below.


Content of a pk4

./credits.txt                                              //please insert to continue
./darkmod.txt                                              //title info
./list.txt                                                  //this directory listing
./readme.txt                                              //readme
./startingmap.txt                                          //this level
./dds/
./dds/textures
./dds/textures/darkmod
./dds/textures/darkmod/custom_texture.dds                          //i'm not sure the difference
./dds/textures/darkmod/decals/                                        //between these paths
./dds/textures/darkmod/decals/custom decal.dds                          //as it seems like it should
./dds/textures/darkmod/decals//building_facades                         //work wherever you
./dds/textures/darkmod/decals//building_facades/levelname_eg.window.dds             //put the dds files in here (tidiness' sake)?
/levelname/customtexturemaps.dds
/def/custom_AI_head_and_skin.def                                //these are def files that
/def/custom_AI_head_and_skin2.def                            //i have ripped from
/def/custom_AI_inc_props.def                                 //various missions
/def/custom_npc_model_inherit_custom_ai.def                     //that might prove useful
/def/tdm_ai_custom_ai.def                                     //in the future
/def/tdm_lod_custom_level_of_detail_for_model.def             //for specific functions.
/env                                                        //contains skybox *unknown format
/envskybox.* (lwo?)
/fonts/fontimage_<size>.dat                                    //<size> is pica/pts. *unsure where refered in .xd?
/guis/custom_readable_slab.gui                                  //guis for readables
/guis/mainmenu_briefing.gui                                      //briefing screen. Can find extended version by Sotha via fidcal's (http://www.fidcal.com  /DarkModContributions/guis/briefings/briefing_button.zip )
/guis/mainmenu_custom_defs.gui                                 //shop / [item] persistence over campaign / advanced briefing & debrief, eg, start points / replacement/music[voiceover] / video (wiki documentation).
/guis/assets
/guis/assets/briefingX.tga                                          //briefing background
/guis/assets/generic_loading_bar1.tga                              //level load bar
/guis/assets/levelname_loading.tga                                  //loading background
/guis/assets/next_arrow.tga                                      //briefing arrows (as referred by briefing.gui)
/guis/assets/previous_arrow.tga  
/guis/assets/stop_cross.tga		
/guis/assets/game_maps/map_of_levelname.tga                              //in-game level map
/guis/assets/game_maps/map_of_levelname_icon.tga                          //icon for level map
/guis/hud
/guis/hudcustom_hud.tga                                  //hud changes (no hud.gui?)
/guis/hud/inventory_icons
/guis/hud/custom_inv_item.tga                          //extra inventory icons
/splash/levelname_loading.tga                              //what it says - think the image dimensions either 640x480 or 512x512, origin is top left corner
/map
/map/map_of_levelname.gui                                  //points from game to tga (unsure if can tga can be compressed to dds for smaller d/l)
/lights/custom_light_colour.tga                                  //light shaders
/lights/custom_light_nocolour.tga  
/maps/levelname.aas_rat                                          //dmap output (richard gere and lemmiwinks).
/maps/levelname.aas32                                         //required to play game
/maps/levelname.cm  
/maps/levelname.map  
/maps/levelname.proc
/maps/levelname.script    
/materials
/materials/custom_ai.mtr                                              //material files for several
/materials/custom_light.mtr                                         //purposes, definition to include
/materials/custom_map.mtr                                             //new textures, light, game map,
/materials/custom_obj_lod.mtr                                         //models, fixes, behaviour, etc...
/materials/frobhighlight_textures_example.mtr
/materials/ghost_collision_draw_fix.mtr
/materials/levelname (new textures.surfaces).mtr
/materials/levelname_light_textures.mtr
/materials/levelname_textures (modified textures).mtr
/materials/levelname_video.mtr  
/materials/stolen_AI_base_WS1ghost.mtr                         // I nicked this one as example of custom.mtr
/materials/models
/materials/models/darkmod
/materials/models/darkmod/decorative                                            //3DSMax / Blender / DR exported .ase files here
/materials/models/darkmod/category                                        //all ase requires definition through material (.mtr) and parent to (.skin).
/materials/models/darkmod/category/custom_model.ase  
/materials/models/darkmod/loot/custom loot model.ase  
/materials/models/darkmod/misc/system/skybox_model.lwo                             //lightwave model/mesh - references texture where? (unclear pointer) - 2D or 3D as with source vtf but to lwo instead? https://developer.valvesoftware.com/wiki/Skybox_(2D) / https://developer.valvesoftware.com/wiki/Making_3D_Skyboxes
/weapons/custom_weapon(nonplayer).lwo
/levelname/custom_model.ase
/md5                                                    //md5 mesh depot
/md5/chars/body/npc/custom_npc_body.md5mesh
/heads/npc/custom_npc_head.md5mesh
/particles/
/particles/customparticle.prt                                      //particle info - can be created
/particles/tdm_alter_existing_particle.prt                          //using in-game console
/script
/script/custom_ai.script                                          //script files here
/script/levelname.script
/script/tdm_ai_event.script
/script/tdm_custom_scripts.script  
/skins                                                         //skins link textures to .ase models - appears similar in function to: http://www.misfitcode.com /misfitmodel3d/olh_quakemd3.html#textures which would allow .png substitute [stegosploit]
/skins/custom_ai.skin
/skins/custom_loot.skin  
/skins/custom_obj_model.skin
/skins/tdm_replace_model_texture.skin
/skins/texture for model.skin  
/skins/zombie_replacement.skin
/sound                                                         //sound shader replacement pointers
/sound/doorsounds.sndshd  
/sound/effects.sndshd  
/sound/footsteps.sndshd
/sound/music.sndshd
/sound/voices.sndshd  
/sound/effects/                                                //the sound files themselves
/sound/effects/custom.effect.ogg  
/sound/effects/footsteps
/sound/effects/footstepscustomstep.surface.ogg
/sound/effects/music
/sound/effects/musiclevelmusic.ogg  
/sound/effects/voices
/sound/effects/voices/charvoice.ogg  
/sound/effects/voices/conversation.ogg
/strings/fm                                                     //each translation requires new                            
/strings/fm/de.lang                                              //repack. Game items must be named
/strings/fm/eng.lang                                             //#str or look-up-replaced using...
/strings/fm/es.lang                                             //i forgot the name...
/strings/fm/pyc.lang                                           //ebatc
/textures                         
/textures/darkmod/                                                //new textures go here.
/textures/darkmod/custom texture.jpg                                     //normals and other maps must
/textures/darkmod/custom texture.tga                                  //be packaged as .dds - unclear on optimal dimension or resolutions (512x512 appears fine for tiling surface).
/textures/decals/                                                
/textures/decals/blood                                             //alpha channel. 24 or 32bit only - appears black / loses alpha transparency if not.
/textures/decals/blood/custom_blood.jpg                       // jpegs do not contain alpha channels, but appears to retain EXIF - possible intrusion risk via stegosploit [untested].
/textures/decals/blood/custom_blood.tga                       // even if game does not allow for intrusion, JS or other access of file may run, RAT, embedded.
/textures/decals/dirt/dirt/custom_dirt.jpg                          // malicious level design: https://conference.hitb.org/hitbsecconf2015ams/wp-content/uploads/2015/02/D1T1-Saumil-Shah-Stegosploit-Hacking-with-Pictures.pdf
/textures/decals/dirt/custom_dirt.tga                          // considering older engine, perhaps worth test for guard in VM.
/levelname/customtexture.jpg  
/levelname/customtexture.tga  
/video/levelname_briefing.roq                                  //format for in-game video (encoder: ftp://ftp.idsoftware.com/idstuff/quake3/tools/roq.zip / decoder: https://github.com/i...client/cl_cin.c)
/video/levelname_credits.roq
/xdata
/xdata/briefing.xd                                             //text only briefing - use gui for moving image, timed sequence, etc...
/xdata/levelname.xd                                              //readables data