Negative score in MH2Gold

Discussions about Coding and Scripting
Post Reply
Aldebaran
Masterful
Posts: 672
Joined: Thu Jan 28, 2016 7:30 pm

Negative score in MH2Gold

Post by Aldebaran »

I recently played MH-RiseOfDead with MH2Gold. During the match and at the end of it I wondered why some people got so huge amount of negative score, several millions or was it even billions? I think the people have done nothing wrong, can it be that there is a bug in scoring system here? I am sure I have seen this on some other maps too.
I would like to fix it in the code but at this moment I don't know what can cause this...
User avatar
Feralidragon
Godlike
Posts: 5489
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Negative score in MH2Gold

Post by Feralidragon »

That's an integer overflow.
By the time the number of points reaches around 2 billion, it will come to a point where it overflows and switches the negative sign on, resulting in long negative numbers, which start then sum up to zero again.

I have seen this happening in a lot of MH servers for several years, generally in more spammy ones with a lot of monsters and such.
I also have seen this happening in other gametypes a few years ago, like Siege.

I don't know from where exactly in this specific case those huge scores are coming from, but all it takes is for "something" to award a player something like a billion points for that eventually happen.
It may be something in the map, or the gametype itself, or another mutator, mod or actor overall.

Even NW3 has a mutator which will award extra score points to players, and although it's moderately so, in maps with a lot of monsters and actions, it may also indeed result in those huge amounts of points (all it takes is for players to win a few hundred points for killing dozens of thousands of monsters to easily reach a billion).
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Negative score in MH2Gold

Post by sektor2111 »

It's a result of score hunting, which is/was way too stupid since forever. 95 points for killing a retarded pupae ? Why was that such a hard work which does need to be payed with 95$/points ? Any logic which I fail ?
Man, cap the dumb score based on damage - it's all I have to say and then those "awesome" score hunters will leave you alone to play MonsterHunt not ScoreHunt.

Okay, I go to work...
Aldebaran
Masterful
Posts: 672
Joined: Thu Jan 28, 2016 7:30 pm

Re: Negative score in MH2Gold

Post by Aldebaran »

Feralidragon, I think you are right. the score value I saw was about 2.1 billion.

So to prevent abnormal score values because of an integer overflow I would add this into the Timer() function of the monsterhunt base mutator:

Code: Select all

for (P = Level.PawnList; P != None; P = P.NextPawn)
{
    if (P.IsA('Bot') || P.IsA('TournamentPlayer'))
    {
        if ( (P.PlayerReplicationInfo.Score > 2000000000) || (P.PlayerReplicationInfo.Score < -2000000000) )
            P.PlayerReplicationInfo.Score = 0;
    }
}
The player has to start new then with zero score, I think this is better as showing "fake" values.
Also a player won't ever reach 2 billion points with fighting alone, so the score should never be above.

Any comments to this?
User avatar
Feralidragon
Godlike
Posts: 5489
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: Negative score in MH2Gold

Post by Feralidragon »

It overflows from 2147483647 to -2147483648 to be exact. :)

As I quickly mentioned before, in NW3 servers at least, the final version has something else enabled by default which awards points to players.
Essentially players are awarded more points if they kill in a certain way (headshots, blind shots, kills from high on the air, high distance kills, etc), so part of the reason may be this one, although even then, with the usual number of monsters in a map, the points I give are reasonable enough to never overflow (at least that's what's supposed to happen), but it may still be possible in some maps under certain conditions.

Weak monsters like Pupaes like sektor2111 mentioned, generally award no points unless you headshot them, or blow them up while you don't have direct line of sight to them, and a headshot awards 20 points.

So, if this is the case, you can simply disable this award system, even because it was mostly meant for PvP and not PvE gametypes.
Just look for enableSkillKills in the ini, and disable it, or you can tweak the number of points given for each thing (which checking it again, I think I went a bit overboard with those numbers).

From there, for anything else which may be causing that, I would suggest to look it up with sektor2111, since he will know better the current state of things in the MH side how these maps are set up to cause such an issue.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Negative score in MH2Gold

Post by sektor2111 »

As a question ?
Do you recall some map where score by damage is doing more than a trash ? I'm asking because I have a recall from my little/tiny brain where a button was available for pushing on purpose to crush a titan (or 2). This dumb zero skilled kill would give to player some millions just for simply triggering a button. Can you believe this retarded setup ? And then if you tell to these mappers that they are idiots, you might even get a ban because you are whining at them but almost NONE of those jesters did not play intensive MH and neither hosting a server.
As result, when I got tired of bullshitting I turned this score by damage into another formula which can be... adjusted by creative and skilled programmers. YOU DON'T need any gazillion of score for a nothing. Why would you give maximum of score available in 32 bit representation tested in timer? To mock with a fake skill rewarded just because player was playing ? Good, give them score when they enter to the server starting with 2,000,000; should be suffice to have players and "asking mercy" this way (please play in my server, you will be rewarded). Look what I did as long as in my mod MonsterHunt is the purpose not ScoreHunt.

Code: Select all

//					InstigatedBy.PlayerReplicationInfo.Score += ActualDamage; //End of bullshit
					InstigatedBy.PlayerReplicationInfo.Score += Clamp(ActualDamage,1,ActualDamage/10);
But I think future code will have another definition

Code: Select all

					InstigatedBy.PlayerReplicationInfo.Score += Clamp(ActualDamage/10,1,MaxScoreAllowed);
Where MaxScoreAllowed can be something... random, less scoring in week-end and more in the rest of days just for encouraging game-play when servers are not than populated for spreading the game-play.
You can even stop scoring at 50,000 for everyone giving them reasons to hunt monsters and making all hunter to be aligned rather than rewarding a lucky one - this is not lottery after all, it's a shooter game as I recall so far where scoring in default games was based mainly on skill. Also you can define another end of game if score limit of 100,000 has been reached using a decent scoring system - it's doable preventing a retarded spam map to damage server for hours.
This should be somehow fair enough for MonsterHunt - or maybe you have another better idea. For the rest of ON-LINE habits (pedophiles, various sex recruiters, cadavers fuckers, various alien types and other people with serious mental issues), can be motivated at using another applications to mock people on Internet rather than MH servers because they are here for that score which I'm not sure what is for this dumbness after all. Last time even at DU was some entertaining post toward whatever ScoreHunter pretending that he play MonsterHunt and insulting players joined if are not voting his suggested maps, maps where player can gain an easy amount of score with no efforts - and this is all about some "new blood" aka new comers to UT and to MonsterHunt. Sometimes you can setup game on automatic fire, aim that crap and start reading a magazine or a book for cookers (or a phone-book - more characters without action) while scoring it's increasing by simply doing nothing - and you can wake up when you will not hear that "HitSound" in case that you felt asleep during your lecture. I tested this "high-tech" and I have not only a clue how to gain score which... it's useless for me from all points of view. The only thing to take in account is that you can do 2 things in the same time, while you get this score you can manage to do other tasks, in other machine you can play even a DM until your MH score grows to the top (of stupidity) or you can clean the room, cook something, make/take a shower and other various home activities. If you are disturbed by that bing bing bing HitSound, turn off speakers or put volume lower, that simple.
MrLoathsome
Inhuman
Posts: 958
Joined: Wed Mar 31, 2010 9:02 pm
Personal rank: I am quite rank.
Location: MrLoathsome fell out of the world!

Re: Negative score in MH2Gold

Post by MrLoathsome »

I like how Waff has handled this issue with EXU. (At least EXUCoopgame)

You get large score penalties for just being killed. Even larger ones for suicides.

If you keep your score in positive numbers, you are doing good.
blarg
User avatar
Chamberly
Godlike
Posts: 1963
Joined: Sat Sep 17, 2011 4:32 pm
Personal rank: Dame. Vandora
Location: TN, USA
Contact:

Re: Negative score in MH2Gold

Post by Chamberly »

I was wondering about that too. I was playing one of the Mario 2d map and shooting at either nali or the cow give me the -23789374238973289 score (Unimatrix01 server cuz I seen it happen there many times!), on some other servers it doesn't.
Image
Image
Image Edit: Why does my sig not work anymore?
Aldebaran
Masterful
Posts: 672
Joined: Thu Jan 28, 2016 7:30 pm

Re: Negative score in MH2Gold

Post by Aldebaran »

sektor2111 wrote:Where MaxScoreAllowed can be something...
Do you mean a score of 2 billion is reached with the ActualDamage variable? For this you have to make such a huge damage but you need a weapon for this to do so or? Also this MaxDamage variable exist already in MH2Gold and I have set it really low. I would think the score value was manipulated directly by the map to reach over a billion.
So another suggestion for a solution would be to record the actual score of each player every timer() second and if the difference is to big between two timer() seconds (perhaps over 50 000 because you can't do damage in one timer() second that much) the score value is reset to the value one timer() second before (or you cap the additional score to that 50 000). You only have to record two score values lying in series per player. Someone knows how to do this?
User avatar
Barbie
Godlike
Posts: 2792
Joined: Fri Sep 25, 2015 9:01 pm
Location: moved without proper hashing

Re: Negative score in MH2Gold

Post by Barbie »

Aldebaran wrote:you have to make such a huge damage but you need a weapon for this to do so or?
I remember maps(1) where you have to activate a mover that kills a monster instantly regardless how many health it has. Because the normal Trigger-Mover-chain keeps the instigator, he will be responsible for that damage.
Aldebaran wrote:I would think the score value was manipulated directly by the map to reach over a billion.
I had a look at that map and did not find anything that manipulates the score.
I experienced the negative score with the map MH-AS-Rook at Mars' server (but never on mine yet) and had a look at that map and the depending packages, too - without any finding.
Do you use the native MH Gold or have you changed the code? If so, is it possible to see the changed code?
Aldebaran wrote:So another suggestion for a solution would be to record the actual score of each player
Better repair the problem itself than correcting the issues.

<EDIT>
1) One of this maps is MH-GodzSaltified-5k: it has a monster "Cybergenetic0" with a health of 9999999. If you press the big red button, some movers will kill that monster.
</EDIT>
"Multiple exclamation marks," he went on, shaking his head, "are a sure sign of a diseased mind." --Terry Pratchett
Aldebaran
Masterful
Posts: 672
Joined: Thu Jan 28, 2016 7:30 pm

Re: Negative score in MH2Gold

Post by Aldebaran »

Barbie wrote:Do you use the native MH Gold or have you changed the code?
It's a custom code here but I never changed any score/damage related things. Other people like Chamberly has also seen same score issue with standard MH2Gold so I am very sure my changes didn't cause it.
Source is available here: http://ut-files.com/index.php?dir=GameT ... 20Code.zip

The score issue happens here very seldom, so for me it's not a big thing. I can live with it. But I will have an eye on it in the future to find out what can cause this.
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Negative score in MH2Gold

Post by sektor2111 »

Aldebaran wrote:Do you mean a score of 2 billion is reached with the ActualDamage variable? For this you have to make such a huge damage but you need a weapon for this to do so or? Also this MaxDamage variable exist already in MH2Gold and I have set it really low. I would think the score value was manipulated directly by the map to reach over a billion.
I'm sorry if you don't get the point. There is not about maximum damage is about maximum score per damage - any damage even 10 millions of damage. You can do let's say 100,000,000 ActualDamage using whatever gun for zero skilled hunters but, even if you do such damage, score won't pass let's say 10 points. More simple, if you hit monster you get something but not a treasure because you have been clicking mouse once. It will compute something if damage has a decent value divided with 10, else it will cap at some value doesn't matter how hard did you hit the monster. Look at Wiki or do some checks about this function which object has.
I simply don't get this orientation of people based on a single direction,.. like there aren't other solutions, it's not only a damage problem, topic is about a score problem and this is what I was showing here a score not a damage, but of course will take in account some part of damage taken.

On another side (not my way of doing) I'm able to setup a few decorations able to reward moron player shooting them with some score. Maybe if the stupid has no skill for killing flies, he can earn score for destroying some box and then hang on to see score, in order to not leave server ashamed by his negative score - sometimes I'm playing Levels with a lot of deaths and I'm ending them having much under 0 score. As result I did not see computer exploding because of that, so I really don't give a damn on score.

Part two - I'm also able to setup a sort of relic mutator entirely written from 0 byte spawning such rewards from time to time - even if map has no paths - yeah, I have idea about such work and how to get proper locations for such things. The main and important question is: WHY I WOULD DO THAT ? For baboons playing MH ? Nah, I'm busy to fix some stuff for maps multiple times messed up using my internal "FindRandomDest" thingy, I mean I pick one of those versions and I slap crap outta level. If you have some map with an actor triggering an over-score you can do a sort of private "NavAdder" like stuff and mitigate the evil thing. Probably 80% of tweaks are doable except a bad geometry, and sometimes (rare cases) you can mitigate those problems too. Barbie was right here with fixing maps in particular, it's a good way, by developing a general fix you might mess up those incompatible ones with the fix. Monster has 1800 health but mover does 10^200 damage reduce mover damage or REMOVE mover damage or... he, he... remove that Mover :lol2: . I can't wait to patch such a map in run-time.
User avatar
EvilGrins
Godlike
Posts: 9668
Joined: Thu Jun 30, 2011 8:12 pm
Personal rank: God of Fudge
Location: Palo Alto, CA
Contact:

Re: Negative score in MH2Gold

Post by EvilGrins »

Probably answered above, but... typically most players lose points when monsters kill them.

You see it a lot on maps where monsters are supremely powerful so they kill players easily.
http://unreal-games.livejournal.com/
Image
medor wrote:Replace Skaarj with EvilGrins :mrgreen:
Smilies · viewtopic.php?f=8&t=13758
User avatar
sektor2111
Godlike
Posts: 6403
Joined: Sun May 09, 2010 6:15 pm
Location: On the roof.

Re: Negative score in MH2Gold

Post by sektor2111 »

EvilGrins wrote:Probably answered above, but... typically most players lose points when monsters kill them.
Nope it's not that, Chris already mentioned what's the problem somewhere but he was ignored as usual, like in the most of cases when someone is posting an information which has to be taken in serious, but later will come a storm with debates. THIS IS 32 BIT LIMIT problem and insanity for scoring and for a big damage with nothing funny, but it comes also from various map factors triggering a huge damage and then... a huge score accordingly.
First step in fixing this is removing "score by damage" from your super duper MH mods or just modify code with a caper code - SAMPLE POSTED ABOVE. Response is not iterating in timers, response is the thing doing bad stuff. All the time in UT people were fixing disease later rather than preventing it.

Back to evil maps, if you have such an over-scoring map with whatever stuff, just load it in Editor, export packages. Look for non-stock recent files and... GREP them for string... "PlayerReplicationInfo.Score" or shortly, map itself. If it's about Mover kills perhaps there is also a solution - always we do have plenty of solutions.
- When SetPawnDifficulty is called, record final value of monster health into a MaxHealthDetected internal non-configurable value if a bigger health is discovered than currently recorded - like in finding best player strategy. Later, at Iterating for movers - (you need to be sure that mover fixing comes later), look for any mover set with evil damage and cap that damage to MaxHealthDetected+10. In my latest mods it's possible to do that because I'm fixing movers later, I dropped them out of PostBeginPlay as long as I had there way too many iterations crashing high loaded maps.
- Use a decent MaxMonsterHealth - No one takes this in account. Why ? Because the same MaxMonsterHealth+10 can cap Mover at value EncroachDamage creating a relation here.

Code: Select all

if (M.EncroachDamage > (MaxMonsterHealth+10))
	M.EncroachDamage = MaxMonsterHealth+10; //The end of dumbness
Have you find some "package" with scoring stuff ? Well, here are multiple solutions, the fix it's up on you:
- use a fixed map - or don't use such a map;
- attack actor - move it away from damage;
- change value from damaging Mover;
- remove Mover;
- if other actor does this, look for a replacement;
- build another package conformed with original but out of crap - *sensitive depending on package.
Aldebaran
Masterful
Posts: 672
Joined: Thu Jan 28, 2016 7:30 pm

Re: Negative score in MH2Gold

Post by Aldebaran »

Thank you for your suggestions, sektor2111. They sounds good...
Post Reply