Killing Floor

Killing Floor

46 ratings
KF SDK Tips & Mapper's guide
By Holy Username Batman!
Things I've picked up on the Killing Floor map editor along the way (a truly perilous journey), explained for dummies like me.
Can also be applied for use in Unreal Editor 2.5 if you still use that, LOL

-Technically Unreal Editor 3 applied in Unreal Engine 2 (UDK3)
   
Award
Favorite
Favorited
Unfavorite
Intro
Hiya, this guide provides tips, but it also serves as a pretty extensive tutorial nowadays.
I HATE KF SDK, I despise it, it's awful but i'm here because I love KF. If that's the case for you you'll learn to despise KF SDK as well.
Ofc, there is at least a certain charm in this SDK because it's based on an early version of Unreal Editor 3 which just breathe's simplicity.
Sure, the tools may not be intuitive for beginners, but with the help of guides you'll at least realise they're not hidden behind a million hotkeys or tabs. Unless you get inventive there's usually 1 or 2 ways to do something, and that's that.

Speaking of guides, this one is for making Killing Floor maps. This game is soo dead you're prob here because you're REALLY bored, or clicked one of my links to this guide, by mistake?! Meh, well have fun skimming through.

IMPORTANT ADD ON (24/02/25 Edit):
metallicafan212 has released their slow-selection fix for the Killing Floor Editor, this means no more waiting 10sec++ for almost every actor selection to register in SDK! So do check it out:
https://github.com/metallicafan212/UE2SelectionFixes/releases/tag/v0.3-Alpha-KF

> If you JUST started with KF SDK and you don't like my Basics section, here's a video which isn't terrible for noobs:


> If you're only interested in SDK but don't EVEN know how to open it yet, this guide would be better to start with:
https://sp.zhabite.com/sharedfiles/filedetails/?id=117622426
> If you're dying for a community to chat with there're at least a few semi-active kf1 mappers in this (Siren Torturers) discord server - https://discord.gg/wK9sDGa

> ST also offers an edited SDK (KFEd) application which beefs a 2GB RAM cap to 4GB :OOO. I guess TWI was scared they'd brick old PC's or something? I've used it + Everyone at ST has used it, it works grand. Everyone has permission to use it too if they wish. http://sirentorturers.site.nfoservers.com/downloads/KFEd-4gb.zip

> If you prefer to mod you could consult my guide but https://insultingpros.github.io/LazyKFWiki/#/UnrealScript/ModdingSetup is a better place to start.

Last of all, if you hate my guts feel free to only rely on some of my extensive references listed at the end of the guide, but do check out some tips. Otherwise let's get started...
Basics on Browsers
Once you've prepared a rough shape of section/s in your map (using cube builders, subtract and odd tools on the left side of your screen). 3 things that should get your attention are these little icons near the top of your screen:

First is the actor class browser- chess pawn icon, next is your texture browser - a painting -, and on the right is the static mesh browser in the form of an arch.

The Actor Class Browser contains every invisible aspect of the map that directly or indirectly affects the player and their visible surroundings. A few examples include:
  • Player pickups.
  • Emitters - for puffs of smoke, campfires or mist.
  • Projectors - for showing detailed shadows, bloodstains and effects on walls.
  • Triggers - for player or specimen interactivity such as opening doors.
  • Lighting.
  • Sound effects.
To use them you have to highlight the name of the actor you want, right click on map -> insert actor 'X'

The Texture Browser contains almost every surface 'wallpaper' used in KF maps. just find the right one for your floor, wall or ceiling and apply it with a double click.
FYI some are also wrapped around StaticMeshes(SM) as materials
I wont go into depth myself but regarding supported textures, tranparency (alpha), and whatever, reference dis:
https://docs.unrealengine.com/udk/Two/UnrealTexturing.html

//proTip: For custom texture stuffs download something like GIMP, you can easily import/export through Tex browser(.dds and x^2 dimensions) and filter, combine or crop stock textures with more creative control (like for SMs). Also a cool tut here: https://forums.tripwireinteractive.com/index.php?threads/texturing-tutorial-thread.55519/

//proTip2: HOWEVER, if you go down this route, for file size + optimisation it is definitely first worth learning the inbuilt material classes (They do work!) -> the Material Modifier[docs.unrealengine.com] is particularly simple to use and the UDN Site Map explains it well:



Finally, we have the Static Mesh Browser. Although confusing SM's are a type of actor but they can also be applied to give other actors visible form in game. To sum up, SM (static meshes) are your archived, and hopefully optimised shapes. Doors, tricycles, radioactive mushrooms and dosh for instance...

Although the shapes are archived, you can create simple ones of your own using an assortment of brushes in the editor. You just have to make a BSP structure, select all the coloured outlines known as brushes in the 2D viewports, or Wireframe in the 3D viewport, then right click -> convert to static mesh.
Whatever textures you had applied to the object will save with the SM into a package of your choice ('myLevel' or your own custom package), you could also imagine them as recycled objects...
You don't have to start making them from scratch every time you want to use them, people can render and cull them in-game easier and it solves global warming! Thus, you can put as many copies of tricycles in your map as you like.
DeepDive - Assets
STATIC MESHES:
It turns out converting BSP to static meshes isn't so great, because all the best optimised and complex SM's are designed in the proper software like 3DS Max and Maya - And they ofc have fees D:

Alternatively, using stock map folders, you can take almost any SM from a KF map and use it, rescale (try to keep 3 only re-scaled variations max for optimisation), rotate and re-purpose to decorate your own.
It relies entirely on radical ideas and improvisations (such as clipping decapitated heads over corpses lol) but also takes way less time then designing your own anyway so feel free to reference this SM spreadsheet I put together:
https://docs.google.com/spreadsheets/d/1zW2LIq6_G7Rr4sPQtuJSu5IBzRdkLbyEhBFvm-zutlM/edit?usp=sharing

If you want to help add to the SM spreadsheet feel free to join the Siren Torturers discord and inquire about it there because they formatted it way better then my stupid ass ever could xd
Stock KF map resources look better, and always will be yours for the taking. Just don't forget to add your own original touches to your map.
Next is an optional section on 3d modelling for kf1 (Skip to Texture Providers if not your thing)

Speaking of being sneaky, you could also use Blender to design static meshes as it's well known, perfectly FREE, 3D design software. The only drawback is they don't support .ase or .lwo exporters officially. And you'll need to track down an importer separately. Try https://github.com/DarklightGames/io_export_ase ^after that open Blender, search in Edit Preferences -> Install add on, and once installed search in there for “asci” and tick it. Now you can make simple, custom meshes and export them into KF (with textures separately) for free, but you won't be able to import them from KF into Blender without other stuff xD. Whew.

- Alternatively, there's like a dozen Blender exporters + tutorials here: https://web.archive.org/web/20140727193238/http://wiki.beyondunreal.com/Blender
- Milkshape [www.milkshape3d.com](isn't as good as blender ofc) but has a built in .ase exporter you can rely on.
- Here's also some reliable looking, old 3ds max downloads I found if it suits you ( #1[forums.revora.net] + #2 even with a paid license its impossible to get soo no copyright infringement intended :c)


Once you have a (.ase .psk or .lwo) SM on hand, all you need to do is open the SM Browser, go to
'File->Import->Your SM' and Voila!
If you want the custom SM to be downloaded by players in the map file, import it into the myLevel package when prompted, otherwise place it in your own named SM package which will have to be downloaded alongside the map.

//IMPORTANT NOTE: if you're modelling a mesh with multiple material instances / UVs do test out your exporter as a lot of them won't work, unless you have magic fingers.

//Tip: Umodel is REALLY GOOD for bulk exporting kf assets, same site also provides Un+ActorX plugins for 3DS Max import/export (see Porting guide section for bulk exporters) - https://www.gildor.org/en/projects/umodel, (Found a vid too but maybe watch on 3* speed he does look a little too dumb tbh xd): https://www.youtube.com/watch?v=Uhky1b5YBoM

TEXTURE PROVIDERS:


Assuming you have software like GIMP to convert filetype to .dds, and follow the import rules (dimensions x^2), here's a small list of tex providers you may consider:
Free textures galore!

General Tip:

If you import custom textures consider the advice on the TWI mapping guide for final edits:


-> https://docs.gimp.org/2.10/en/gimp-filter-emboss.html

However, do rely on the games resources as much as possible (at least while learning), meaning static meshes and textures from Official KF maps. If you have those moments when you're not feeling very creative, even when you know what to do next, it helps to browse through stock assets on 'breaks'.

Don't forget Search Engines / Pinterest have an infinite supply of reference images too :D
Build and BSP holes
So, there's something you need to realise about how KF SDK works:
The build button at the top right of your screen, re-builds the whole map every time you ask it too, following the set of guidelines you give it.

Well Duh. But this includes every brush you've ever added or subtracted. Go into wireframe by clicking the hollow cube icon above your 3D viewport and you'll even observe any old brushes you may have 'added' over.
So to sum up, you can use a "brush" that applies an effect and continues to persist even after you add or remove space with more brushes. Like a skeleton of sorts. Not to mention how the editor builds them in the order you applied the brushes... Now onto the juicy parts!

How can I use or exploit this feature? Simple, this means to edit the walls and structures in your map, you only need to go into wireframe: • Move a brush anywhere you want if a wall is in the wrong place. • Ctrl+C, Ctrl+V to copy walls/floors (thank me later). • Perhaps even delete the brush entirely to redo that given space. • Rotate the brush as you please using the actor rotate tool. • Or go into Properties -> Brush, and change the brush type to add or subtract. All you need do is hit build geometry, or build all afterwards to watch all those surfaces get remoulded as you please. Cool right? Now to think it took me 250 hours to figure out how to copy-paste a corridor, lmao ><

General Build Scale

It's worth noting these examples of absolute minimum height dimensions:
  • Standing Player - 108 units.
  • Crouching Player - 76 units.
  • Crawler - 56 units.

This chap has obtained slightly different (likely accurate figures):
https://sp.zhabite.com/workshop/discussions/18446744073709551615/4520009742919820869/?appid=1250

Info such as this is handy to me when working on small sections but we should also use it as a scale. 216 = twice a player's height for example, so that would be an ok roof height.
you don't even want to know minimum width because pathing just fails at these sort of dimensions so go 200+ :P

Honourable Mention: In regards to UE light-mapping its directly tied to BSP brush size, so while it's more optimised sometimes 1 big BSP brush isn't the answer.

Patching up the map (BSP holes)

BSP holes, you may have seen them, you may have heard of them. Tbh it got me so worried I almost gave up on a project. See the dark screenshot below? They're simply holes in your map.











CAUSE+SUMMARY
Happens when the editor gets confused by overlapping brushes. The best solution is prevention...
First, always always always grid 2+
Second, if you want to create irregular shapes / transit style stairs -












OR












OR Vertex Editing (see guide section)

This tutorial also seems to have some juicy details:
http://www.hourences.com/tutorials-ue1ue2-bsp/

A BSP hole won't show up every time you overlap BSP brushes. In layman terms it's like schrodinger's cheese, you can't cut into a part of cheese that you've already cut away, and you can't fuse different cheese molecules together.

BSP holes also tend to work in either x-y-z planes (with some deviation). So the hole is not always adjacent to the cause. My best explanation would be invisible tears in space (so yes, you're breaking physics, unless it's quantum entangled cheese, yum).
You may have created the BSP tear/hole years ago and made a super map since then! Sometimes you're just unlucky and you tap into that tear. :c

WHY DOES IT HAPPEN EVEN WHEN I DON'T OVERLAP BRUSHES
You are overlapping brushes, fractionally sized. The Editor is a ♥♥♥♥ like that. It should auto snap brushes on grid when the setting is enabled (little grid icon at bottom) but going in and out of grid 1, while working with brushes, can confuse it. I think it breaks brush dimensions or pivot, and because UE2 is only capable of snapping a single brush vertex on grid at a time, it's stubbornly persistent.
Otherwise building fancy brush constructs with steep vertex editor angles, or freehand polygons can also do it.

FINDING THE BUGGERS
The best way to locate BSP holes is the portal view. Since BSP holes cut open the map they also split zones into fractions and you can see the change in colour, then switch to wireframe and there should be an overlapping BSP brush nearby in the x,y,z plane.

"CORRESPONDING FIX"
You shouldn't get to this step, prevention is key. If you're here anyway first ask Do I Fix It?. It's only a BSP hole if you see it. Those wormholes dynamically change as you fix them if you've got a whole hive of them too (or new ones apply during build), SO AT LEAST KEEP TRACK OF FILE VERSIONS, and if it's tiny or out of sight you can leave it alone...

Otherwise, if all brushes are still on grid ensure you perfectly them up surface to surface or re-scale one for your purpose while deleting the other.
If your brush is on a half-grid or less, consider converting it into a static mesh, Brush -> Type -> SemiSolid or NonSolid through a right click.

Alternatively, your last resort is Vertex Editor. Consult Guide section to enable grid snapping. You can then right click off-grid vertices in the 2D viewports to snap them on grid (credit: Broski).
It's a last resort because the editor will just snap a different vertex off grid, so you gotta spam it over and over again.

You can also try type "actor align" in the command box, or edit -> reset -> brush -> All.
but it's not as good.
Consider using Ctrl + Middle Mouse Button to draw a ruler in 2D and just replace the brush entirely (assuming your builder/red brush is fine).

*Remember you can check portal view which is good for spotting BSP holes and their causes*[/quote]

Wider Community Tips:
In summary - act like a neat freak when designing your map, Grid 1 is officially the plague, and keep those file versions handy. That way even if you do see a BSP hole it won't be as complicated and you can prob revert file anyway. Otherwise auto-save and go into portal view, then wireframe to find and edit the spot where you messed up.


// ProTip1 - Static meshes aren't BSP, so they will never cause a hole, and are a better option for decorations 99% of the time.
// ProTip2 - If a static mesh wont work, for example if good lighting on that decoration is important, consider using a semi-solid brush or non solid + blocking volume via special brush tool, and then consider BSP last of all.
// ProTip3 - If a simple wall can be made with 2 large bsp brushes rather then 8, it can be better but I mention in Lighting that lightmapping is based on BSP size so keep cuts equally-ish sized if you can. Vertex/2D shape editing still amazing tools.
// ProTip4 - Pick a big grid size that 90% of your map's BSP will be in, like 32 or 64 ish, and work in multiples of that number. You may be forced to make an exception at doorways by halving it but keep the rest as is.
Vertex Editor
The Vertex Editor tool is way better then I originally gave it credit for (sorry)

FIRST, vector snap must be turned on:
.
Hypothetical: Your existing BSP brush is too big, or shaped too regularly to pair with a different room or static mesh.

Use:
  • Select brush.
  • Ctrl + alt to drag select (not in 3D viewport :c) or Ctrl + click to select 1 corner/vertex.
  • Ctrl + alt + shift to stack and continue selecting more vertices.
  • Preferably use 2D viewport to edit the dimensions as you wish so use hide actors for extra visibility as mentioned in tips.

Warning: As mentioned don't go crazy with angles, and NEVER turn off vector snap or you can rightfully embrace BSP holes and fall through the gaps between dimensions.

Bugs (if working with triangular BSP):
Lighting
Right click, aah i'm getting sick of saying that so it's now 'Rick'
Rick on your map to place lights wherever he you like. A wise man (named Rick?) once said lighting makes 90% of the atmosphere in a map. Take Waterworks for example:

Beautiful.
Anyway, the placement is down to your judgement but there are 3 critical settings for a light I can let you know about:
  • light radius
  • brightness
  • light colour color - hue and saturation settings really but also colour wheel.

Fairly self explanatory, a light with low radius and high brightness will be like an orb of hope in the darkness and one with decent brightness and high radius will provide good ambient light to a room.

UE light-ray tracing is pretty bad (more like Realllllly bad) but if build lighting ends up compressing one of your lights way too much, just add more xD. I've seen other mappers stack multiple lights directly on top of each other, with different colours/radius/brightness. And official maps tend to spread multiple tiny light sources out to highlight certain spots, emulate more accurate tracing from the 'light' static mesh, and add to the atmosphere.

Originally posted by https://forums.tripwireinteractive.com/index.php?threads/kfed-how-do-you-lower-the-skybox-brightness.103269/:
THIS IS ♥♥♥♥ UNREAL ED NAMING OMG SO SAD... The float property Display -> Scaleglow is NOT to do with ambient glow! It allows you to scale exactly how lighting interacts with your static mesh as a whole (UV). Sooo, pipe or skybox SM too bright for adjacent BSP? Lower that number. Jeez I thought the only solutions were material modifiers, super small lighting radius or Special Lit :c

Honourable Mention: Always use RGB8 lighting in the build settings, it looks better and is more optimised then DXT3. Evidence - https://www.omnipotents.com/forums/viewtopic.php?t=162&sid=f5a7eaaeac6f2dde0ab6c2171ab03341

Honourable Mention 2: SDK permanently jacks up the gamma pretty high while launching, 1 workaround is typing -nogamma in steam game properties -> launch options.

You may notice properties for effects like torchflicker or phase but don't touch them;they shouldn't really exist...

If you want an actual flickering or pulsing light. go into the actor class browser and search for Trigger Light, insert that with Rick, and then play around with 'Light Type', 'Phase' and 'Period' for the best results. As mentioned above I haven't ever got 'Light Effect' to work in game, despite appearing otherwise in SDK preview.

Problems? -> https://beyondunrealwiki.github.io/pages/lightmap-errors.html

Coronas:


Coronas are light/lens flare textures, (not to be mistaken by the disease, or brand of beer). They can be applied to lights in properties, and make the light mesh seem more alive, but are quite often overdone on every light so lots of players play with coronas disabled in settings. :c
To add a corona to your map you could use a preset in the actor browser, but I usually add in a normal light then do the following:
  • In properties -> Light Color, set brightness to 0 (& whatever hue and saturation you want).
  • In properties -> Lighting, set radius to a high value and Corona to True.
  • In properties -> Display -> Skins, apply an appropriate texture - Departed_T has a few.

Dynamic lights:


Apparently I was mistaken, trigger lights do work. Only players with 'dynamic lights' disabled won't see them. Find a TLight in the actor browser, set it up how you would like, go into Properties -> Object and enable Trigger Toggles. Add a tag to the light like you would for a mover and trigger it by a corresponding event, whenever and however you want. However it's worth noting the shadows won't be nearly as prevalent as they are for other lights. A working example is the 1st keycard door in KFO-Transit (A small red light turns off and a green one turns on).
in KFO-Foundry you'll also see something extra in action. With a scripted trigger it spawns in a corona headlight actor these are just preset coronas.

Where you'll find em: somewhere in actor class browser xd

--------------------------------------------------------------------------------------------------
In KFO-Foundry they use scripted triggers to activate/spawn a headlight corona Actor based on an Event usually triggered after the bonus objective is satisfied.
Learn how to do that and the trigger lights will look prettier :P

I kinda wanna recreate the stereotypical parking lot one day, flip a switch and all the lights turn on with loud sound effects in a desolate room, row by row. But I guess the shadows and slighting would be ♥♥♥♥♥ in this engine.
--------------------------------------------------------------------------------------------------

Bonus Crap


For Fog, FIRST disable TWI's buggy af override, it's a broken setting in zone info so use SPLevelInfo:
Note that this also stops zeds from spawning only in the editor quickplay and not solo/live. If this is inconvenient you can re-enable that feature in Edit -> level properties:

Now, you can place a Zone Info actor, enclose the 'room' you want with zone portal brushes, and go into ZoneInfo properties -> ZoneInfo -> DistanceFog = True, Then in ZoneInfo Properties -> Distance Fog you can edit the color, fog start, and fog end. It's main function is optimisation outside but plenty maps use it for lighting too. You can make the ambience have the slight hue of a given colour, or appear even darker then usual with a dark grey color like 1:24:24:24 but in those scenarios be careful and test a lot because it can v often look ♥♥♥♥. You'll also have to review all your current light settings and also only use 1 universal fog setting inside because fog boundaries between rooms are broken/based on player location not line of sight.

Ambient light is summit covered under ZoneInfo properties -> lighting but looks ugly so best not touch it.

//ProTip: Every light looks a little ugly without coronas but even in small rooms its too overwhelming if every light has one. This is where artistic vision comes into play. Which light/s should be most impactful?
//ProTip2: While somewhat excessive Ferenos knows what he's doing with lighting, you have to simulate at least basic reflections/diffraction with smaller light actors everywhere otherwise shadows look way too dark.
Level Design
If you're here because your imagination sucks I pity you, there's no helping you, clear off.
Aww jk

level design is an art. If you think your map naturally looks like trash don't despair. It's a learning process. And, imo mine does too!

[You should see what the first drafts of my KFO map looked like, yeesh (oh yeah, I'll prob still never release it xD)]
These next sections include my key thoughts/reference, if you're here for tips and tricks I have this clickbaity thing hidden behind my ear.
https://www.gamasutra.com/blogs/TomPugh/20181022/329044/Level_Design_Tips_and_Tricks.php - Ew. I suppose that could work for you.

1) You NEED a theme and/or narrative (before/after outbreak)

Browse through your camera roll, Pinterest[uk.pinterest.com], GettyImages[www.gettyimages.co.uk], historical eras, historical events (doesn't fit lore but who cares xd), memorable places, movies, books, *shudders* other games and so on. This should help you pick a setting including theme (e.g: wintry maze-like wonderland, horror sex dungeon etc.). Consider an emotion based theme (curiosity, spooky, comedic, ironic [wait that's not an emotion...]) and build a mood board by gathering plenty reference images.
TIP 1) KF is gonna be gritty and hard themes obv.
TIP 2) You can also consider easy cataloguing software like allusion[allusion-app.github.io] + PureRef[www.pureref.com] since a lot of pro artists are fanboys/girls:


Next is planning, your time is priceless so the idea in standard GameDev is every asset supports your main theme, narrative or core mechanic. It might be cool to squeeze a fancy church cloister into map A but just put it in a notepad and design a different map at another time where a church is more relevant. So how does a plan full of rectangles even envision a theme? I'mma fall back on experts here v24 (see below):


Optional/KFO

For planning in this GameEngine, note the honourable mention for lighting: lightmapping is based on BSP size. So, for consistency, any bigger rooms should be split into equal-ish sizes of BSP brushes while developing your map.
Sketches or low quality 2D blueprinting would also help here, here's an early plan me and my partner were using to create a level in our KFO map, (what is it missing?):

DIMENSIONS! Don't be like every other average Joe, plan like you're drafting blueprints as an architect, although not as pretty as them, (where do they find the time?). Anyway, you will make life easy down the line.
As for KF planning... -> Follow this dude's advice (he sounds smarter then me):


Summarily, Keep everything simple and wide (>200 width for walkable SM, >256 for BSP). This is mostly so the dumb specimen can path around the map easily, but also the Lewis' of the kf community. Please also build in sightblockers, a lot of painful optimisation can be sidestepped with decent level design. Plan for spaces such as valleys, walls or fat decorations (for antiportals) so not everything has to rendered simultaneously. This doesn't have to limit your imagination, just work with it... I'm still rubbish but here's a multi-levelled big map that has some optimised design (xd):

Now you can build a Greybox/Whitebox map. Slap in the basic geometry, doorways, spawns and paths, then focus on how it plays, put some spawns in and develop further from there. Are there 1 billion dead ends? For example, observe the design above. My final map implements at least 2 more rooms. Role-play as an alien/1st timer, do parts frustrate you? Ignore SM and decorations for now, once you properly start you just spam ctrl+c & ctrl+v anyway. Can you mix fun pathways without breaking kf-pathing (no xD), can you theoretically or literally punch holes in walls to compromise? (always underestimate kf-pathing)

Last of all, you're unlikely to make your own assets using software from 2010 soo only consider custom textures/sounds, and scroll through different SM packages for hours while munching snacks and build a test map for combining/utilising/scaling assets in an isolated environment. Last of all support it all with lighting. Lighting is a super powerful tool but also a crutch soo, doing it last works best. To support your theme in an easy manner just pick a hue and screw with saturation + brightness :P

Pro Tip // (if you know what theme you want anyway feel free to do lighting before textures)
Pro Tip 2 // If you need it: KFSlot_Ammo_Pickup from frightyard, doesn't touch the ammo spawn logic at all -> 100% consistent ammo spawns regardless of difficulty. Credit: braindawg

Bonus Stuffs
What's the point in making maps if you can't have a little FUN. Easter eggs are a great way to encourage players to look around and appreciate the decorations in your map.
For instance take KF-SawnOfTheDead:


10/10

It plays on everyone's mutual hate of sirens and does so using stock decorations, actually I think the square of light is a projector because no way is UE2 lighting that good xD
Well it's in myLevel so no extra downloads required and it should all be optimised :D

As mentioned in the Optional Video, interactable and relevant parts of a map (doorways) should be highlighted in some way, this can be done with brighter lighting (/projectors), pickups used as breadcrumbs, SM's such as pipes, fences, textures or linear-ish influencing paths. Basically the guidelines could even be sound. Never forget, Players are DUMB. (Delightable Underwear Munching Bums), so leave more then 1 clue for pity's sake
Collision
So, bumping against meshes or invisible walls that prevents players from breaking your map, and jumping out of bounds... This can be a minor thing to worry about. But it's also essential to a player's in-game experience so don't be fooled into ignoring it.

First, it's important that YOU recognise almost all the meshes, come included with their own collision already set up for you. By going into 'Properties > Collision' you can directly edit what they collide with and what they don't, under limitations:
  • NonZero Extent - Collision with "living" specimen or players in general.
  • Zero Extent - Collision with stray bullets, axe hits or projectiles. (Something with Zero hp? :D)
  • Projector - Collision with your flashlights, blood stains and projected textures.
  • Actor - Collision with dosh, emitters, and... stuff.
  • And the other self explanatory examples of collision.

Well, that's it. Set those properties to True/False as you wish and see fit. Simple.

But, what if you want to block off an area to players but not zeds? What if the collision on a static mesh just doesn't cut it? We can't just have people going where-ever they want. Specimen pathfinding in KF1 is already bad enough without players jumping across rooftops or wandering into their spawn points! So this is when you want collision volumes.

It's important to recognise where you use these. Usually you should place a static mesh or platform of some kind to seemingly 'block' off the player. But extend NonZero Collision much higher up then someone can be expected to jump.
Otherwise i'd walk up to a perfectly normal piece of ground and hit an invisible wall, get frustrated, cornered by zeds and killed. Don't. Break. Immersion.
So without further ado:

Blocking and ZedZone Volumes


Yup, those are what you want. If you're familiar with the cube, cylinder builders and brushes then all you need is to mould the shape of collision you want, and instead of hitting subtract, look further down for a transulcent blue cube tool and Rick it.
This should bring up plenty of options but for this section so i'll just highlight these two:

Blocking Volume - Blocks both specimen and Players (all NonZero extent).
^by navigating to properties -> collision -> class blocker, you can block specific 'classes' like KFMonster (Zeds) or dosh actors.
ZedZone Volume - Blocks players but NOT specimen by default. Useful for spawn points.

If you want an example of how you shouldn't misuse these volumes if you can avoid it, Check out some lesser known custom maps or KF-Stronghold in SDK.
Whereas not using them enough generally turns into something like this:


Triggers
I'll keep this section brief, using the actor browser, you can select an assortment of triggers to use. Just bear in mind that not all of them will necessarily work in every possible way. Some may even be obsolete! Experiment with 1 at a time, for different purposes.

Now that that's over, triggers are blatantly simple, go into actor class browser > trigger. And you'll find an assortment. I like things simple, so the ones I've stuck too (and coincidentally most KF mappers have used) so far are:
actor class browser > trigger > trigger > KFProxyTrigger
actor class browser > trigger > Use Trigger > KFUseTrigger

Usage:
  1. Place it where convenient, if it's a KFUseTrigger, I place them centrally in the door and a ProxyTrigger would be on or next to something important in your level.
  2. Go into properties > Events, name the event of the trigger something simple and explanatory that you won't repeat ('Door1A' for example).
  3. Make your trigger actually do something by giving your lucky chosen actor or mover a Tag of the same name ('Door1A').
  4. You're done. This can be used to play sound effects, activate a scripted trigger, complete/activate objectives and it even works for movers with the corresponding Tag.

--------------------------------------------------------------------------------------------------
Rick / m2 on the border of your 3D viewport -> Actor -> Radii view.
This brings up a red radius of your trigger's range, which is most useful for the KFProxyTrigger. The radius of a trigger can be edited in properties -> Collision -> collision radius / collision height.

--------------------------------------------------------------------------------------------------

Side Note: plenty of actors like movers can trigger events as they do their thing (look into sections of their properties), if I went into all of them it would be a pretty extensive and boring guide but just understand they work the same way. The trick is using them to link to different tags and cause "events" in a variety of different ways.
e.g. a given alarm sound effect event, triggered by a door opening.

SideSideNote: If there was a third trigger I'd like to learn how to use someday it would be the shoot trigger. It does work (KFO-RE-Mansion and KFO-WestLondon use one) but it looks finnicky so good luck.

4thSideNote (credits to ST dc): KFMusicTrigger. You can copy it from another custom map just to get an idea of how it works. Vanilla maps don’t use it.
Movers
Now that you've started getting to the bare bones of the map, maybe you've decided you want a door, elevator or a Moving - static mesh. Yep, those are movers. And Yep, it's p much limited to linear motions so if you want anything more advanced, build an animation.

To get a mover working sounds simple in principle, you give it numbered key positions (or key numbers), then tell it to move based on a trigger of any kind. It could also loop endlessly, but some of us can get stuck. "Whaa? How?"
Well your first step is to assign the mesh as a mover. Technically, you may be able to do it in advanced properties, but I never tested if it worked - and it probably doesn't lel.

Building The Mover

.
First, highlight the SM you want in the mesh browser, then click the rectangle with 4 arrows as shown above ^^
(Oh and if you Rick (right click), you get to choose between advanced mover types).
Great, now SDK has inserted a perfectly normal looking mesh somewhere in the middle of where you last left your red, active brush.

Grab the mover, place it exactly where you want it to start, then Rick -> mover -> key 0.
What you've just done is let the map know the starting position of the mover, so go ahead, Rick, and do the same thing again, but select key 1.
KF SDK is now going to record where you move the mesh, in a linear manner. So re-position or rotate the mover, and keep that motion simple, because if you want advanced movements, you repeat the process with key 2 and so on.
Now, the mover knows where it should go but it still needs to know When... :o

When to work???

Naturally, this is when you Rick and go into its properties:

.
Among the tabs this opens up there are 3 vital ones:
  1. Events - Where you can assign a 'Tag' to the mover, linking it to any event that may be triggered by something else.
  2. Mover - Which entails how long it will take to move through each key, and any delays.
  3. Object - Where you tell the mover what makes it move and how it moves.
Vital Points: KFUseTrigger is exclusively for KFDoorMovers. Encroach - is a setting as it sounds, players and specimen can get in the way of movers, so this tells movers what to do if this occurs. Just bear in mind 'ignore when encroach' will cause phasing through objects or players D: StayOpen time - there's a preconfigured mover setting in 'properties -> object' that takes the mover to its final keybind then returns to key 0 after a stated amount of time, stay open time is just another setting hidden under 'properties -> mover', that customises how long a mover stays in the final key position. Trigger Toggle - will go through all the key positions in one motion, until the final one, then it only goes backwards through the same key positions to key 0, when triggered a 2nd time.

It's rather tedious to explain more settings but if you're interested you can find them all, in detail, on the UE2 site map: https://docs.unrealengine.com/udk/Two/MoversTutorial.html
OR Lode's guide: https://lodev.org/unrealed/movers/movers.html
Pathing
Well, Rick in the corners, the central parts of corridors and insert path node. Done, ez, gg.

If only - xD

Up on the top border of your 3D viewport, Rick -> view -> paths.
Build all/Build paths.
Now you have lovely colourful representations of the routes zeds can take, that looks similar to this:


The different colours of the paths are the editor's way of calculating and telling you, what paths are approximately good, how wide they are, and what they do. And I'll list it here:
  • Orange - Flying path, narrow.
  • Light Orange - Flying path, wide.
  • Light Purple - requires high jump (higher than normal jump capability).
  • Blue - narrow path.
  • Green - normal width.
  • White - wide path.
  • Pink - very wide path.
  • Yellow - forced path.
  • Purple - "advanced" path (requires "intelligence" to be used).
  • Red - "one-way" path (i.e. path going from node A->B, but B->A is proscribed).

^Now I had to get this info from a UE3 site because documentation is so scarce, but it's been double checked against the UE2 site map lol
-----------------------------------------------------------------------------------------------
If you have a blue path, you should try your best to rearrange the level or navigation points, until it turns green.
Keep path node placement clean, keep your lanes wide, only place the pathnodes where you need them, give them enough space for an entire crowd, and pathing will remain clean.
------------------------------------------------------------------------------------------------
If zeds fall off platforms like stairs or pathways, your problem could be misplaced pathnodes, or a path you need to proscribe (disallow), you may even need to widen the whole section to make it change colour. BUT, 1 other approach would be to simply add railings. :P

And of course, sometimes, such as in the case of my KFO-BossArenaNerf map, you might feel that even though zeds fall off platforms occasionally, and you've done your best to give them a clear route. Bad KF pathing can make a map fun. Who doesn't want to see a menacing Patriarch charge at you, only to fall off a plank mere inches from your face?
FUN

Notes to add:
  • Player spawns and pickups act as path nodes by default so hf.
  • use FA Jumpnodes, or just jumpnode actors that you see in KF-WestLondon if the pathing gets dicey (jumping through holes and such).
  • Experiment with Forced paths in properties if pathing is being REALLY annoying.
  • Proscribe specific paths if you don't want zeds to take that route.
  • Meshes with path collision enabled will force zeds to work their way around them.
  • Movers with path collision and no navigation points = RIP

I'll add more to this section maaaaaybe, if I feel like it.
Spawn Points (Zombie Volume)
For setup...
Similar to BSP, first arrange the size + position of your active (builder) brush. Then rick this tool to select your volume.


























Following on, unless you're making a KFO map (don't xD), leave the Tag alone and focus on properties -> ZombieVolume:






























Custom Stuffs:

By default it works perfect but there're 5 properties here I have edited for extra functionality. Firstly, AllowPlainSightSpawns. I'm only 80% sure the code works but enabling it never hurts during setup+testing. In this case I have it enabled final release because spawn volumes are rubbish at recognising SMs as sightblockers and ik this spawn is always hidden from players viewpoint anyway so it's mostly a precaution.

Second, MinDistanceToPlayer. Self Explanatory ofc, this is the distance from ZVol - Player the spawn will disable at, in terms of x,y and z straight line distance.

Next, NoZAxisDistancePenalty. As mentioned in the actor's script this ZVol now won't factor height as a disabling distance for the spawn. I have it enabled because zeds drop down from a high location.

Tentatively, I now introduce SpawnDesireability... KF runs its own algorithm to decide which spawn gets priority mid game (and it does a good job), mostly based on distance. But this property lets you influence its decisions. The default value should start ~3000 so 4000 is usually my max edit for spawns that feel neglected in my test games, and I usually never go below default. Take care, but experiment ofc. Balance is important.

Lastly, my favourite property OnlyAllowedZeds. It's self explanatory I simply wish to emphasise it works. No broken TWI code here xD
My example volume is small but I judged it big enough for stalkers :p
Naturally, I sometimes Disallow bloats if the pathing is bordering blue.

//ProTip: Routes from ZVolumes should always be green. Specimen are sensitive in the moments after spawn so they need a wide route.

//ProTip2: Partial distance fog (yes not even fully opaque!) or blocking volumes count as LOS blockers if visibility is a problem for spawns.

Problems?
  • Rick your viewport headbar ->view->paths to make sure your path hasn't deleted itself (it happens).
  • Increase CanRespawnTime (3.0 should be good).
  • Use Default values for other settings such as SpawnDesireability.
  • Use Vertex Editing to expand your ZVol (+room).
  • Use Sightblockers or compress your ZVol (assume bAllowPlainSightSpawns doesn't work).
  • If problematic you can then explore force path as an option (discussed in pathing).
  • Ofc if bored of debugging building a new volume often works for me.
Terrain
Getting it to Work:


When adding terrain to a map first thing you want to do is follow this here URL:
https://docs.unrealengine.com/udk/Two/CreatingTerrain.html

Summary
It'll say you need a 'room' closed off with zone portals (or just a room on it's own), and then put a zone info actor inside of there, go into zone info -> properties -> mark the zone as TerrainZone = True (without this step your Terrain will never work)

Then you should first pick a texture you want for terrain, highlight it, then click the terrain tool on the left side of your screen -> make new terrain (little new page icon). Then label your new terrain (heightmap texture) as you like, in the myLevel package. This will make a terrain info actor where your camera currently is...

Next stay on the terrain tool -> GoTo 'Layers' tab -> make new layer (new page icon on right side this time).

It's explained in that URL that you should leave properties of the new layer as default but one thing that KF REALLY loves to do is set "U scale" and "V scale" to 0 by default when you make the new layer
^This is the scale of your repeating texture applied to terrain so it should absolutely NOT be set to 0. Otherwise your terrain will work but it will appear invisible D:

Moulding Terrain:


If you follow that advice your terrain will work and appear in the map. Now you can start playing with the terrain tools explained here:
https://docs.unrealengine.com/udk/Two/EditingTerrainMaps.html
^
Additional Notes
I usually use paint brush (followed by smoothing) because it's easiest, set strength to a little under 50, ctrl + m1 to paint mountains/hills, ctrl + m2 to carve into the terrain and create valleys.
If you make a good hilltop but its all too small you can try select it all with vertex edit ctrl + m1, then ctrl + m1 + m2, shifting your mouse upwards, this will literally raise all the terrain nodes so you then need to go into smoothing + paint to fix the transition to ground.

This is when you should be practicing with terrain shapes a LOT and My God I hate it, it's always 10* laggier then normal SDK and crashes 3* as much.(

Terrain Layers:


And finally! After you're happy with your terrain shape, you can apply different texture layers that blend into each other by looking at this link:
https://docs.unrealengine.com/udk/Two/EditingTerrainLayers.html

As you can see I rely on UDK Two Site Map a lot, because it's usually accurate to KF SDK.

To do:
  • Deco layers... Anyone reading can just reference UDK-Two for now.

Still Having Problems?


When getting terrain to work your TerrainZone setting in Zone Info actor should always be set to True like this:




And your Terrain Info actor &quot;properties -&gt; TerrainInfo -&gt; layers -&gt; layer 0&quot; MUST have an applied texture for the terrain, a heightmap AlphaTexture for that terrain layer (which SDK updates automatically) and V scale + U scale must be set to a positive value as shown below:

[screenshot=;fl


And your Terrain Info actor "properties -> TerrainInfo -> layers -> layer 0" MUST have an applied texture for the terrain, a heightmap AlphaTexture for that terrain layer (which SDK updates automatically) and V scale + U scale must be set to a positive value as shown below:



If your terrain is built, you've followed those previous steps, and it still remains invisible. Go into your terrain tool, select your layer under the layers tab, select 'paint', and paint the texture of your layer onto the terrain with ctrl + m1
Scripted Triggers
These handy little things are scary, but simple, and you can find them here in the actor browser:
Keypoint -> AI_Script -> Scripted Sequence -> Scripted Triggers
Then Rick on them to bring up their properties, navigate to AI Script -> Add.
Use the little drop down menu and you get an idea of every single thing a ST (Scripted Trigger) can do.

These actors allow map developers greater manoeuvrability mostly in story/obj maps due to the nature of how complicated they can get. But the way they work is like simple code or blueprinting.

Add some commands into a chain of 'actions' to get ST's to interact or do anything you want around players mid-game. I'll outline the important commands you can practice with:

Script 'Command'
Function
Wait_For_Event
Start with this 99% of the time. Trigger gives off an event due to player presence or whatever... Bam, this thing detects it and initiates the next scripted trigger action/s.
Display_Message
Displays a white message much like storymaps do, very good for debugging!
Also, set bBroadcast = True, importance = Critical to play the message to all players.
Spawn_Actor
Spawn actors at the ST, (story maps use this to spawn specimen in at set times. Just use the dropdown box to pick kfmod.Gorefast/Stalker_STANDARD.
Don't pick any of the specimen names without 'standard' model or they won't work!)
Go_to_Action
When done with the chain of command you usually tell it to go to action 0, or you can even use it for loops if you're confident, but obv, loop it infinitely without timers/delays and KF will crash.
Trigger_Event
If 1 trigger isn't enough for you, you can link multiple to the ST, or build a timer then use this command to trigger a new event (e.g: gnome collectible rewards).
Play_Sound
as long as your other actions work and you tell it when, ST's can also play sound files (e.g. an explosion) at given times and at a certain spot.
Play_Local_Sound
Same as above, except it commands the client to play the sound file -locally- for each player, at a fixed volume.
IfCondition
Your if statement, navigate to Triggers -> triggeredCondition to find an actor that toggles a condition when triggered (much like kfo conditions). If the tagged condition is disabled the script skips to the next EndSection.
HOWEVER triggeredConditions actors only work for me if all their Condition settings are set to true, so they start enabled first.
IfRandomPct
(sometimes this more often returns true although I may be stupe so by all means test yourself :c)
Enter a number value between 0 and 1 and this is the probability that the next set of actions will be executed. If the ST decides that it won't execute the actions it will skip on to your next 'EndSection' command and continue down the list of actions.
EndSection
Only used for If actions, lets the scripted trigger know which action to skip too if said 'If' event wasn't triggered.

Important Note: As all hidden actors are destroyed by the host on game start (idk how other triggers work but), I assume the host reads and saves the ST scripts before 'game start'. This means even if you try destroy a ST via another mid game, it won't do anything. If you setup a scripted loop using GoTo, either it loops permanently, or you build an end using If 'commands' / disable script.

For an example of usage I guess you can check out my KFO-BossArenaNerf map and see if you understand what's going on there, (I gotta advertise my own stuffs at some point) lol. Otherwise storymaps are very good.

TWI Strikes Again!!
KFUseTriggers are p much exclusively for KFDoorMovers, ST's ignore their events as does everything else. Maybe it's explained in the script but I would have preferred specific naming - like KFDoorTrigger.
Zone Info {sky, terrain, fog}
Hi,
If you're starting with KF SDK mapping I recommend not touching the zone info actor at all, since it can cause issues (Edit: Those issues are mostly due to TWI, consult SuperTip1)

To start with this is an actor to edit the properties of a zone in your map (and a zone is any room or series of rooms you've separated from others by using portals (which are invisible and not to be mistaken by teleporters, although they technically can function as one it's not seamless lol)). Even if you don't add zoneinfo to a zone the map will just apply default properties to the zone in question.

Now why would you need to edit properties of a zone you may ask?

In theory many reasons (ambient brightness, designing multiple skyboxes, applying universal culldistance to meshes?), but UE2 is utter ♥♥♥♥ so i'd use it simply for terrain and skyboxes, and sometimes distance fog:

You make terrain which you've built appear in zone X (for example) by setting the property ZoneInfo -> TerrainZone=True and even if it cuts through the inside of zone Y, perhaps a building, without TerrainZone enabled there it will remain invisible and non-solid.

A skybox is an isolated room that provides a 360 live camera feed of sky in all dimensions (x,y,z), specifically, you need a child actor of ZoneInfo called SkyZoneInfo to make one work as this SkyZoneInfo actor acts as the camera in the skybox you yourself have built (or ripped from another KF map :P).
Once you build and position it you dont really need to edit any properties, yaay.
However the 'camera' is ofc very zoomed in so have fun with that!

Distance fog is literally distance fog, enable with property ZoneInfo -> DistanceFog=True and you can edit how thick the fog is by adjusting the difference between values 'DistanceFogStart' and 'DistanceFogEnd', even cheating the system by setting a negative value for Fog Start if you like. And lastly you can also edit the colour of the fog (yes I said colour USA), erm, where was I again? oh yeah by editing 'DistanceFogColor' with the saturation hue and brightness byte values - 0 to 255.

If you're an idiot and got stuck with a giant bloody space underneath your terrain due to numerous reasons, you might also consider optimising your map with ZoneInfo -> KillZ. But please don't. Just use vertex editing or a killvolume. I would never trust KillZ unless you're absolutely desperate but you can input a y co-ordinate and if any specimen falls below it they're automatically killed. yknow, because zeds always fall under terrain and eat performance by just vibing at the bottom of the map.

Known Hiccups: Translucent/transparent meshes stop obscured emitters + other translucent meshes from being rendered in the skybox (fog/cloud stuff :c), only when looking through your bsp backdrop. I don't know of an exception, fix or why this happens sooo
Simply be aware before you work your ass off in a skybox or experiment with backdrop preview on in SDK and maybe you'll be luckier lol

-That is all, ciao ciao ciao.
Objective Mode
If you're reading this you're insane, and you should know you're in for a world of pain. I'll try ease your suffering:

The Objectives
.
  1. This is where you can find the objective actor in the actor browser.
  2. for your objectives to work, they have to be named, the first objective is always named start (unless you're special)
  3. navigate to view -> level properties or hit F4 to open this window. This is where you tell SDK your expected order of the objectives, by objective name.
That's the easy part done.

---------------------------------------------------------------------------------------------------

Next, the most significant actor is probably 'KFLevelRules_Story'
Found in: Actor Browser -> Info -> LevelGameRules -> KFSPLevelInfo
^
With this actor you can customise player starting equipment, max zed number (default is 32), Starting Cash/Cash bounty, and the Shop (apparently).
As per it's name it determines the general rules.

Tip:
Objective Mode is a series of triggers and events that you set up yourself, just like story mode, but a wee bit more automated, has a semi functioning HUD that looks pretty, and a FuNkY agro system. So plan what you want to do, then figure out how to get it to work. Which actor is the cause of an event, when to trigger it, what does the trigger do?

Honourable Mention:
Consider making a small KFO project to learn some ropes, then transfer to a KF- story map. It can do the same stuff excusing wave/squad designers. So less automation for zed spawns unless you code a mut of course.



Designing your Objectives

^
The mother of KFO... Say Hello to the KFStoryObjective actor, you may hate it some days but it's your friend. The 3 most important properties are covered below.

Objective Conditions - Typically whatever the player needs to do or avoid during that objective. But it doesn't have to be! Remember you can disable HUD & add hidden event triggers or so on.
When all the criteria you customise under success conditions are complete (Progress importance: normal), the objective will consider itself won. Likewise, when failure conditions are all met it considers itself lost.
Setting progress importance: critical, on an objective condition makes it so if that critical condition is satisfied at any point, the map moves on to the next objective - irregardless of whether the other conditions were satisfied.
It's also worth noting that a team wipe is always a wipe, it's built in, end of. You don't need to add it to failure conditions so alternate routes for your objectives are possible.

Objective Actions - Here you customise what happens when you lose or win an objective. The options are:
  • Win Game
  • Lose Game
  • Go To Last Objective
  • Go To Next Objective
  • Go To Objective "(name)"
  • Reset Current Objective
  • Restart From Checkpoint
  • Random <--<---<-- (wtf? :O)

Objective Events - Here you can customise triggerable events when the objective is activated, completed, deactivated, or failed. This can be linked to explosions, doors, sound effects, zed waves, ST's, whatever, you get it yah? Add in the ones you need.

Trigger ObjCondition

Condition is a powerful scripting tool. For coders, It's like your IfCondition, so you can even get used to adding non-Objectives with no HUD and doing whatever you like. Here's what you need to trigger a Condition:
.
In Game UI (HUD - World Hint)

If your map is anything like a story map, players will get lost. World hints are text, textures or both that can float in the world as an aid. For example, the gold bar indicators in KFO-Steamland. This is what you need to get set up:

IgnoreWorldLocHidden is often missed.
Keep hints short. It's inconsistent on dedi servers so get a test server or use a static mesh mover (much like graffiti) instead.

You will see the hint from everywhere in the map so set up a non-objCondition to activate it based on an event I recommend ProgressPct event from objCondition area - with rqr full team = false

Dialogue Actor
Copy paste from official map. Important notes:
  • Length of display based on No. text characters
  • ^Overrided by Sound file duration
  • Usually have to allow for ~1.5 secs after displayedEND before triggering new dialogue. It's sensitive. Maybe use ST as easier to setup timers.

CutScenes (see endings of official maps or mansion)

KFSceneManager:

+
Cinematic Camera:

---------------------------------------------------------------------------------------------

Not covered: Obj can be triggered while not in play, can make objective conditions dependent on objective conditions in KFStoryObj, wave designer + squad designer sets up what zeds spawn from whatever Zedvolumes

//ProTip: For Welder objectives copy paste KFStoryObj actor from official maps, they do complicated stuff (including unique actors, 2+ conditions per welder box and HUD stuff). Not worth the misery.

//ProTip2: When designing objectives that require a volume, you can use any volume as long as you input it's name (under Properties -> Object -> Name) into the objective condition. So I recommend using the standard Volume. The objective volume has extra code where it spams "Forbidden!!!" in chat if you go inside of it, before the objective is activated.

Further Reference

For Wave/Squad Designers (zed spawns) and little KFO tips like a reminder of where to find the actors you need, in actor browser, reference this guide -> https://sp.zhabite.com/sharedfiles/filedetails/?id=357491760

For tips on other stuff I missed - like Progress Events, which is a part of objective conditions, reference this guide:
https://wiki.tripwireinteractive.com/index.php?title=Objective_Mode_(Killing_Floor)
OR this guide:
https://forums.tripwireinteractive.com/index.php?threads/kfs-containment-story-map-tutorial.80381/

BugsBugsBugs:
  • As v briefly mentioned in the TWI wiki above, Wave Designers (for zed spawns) only support 1 wave per actor (V 5 2), they definitely will look like they should work but it'll be like 10-30% of the time so plz, spam wave designers.
  • PROBLEMS WITH ZEDS DYING ON SPAWN? This is so annoying but disable (KF_LevelRulesStory or LevelInfo?) -> killStragglers and see if its still there. If not you my lucky friend have an issue related to pathing.
  • The KFO HUD such as your objective name and details (top corner), breaks by more or less deleting itself after ~30-60mins time for no reason. You can witness this consistently on the kfo-30waveChallenges. Soo, while you can put hints there maybe not provide info absolutely required for progression into the HUD.
  • World hints that you'd use in KFO such as the small "Gold Bar" text in kfo-steamland (as well as being unreliable) also sometimes conflict for god knows why. As such clientside you may see a community kfo world hint replaced by a different official KFO-map's world hint or whatever kfo-map you played last. For example, I constantly see world hints telling me to go pick up a non-existent gold bar (<3 TWI) lol.
Porting maps to UE3
UE3 includes a polygon limit when importing maps lol
65535 of them to be exact. So batches batches.
And ofc you can check out this TWI forum post:[forums.tripwireinteractive.com]

Originally posted by domingothegamer:
The process of porting games can vary a lot depending what game it is and what engine it supports. Preferably games that have a Modding kit supported like an SDK, hammer, etc.

In a short summary, for Dungeon Defenders, I grab all the assets related to the map I want to work with in DD's DDDK and move them into a custom new package. Moving assets instead of copying will auto assign MATs directory references to the new package. Just do NOT save the package changes from the games default upk packages. In this case, Dungeon Defenders is built off of a older version of UDK (UE3). So it does make things a bit easier in terms of grabbing similar MATs/Textures/upk's, but not much different in terms of procedures and porting. Make sure you categorize everything you're grabbing, because you'll lose progress real quick if you do not.

Now, since KF2 is built off of a newer and heavily modified version of UE3, it would be simple to just grab the packages and just load them into KF2 right? Well, if it were only that easy.
KF2 SDK will crash with a crap ton of errors. Some of these issues include UPK version structure, Old mesh renders, bad MAT structure, Custom Assets specified to game only, ParticleFX Crashes due to custom FX, and many more issues I can't remember off the top of my head. Also, DD's DDDK is very unstable as of the build you get from it now. How does one get around these issues? The methods I came up with are a lot to explain, but the most common reason for a crash is an old mesh render. This involves you having to extract the upk file raw and gathering the pskx file. Grab that, and import it to a 3D program like 3DS Max with ActorX plugin. Export it as FBX file type with version 2014/2015 for KF2 SDK (VERY IMPORTANT) or it will crash.

Once you have all the stuff you want into a package, you can start building your map slowly. Export from DD's DDDK selected meshes into a t3d file for it to auto place for you the exact mesh placement in the world and import with KF2 SDK. If it crashes, it's one of the meshes most likely. This is why I do several meshes at a time instead of just getting ALL meshes in the world. And you'll just simply crash the SDK due to too much memory allocation. Once you placed all the meshes from DDDK, then you proceed to build the rest of the required assets like Lighting, Pathing, Volumes, etc. Porting is by no means easy. Takes a ton of patience and determination, but it's rewarding in the end!

Alternatively, there is a slightly more efficient method.
FOR ALL FURTHER ADVICE/TUT THANK Steven. Check out the KFmodders discord[discord.gg].

WordDoc Tutorial:
https://1drv.ms/w/c/27e2d51aa2ebaadd/EdVUVo-W0XZPrTVYohFBNUgBqv3IWB--7woFLt2rDCmICQ?e=apbd7e











Notes:
Optimisation
Optimisation:
  • Lowering the number of polygons / effects displayed at one time in your map.
  • Reduce strain on hardware / Increase player fps.
Pre-Optimisation:
Not disregarding theory discussed in 'Level Design', one method i'm confident is important for optimisation is keeping the instances of static meshes down (keep copies of SM's mostly the same scale). Playing with scale is brilliant for reusing assets in the most creative of ways, but unfortunately it means more computer calculations, less performance, and probably bigger file size (i'm not a graphical or software engineer ok? xd)

How to get this done

I'm proficient not an expert so I'll leave the specifics up to those that know it all, but one way to actually reduce polygons in a given area is by replacing/converting add brushes to semisolids, with special brush builder, or Rick -> Type: http://www.hourences.com/tutorials-semi-solids/

Another way to optimise is to reduce the amount of space a player renders at any given time, which is done with smart level design (consult 'Level Design'), but also portals and antiportals. Let's start with portals...

Portals

Look at any stock kf map in SDK and you'll see a textured sheet that cut through doorways, archways, windows and any seams in a room, but they won't appear in game - those are portals.
Portals will define zones - an area where a player should definitely render things while inside - so their toaster can cull polygons in all the other zones, as long as they remain out of line of sight.
To create a portal, use the Sheet Builder tool (beside CubeBuilder) to create a sheet and position it where you want it, then use the Special Brush tool and pick the 'Portal' preset. With that you're done. Alternatively you can go into the properties of surface and tick the portal property, both work.

AntiPortals

These are just another preset of the Special Brush tool and it might help to think of them as opposites; remember how portals won't cull something (excusing BSP) if you can still see it through a doorway? Antiportals will ONLY cull something as long as the antiportal completely obscures it from view. So you can place antiportals inside terrain, a wall, or any large obstruction like a SM - and if it obscures more static meshes behind it, they won't be rendered by your client.
P.S: Don't place inside Add BSP/solid space.

Emitters

Particle systems are by far the biggest eaters of performance, use them sparingly. And don't go crazy with the settings, you can also experiment with force attaching their visibility to ZoneX -> Object -> Name but it only ever half worked for me, Wyre makes it work I think.

Collision

Credits to Fel's guide. SM's with collision (especially nonZeroExtent) eat a surprising amount of performance so if they don't need it disable it. However, managing all your SMs will also eat your life away so be smart with selections (e.g. "chandelier doesn't need collision", m2/rick -> select all SM type -> collision OR "blocked off areas don't need SM's with collision", select all meshes in zone -> collision)

CullDistance

Assuming you're smart with your selections (consult super tips) there's a setting on every SM where you can input a numerical value for the minimum distance that SM should be rendered. This is Display -> CullDistance. Potato PCs might override that to an extent with their settings but not your problem. Optimise for the majority and drag Shift + Middle Mouse Button to draw a ruler in 2D viewports, this way you can more accurately make a decision. If not, just play with the Active (Builder) brush to find out.

CHECK LOG

Sometimes map features/decor cause lag, examples include Inactive KFO conditions with HUD, Destroy actor, ST / mover loops, Karma decorations.

Extreme Measures
  • Find all BSP surfaces that players will never see, spawns, roofs, doorways concealed by SM doorways. Apply Engine.Black Texture.
  • Display -> LOD Bias (Default Distance LOD scaling override) I use for mass produced / boring static meshes.

Commands
STAT RENDER - should give an active count of polygons currently rendered on screen.

Important Bonus Jank

Dealing with FPS issues?
Originally posted by jkcrmptn:
no matter what i did I could NOT get it to run better, but you know what fixed it?
Cutting all the meshes, saving map, reopening editor and pasting them all back in.
This somehow doubled my framerate after rebuilding the map.
Before:



After:


Explainer:
I asked on oldunreal and turns out this engine's mesh batching somehow breaks, which causes it to have to reload meshes even if they are already on the map and loaded for every instance.

Extra optimisation stuff can be found here:
https://forums.tripwireinteractive.com/index.php?threads/how-to-optimize-your-map.43175/

//Afterthought: For UE5 terrain, a component (part of a heightmap grid) duplicates adjacent vertices (more data = less performance) and those sectors of terrain are just named different in UE2.
If it holds true for UE2 a bigger size is more optimised but also risks worse collision. So maybe work out a trade-off. Coincidentally I believe a similar setting exists in kfFluidActors.
Actually, I gave it a go and unless you're a major tech guru or on your knees begging... don't bother xd
Testing
Testing is Hella Important, if you release a map you haven't tested, it's garbage. 100%

What's more, If you don't have any friends (:c). You'll probably be relying on solo testing for now and that's fine.
up at the top of SDK there's a game controller icon for quick tests, and it's great for hopping in there on a whim. But for important times, testing directly in a 'Killing Floor -> Solo' game is ideal because of 2 reasons:
  1. You can easily apply different mutators like fakedplus to check spawns scaling in your map. [balancing your map is important!]
  2. You'll be playing at perk levels that are familiar to you.
Tip:
Be a neat-freak AND write down notes, change things up too. You're testing not playing biolabs. Swap perks, hold spots, observe. Once you near release versions do bump-tests as well, walk along walls and railings to see where u get stuck. Can you fix it with blocking volumes?

Server Testing

If testing in game is 50% better then testing via SDK, then server testing (in private servers ideally) would be 300% better. Should you know how to set up a local dedicated server, go for that. Learn how port forwarding works, whatever. If you have friends, nag them and test together! They'll grow to hate you... Muahahaha.

Anyway, Server testing is so brilliant because of these reasons:
  1. Some bugs only appear in dedicated servers.
  2. Assuming your map is successful, 90% of players would play your map in a dedi server anyway.
  3. It automatically checks if your map has compatibility issues with common mutators in use (unlikely).
  4. You'll be able to experience your map with a team.
  5. People who test there WILL nag you, issues with collision, spawns, pathing, whatever. It'll all pile up on top of you.

So check out this guide too if you're up for it: https://sp.zhabite.com/sharedfiles/filedetails/?id=3053854807

It's not much but there do be a 48hr free server renting trial (no auto-renewal) here: https://pingperfect.com/gameservers/kf-killing-floor-game-server-hosting-rental
Once that expires consider the cheapest VPS':
https://contabo.com/en/vps/

Anything else to do with how you test is up to you, but for the loners or considerate ones out there, I'd specifically recommend this mutator:
https://forums.tripwireinteractive.com/index.php?threads/mutator-kf-bots.44969/

^Extract in Killing Floor -> System Folder^
These bots aren't as dumb as official ones so learn how they work, use them, and most importantly have fun!

Relevant Console Commands

Open up the console in game and there're some handy game commands for testing things efficiently, or debugging, in solo or as a server admin. Listed here:
  • enablecheats - greylists the game and allows the next few cheats.
  • loaded - Gives infinite ammo.
  • god - You won't take damage (same command to disable god mode).
  • fly - self explantory.
  • ghost - fly and no clip through everything in game.
  • walk - Get out of fly or ghost mode.
  • slomo2 - run the game in 2x (number customisable) speed.
  • causeevent 123 - Trigger any event of any name (123 in this example).

Custom Commands:
  • FreeCamera - Doesn't really work for me so might be broken.
  • ViewSelf - how to UnFreeCamera I would imagine.
  • HugeGnome - collectibles go about 20* bigger
  • MopUp - killzeds but pastes number of zeds in console.
  • Arsenal - gives all weapons.
  • Backup - spawn bots.
  • Horde - spawns random zeds (maybe useful for testing pathing from volumes without waiting for higher wave or before designing waves in KFO).

If you're struggling to open up the console... git gud
Tips & Hotkeys
How could a guide named "SDK General tips" not have a section on tips!
  1. Save copies often, the software WILL crash and if you're making a map you should deal with it.
    ^in SDK you tend to render way more so it's super demanding on your PC. Causing memory crashes? Lower the graphics in game to reduce crashes

  2. Ctrl + alt + m1 = selection box (only applicable in top/front/side) //ProTip: Try combining with SuperTip3.

  3. Asset Naming Conventions the decent content creators used back in the day: https://forums.tripwireinteractive.com/index.php?threads/version-mismatches-and-you.80355/

  4. Lots of things in SDK can only be moved or interacted with when holding down the ctrl key so try that out if you're stuck.

  5. You will notice SDK permanently jacks up the gamma pretty high while launching, 1 workaround is typing -nogamma in steam game properties -> launch options.

  6. For REALLY tricky BSP holes, rick the problem brush -> type -> convert to semi-solid / non-solid (+ blocking volume). Then try BuildOptions -> Lower BSP cuts.

  7. Here's how to set up custom game lobby cam for your map: https://forums.tripwireinteractive.com/index.php?threads/setting-up-the-lobby-camera.110362/#post-2019092

  8. Imported Static Meshes exceeding 22000 Triangles will result in the SM warping: https://forums.tripwireinteractive.com/index.php?threads/static-mesh-import-errors.113852/

  9. Unless you have a custom texture / mesh packages in your map, answer no to this prompt (Never save myLevel):

    .
  10. Navigate to view > log and the editor will open up a detailed log that may point out some bugs as they occur. Its existence can be very helpful when modding or debugging.

  11. KF SDK does auto-save 10 different files from the previous 2 hours, named "auto0"-"auto9".

  12. Navigate to 'Properties -> Display -> Mesh'. It will give the name AND file location of the Actor (SM directory) that you have selected.

  13. Maybe look at this for extra functionality (Be v careful unrealed.ini sensitive lol): https://forums.tripwireinteractive.com/index.php?threads/customizing-popup-actor-list.101481/

  14. Go into Properties of a wall or surface selected and the top of the new window will give the name AND location of the Texture used.

  15. Bit obvious one but if working with graffiti or meshes with customised skins, don't forget this setting:

    .
  16. TEST specifics regularly. Most issues aren't immediately apparent.

  17. Consult official maps, they often know what's best, and what works.

  18. The more complex your map, the less responsive the editor becomes. However, it has an easier time in the top, side and front viewports compared to the 3D one, and I find it's more efficient. So use them. When using the 3D view zoom in to render as little as possible.

  19. You can separate out big maps utilising the following 2 selection suggestions, they're not common but they save so much time when you do need them:




    Likewise you can select all actors of type x, all adds/subracts, all brushes or all of actors of group (in group browser).

  20. How 2 Slippery floor: https://forums.tripwireinteractive.com/index.php?threads/how-do-you-make-slippery-floor-in-kf.56290/

  21. Don't even touch this cursed SDK unless you have some good tunes or a podcast running!

  22. https://forums.tripwireinteractive.com/index.php?threads/a-few-tricks-ive-learned-killing-floor-sdk-tips.46360/ --> Shift + MMB SOO much time wasted counting squares.

  23. Every time you scale a static mesh, SDK ends up saving it with the exact dimensions under 'myLevel' in the static mesh browser, so don't overdo it. Store any custom meshes that you make in there too and they'll automatically be downloaded along with the map.

  24. In a static mesh, navigate to Display -> mesh -> skins. Press 'use' and you can apply a new texture that moulds over the object. This is handy for things such as graffiti textures, applied over a grime or shattered glass SM that can be placed on a wall.

  25. Shift + D (Duplicate) >>>> Copy + paste (most times).

  26. The Siren Torturers community, from the discord link up in the intro, have provided an edited SDK (KFEd) application which beefs a 2GB RAM cap to 4GB. Anyone has permission to use it if they wish http://sirentorturers.site.nfoservers.com/downloads/KFEd-4gb.zip

  27. KFUseTrigger only works with doors. Confirmed here too: https://forums.tripwireinteractive.com/index.php?threads/kfusetrigger-to-activate-scripted-trigger.113151/ My alternative is usually proxy trigger or Mover -> Mover event.

  28. Smart way to send zeds flying: https://forums.tripwireinteractive.com/index.php?threads/launch-pads.51938/

  29. There is a hard limit to actors such as lights/navigation points lmfao. Look at some of the biggest maps such as Hive and try not to go bigger then that. Otherwise split into multiple maps and (admins will hate you but...) use the kf-hard map change command in scripted triggers (KFmod style).

  30. This vid from about 2:02 to 5:00 is the Holy Grail of basics in terms of BSP brushes:










Super Tips
I use it mostly for paths but don't forget you can right click on the headbar of a viewport to customise visibility of...

Next: Tripwire coding oversights...
Originally posted by ST's Broski!:

"There is code to disable KF's color correction in the standard KFLevelRules, but due to a typo (KFLevelRule.) and an oversight in KFLevelRules code (its missing this boolean entirely) It's not usable. And the color correction options in ZoneInfo does nothing. Same exact code.

Welp, turns out, there is one thing that actually has the code for it still. The story mode actor. And it works. And it has MASSIVE impacts on how maps look.

You can more accurately use different themes of lighting.

If you want to see how massive of a difference this makes, drop KFSPLevelnfo () in a default map and set levelInfo->bUseVisionOverlay to false."[/i]

-
Next: Might not work for everyone but this post below is grand advice too :)
-
-
Next: SDK will stop responding.
What's more? Settings in many windows are commonly cut off and can't be expanded or understood. While the 4gb KFEd file in the intro should help, also consider...

Locate KFEd.exe in your Killing Floor game folder, Rick -> Properties, and change its compatibility mode. Most useful versions are:
  • Windows XP (Service Pack 3).
  • Windows 8.
Or you could try out 800x600 resolution because it could help.




Lastly: Official Map authors can hide some of their stuffs in the editor to prevent you nicking em, nick em anyway by first using this fancy tool to reveal them:



Hotkeys:

Q -> Toggles BSP.
W -> Toggles Static Meshes.
O -> Toggles Volumes.
F -> Toggles Distance Fog.
H -> Toggles Actors.
B -> Toggles Builder Brush.
Ctrl + W -> Align BSP Textures.
Ctrl + S -> Subtract Tool.
Ctrl + A -> Add Tool.
Shift + L -> Applies Tex to all selected surfaces.
F8 -> Build Options (set lighting to RGB8 religiously)

Extended: https://docs.unrealengine.com/udk/Two/UnrealEdKeys.html
Known Errors
Things to look out for:
  • Uninstalling KF SDK wipes all of your Killing Floor mutators (and binds). So erm...
    Don't Do That xD

  • Selection Delay is a UE2 issue due to modern GPUs, discussed here: https://www.vogons.org/viewtopic.php?f=59&t=90041

  • Selecting surfaces specifically has an even more ridiculously long delay. zoom in and ensure the Editor is rendering as little as possible in the viewport.

  • Not really an error but KF hates spaces in imports so NEVER add them, especially for sounds (.uax).

  • the config for saving Build settings is borked, and if u do it manually through unreal ed.ini it breaks the editor (BIG TIME so don't ever lmfao).

  • modern 3DS Max and Blender2.81+ have never successfully exported a SM into kf1 with multiple UVs/materials for me (I remember hearing it was an issue somewhere too).

  • For broken build/terrain menus try the advice discussed here: https://forums.tripwireinteractive.com/index.php?threads/solution-glitched-terrain-editor-menu.55403/

  • If you use textures or resources from the workshop or modded content, and send the map file for testing without including those resources. Testers won't be able to view the map in game as the title won't appear at all.
    If this is causing issues you can ask a friend to open the map file in SDK, and it will give a detailed error report about which resources are missing, so you can narrow down your search.

  • If the map won't appear in the Killing Floor map list, the most likely reason is because there's a disallowed character in the map name (such as "."), or it doesn't have a KF/KFO prefix (another reason might be a dependency so try convince yourself/them to monitor log real-time as they open the file in SDK).

  • The Undo (ctrl+z) action is restricted, and can cause crashes when reverting projector movements, so be sure to save often if you use it anyway like I do ;D

  • Projector textures also tend to multiply their alpha values (by like 1-10%) with every build, eventually becoming completely transparent. Idrk what to do aside stay aware. I literally have to hop in game to see & adjust their position + scale lmfao.

  • Animated decorations work sometimes (even on servers) but also stops some from loading the map at all (crashes SDK too). I think there's a dependency somewhere that I need to find,,although it works in kf-foundry lol, maybe I'm stupid.

  • Scale map / brush operation crashes SDK (unsurprisingly). Just use vertex editor.

  • The grid alignment often breaks if you consistently use BSP dimensions that aren't powers of 2 (especially at sizes 1000+) Or more often switching between grid 1-2 (often while something in grid 1 is still selected). This means brushes may place themselves in between grid lines, or suddenly gain (non existent) width in the top side and front views. If you insist on using grid 1 for meshes (like I did/do a lot), make it a religious habit to always deselect the mesh before switching back to grid 2+

  • Delay time can't be properly edited with KFDoorMovers. Fall Trigger Pack's DoorMoverPlus doesn't fix this, or maybe I'm just that bad so meh..

  • Ordinary Movers, and routes movers take can break KF specimen pathing. Whereas KFDoorMovers don't in my experience. Prob because path collision is enabled in properties > Collision by default, so if you insist on using massive movers go ahead and set that to 'False'.

  • There's a hard limit on the effective no. portals and path navigation points.

  • If you change to a language (like to Russian), RIP. I've noticed that at least one trigger has a broken True/False functionality feature in properties. Might just be if you download SDK then switch and may even be the same for other languages so gl hf.

  • I heard through the grapevine workshop has a 100mb upload limit (don't quote me on this your map shouldn't be getting that big and workshop sucks anyway we all use manual dl links xd).

  • KF SDK can cause you to run out of virtual memory from time to time, so be sure to hit the save button before closing the pop-up. At least use the basic hotkeys to toggle visibility, and reduce your graphics settings. As it does auto-crash the software.

  • Let's not forget the most important error. Why am I publishing a KF SDK guide in 2020?
    Well... WHY THE HECK NOT!
    More like I'm disgusted at the lack of them, so who knows. Hopefully at least 1 person finds this useful.

    Feel free to comment if you have any more relevant errors or bugs to report, or rate me nicely if you like my style.
Workshop Release
It couldn't be more simple, navigate to Tools -> Upload files to steam workshop.

.
Since everyone Should have the same Killing floor file directories, the workshop will only upload files that are in the Killing Floor folder, and install files into other players files pretty much exactly where it found yours.
^
ie: if you put a .rom file in the Textures folder - the workshop may install it into another players Texture folder as well. And no-one will play your map because You Stink.

//ProTip//: The description during upload has a character limit, but if you edit description in steam workshop, post-upload, you won't be restricted to nearly the same degree, and can format your upload in FancY ways discussed below. But first...

Do you Stink?

If you tick every tag when uploading something simple to the workshop, you definitely Stink. Tags are there to make the workshop easier to navigate. But for KF they're essentially pointless now. There's no-one to moderate lying tags so everyone stinks, no-one can be bothered looking at the workshop, and meh, it definitely won't help your workshop views in the long run.

.
Image sources on the matter can be found here:
https://wiki.tripwireinteractive.com/index.php?title=Killing_Floor_Steam_Workshop

Template

Don't underestimate the formatting for your upload, it is the main advert for your map and if you consider yourself semi-experienced it helps to set a standard for others to follow (lol 90% of steam content creators). Even if you don't rec and upload a pretty video feel free to borrow from this template [insultingpros.github.io] or the corresponding template below (credits to the doofus):
Boss Arena:
[h1][b]General Information[/b][/h1]
This remake fixes some nasty original map [b][i]features[/i][/b].
[spoiler]for more info spam comments section[/spoiler]
[list]
[*] Patriarch's spawn in tested, delayed intervals (usually as pairs).
[*] Built-in voteable Hard Mode.
[*] Amounts of dosh given feels more balanced.
[*] There's a second level, with planks, cover and all your wildest dreams.
[*] Additional armour and high tier weapon pickups (with consistent spawn % for all difficulties).
[*] Scripted pipe bombs near blocked off Patty spawns.
[*] Addressed zed pathing issues.
[*] And more fun additions such as a replacement for the siren wave.[/list]


[h1][b]Whitelist Status[/b][/h1]
[list]
[*] Dedicated server: all clients will level up, get achievs.
[*] Listened server: all clients will level up, get achievs.
[*] Solo: (and you guessed it) Still whitelisted.[/list]


[h1][b]Technical Information[/b][/h1]
① This is simply a map, no embedded mutators or whatever. To edit/remove pipe bombs search for the tag "PipeSpawner" in the actor class browser and delete or navigate to the scripted triggers -> AI Script.
② 'SkipWave' event command will skip to next trader (but use at own risk on normal mode).
③ The optional Hard Mode features pat spawns without timed intervals, for the classic BossArena experience.
④ Pat spawns are storymap style, so if the probability works out (and you're a lucky bastard) you could have all of the patriarchs spawn in the same room.

[h3][b]Game Mode[/b][/h3]
[code]
Objective[/code]

[h3][b]Download Link for evil people who refuse to like and subscribe, or admins[/b][/h3]
https://www.dropbox.com/sh/1zuch8rcbo6addy/AACmRci6wVgyAGQbvRzhtVeda?dl=0

[h3][b]Credits[/b][/h3] Pathing, debugging - FagC ...

This formats the page as seen below: https://sp.zhabite.com/sharedfiles/filedetails/?id=2318348544
Thanks for reading :P
Mucha gratitude if you made it this far.
This guide is an ongoing effort and I keep adding to it from time to time, so it never really will be finished :o
Whenever I feel I understand a concept better then I did the day before, it'll expand - And sometimes i'll try make it look more concise & readable.

It does help me but I would also hate to think the effort in this guide went mostly to waste given the late release, in a dwindling community. So do feel free to check on it whenever you want and give any support or constructive feedback in the comments section.

So why are you still here? Weirdo
Well I may as well give one more link, here's a video of a KF Speedmapper?, in a timelapse:



See if you can spot out some of the features you may have learned in your time, how you could plan or maybe upscale some of his building methods.
It's a great example for planning, although nobody cares if its scribbles, with a ruler and more effort you can accurately envision a plan with useable dimensions. Anyway, maybe i'll catch you around town :o
Keyword Glossary
Active brush - The red brush frame used for creating new BSP or volumes (actually called builder brush apparently).
Brush - The building blocks (blueprint) of all BSP in your map.
BSP - Binary Space Partitioning, it either cuts out space for your player or Adds -> smacking cubes together to design levels.
Icon - The smaller buttons at the bottom and top of the viewports.
LOS - Line Of Sight.
Navigation Point - Something that acts as, or is a path node for zeds + bots
Proscribed Paths - Disallowing a route from a given navigation point (A) to the specified one (B).
Rick- An immature joke replacement, for a right click.
SM - Shorthand for static meshes.
ST's - Shorthand for Scripted Triggers (or sometimes the Siren Torturers community).
Tool - All the big icons on the left side of the SDK, which can change the function of your mouse clicks, or the shape and function of your active brush.
UE - Acronym for Unreal Editor, or Unreal Engine, duh.
Viewport - the windows that you'll see your map through (including Top, Front, Side and 3D).
ZVol - ZombieVolume Actor for specimen spawns.

References + Updates
https://github.com/InsultingPros -> Contains links to kf story map archive, other stuffs and redirect tool that may make admins like you more.

https://www.moddb.com/games/unreal-tournament-2004/tutorials/unreal-mapping-quick-start-guide-ut2004 -> Basics that are not covered in my steam guide .

https://docs.unrealengine.com/udk/Two/SiteMap.html -> Good rounded reference for UE2 engines, some inaccuracies but do feel free to bookmark it :D

https://lodev.org/unrealed/movers/movers.html -> detailed account on movers, the sections on "making a lift" may not apply for this editor sadly though.

https://docs.unrealengine.com/udk/Three/UsingWaypoints.html#Using%20Waypoints -> Tutorial and info for pathing.

https://www.kf-wiki.com/wiki/Help:Mapping_Crystal_Lake -> Detailed case study on designing a map over the skeleton of an official map :o

https://forums.tripwireinteractive.com/index.php?threads/kfs-containment-story-map-tutorial.80381/ -> Objective Mode (KFO) Guide

https://youtu.be/X6mi5Yh6vmk -> This guy has done like 100 UE2 tutorial vids, and 95% of the time everything will be accurate to this version of the map editor. So you can use it to learn a lot of features :P

https://forums.tripwireinteractive.com/index.php?threads/how-to-optimize-your-map.43175/ -> Optimising your Killing Floor Map + more references in this thread.

http://wiki.tripwireinteractive.com/index.php/Console_Commands_(Killing_Floor) -> List of commands you can use when debugging and testing.

https://www.insultplayers.ru/killingfloor/beyondunrealwiki/(start).html -> Rehosted Monster Reference for UT-2004 (and basically the KF) Editor.
https://beyondunrealwiki.github.io/ -> Alternative rehost site for same thing.

https://wiki.tripwireinteractive.com/index.php?title=Killing_Floor_(modding) -> This TWI wiki page has mostly unbroken links so will also be good for mapping or modding or both. Includes a lot of advice on how to edit stuffs without even having to touch the code as well.

Lethal Vortex KF SDK Vids -> If you felt my guide was lacking video tutorials feel free to check out these. probably the only dude who bothered to make more then 2 SDK vids exclusively for KF1

https://www.rosswilding.com/design-resources -> For further research (mostly Level Design)

https://wiki.beyondunreal.com/Legacy:XWeatherEffect - > I wont make a guide section because Steam's table of contents already sucks but this is a good guide for advanced use+making of weather effects.

https://forums.tripwireinteractive.com/index.php?threads/level-design-assets-and-tutorials-reference-thread.53850/ -> a good lookin' post with tutorial links and free providers of tex, sounds and models.

https://forums.tripwireinteractive.com/index.php?threads/level-design-assets-and-tutorials-reference-thread.53850/ -> Snd FX Resources

Update History

02/21
  • Added Terrain Section
07/23
  • Added Tip No.16 + Super Tip No.2 + small addition to 'Objective Mode'.
01/24
  • KFMusicTrigger (final note to 'Triggers' section).
  • Copied a cool tip (SDK-4gb) to Intro as often missed.
03/24:
  • The BSP Hole section of 'Build and BSP' was REALLY outdated, don't base your knowledge in that regard off my old vision i've updated a lot of it. Oof sorry ><
  • Created a Guide Section 'Spawn Points' that quickly summarises zombie volumes.
  • Added an important visual reminder to Vertex Editing.
  • Beefed up SuperTips thanks to [ST]Broski's spots. It's really cool now, check it out!
  • New 'Honourable mentions' in BSP and Lighting.
  • Re-uploaded some images that used to only be accessible through imgur links (most noticeable in Objective + Basics on Browsers section). Still ugly but blame cruddy ol' steam formatting, wasn't aware they updated it.
  • Shoved a template in 'Workshop Release' for help with formatting map releases.
  • Added Tip No. 5+6+18, Texture Browser ProTip and cleaned up 'Errors'.
  • Edited 'Level Design'
  • Added link to 'Known Errors' for debugging corrupt terrain/build menu.
04/24:
  • Updated 'Objective Mode'.
  • Added 'Hiccup' to 'SkyZoneInfo'
  • Rewritten BSP hole section again lol (nothing new to declare was just sick of the EditNotes).
  • Got TriggeredCondition actor working for me on some new projects so added it to 'Scripted Triggers' section.
05/24:
  • Big addition for 'Porting Maps to UE3' including vid.
  • Reduced size of Steam's floating TOC by combining Tips+SuperTips and these sections
10/24:
  • Updated Paragraphs 1-2 of 'Level Design'
  • Attached a steam discussion about unreal unit scale to 'Build & BSP'
12/24:
  • Updated 'Deep Dive Assets' following some 3ds max jank I played with today.
01/25:
  • Added SDK Reference thread & a tutorial link for Weather Effects to References (it may appear cropped in browser so feel free to copy paste text into notepad if that's easier).
07/25:
  • Added 'Important Bonus Jank' to Optimisation (Double Framerate. Credits to jk).
  • Added 'ProTip3' to Level Design (Ammo % pickup work-around. Credits to braindawg).

BIG CREDITS:
Especially in late years Siren Torturers discord have mostly been handing over snippets for the guide so give em some thanks too if you bump into em. Or discord link in intro if you're interested.
38 Comments
Vinylzaum 2 Jun @ 8:17pm 
yeah thanks I already figured out:steamhappy:
Holy Username Batman!  [author] 2 Jun @ 2:52pm 
it's been a while so my memory is patchy at best sorry but with sound imports they're very sensitive so i'd say double check things on these lines:
• Use short file names (with no special characters ofc).
• The only compatible formats were .wav and (.lwo ??).
• Use mono sound fx, sdk just dont like stereo.
• Double check all the directories (package/groups) are correct for your intended import.
• Try more sound fx, might have been me ballsing it up back in the day but I only had about a 40-50% success rate with sound imports lol.

Someone in Siren Torturers discord might remember better but feel free to poke me again if none of that helps.
Vinylzaum 1 Jun @ 4:05pm 
I have a question about sounds, I'm trying to change some uax sounds but when I try to import,
nothing happens
Holy Username Batman!  [author] 26 May, 2024 @ 5:53am 
Aye thank you, as far as I'm aware with custom music it acts a little funny on workshop map upload. Often necessitating a separate upload for the ogg files.
So I usually can't be arsed :p
Christina 22 May, 2024 @ 2:40pm 
@DanielL I know your comment is a couple years old, but if you're still wondering how just find the KFMusicTrigger actor and place it anywhere in your map. Open its properties and under the KFMusicTrigger section you can add the names of any OGG Music files in the games Music Folder.
Holy Username Batman!  [author] 1 Mar, 2024 @ 6:22pm 
Cheers
[SLS]TOPSGT 23 Feb, 2024 @ 12:37pm 
Big Kudos I just found your guide, good work.
Holy Username Batman!  [author] 5 Oct, 2022 @ 8:21am 
Never bothered learning how...
The extra download prob won't go down well but only map I think got it to work on kf- is this:
https://sp.zhabite.com/sharedfiles/filedetails/?id=98702458

Ferenos' v newest maps mighta found a way but last I checked he played music n stuff via scripted trigger sound effects so it didnt go down well.
As for KFO, KFO-Haunted Hotel gets it to work without extra downloads but I think its done via the kf-storyObjective actor.
DanieL 4 Oct, 2022 @ 9:27am 
I've creating a test map just to get the hang of things... but I've one question... How do I add music to the map?
Holy Username Batman!  [author] 26 Sep, 2022 @ 3:50pm 
Im not gonna rec anything because SDK is laggy enuff without background processes but OMG What a LOAD of wall text.
The advantages of bsp rooms like these is also in the link, bsp surfaces have better lighting then SMs so atmospheric rooms work better, oh and faster collision (like the bullet effects).
A cube room without SMs will also always look shit but if you just want a pointless transition corridor and dont want to decorate it much, a non-cube room done like this makes it slightly more interesting = u can be more lazy with SM decorations = ultimately waste less time because the static mesh browser is so SOO unorganised and hard to use.