• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

ATTENTION: Modders and Mappers - Give your Feedback!

Delta69er

Grizzled Veteran
Sep 13, 2017
176
73
Hi everyone,

Recently I've been talking to some modders and other mappers about the current state of KF2 and the modding scene; more or less issues that we've encountered and some general things we would like to see changed for the future.

Killing Floor 1 and 2 have both relied heavily on the free and willing support of modders and mappers to keep short and long term players interested in the game after hundreds and even thousands of hours. TWI themselves even started out as a mod team and so I think it is especially important that they pay attention to some some issues and grievances that we have encountered along our own development process.

I recently reached out on the Killing Floor Discord and got a reply. If we can compile a list of things that we would like to see addressed, then they will bring it to the front and have a look at it. See below:

Spoiler!


So the requests goes out to us to get a general list of things that would be good to see for us modders and mappers. I highly recommend and I would like people to feel free to have their say here on things they would like to see addressed. Pass the word on as well if you know anyone that might have something useful to say as well.

The only thing I recommend is try and keep the discussion and tone of your posts civil and non-aggressive, its easier to get attention with carefully thought out words rather than blatant attacks.

Theres no guarentee that all the stuff we talk about will be implemented but it is still important to bring major issues to the fore-front.

==============

For me as a mapper here a list of things that I feel should be addressed:

1. Documentation
It would be good if we could get some general update and centralization on documentation - at the moment resources are split between 3 main sources. The forums, The wiki and the Atlassian Wiki. Merging information to one location would be extremely helpful instead of trying to hunt down information from different sources. The forums also have a bunch of information laying around that is missing from the wiki's as well, additionally its hard to tell (especially with new people coming into the field), whether or not some of the information is still up to date.

One thing that is also very present on the forums is the contributions/tips/posts of things mappers and modders have found that answer questions left really open by the wiki. I know at least in the mapping section there is a large amount of tips that would be extremely useful if it were on the wiki (thread of tips, video tutorials, etc); I've written an addition to the holdout mechanics which I feel would be very useful to include in the wiki itself.

I guess this comes to the crux of this point as well - it would be good if you could open up some of the wiki for community contributions - approved articles, edits and the like, just so community can flourish.

2. Clearer Communication and Update to Whitelisted Mods
Just more participation in the forums, please. There's pinned threads with no replies from devs that almost go back 2 years. It really does seem like we're in the dark. I'm not asking for a 'help us do x' sort of participation, but if theres a valid question that is present in at least threads written by TWI devs - we would like a reply.

One really obvious example is the Whitelisted Mods and Mutators thread which is abandoned. There's no real clear list of what mutators are white-listed (I believe theres maybe 2 floating in one of the wikis....[see above issue]), whether TWI are still accepting mutators to be whitelisted or what is going on.

Another example is the WorkshopUploadTool thread which was active for a long while and went completely unnoticed until a bug report was made. It seems the WUT has been updated to include tags now, but its still kinda broken (though in the above post it seems as if it is going to be fixed with the next update).

3. Map Previews for Custom Maps
This is a little thing - but I think it is long overdue and a little bit surprising it hasn't been added yet. There really isn't any more to it other than something that would make the game feel a little more complete and just general previewing of maps is a nice QoL addition.

4. Landscape Tool Bug Fixing/Documentation
Probably the biggest thing that's gone untouched for a while - guidelines on limitations on how to use this for KF2 specifically would be greatly appreciated. It seems very confusing on how it works; if there are material limits, material instruction limits, component complexity limitations or all the above. You can spend a good couple of hours sculpting and painting a landscape, only to boot up the game and realize that it isn't functional because its covered in blue and white squares and there isn't any errors to tell you why.

At the moment it seems like its a "you got lucky" or importing custom landscapes meshes are the only solutions, which ain't really that great. A look into foliage tool would be good too.

==============

These are just some of the things I've encountered when dealing with mapping so far. I know from talking to some other modders that there are a nice bunch of issues they've encountered while dealing with the code (ranging from complete lack of comments/documentation to weirdly assigned private variables which make doing a specific things really painful to even making mods that use sound). And I'll leave it to them to explain it in depth.

So Modders and Mappers please have your say in an effort to improve the experience for us, people who use our work and the game itself.
 
I have to add the fact that if you create your own collision for a mesh and then import it in the SDK, putting it on the map causes crashes.

Another things are LODs, SDK crashes almost every time I try to remove lod or replace meshes with LODs that are already placed on map.

For a long time now I have seen that whenever I build light the static shadows will be created just right but if I send the map to my friend so he can work on it and after he is done sends me the map back and when I open the map the shadows are gone. Only missing shadows from things like trees, grass.

Foliage tool and splatter maps, after you place just one foliage actor on the map and open splatter maps the SDK crashes instantly
 
Upvote 0
2 Things I'd like to ask about.

1. How much does the KF2 animation pipeline differ from RS2: Vietnam's? Information about KF2's animation settings is extremely hard to come by.

2. Are the bnk manifests that were present in the game installation folder ever coming back? They are absolutely necessary for audio mods. I know rebuilding these files was never officially approved, but they never affected more than clientside gameplay and were never removed from the workshop. I had verbal confirmation from TWI community outreach that the manifests would be back in the next update- 2 updates ago.
 
Upvote 0
Original post by Marco from more than 2 years ago!https://forums.tripwireinteractive.c...cts-from-cache

LoadObject can't load objects from Cache

06-18-2015, 09:38 AM
Since I'm not sure if you are aware of this bug.

Category: Code

Reproducibility: Always

Summary: UObject::LoadObject/Object.DynamicLoadObject can't find objects from packages loaded from Cache.

Description: This effectively breaks all maps or mods from referencing across to other custom packages, it will always throw on load "Failed to load object XXX" even though "OBJ LINKERS" console command clearly shows the packages are loaded with correct package name.

To test:
1. Simply create a custom texture package and a custom map that uses it. 2. Join a server hosting that map, make sure you don't have the packages yourself and download them from the server.
And so, all textures in the map references to a "default texture".

However in modding, you can clearly see the object references can be replicated from server to client, so that means UPackageMap knows the references to the objects in the package.

Online/Offline: Online

I can make a mod all day long but if I use a custom mesh, or texture it will not properly replicate on the client. This seems in part to the way the game utilizes the workshop directory on a client. Then has a separate Cache directory for same client but are not replicated in game correctly.

So if a Mod is on workshop and the player is subscribed, it works. If a player joins and is not subscribed to the workshop item yes it will download to cache, but it will not replicate correctly in game. This makes modding a waste of the author's time. You can have the best idea and code it into fruition, create a package in SDK with gorgeous models and attention grabbing materials. But broke is broke. Fix the replication Please.
 
Upvote 0
I will list various issues I've encountered or noticed when developing my mod.

The general lack of documentation throughout most classes has made it difficult to learn how you've implemented aspects of the game (e.g. the trader, perks, melee weapon helpers).

There are many native functions with no documentation on what they do or how to integrate them or work around them in a mod. KFPerk is particularly bad for this. For instance, there is no way of determining where KFPerk.LoadPerkData is used/called, what it does, or how to effectively avoid it from overriding an initial custom perk build without resorting to using timers. It took me hours to even determine that LoadPerkData was the issue. Off memory, native functions are another issue when attempting to modify the trader list due to a lack of documentation.

More Mutator/GameInfo hooks are required to patch around your heavy use of resetting variables to the default values. I understand that the default keyword is particularly useful for dealing with a class reference rather than an object reference, but you also use it for resetting values before applying modifiers (e.g. afflictions). Please consider using a "base" value that acts like the default value but can be modified.

Extending perks is the only way to properly modify the player's inventory capacity, weapon recoil, and spread. This is because KFPerk either resets these values to default, or modifies values directly after they're reset to default somewhere else (e.g. spread in KFWeap_ShotgunBase.SpawnProjectile and recoil in KFWeap_MedicBase.HandleRecoil). It might be possible to completely patch around this by overriding every offending weapon class and not need to worry about perks, but this is neither feasible nor is it going to fix the inventory capacity issue.

So many property modifications are routed through KFPerk, but they are not then passed on to the GameInfo or Mutators. In my mod I have created my own hooks from my custom perks to the GameInfo and Mutators, with client-side support as well. I think that an increase in the number of hooks, coupled with a great increase in documentation throughout the code, will help current and future modders.

Finally, a couple of small issues that I've recently realised:
  • There's no way to correctly set a (vanilla or custom) perk's active level without hacky workarounds.
  • There are several functions within KFPerk (and probably all around the place) that are simulated but which have no need to be. Examples of this are: KFPerk.ModifyDamageGiven and KFPerk.ModifySpeed. Damage and player speed are handled server-side, so these aren't ever called client-side. This isn't a big issue, but it could be confusing for modders who are just learning netcode. The simulated keyword is often a source of confusion, and misusing it is only going to make it worse.
  • I think the bleeding affliction is the only thing preventing me from being able to modify zed's attack speeds without resorting to modifying every single zed class, because KFPawn.SetAttackSpeedModifier has no hooks allowing modders to remodify the attack speed if necessary.
 
Upvote 0
Problem #1: Many variables and functions are unusable because they are private/protected for no logical/apparent reason.

Why?: I don't know why Tripwire would make modding less accessible in such a fashion.

Fix?: Don't use private, const and protected where it isn't needed.


Problem #2: Soundcues are broken. They are mono channel only and are not affected by the game volume settings, being very loud.

Why?: Soundcues extend AkBank, pretty much breaking them.

Fix?: Reverse the change/add WWise support through redirect and workshop.


Problem #3: Initial joining on a server where you download a workshop item causes you to get 'error opening package ...'.

Why?: I don't know.

Fix?: I don't know.


Problem #4: Redirect download doesn't work with extra code replication. Also, there appears to be some 60 second download limit. If your game can't download the file within this timespan it'll time out

Why?: The game doesn't treat the Cache directory as a valid used BrewedPC for workshop downloads.

Fix?: Extend time out limit in engine, undo the initial change that was also done in RO2 to get rid of redirect.


Problem #5: You cannot get rid of specific HUD elements nor edit the HUD on a fundamental level.

Why?: The HUD is flash based (.swf) with its source disclosed. It cannot be recompiled to get rid of it that way.

Fix?: Make the HUD open source so the modders can edit it and recompile it.

Fixing all of these would make a big difference already!
 
  • Like
Reactions: LazyTiger
Upvote 0
I have some request :

1. DynamicSpawnVolume :
A SpawnVolume can turn ON/OFF independently.

For now mapper use Toggle EX to turn ON/OFF SpawnVolume, however it's limited because it will close all other spawnvolume which not include in Toggle EX.

GeDzEj5.jpg
I recently made a map KF-OC_lobby, this map has 100+ doors.

http://steamcommunity.com/sharedfiles/filedetails/?id=1294183475

I plan to make every door has 33.3% chance to open every wave.

How it should work :

[Wave Started Event] => [Random] => 3 choices, 2 is empty, 1 is door open event.
100+ Random Events.
Every Door open event will turn on specific spawnvolume.

However, Toggle EX cant do this, each Toggle EX trigger will close all other spawnvolume.

So I need a *new* SpawnVolume that can turn ON/OFF itself independently.


2. (Thinking)
 
Upvote 0
Audio

Ambient Sound Actors
"Ambient Sound" actors will only play audio through the left channel when spatialized audio is enabled in the actor properties.
(This has been an issue since the "Return of the Patriarch" update)
Km5xwAR.png



Ability to modify default game soundtrack on a per map basis
Partially implemented game playlist manipulation feature.
It is currently possible to add custom music tracks to the game on a "per-map" basis, however if the custom tracks aren't found the game will infinitely loop the next song notification and no music will play at all.
A simple solution to this is to set it up so that if the required file cannot be found the default game playlist is used instead.

I've brought this up before (and Yoshiro did add this to the system) however I'm going to put it here anyway.


AkAudio Kismet node Documentation
Some basic documentation on what the existing AkAudio Kismet nodes do, some are self-explanatory, however others are not
OyFGmZU.png

Personally I understand what most of them do, however that is only after spending far too much time looking for outdated WWise documentation as well as a healthy dose of trial and error.


Rendering System
(this is a big one for me, as well as anyone else who wants to push for the highest possible graphical fidelity in the engine)


Spline loft Actors
Spline loft Actors do not display correctly.
Objects and shadows will render through the geometry that is being manipulated by a Spline Loft Actor.
Jh5fc8E.jpg



Image based reflections
DX11 Image based reflections.
https://docs.unrealengine.com/udk/Three/ImageBasedReflections.html

These were an amazing addition to the UDK that allowed for massive bumps in scene quality at a relatively low cost.
While the current Screen Space Reflection are OK and relatively lightweight they are very inaccurate and do a very poor job on vertical surfaces.
Not to mention the decision to limit the reflections sample range to 0-50 in the "Specular Power" (Glossiness) input has me completely stumped.
RGSdcGJ.png

A traditional glossiness map in a lambert shading model will sample the texture at a range of 0-256. (256 being a very tight specular highlight)
So you've now limited yourselves to rather "Dull" materials if you want to stay in the correct sample range for the SS Reflections.


Scene Capture cubemap Actor
The actor works fine for real time cubemap reflections, however that is very expensive.
The feature that most people would be interested in is the actor's ability to render the scene to a static cubemap that can then be used in a material shader.
This used to be done by temporarily swapping the engine's renderer to DX9 as the feature didn't work when in DX11 mode, however that is no longer possible due to the removal of legacy DX9 support.


Lighting System

Light Functions
Light functions will only display a greyscale projection when sampling color from a texture.
This issue only exists when IN-GAME
Light functions display correctly in the editor.
The feature was broken around the time of the "Return of the Patriarch" update.
81du4Bt.jpg



Masked materials
Masked materials not showing up with precomputed lighting (shadowmaps).
This is a recent development, it started occurring after the Christmas update
Both I and MixMakMax are experiencing the same issue.
Personally I've cleaned KF2 off my system entirely and the issue still persists.


Lightmass
Why was it removed/disabled?
Can we possibly get it back?
The ability to use photon mapping played a massive role in drastically increasing the realism and overall visual quality of a scene.
I can only assume it was removed for good reason ("other than we broke it and don't want to fix it").
Not having it feels very counterproductive and only servers to reduce the overall visual quality of the product.


General/Misc Features

Landscape
I'm well aware that has been brought up many, many times but allowing the use of custom materials with the Landscape tool would be phenomenal.
As it stands right now being limited to the stock Landscape Shader is OK at best, however it severely limits the creative potential of the level designer.
There's no longer the option to use different types of Material shades with landscape.
Eg; Tri-Planar Mapping, Large Color ID maps (like the ones that come from World Machine or World Creator)


Screen Door Fade
This allows objects to more seamlessly transition between LOD's (extremely useful for foliage) by visually fading the mesh in and out on LOD swaps.
Enabling the feature would not add any render overhead to the game itself as it also has to be enabled in the material shader
All this would do is allow individuals to use the feature if they so desire, and all it take is a small config edit in the KFEngine.ini
FpBnWuF.png



Better documentation for Killing Floor specific Kismet nodes.
There is virtually no documentation surrounding the custom Kismet nodes that have been added to the game, while most of them are relatively self-explanatory there are quite a few which are complete mysteries as to their specific functionality and potential use cases.


Streaming Levels
Streaming levels currently do not display properly on the In-Game map list when in the games "Cache" directory under C:\Users\Your User\Documents\My Games\KillingFloor2\KFGame
When in the "Cache" directory maps that use Streaming Levels will display ALL the level files, not just the one with the "KF-"œ prefix.
HOWEVER when located in the games "Maps" folder under the Root directory the map files are displayed correctly In-Game.
LQyk899.png



This is all that comes to mind at the moment, however I will add to this list in the future if anything else comes up.

I've also attached a Docx copy of this post in case you guys would like to archive it internally.
https://1drv.ms/w/s!Amh2U8xb1k7EijQbxFHnaPq-NCHi
 
Upvote 0
Nothing new to share as of right now. I'm adding a few more items noted here to our internal system as well for team review.

One of the audio items came back with a response:

The UE3 sound actors are not supported.
They need to use AKambientsound and "spatialize" does not get set it in the editor, it is function of the wwise actor.

And you don't want screen door face in UE 3... trust us.
 
Last edited:
Upvote 0
Yoshiro I noticed you have now introduced KFGameInfo.BossIndex and KFGameInfo.bGoToBossCameraOnDeath. These are great additions that make it easier for mods that have more than one boss. Thank you for adding them, but could you please make modders aware of changes like these so that current mods can be refactored and because some mods might become more feasible to create now. There may be several changes that you've made which make our lives easier but we don't know about.
 
  • Like
Reactions: Delta69er
Upvote 0
Yoshiro I've been trying to figure out a way to extend Holdout maps for endless and at the moment there just isn't enough information to figure out what gamemode is being played. Its not possible at the moment because WaveMax is dynamically set and you need to account for boss waves, otherwise I would've just said if WaveMax>11.

You recently introduced a new kismet node for path weighting for Endless - can you provide a new kismet node that can return an index for the Game Mode being played (ie; 0 = survival, 1 = versus, 2 = weekly, 3 = endless - but mainly just for survival and endless). If you can provide this than we can thread the kismet nodes into the appropriate streams so Holdout Maps can be utilized in Endless (which almost seems like they are perfectly made for). This can even be extended to the Official Maps.

I believe there are also reports that Wave Started/Ended Event kismet nodes are not functioning properly for BossWave in Endless so it might be good to investigate that as well just in case
 
Last edited:
  • Like
Reactions: Pharrahnox
Upvote 0
Delta69er;n2318615 said:
Yoshiro I've been trying to figure out a way to extend Holdout maps for endless and at the moment there just isn't enough information to figure out what gamemode is being played. Its not possible at the moment because WaveMax is dynamically set and you need to account for boss waves, otherwise I would've just said if WaveMax>11.

You recently introduced a new kismet node for path weighting for Endless - can you provide a new kismet node that can return an index for the Game Mode being played (ie; 0 = survival, 1 = versus, 2 = weekly, 3 = endless - but mainly just for survival and endless). If you can provide this than we can thread the kismet nodes into the appropriate streams so Holdout Maps can be utilized in Endless (which almost seems like they are perfectly made for). This can even be extended to the Official Maps.

I believe there are also reports that Wave Started/Ended Event kismet nodes are not functioning properly for BossWave in Endless so it might be good to investigate that as well just in case

Put in the request.
 
Upvote 0
omano;n2319040 said:
So cryptic.. do you have a list of what has been refused, and what may be looked at in the future?

Yoshiro;n2319029 said:
Many of the engine level feature requests have been denied. Some of the other requests/fixes are in system for future development but I do not have any time table to share at this time.

Do you think you could highlight the current state of the following requests (having something like a trello might also be good). I added what I could from mentioned comments (if I forgot anything please add it it/mention it).

Denied | Investigating | Planned | Implemented

Documentation and Communication
-Centralized and Updated SDK Documentation
-Community Contributions to SDK Wiki
-Landscape Requirements - what is causing Checkered Material when using the provided Landscape MIC
-Documentation on Animation Pipeline
-Additional Documentation in Src - particularly for KFPerk
-Additional Kismet Node Documentation
-Future mentions in the changelog details for refactored Variables/Functions (ie providing BossIndex and bGoToBossCameraOnDeath in GameInfo)

Bugs
-SDK Crash on Initial Custom Mesh Placement
-SDK Crash on LOD removal
-SDK Crash on Foliage Tool for Splat and Shadows/Light Maps
-Unable to Load Objects from Cache
-Timeout on Workshop Item Downloading in game
-Ambient Sound Actors play through one channel with Spatialized set to True
-A bug to do with AkSounds

-Modify Soundtrack per map - missing track bug playing nothing
-Spine Loft Actors display incorrectly
-Grey Scale Projections for Coloured Lighting from Texture
-Mask Materials not working properly with Precomputed Lighting
-Streaming Levels displayed incorrectly while located in Cache

Feature Requests
-Custom Map Previews
-Providing Sound/AkBank Manifests
- I know this was mentioned that it was removed because of 'Unreleased Content', but so much other stuff gets left in the SDK and mined through the src and steam achievments that it kinda seems pointless​
- It would also be good to have some power of the current AkAmbientSounds as we can't modify any of their values either.​

-Additional GameInfo and Mutator Hooks
-Code Review for KFPerk to be more accessible for Modders
-Providing GUI/HUD Elements to be Modified
-Image Based Reflections
-Scene Capture Cubemap Actor support for DX11
-Lightmass/Photon Mapping
-Additional support for custom materials for Landscape Tool
-Screen Door Fade
-Kismet Node for returning Game Mode being played for Endless mode integration in Holdout Maps
 
Upvote 0
Yoshiro It looks like a lot of the AI functions are difficult to override. Some functions (e.g. KFAIController.SetEnemyMoveGoal) are final, and many use static functions of hardcoded classes (e.g. class'AICommand_MoveToEnemy' in KFAIController.SetEnemyMoveGoal and class'AICommand_MoveToGoal' in KFAIController.SetMoveGoal)). Please consider making this more modding friendly.

There seems to be a complete lack of communication with the modding scene. I'm sure both parties would benefit if you fix this.
 
  • Like
Reactions: Freebase
Upvote 0
Small update to give you guys and idea of where progress is right now.

Better Streaming level support is under assessment.
Lighting System requests have been assigned to be assessed: "We're not using or supporting light mass anymore." However the rest sounds like bugs in the editor which will be investigated.
Scene Capture Cubemap Actor - Looks like we are not supporting DX9 in any capacity.
Imaged based reflections - This is more or a "next game" request. What I gather here, is its not supported in our official maps and existing engine.
Spline Loft Actors Do Not Display Correctly - Appears to be under assessment.
Modder Request- Ability to modify default game soundtrack on a per map basis - Also appears to be under assessment.

Better documentation for Killing Floor specific Kismet nodes is planned.
 
  • Like
Reactions: ®omano
Upvote 0