Install Steam
login
|
language
简体中文 (Simplified Chinese)
繁體中文 (Traditional Chinese)
日本語 (Japanese)
한국어 (Korean)
ไทย (Thai)
Български (Bulgarian)
Čeština (Czech)
Dansk (Danish)
Deutsch (German)
Español - España (Spanish - Spain)
Español - Latinoamérica (Spanish - Latin America)
Ελληνικά (Greek)
Français (French)
Italiano (Italian)
Bahasa Indonesia (Indonesian)
Magyar (Hungarian)
Nederlands (Dutch)
Norsk (Norwegian)
Polski (Polish)
Português (Portuguese - Portugal)
Português - Brasil (Portuguese - Brazil)
Română (Romanian)
Русский (Russian)
Suomi (Finnish)
Svenska (Swedish)
Türkçe (Turkish)
Tiếng Việt (Vietnamese)
Українська (Ukrainian)
Report a translation problem
Under rounding, that transition would happen between waves 2 and 3.
I think rounding is more intuitive and I intend to change all integer settings to round instead of truncate under bilinear programming before release. I actually had it setup that way for most of my pre-beta testing, but I touched some bits shortly before releasing the beta that caused an unintentional switch to truncation.
FakePlayersMode is intended to apply to FleshpoundFP and the other *FP options, so your comment surprised me. Acting on your comment, I searched for and eventually found an HP-related bug, but the underlying cause was independent of FakePlayersMode.
I first checked HP with these commands (after spawning a braindead fleshpound).
Health and HitZones[HZI_HEAD] values appeared correct in all of my *FP/FPM scenarios. But something was clearly wrong, because FleshpoundFP=6 and FakePlayersMode=replace in solo only required 33 SCAR headshots to decap a FP, which is wrong. If I spawned one or two human pawns with those same settings, decap took 41 headshots, the correct amount. I started digging...
I eventually discovered that the CD beta overlooks and fails to scale a variable called GameResistancePct (GRP) on KFPawn_Monster. This variable affects incoming damage taken by the zed, and it depends on player count. This seems bizarrely overdetermined -- why have scalable zed hp AND a scalable global resistance muliplier when they look largely redundant? -- but it matters.
CD should have included BossFP/FleshpoundFP/ScrakeFP/TrashFP, modulated by FakePlayersMode, in GRP's calculation. CD included neither. This was the bug.
GameResistancePct's calculation in the standard game is convoluted, but the ultimate result is simple. In the standard game, GRP is set to 0.75 in solo (1 player) and 1.0 in every other case (players > 1). This is why SCAR decap shot count only changed when going from solo to one pawn (33 -> 41), and did not change when going from one pawn to two pawns (41).
You might be thinking: 0.75 has no obvious mathematical relationship to 33/41, even after generous assumptions about rounding, and you'd be right. GameResistancePct is not a direct multiplier or divisor on damage taken. The function responsible for applying GameResistancePct to incoming damage is KFPawn_Monster.AdjustDamage. It is pretty baroque. That function applies GRP to incoming damage, but for headshots, another "ExtraHeadDamage" formula term is later added to the result. The relationship is more like a linear function with constant offset.
Thanks again, Trance. This was the only HP related bug I could find, but please do let me know if I've misunderstood your report or you think there's another bug in there. For my part, I now plan to do some headshots-to-decap/bodyshots-to-kill tests later with a variety of damage types in different *FP/FPM configurations to check that the results match what would be expected in the standard game with braindead pawns, just in case I've missed some other obscure hp-related catch. I did several such tests before publishing the new beta, but only with the SCAR and in an ad-hoc fashion.
The new github release is
https://github.com/notblackout/kf2-controlled-difficulty/releases/tag/beta-2017-06-07-7c359e
with attached CD.u artifact
https://github.com/notblackout/kf2-controlled-difficulty/releases/download/beta-2017-06-07-7c359e/ControlledDifficulty.u
I will update the main post.
I'll play with it more to see if there's anything that's still off.
I have the following changes in my local repo, lightly tested and ready to go:
* Converted AlphaGlitter from a server-side to client-side option. Trance pointed out that the original AlphaGlitter didn't work in multiplayer, which drove me to reimplement it purely client-side; thanks! Now every player can choose their own glitter preference independent of the server and other players. Still works in solo too.
* Converted all integer-valued dynamic settings from using float truncation to float rounding
I would like to address two other items before uploading:
* "bilinear:..." causes problems when given on the `open` command line. The engine seems to ignore the entire `open` command when it includes a parameter with a colon in it. Maybe there's an escape syntax that I don't know about yet. ", ', and \ did not appear to help. Anyway, if I can't find an escape, I may have to choose a different separator character to replace the colon, one that is compatible with `open`. I would update the parser and the accompanying docs in that case.
* Write a new client.md (or something) doc describing the existing client side options: CDAlphaGlitter, CDChatLineThreshold, CDChatCharThreshold, CDClientLogging. The doc should also note that this client-side state resides in KFGame.ini's ControlledDifficulty.CD_PlayerController section rather than the server-side ControlledDifficulty.CD_Survival section.
That's my plan.
The most important item is CDAlphaGlitter, a new client-side command. Run `CDAlphaGlitter false` in your console to disable alpha glitter. This works both standalone and in networked play. It is persistent (saves to your KFGame.ini in [ControlledDifficulty.CD_PlayerController]).
Then I made a new github release:
https://github.com/notblackout/kf2-controlled-difficulty/releases/tag/beta-2017-06-08-74b08e
CD.u artifact:
https://github.com/notblackout/kf2-controlled-difficulty/releases/download/beta-2017-06-08-74b08e/ControlledDifficulty.u
This is the new console command documentation:
https://github.com/notblackout/kf2-controlled-difficulty/blob/master/console.md
I will update the main post.
I was initially unable to reproduce this over about a dozen attempts. After Trance provided a video showing exactly what he did, I was able to reproduce it -- once. Another dozen attempts all failed to reproduce. I do not think I changed anything. At one point after the first crash, I tried using a copy of his *PlayerController* KFGame.ini sections, in case my client managed to mutate them whereas his didn't, to no avail.
My one crash left no minidump file. It also left a logfile abruptly truncated multiple lines before the crash actually occurred, as though the engine's internal logfile buffer did not have time to flush before the program terminated. This contrasts with bugsplat crashes, where the engine typically writes an obfuscated stacktrace to the logfile and leaves behind a .dmp file.
SaveConfig() is a native function provided with the engine (declared on Object.uc, the root of the inheritance hierarchy). I cannot see the source for it. It seems improbable that there could be a bug in such a fundamental function, but the observed hard-crash behavior could be consistent with a bug in native code.
I cannot reliably reproduce this, see the engine code in question, or get any real handle on exactly what's causing it or why it would appear to manifest nondeterministically, so I've decided to remove the CDAlphaGlitter console command (and a couple of other commands that are less interesting but used the same pattern).
The AlphaGlitter client-side option will live on, but editing it will require manually editing KFGame.ini. I would have liked the added convenience of the CDAlphaGlitter get/set console command, but the uncertainty involved is far too great for the convenience. If I can eventually work out what's going on here and prove that the problem has been avoided or fixed, then I would consider reintroducing that command.
New github beta release:
https://github.com/notblackout/kf2-controlled-difficulty/releases/tag/beta-2017-06-09-cea5d4
New CD.u artifact:
https://github.com/notblackout/kf2-controlled-difficulty/releases/download/beta-2017-06-09-cea5d4/ControlledDifficulty.u
New documentation page naming the client-side options, what they do, and where to find/change them:
https://github.com/notblackout/kf2-controlled-difficulty/blob/master/client_config.md
(I will update the main post after finishing this comment)
In case anyone's curious or knows more about this than I do, this is the source that the command would have executed or did execute during crashes (though it's not actually clear whether this block was reached before the engine died):
https://github.com/notblackout/kf2-controlled-difficulty/blob/a588449833b51284a31e84f786fbd6847bced871/Classes/CD_PlayerController.uc#L166-L179
I cannot thank Trance enough for all the testing he's done on this beta. This release will be dedicated to him.
This was easy to spot and fix. I've just committed a fix and made yet another beta release:
https://github.com/notblackout/kf2-controlled-difficulty/releases/tag/beta-2017-06-09-1d17bb
New CD.u artifact:
https://github.com/notblackout/kf2-controlled-difficulty/releases/download/beta-2017-06-09-1d17bb/ControlledDifficulty.u
Main post update incoming
When that happens, I will edit this thread's main post to convert it from a beta announcement into a release announcement.