Door Kickers

Door Kickers

Not enough ratings
How to make and upload multi floor maps! (WIP)
By Eagle Scout
Making multi floor maps for workshop takes some VERY simple coding, and a bunch of mistakes. And uploading is intresting. if you want to upload to workshop, you gotta do it the hard way. Also, my first guide!
   
Award
Favorite
Favorited
Unfavorite
DISCLAIMER
PLEASE DONT SPAM THE WORKSHOP!!!!!! JUST TRUST ME OR MAKE SOMETHING WORTHY OF WORKSHOP THEN UPLOAD! DONT SPAM!!!


i am not at fault if you post garbage, spam, or other distasteful filth
PART 1: The Art of Multi Floor Levels: Summary
The art of making multi floor levels involve multiple steps, and a few text editors. i prefer Notepad++, which is free. i will not link it, because i dont recall where i downloaded it. There are no pics in this tutorial. just text.


there are a steps to making a map with multiple floors, and something i call "Publishing Old Style". You will see what i mean in a short while. But first, lets start with a brief outline of a code used to make a map with multiple floors
Basic ingredients to making a multi floor map
Free Programs from the internet:
Notepad++ (for opening .xml files to edit)
Gimp (for image editing)

Programs used In Game:
in game Level Editor

the following files will be used, to make a multi floor map:
MyMap_0.xml
MyMap_0.tga
MyMap_1.tga*



(*you will be creating this file soon)
Adding the First Floor to the Map!
to make a multi floor building in game, you start small. in this case, you will go to in game level editor, make a new map ADD AT LEAST ONE SINGLE THING!!!! then set it to be a dope raid. name the map MyMap_0. then save the map, and quit the game


now, find the location of your map, go to this area on your computer:

C:\Users\YOURNAME\Documents\KillHouseGames\DoorKickers\data\levels

and this here is where you shall add floors to your map. this is where the file MyMap_0.xml should be. if not, you are screwed

now that you have the file MyMap_0.xml open, you should see the following segments/sections:

<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/test1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>
</Level>


Next to MyMap_0.xml, there is an image file called MyMap_0.tga. Take the file MyMap_0.tga, copy it, and paste it in the folder, and rename the copy to MyMap_1.tga you should see the following segments/sections:

now that you made a copy of the MyMap_0.tga file called MyMap_1.tga, go back to where the MyMap_0.xml file is, and add the following section to it, under the Music Track section:

<Storey name="1st Floor">


the file code should now look like this:

<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>
<Storey name="1st Floor">
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_0.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>
</Level>


Do you still have MyMap_1.tga? You do?! GOOD!!! Now, go back to where the MyMap_0.xml file is, open it in notepad++, and copy paste all the stuff in the file UNDER THIS SECTION:

<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>

if you copy pasted right, you should now have this as your copied section, ready to transfer to mymap_0.xml:



<Storey name="1st Floor">
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levelsMyMap_0.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>

</Level>


now rename the floor from 1st Floor to Ground Floor

see the section that says the following:

<Background>
<RenderObject2D texture="data/levels/MyMap_1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>

this is what you want to edit.

change the the MyMap_0.tga part to MyMap_1.tga!!!!!

your backround section should look like this now:
<Background>
<RenderObject2D texture="data/levels/ MyMap_1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>



the MyMap_0.xml code should now look like this, after doing all of the above:

<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>
<Storey name="1st Floor">
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>

<Paths/>
<Entities/>
<Walls/>
</Level>


now, we will finish this part up. you will now copy and paste EVERYTHING below the <Storey name="1st Floor"> in the xml file to the end of <Walls/> in the same file

THEE IS ONE CATCH: when you paste everything, return to where the first instance of MyMap_1.tga and CHANGE IT BACK to MyMap_0.tga!!!!


the file should now say the following:
<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>
<Storey name="Ground Floor"> <Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_0.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>
<Storey name="1st Floor">
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>

</Level>
Basics complete! Edit the map to your hearts content!
when you open the map next time, you will see there are two floors! since each tga file is the same, but has a diffrent name, you can edit one floor and not corrupt the file of the other!


both floors look the same now, but just customize and edit to your hearts content! just make sure to add a way up a floor, and a way down a floor, and if you do a third floor, repeat all the previous steps, BUT MAKE SURE THE </level> IS AT THE VERY BOTTOM OF THE .XML AND NO WHERE IN BETWEEN!!!
PART TWO: PACKING AND PUBLISHING!
here is where i explain how to publish a mod to the workshop, old school


first, take the entire levels folder from your mydocuments/killhousegames/doorkickers/data/levels section, copy it, and add it here:

Steam\steamapps\common\DoorKickers\mods

now rename it from levels to anything you want!

now, the fun begins...


i will add screensdshots here, to explain everything
-------------------------------------------------------------------------------------------------------------





((the map))




Where the files are by default



where you put the levels folder copy


now, the text returns!!!

you want to make a file called mod.xml, and include it in your folder. and make a file called filesystem_mount.xml

THESE TWO FILES ARE THE MOST IMPORTANT!!!!


your folder should now look like this:



now, you want to type the following in the mod.xml


<!--
"image" shows up in-game but also in Steam Workshop. Should be a 512x512 or 256x256 PNG image
"tags" only show up in Steam Workshop. comma-separated values. preferably one of: "Levels,Enemies,Objects,Replays,Weapons,Armor,Gear,Total Conversions,Interface,Sound,Other"
-->
<Mod
name="MyTestMap"
description="test"
image="levels_MyTestMap/MyMap_0_thumb.png"
author="YOURNAME"
gameVersion="1.0.8"
tags="levels"
changeNotes="valid only when updating existing mod"
/>

The png file is something you will learn to make in a moment.

now, you need to type the following into the filesystem_mount.xml file:

<filesystem_mount>
<Maps>
<MountFile name="data/levels_MyTestMap/levels_bundle_MyTestMap.xml"/>
</Maps>
</filesystem_mount>


"data/levels_MyTestMap/levels_bundle_MyTestMap.xml"??? WHAT THE HECK IS THAT?!

well, you will now make that file, and the folder to place it


make a folder in the levels folder, and name it thusly:

levels_MyTestMap

now drag both of the tga files and the mymap_0.xml file into the folder.



your folder should now look like this




now, we want to make a one more folder in the levels_MyTestMap folder. name it thusly:

levels_bundle_MyTestMap.xml

the levels_MyTestMap folder now looks like this:




type the following into the file levels_bundle_MyTestMap.xml:

<levels>
<level source="data/levels_MyTestMap/MyTestMap.xml"/>
</levels>

and..time to publish!!!


Old School Publishing to Workshop
this is super simple:

go to your games library, right click on doorkickers, select properties, then click launch options, and type the following code in:

-publish mods/MyTestMap

to update it, simply change it with the following:

-update_published mods/MyTestMap


TAKE OUT THE CODE FROM THE LAUNCH OPTIONS AFTER YOU UPLOAD!!!

The Final Product (in screenshots)
here is a map i made, using this method:




Shameless plug included:


https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=474120277

(my map on workshop)
Final Secret: Spawning on diffrent levels!
if you want, add this after the name section in MyMap_0.xml:

deployStorey="Ground Floor">


example named after my map:


<Level name="Operation Corporate Warfare" deployStorey="Ground Floor">
5 Comments
Eagle Scout  [author] 7 Mar, 2023 @ 6:29am 
sure, why not. i have not touched it in years, but im glad it helped. my personal view is, as long as you dont steal credit, do whatever you want with it. have fun, and good luck translating :)
PRISM 6 Mar, 2023 @ 8:13pm 
Hello, I'm also one of the map makers. I'm glad that your guide has solved my urgent need. If possible, can you allow me to translate it into my native language and reprint it on other websites or platforms? I think many people need it.:steamthumbsup:
tosac 10 Aug, 2016 @ 6:13am 
hey, i think that this guide need alot more attention. If you agree you should feel free to share it here https://steamhost.cn/steamcommunity_com/groups/GuideShowcase/discussions/0/353915309352842511/
And your guide should get a little boost ;), have a good day
Sylem 19 Jan, 2016 @ 1:44pm 
OK, I found the solution.

For the others :
You have to close the <storey> Balise.

So you should have :

<Level name="MyMap_0">
<Scenario type="DopeRaid" noVisualIntel="0" referenceResolveTimeSeconds="0" numKnownHostiles="0" numUncertainHostiles="0" numArrestWarrants="0" numKnownHostages="0" challenges="7"/>
<MusicTracks/>
<Storey name="Ground Floor"> <Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_0.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>

</Storey>

<Storey name="1st Floor">
<Size width_pixels="4096" height_pixels="4096" pixelsPerMeter="64" mapSizeTag="L"/>
<Background>
<RenderObject2D texture="data/levels/MyMap_1.tga" flipX="0" flipY="0" texCoordsMax="1 1"/>
</Background>
<Paths/>
<Entities/>
<Walls/>

</Storey>

</Level>
Sylem 16 Jan, 2016 @ 8:35am 
Hi.

Thank you for that guide, but I can't make my 2floors map. It doesn't work...

Even if I copy paste th text you quoted just before the chapter "Basics complete! Edit the map to your hearts content!", it doesn't work. My map disappears. I can't find it in the game : it doesn't appear in "my creations" single maps and it doesn't appear in the map editor (I can't open it as I can't see it !)

Could you help me please.

Is it possible to compile 2 existing maps to make only 1 multifloor map ?

Thx for your help.