My chat with OLStats author, Overload

Everything about Death Ball.

Moderators: Jay2k1, DavidM, The_One

User avatar
Imaginos
Posts: 885
Joined: 17-03-2003 18:06
Contact:

My chat with OLStats author, Overload

Post by Imaginos »

Some quick background..

Deathball is a sports mod. It needs stats. Good stats. Now. I've been trying to do some of the legwork in trying to integrate the stats that Deathball uses into the existing UT2004 gamestats engine to make recording/reporting easy. Here's a chatlog from one of my efforts.
Bill/Imaginos says:
Howdy Overlord, can you spare a few mins for some questions?

overload@planetunreal.com says:
Sure

Bill/Imaginos says:
I've decompiled the deathball.u files to backtrack the default stats and look for points to insert deathball-relevant game events in. from what I have been reading on wiki, the master server won't know what to do with our altered stats

overload@planetunreal.com says:
That's correct
But you report them anyway

Bill/Imaginos says:
this is ok, since our goal is to parse and report them on our own via utstats2003.

overload@planetunreal.com says:
Pretty much all the stats you'd output would be from the deathball's game class, and you can probably do everything with GameEvents and PlayerEvents

Bill/Imaginos says:
that's what I'm led to believe.. I am having a hard time convincing the developer to give it attention right now, so i'm trying to do the legwork to make it easy to implement.
would the kill/death output be easy to alter? we call them tackles in deathball.. there's good tackles (enemy in your half with the ball) and bad tackles. (ball on enemy half). we would need to distinguish them from generic kills.
wiki suggests that the killevent is called w/o regard to the gameclass

overload@planetunreal.com says:
Hmmm
Let me see

Bill/Imaginos says:
also, I'm nowhere close to being a uscript programmer. would the insertion of so many custom game/playerevents introduce too much overhead?

overload@planetunreal.com says:
No, you would never notice any performance hit, if that's what you're asking OLStats does an insane number of crazy calulations to track accuracy, and it doesn't slow down
Killevent is called from the gameclass' Killed() function, so you'd have to override that and make it not send a killevent

Bill/Imaginos says:
good. that's a checkmark to the plus category, performance wise. and the killevent would have to be replaced with a tackleevent. I thought so. wasn't sure if it was legal though.

overload@planetunreal.com says:
Then you would have to call KillEvent() yourself when a player is "tackled"
The trick is outputting something different so UTStatsDB can track it. It will require modification on UTStatsDB's end

Bill/Imaginos says:
I had no doubt about that. custom variables and likely another table.

overload@planetunreal.com says:
Okay, on second thought.
PRobably the best way to go about doing this would be to leave killevent alone
Every player gets points when they make a tackle, right?

Bill/Imaginos says:
yes. +1 or -1

overload@planetunreal.com says:
Then that means that a ScoreEvent() must be getting called for each of those. What I would do is modify that scoreevent
And for the third parameter ("Desc") - you put in something that tells it if it's a friendly side tackle or whatever
so you'd call ScoreEvent(Killer, 1, "friendly_side_tackle")
You can use whatever you want for hte Desc, as long as it's descriptive enough and won't conflict with some other imaginary mod in the future

Bill/Imaginos says:
each player accumulates an offensive and defensive score which increases or decreases based on how well they do or don't do..

overload@planetunreal.com says:
That part would be a little tricky
Thta's a whole new (couple) numbers to keep track of

Bill/Imaginos says:
exactly. those scores may have to be combined

overload@planetunreal.com says:
Is it easy enough to recalculate on UTStatsDB's end?

Bill/Imaginos says:
haven't gotten that far with it yet.

overload@planetunreal.com says:
Meaning, is it a simply calculation? Do you always get one offense point for tackling in a certain way?

Bill/Imaginos says:
good tackles = 1, bad = -1
saves = x, interception = x, bad pass = -x

overload@planetunreal.com says:
You may be able to just do those custom ScoreEvent() calls, and then there would be enough data for UTStatsDB to calculate the offense and defense score of each player

Bill/Imaginos says:
along with numeric stats, that would be a nice performance average to rank player effectiveness

overload@planetunreal.com says:
The bottom line is that it's always best to do as much as possible without using custom events. 'Swhy it's good to use the ScoreEvent with your own descriptions - and if you need to report something special, use GameEvent() or PlayerEvent() (depending on how much data you need to report)

Bill/Imaginos says:
difficult to say what would be best to report completed passes, playerevent or gameevent, but if it is tied to a point award(or decrease) using scorevent does sound like it makes more sense.

Bill/Imaginos says:
I'd prefer not to force utstatsdb to keep track of ball possession.. not when we can do it via playerscorevent

overload@planetunreal.com says:
Yeah. If the player's score changes, use scoreevent. The way to decide if you need to use playerevent or gameevent is simply how much data you need to report. Both of the events take a player as a param, but GameEvent() takes two params, one "GEvent" which is the name of the event, and one "Desc" which is further detal on the event (a lot of times a number). SpecialEvent only takes one, the name of the event.
Keeping track of who has the ball should be tracked with GameEvents
Every time the ball is picked up or leaves someone's hands it should be reported. Bombing Run and CTF already do that

Bill/Imaginos says:
taking possession credits the player with a ball touch, but no score. and the bomb_throw event I think is the one I was looking at in BR..
bombing run also tracks the three most recent people to touch the ball? two assists + the scorer?

Bill/Imaginos says:
I do appreciate your time in helping me out. I'm trying to do as much homework as I can on this too. I have the unrealwiki and uncodex-ut2004 to use as references already. do you recommend any others that would be better suited for the gamestats development?

overload@planetunreal.com says:
The wiki's pretty much all I use, and not very often. I figured it all out through trial and error
Bombing run does track assists
Actually it's tracked by the ball
The ball remembers everyone who touched it on the way

Bill/Imaginos says:
nice. that makes it easy to award assist points after a goal.

overload@planetunreal.com says:
And gives each assisting player 20 divided by the number of assists, with a minumim of one point and a max of 5

Bill/Imaginos says:
should save the trouble of having to declare all those events too, although deathball only awards the two last assisting players.
Once a functioning stats system is in place, I think it will really attract people to deathball now that it has more credibility as a sport mod.

overload@planetunreal.com says:
Yeah'

Bill/Imaginos says:
I'll start digging into the code and trying to work out the insertion points to share with the dev team. I'm sure they may have an easier time buying into this now that we've determined it shouldn't be hard to do at all.
the sooner we can get a good deathball logged output, the sooner Panthera can decide if he can/will add the custom work to track it.
Last edited by Imaginos on 26-09-2004 02:28, edited 1 time in total.
User avatar
Sixty
Posts: 1086
Joined: 13-07-2003 21:42

Post by Sixty »

Nice, although I don't understand half of it.

Keep up the good work.
User avatar
Twigstir
Posts: 756
Joined: 05-04-2003 21:19
Contact:

Post by Twigstir »

Isn't a tackel when the ball carrier gets killed - which is always good.

Isn't a kill when you kill a player in the pbox - which is somtimes bad, but very hard to stat. Too much depends.

Anyhow, Stats would be great. Nice to see someone working on them.
User avatar
speedy
Posts: 2899
Joined: 11-03-2003 19:25
Contact:

Post by speedy »

i'm not reading all of that. needs spaces between the lines said. :p
User avatar
Imaginos
Posts: 885
Joined: 17-03-2003 18:06
Contact:

Post by Imaginos »

Right about now, some comment from the Deathball team might be timely.

We know there's player scoring with attacker/defender points; BTW, is there a list of the breakdown for that scoring? It would be great to have for a reference. Anyway, based on it, I propose doing a ScoreEvent(who,points,event_desc) anytime there's a points award or subtraction. Seems logical since anything worth giving points to is somthing statistically relevant.. This will let the ut2004 stats track things like interceptions, turnovers via bad passes or volleys, etc. as well as the player's individual points. Once we have that, we can see career stats as well as be able to average the player's offensive/defensive production.

Also, the attacker/defender points.. I understand they need to be seperate to make the best defender/attacker list. Would it be better to combine them in the normal player score as output to stats, or keep them distinct to show production going both ways on the pitch?
Last edited by Imaginos on 26-09-2004 02:44, edited 1 time in total.
User avatar
DavidM
Posts: 6795
Joined: 08-03-2003 20:35
Contact:

Post by DavidM »

man, robert is working on the stats NOW :), if you like i can copy paste the whole point + award thing
next post (+1)
User avatar
DavidM
Posts: 6795
Joined: 08-03-2003 20:35
Contact:

Post by DavidM »

This is basically what Robert is working with, it contains 99% of all info.
[edit] stupid board eats the tabs.
The main points are "-"
the subpoints which should be tabbed are "*"
and the next suppoints are "#"
Deathball award system: 06:04 10.09.2004 by DavidM
***********************
show the following in the hud, middle left, x,y,z,a are the values
---
defense: x
attack: y
keeper: z
passing: a
---
When you get a point play "pointsup" sound, when you lose points play "pointsdown" sound.
The according number should turn green/red in this moment. Normal color should be white (!?)
And the number should "glow" or something for a moment. Since there is no glow effect we need to highlight in a different way.
I think the color change for a moment isn't enough. But we'll see. A size change could be done...other ideas?

--------------
F3 award box has to look like this:

Defender award: 1.name (x) 2.name (x) 3.name (x)
Attacker award: 1.name (y) 2.name (y) 3.name (y)
Keeper award: 1.name (z) 2.name (z) 3.name (z)
pass award: 1.name (a) 2.name (a) 3.name (a)
--------------
(another note to this, they have to be frozen. when an awarded player leaves he has to stay in there tho.)


now a list of all awards and how the points are given
-defender award
-attacker award
-keeper award
-passing award


when 'near goal' is mentioned, it means 2000 units away from goal (value might be changed later)
missed chances = post hit, keeper saves, ball carrier gets killed in enemy pbox

defender award:
--------------
-defender killing an enemy player who just released the ball near defender's goal:
*ball goes to other enemy player after the pass
#if that player scores or misses: -1 points
#if nothing special happens: 2 points to defender
*if it goes directly in goal: -2 points for def
*if it ends up as a direct missed chance (keeper saves, post hit): -2 points
*if it goes to other team (defender team) give 2 points to defender

-defender kills enemy ballcarrier near own goal: 2 points

-defender HURTS enemy ballcarrier near own goal:
*if hurt player keeps ball: 1 point to def
*if hurt player is doing a shaken shot due to the tackling (overload): 3 points to def
*if hurt player gets off a proper shot (not overload)
#if goal: -3 for def
#if missed: -2 for def
#if pass to other attacker: -1 for def
#anything else: 0

(make sure that when a shaken shot turns out as assist, goal, missed or so, that the defender gets not blamed for it. defender gets points for the successfull tackling, even if its a goal. afterall, a shaken assist is pure luck!)

-defender kills enemy player without ball in own pbox
*if attacker team has ball: 3 points
*if defender team got the ball withing 2 seconds ago: 0 points
*if defender team has ball but attacker team gets ball within the next 5 seconds: 3 points
*if defender team has ball, attacker is 250 close to defender team's ballcarrier: 1 point

-defender intercepts enemy ball ("altfire bounce" counts as intercept too)
*near own goal: 3 points
*somewhere else on pitch: 1 point

-defender kicks enemy attacker away, who was about to get a locked pass
*enemy attacker doesnt get it: 2 points
// (*enemy attacker doesnt get it and defender catches ball: 4 points) <- i figured out its bullshit, because you get points for "interception" already.

-defender has an attacker ball deflect off him near own goal: 2 point

-defender kicked away by attacker
*attacker scores within 4 secs after: -5 points
*attacker misses within 4 secs after: -3 points


attacker award:
--------------
-attacker scores goal: 9 points
-attacker misses with a shot: -4
-attacker misses with a volley or "altfire bounce": -3
-attacker misses by being killed with ball in enemy pbox: -3
-attacker misses (no matter how) from 3500+ units away: -1
-attacker A passes to attacker B, attacker B misses: 4 points for attacker A
-attacker A passes to attacker B, attacker B scores: 9 points for attacker A (so 9 points for last assist)
-4 points for 2nd last assist (that would be 4 points for player C in this case: C pass to B, B pass to A, A scores); If C=A don't give points
-attacker is being shaken due to well timed tackling by defender NEAR ENEMY GOAL: -2 points for attacker
-attacker creates a bad pass near enemy goal: -3 points
-attacker A boosts attacker B, attacker B scores within the next 5 seconds: 4 points
-attacker A boosts attacker B, attacker B is last assist for a goal that's being scored in the next 7 seconds: 4 points

keeper award:
--------------
-keeper kills enemy player without ball in own pbox
*if attacker team has ball: 3 points
*if keeper team got the ball withing 2 seconds ago: 0 points
*if keeper team has ball but attacker team gets ball within the next 5 seconds: 3 points
*if keeper team has ball, attacker is 250 close to defender team's ballcarrier: 1 point
-keeper saves ball
*ball has less than 60km/h: 1 point
*ball 60km/h and above and shot from 23 to 35 meters: 3 points
*ball 60km/h and above and shot from farer than 35 meters away: 1 point
*ball shot from less than 12 meters away from goal: 7 points (even if speed below 60km/h; so dissable the 1st point if distance that low)
*ball shot from 23 to 12 meters: 5 points (only if speed above 60km/h)

-keeper kills player with ball in own box
-intercepts ball (keeper outside box; if he was keeper 5 secs before): 3 points
-keeper has last assist: 5 points [5 for keeper and 9 for attacker]
-keeper has 2nd last assist: 3 points
-keeper passes to enemy player -5 points

pass award:
--------------
as usual
you need 3 good passes to compensate 1 bad pass
so
+1 for good pass
-3 for bad pass
+5 if pass was last assist
+3 if pass was 2nd last assist


Additional Trails:
--------------
the f3 box shows the top 3 of each category. the first should have a trail at his feet.
These trails have 2 colors each, its fading from A to B, so I'll give 2 RGB values.

Best Defender should have a team color trail
Red=255,0,0 to 255,125,125
Blue=0,64,255 to 0,255,255

Best Attacker a yellow trail
255,155,0 to 255,255,0

Best Passer green
21,170,0 to 17,255,17

Keeper can get a purple trail
126,0,202 to 214,17,255
Last edited by DavidM on 26-09-2004 04:00, edited 1 time in total.
User avatar
Twigstir
Posts: 756
Joined: 05-04-2003 21:19
Contact:

Post by Twigstir »

Is Robert just working on the awards or the stats also? In connection with stat tracking, I'd like to see defects, types of goals, post hits, % of good passes, team/enemy-score/possesion %, and player % of time in either half added to the stats.

I thing stat tracking would be a good bounus for DB.

I made a list in this thread: http://forums.gameservers.net/showthrea ... genumber=2 which is similar to whats already defined in the clientside csv output.
Last edited by Twigstir on 26-09-2004 04:53, edited 1 time in total.
User avatar
Imaginos
Posts: 885
Joined: 17-03-2003 18:06
Contact:

Post by Imaginos »

This looks great sofar. What are the team's thoughts on fully utilizing the native ut2004 stats engine with ScoreEvent lines?
User avatar
DavidM
Posts: 6795
Joined: 08-03-2003 20:35
Contact:

Post by DavidM »

for now its just awards and those 4 point categorys
Ashleh
Posts: 270
Joined: 30-08-2004 19:59
Contact:

Post by Ashleh »

Very Interesting, i look forward to this award system.
PHiLø
Posts: 243
Joined: 15-02-2004 01:43
Contact:

Post by PHiLø »

i feel big egoism will occur as all will be point greedy
User avatar
DavidM
Posts: 6795
Joined: 08-03-2003 20:35
Contact:

Post by DavidM »

no....because you get most points for team stuff....
read first.

you can get the best attacker award without scoring a single goal (and with actually being the best)
User avatar
R3L!K
Posts: 1274
Joined: 09-03-2003 01:03

Post by R3L!K »

is a distinction going to be made between bad passers and bad catchers? (if possible)
User avatar
DavidM
Posts: 6795
Joined: 08-03-2003 20:35
Contact:

Post by DavidM »

unfortunately not. if you got a good algorithm for a bad catch ........ :|
Locked