Jump to content
Sign in to follow this  
CrzyRndm

Late game bug/RNG fixing

Recommended Posts

For those who haven't seen it yet (It explains quite a few of the changes, eventually...) - http://forums.trendyent.com/showthread.php?77597-We-all-know-RNG-is-100-broken-so-why-not-rant-about-it

NOTE: Most of the intended changes will likely only affect those playing NM. Most modifications will be towards lowering endgame frustrations without making it a faceroll :p (ie. nothing gamebreakingly stupid will be added)

Intended Changes

- Generic Resistance always positive again :) - Confirmed doable
- Rollovers on weapons (block/reload/charge rate/knockback) and upgrades fixed. Randomness will be retained almost exactly the same as it is now. - Confirmed doable on both counts - Results
- GoNegative chance made a function of quality. The one suggested by Dingle in the linked thread will be a starting point. - Doable, specifics will need working out
- Removal of low stat (all stats < ~30) items from NM loot generation at some arbitary point in wave/quality/. - Doable, at least on a difficulty basis
- Tavern Shop rebuffed. Myth armour should atleast be normal after a NM game. - Shop quality values found. Some experimentation needed
- Increasing how far down you can go in overlord mode. This is mainly for Morrago and CitC, but should improve Aqua and Sky City awkwardness as well - Looks like min/max overlord height can be individually set by map. This may be best as the current values work well in most cases
- Doing something about the armour/weapon ratio.
- Base GoNegative chance lowered - doable

Possible Changes

- Rebalance all boss weapon rewards along the lines of Sky City/CD. Map and boss difficulty dependent on how much better than generic the rewards will get
- Reward weapon size biased favourably (squire/monk = larger, hunt/app = smaller). This depends entirely on the effects of the GoNegative function. B/c rewards have a much higher than normal quality it's possible that this will be unnecessary.
- Chopper Ogres HP/Damage reduced to below normal ogre levels.
- Chopper Rate of fire reduced to something less than a machine gun
- Change colour of fire projectiles/animation so it isn't blinding white - The djinnlet fire projectile would seem a much nicer colour scheme
- Remove blindingly white ball from center of auras
- Make MMT projectile more blue than white
- Spider "no-target" AI
- Suggestions?

Share this post


Link to post
Share on other sites
I proposed something and Hitmonchan moved my topic to the Beta test forum , it was about

Making copter ogres have half of normal ogres health, damage, speed
Having copters deal LESS damage (else rename them to Ultimate Nuclear Cargos)
Actually having copters do a loading time (like Sharken's charge) before they launch missiles, maybe missiles every five or ten seconds. that would actually help in destroying these creeps before they totally bomb your towers.

but I still got no feedback from Hitmonchan, nor anything has been listed in the new patch notes.

I support this!

Share this post


Link to post
Share on other sites
[QUOTE]- Rollovers on weapons (block/reload/charge rate/knockback) and upgrades fixed. Not quite sure how this will be implemented yet, but it won't be fixing it to any particular value if the stat is greater than 128/254 (ie. randomness will be retained).[/QUOTE]I don't think you can do this because it's most likely in native code.

Copters would become RIDICULOUSLY easy if you changed them the way you propose. That's not balance, that's trivializing. If the ogres are easier than normal ones, they become basicially just free bags of mana.

Share this post


Link to post
Share on other sites
I don't think you can do this because it's most likely in native code.

Copters would become RIDICULOUSLY easy if you changed them the way you propose. That's not balance, that's trivializing. If the ogres are easier than normal ones, they become basicially just free bags of mana.


1) That's balancing because for example on the King's game they have about DOUBLE the hp of normal ogres, where's the balance in that?
2) Then just lower their mana rewards on-kill... maybe like warriors, so 100 mana.

Edit : Oh and copters are un-manageable for new players. I have a team of builders around 2.5k so they are fairly easy to take care of, but when they hover too high and deliver 33K missiles every 2 seconds when I have 90% Nightmare res...

Deadly Flying Nuclear Cargos.

Share this post


Link to post
Share on other sites
Added Generic Res always +ve
Copters would become RIDICULOUSLY easy if you changed them the way you propose. That's not balance, that's trivializing. If the ogres are easier than normal ones, they become basicially just free bags of mana.

This is the one change thats not aimed at end-gamers. NM worked just fine before they were introduced, and the way they are now makes absolutely no sense at all (Dropped Ogres >> Spawned ogres). I don't intend on making them irrelevant

As to the Rollover fix, we shall see. I'll do a test on whether I can alter it, but from what I've seen so far it shouldn't be hard at all.

EDIT

Successful test. Rollovers are fixable

EDIT2

Will need an unmodded verification run, but NMHC UMF has generated no block values that will rollover (ie. > 178). The randomization of values is unchanged as my little addition to the code just puts a max on the generation range :)

Share this post


Link to post
Share on other sites
Good news that rollovers can be fixed :D I'd suggest releasing two versions: one that "fixes" what much of the community sees as a broken loot system, and one that adds the remaining changes to copters etc. I'd rather not have an easier experience, but I'd certainly like to waste less time on garbage loot.

If mob behavior is accessible at all, it would be cool if a fix to spider movement could be implemented such that they'll approach defenses if the player is dead (Misty south spawn,) or change targets or direction if they become stuck (every damn map).

Share this post


Link to post
Share on other sites
Confirmed NMHC UMF blocking values are prone to rolling (500+%). Fix is a fix :D

The two versions is also a great idea. Nowhere near that stage yet, but it's something to keep in mind.

Added
-Removal of low stat (all stats < ~30) items from NM loot generation at some point.

Share this post


Link to post
Share on other sites
Upgrades seem to be a problem for me. On King's Game NMHC campaign, I got two gambler's polearms. One with 12^, one with 23^. Both had 3 negative stats, and few high useful ones.

Share this post


Link to post
Share on other sites
[QUOTE]This is the one change thats not aimed at end-gamers. NM worked just fine before they were introduced, and the way they are now makes absolutely no sense at all (Dropped Ogres >> Spawned ogres). I don't intend on making them irrelevant[/QUOTE]The thing is, it DOES make them irrelevant. NM still works just fine. Take down the copters and the ogres become weaker. That's the counter.

Up until copters were introduced, ogres were basically still the only enemy that can really end the game. Copters were designed to be a threat. The only thing I would do to balance them at this point, because they've already had the hell nerfed out of them, is reduce their numbers. This is just my opinion, of course, but the fact is copters have a counter, and their intended purpose was to be a serious threat if not handled properly, just like all the enemies before it.

If you make them spawn weaker, then they'll have almost no HP if the copter is taken out, and you basically get 500 mana for virtually no effort (not counting the mana from the copter). In fact, this is probably the whole reason they were to be stronger and not weaker. if they have less HP than normal ogers, they're basically holding a sign around their neck that says "Kill me, free mana."

You're probably thinking that the sum total HP of the copter and copter ogre should be like an ogre- the problem is, Copters displaced some of the normal ogres, so if they ARE made equivalent, then it's like no new enemies were actually added at all.

Feel free to ignore me, but I really think you need to reassess. Your change trivializes copters to the point where you may as well just remove them entirely and add the regular ogres back in.

Share this post


Link to post
Share on other sites
Feel free to ignore me, but I really think you need to reassess. Your change trivializes copters to the point where you may as well just remove them entirely and add the regular ogres back in.

The priority for now is seeing what I can do about the loot (Rollovers, GoNegative Chance, and the low stat items mainly). The chopper comment was added from the perspective of the characters in my guide (Finding it nigh impossible to do anything without EV/summoner is quite the change from pre-copters).

I'm looking for ideas on things that frustrate at the moment, not putting a final change log up in the OP :) (shifted to possible changes anyway :p)

Share this post


Link to post
Share on other sites
I really didn't expect that the things that result in the rollover would be in uScript. If it turns out you can address it without breaking anything (famous last words) that will be impressive to say the least.

[QUOTE](Finding it nigh impossible to do anything without EV/summoner is quite the change from pre-copters).[/QUOTE]Nightmare is designed to require the use of the whole range of tools at your disposal. That's why it wasn't considered "done" til the whole shards pack was released. In some ways it is kind of lame that you need those tools in particular (However, Jester can potentially ease that a bit by freeing up DU if you can get the presents to cooperate), at the same time if they didn't feel powerful or bring anything really wanted to the table, very few people would get them, so from that perspective I can see why they were made so valuable.

Share this post


Link to post
Share on other sites
I really didn't expect that the things that result in the rollover would be in uScript. If it turns out you can address it without breaking anything (famous last words) that will be impressive to say the least.

Weapon rollovers are completely fixed. Some minor code rearrangement and adding max/min range to the stat generation was all. It's so simple that I almost doubt it can be buggy (almost...). It works as far as I can tell in some short tests.
- I didn't change the storage type if that's what you were thinking. That would have been a little more difficult :p

Just need to identify the correct variables for upgrades to seperate and i should have that working too (pretty much the same operation, just different names). However, I see no way to reliably test this, b/c:

A) It isn't as blindingly obvious as the weapon specific rolls when it happens as it gets rolled before ever being shown to the player instead of on pickup.
B) None of the maps added after misty are included in TC's at the moment (I'm guessing b/c it's extremely easy to bypass the money requirement). Boss Rush would be kinda useful for testing how effective these changes are...

EDIT

Upgrades should no longer roll (just run up now to check for breakages :p)
And it's broke...

Share this post


Link to post
Share on other sites
Found the problem lol. Bad variable call... Guess I have to do it the messy way for now

EDIT

derp, more like bad variable placement... ()

- Added overlord zoom increase
- Confirmed stopping upgrade rollover code works (randomiztion is unchanged). Rollovers no longer exist :D

Share this post


Link to post
Share on other sites
CrzyRndm -

DUDE (sorry for the shout...) :-P

I downloaded the DDDK weekend before the last with basically the intent to make a TC called fix_vanilla. Where I would make code fixes but not change anything else like balancing of mobs.

With that I sent an email to Dingle asking his permission to include his code suggestions that he has posted with the proviso that he would be given full credit. He agreed. The first thing I was going to fix was the roll over, because Dingle suggested a fclamp method back in April that also would work. I was next going to incorporate his go negative fix suggestion (though not a bug fix per se). Then tackle the resists bug. And a couple of other bugs that I don't recall offhand. Dingle did suggest making some sort of fun TC addition just to generate interest.

Anyway I was hoping this would make a base TC that others could use as a starting point. But I was also hoping that with enough play time in the TC by other players to make sure the fix_vanilla didn't break something else that it would be something that Trendy could possibly use as a patch for the ranked version. I know wishful thinking, but hey it would be constructive instead of just a rant (though that rant did reveal the code issue).

So while I had some install issues and some problems starting the DDDK, plus now that I'm in it I have a bit of learning to do - it would appear you beat me to the punch. Cool. (oh and I had an aborted Talay run as you are well aware).

In fact last time I coded anything seriously there was really only a text editor needed. That is progress for you.

So I would suggest having 2 TCs. One for fixes and one for balancing/extras.

And I would like to volunteer to be a tester for you since I believe firmly in what you are doing. Or let me know if I can help in any way.

BTW; my fun ideas for a TC were gear crafting and... wait for it... tower setup save/recall for survival.

tl;dr: sweet and can I help?

Share this post


Link to post
Share on other sites
CrzyRndm -
DUDE (sorry for the shout...) :-P

I downloaded the DDDK weekend before the last with basically the intent to make a TC called fix_vanilla

I think it was your post that gave me the idea in the first place :p Plus I really needed the coding practice
[QUOTE]sweet and can I help?[/QUOTE]
No problem. Need more of those bugs/semi-bugs at the moment

EDIT

Added
- Change colour of fire projectiles/animation so it isn't blinding white.
- Remove blindingly white ball from center of auras
- Make MMT projectile more blue than white
>>>Unsure how/if possible, but would make things a little easier on the eyes with less white around

- Chumm's suggestion on spider "no target" pathing AI

Share this post


Link to post
Share on other sites
grey-1's in, so I guess we're sort-of merging our projects here. I'll add some pointers for some things you're wanting to do.


Intended Changes

- Removal of low stat (all stats < ~30) items from NM loot generation at some arbitary point in wave/quality/.
- Tavern Shop rebuffed. Myth armour should atleast be normal after a NM game. - Shop quality values found. Some experimentation needed

For both of these, you need to look in the DunDefHeroManager.uc class; the function GetCurrentMissionEquipmentRandomizerMultiplier controls the most important value of both.

This section controls the chance of a low multiplier being used for floor loot:
if(FRand() < DunDefMapInfo(class'WorldInfo'.static.GetWorldInfo().GetMapInfo()).EquipmentRandomizerMultiplierPercentageToUse)
return ddGRI.DifficultyEquipmentRandomizerAbsoluteMultiplier[ddGRI.CurrentGameDifficulty]*(0.9 + 0.1*Flerp(FMin(waveNumber/scalingWave,1),1,ddGRI.DifficultyEquipmentRandomizerNegativeWaveWeighting[ddGRI.CurrentGameDifficulty]));


This section controls the chance of a low multiplier being used for shop loot (yes, it's repeated twice):
if(bIsForShop && FRand() < DunDefMapInfo(class'WorldInfo'.static.GetWorldInfo().GetMapInfo()).EquipmentRandomizerMultiplierPercentageToUse)
val*=0.5;

if(bIsForShop && FRand() < DunDefMapInfo(class'WorldInfo'.static.GetWorldInfo().GetMapInfo()).EquipmentRandomizerMultiplierPercentageToUse)
val*=0.5;


Removing those sections entirely would mean the full multiplier is always used in those cases. The other option is rebalancing the formulae or variables used.


Possible Changes

- Reward weapon size biased favourably (squire/monk = larger, hunt/app = smaller). This depends entirely on the effects of the GoNegative function. B/c rewards have a much higher than normal quality it's possible that this will be unnecessary.




Size is generated in the AddRandomizeValues function of HeroEquipment.uc, at the following code:
curRandomValue = GenerateRandomizerValue(equipmentQuality,WeaponDrawScaleMultiplierRandomizer);
WeaponDrawScaleMultiplier = FMax((WeaponDrawScaleMultiplier + WeaponDrawScaleMultiplierRandomizer.MaxRandomValue * WeaponDrawScaleRandomizerExtraMultiplier * curRandomValue) * WeaponDrawScaleGlobalMultiplier,MinWeaponScale);

I'd suggest something like this to change it:
if((EquipmentType == EQT_WEAPON && (WeaponType == EWT_WEAPON_INITIATE || WeaponType == EWT_WEAPON_APPRENTICE)
equipmentQuality = 2.0 - equipmentQuality;
curRandomValue = GenerateRandomizerValue(equipmentQuality,WeaponDrawScaleMultiplierRandomizer);
WeaponDrawScaleMultiplier = FMax((WeaponDrawScaleMultiplier + WeaponDrawScaleMultiplierRandomizer.MaxRandomValue * WeaponDrawScaleRandomizerExtraMultiplier * curRandomValue) * WeaponDrawScaleGlobalMultiplier,MinWeaponScale);
if((EquipmentType == EQT_WEAPON && (WeaponType == EWT_WEAPON_INITIATE || WeaponType == EWT_WEAPON_APPRENTICE)
equipmentQuality = 2.0 - equipmentQuality;

What's going on there is this: the weapon size is weighted purely on equipment quality. If the weapon type is EWT_WEAPON_INITIATE (Huntress. Don't ask.) or EWT_WEAPON_APPRENTICE, it flips the quality from one side of 1.0 to the other, so higher qualities get reduced and lower qualities get increased. This means that higher initial qualities create smaller weapons, and lower initial qualities create larger weapons.

The code handling the flip is done twice because the quality is used further down the line, though only in a few rare cases. Better to have the original quality there.




- Doing something about the armour/weapon ratio.

This might be harder; armor already pretty much has the lowest rarity value in the scale, so it's technically the most common loot type. The perceived rarity is more due to 1) weapons have higher qualities on average, pushing armor out; and 2) there are 20 types of armor, and at any time a player is only looking for 4 of them.

Modifying the RNG by reducing the negative chances should improve the average quality of armor a lot more than it does the average quality of weapons, however. Less armor will be considered lower value and deleted, so it somewhat raises the perceived drop rate of armor.


If you can think of anything else you want, I pretty much know what is and isn't possible without a lot of work.

Share this post


Link to post
Share on other sites
The thing is, it DOES make them irrelevant. NM still works just fine. Take down the copters and the ogres become weaker. That's the counter.

Up until copters were introduced, ogres were basically still the only enemy that can really end the game. Copters were designed to be a threat. The only thing I would do to balance them at this point, because they've already had the hell nerfed out of them, is reduce their numbers. This is just my opinion, of course, but the fact is copters have a counter, and their intended purpose was to be a serious threat if not handled properly, just like all the enemies before it.


Problem, is that you think only about people that CAN handle those copters. I, am one of them.

but are you thinking even one second about the lower players trying to get to Nightmare? Poofie, a copter that will pwn your build and take your happiness away...

How can they get some gear to survive Nightmare if you throw ultimate powerfulness on them? (especially when dat RNG is broken)

AND the most important thing : how to survive maps that didn't have a single change on them, same mana, same DU's, but the most deadly enemies were added on top of all of the others?

Strategically speaking, Air-carried enemies should have less defense, way less defense than others as long as they are flying? why do you think that in RTS, the troops carried via a Chinook or some other thing have way less HP than when they are on ground?

Think about the lower players trying to get to Nightmare without any help. Low tower stats, even lower DPS... impossible.

Share this post


Link to post
Share on other sites
I actually like the copters and the counter... but I do understand the pain for players breaking into nightmare.

I don't think it would take much to keep them a challenge and yet make them easier to deal with for low to mid stat nm players. First thing is to keep them from flying too high. I know this is supposed to have been fixed... Next thing would be to look at the flare rate of fire. Getting that to scale (or better scale if it already does) with the wave would mean that on the lower waves the defenses would be more effective at shooting down the ogre laden copters and thus copter-ogres would be weaker. Anyway something as small as that change could make a huge difference in the earlier waves where most players with low to mid nm stats would expect to be playing. This scaling would also leave the later wave copters and copter-ogres either untouched (or even slightly buffed if needed). If the flare rate scaling isn't effective as a means, then copter health scaling would be the next thing I'd look at. I wouldn't touch the copter-ogres or the headcounts. IMO balancing at this point is a very delicate thing and requires time in testing so the nerf/buff/nerf cycle does not start.

Also does anyone know if I can just use a text editor to make code changes and then jump to DDDK to cook (compile) instead of hunting around inside the DDDK?

EDITED: Deleted the weapon size comment since Dingle already had it covered with code (which I didn't fully read earlier). Nicely coded.

Share this post


Link to post
Share on other sites

Dingle - with regards to the size /quality call; could it be changed so that toon type determined the sizing direction then original quality determined the size adjustment. For example squire/monk weapons get larger the higher the quality and hunt/app weapons get smaller the higher the quality? Something like a do case with an error catch.

Also does anyone know if I can just use a text editor to make code changes and then jump to DDDK to cook (compile) instead of hunting around inside the DDDK?


It's easier to go by weapon types. A given item knows what weapon type it is, and hence which classes can equip it, but the stat randomizer doesn't know what class you're using at the time.

And yes, you can use text editors to make changes. Create a total conversion, find the new folder for it, and edit the scripts directly, and the changes get compiled next time you load the DDDK with that TC. Heck, I don't recall DDDK actually having a code editor built in - you pretty much have to use a text editor. There aren't any I know of which are designed for unreal script, although some text editors have plug-ins available which are capable of minor things like syntax checking for unreal script.

Share this post


Link to post
Share on other sites
When you right click on a script class in the Actor browser and choose View Source Code, it opens the script in Notepad. So no, it doesn't have a built in editor (I was pretty sure UE2 did, so I'm not sure why that was cut)

Share this post


Link to post
Share on other sites
Dingle - I edited my earlier post because I just now read your code. NVM my mistake, since your code handles it beautifully.

With regards to the editing; thank you to both of you. I prefer metapad; so it is nice to know that I can just use that.

Share this post


Link to post
Share on other sites
This might be harder; armor already pretty much has the lowest rarity value in the scale, so it's technically the most common loot type.

What about increasing the multiplier on stats in the quality calculation for armour only (and increasing the corresponding thresholds obviously). It has by far the largest effect on final quality of armour and wouldn't require any major code changes (just a *little* balancing so it doesn't go too far the other way). It's also almost unaffected by negatives b/c everything is directly scaled
EDIT
No luck with this. Doubling the effect of stats on quality (and hence value) got 15 armour at the end of W15 TTR compared to 12 from an unmodified version (ie. not a major change). It's possible that the speed my defenses chew through mobs is making almost everything get refreshed I suppose, so I'll try again with a raised item limit


Also, seeing as the goNegative adjustment is pretty much the one you suggested originally it wouldn't do anything until right at the end of survivals so that wouldn't work too well

PS

Thanks for the tip on the low stat items. Dropping it out of NM generation seems to work. Why the shop part isn't just *= 0.25 is just...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...