fstd / teeworlds

A retro multiplayer shooter
http://teeworlds.com
Other
32 stars 13 forks source link

openfng - (experimental) dynamic score #54

Open fstd opened 13 years ago

fstd commented 13 years ago

maybe it would be neat to be a little bit more dynamic in how much score is provided for certain actions (freeze/melt/sacrifice), maybe in respect to the scores of the two players (killer and victim) involved. it might introduce a bit more complexity/teamplay when ppl can gain more score for killing good players and less for staying away from the good in order to only finish off the noobs. but since this would be quite a drastic change, it will most probably be optional and default to off

opinions?

andi103 commented 13 years ago

I think this would be a nice feature, but i guess most of the servers would have the feature set to off

starman-teeworlds-cz commented 13 years ago

could be difficult to make good system how it would work

fstd commented 13 years ago

Well, what is to be found is a function which generates meaningful score gains for all possible killer_score/victim_score combinations.

More formally: Let S_min and S_max denote the minimum and maximum score a player can possibly have (for tw like -999 and 999, irrelevantly) Independent of the actual values for S_min and S_max, we normalize every score to the closed interval [-1, 1], a real subset of |R. (i.e. norm(score) := 2(score - S_min)/(S_max - S_min) - 1) (note negative scores are possible) Similarly for the score gains, as normalized values are easiest to deal with, the output of the function which is to be found should target the [0, 1] interval. Rationale on this: The scoring function is supposed to be about score 'gain', that's why it should only return positive values. It does have to consider negative inputs, however, as it eventually might be (-1)'ed, for example for misaligned sacrifices. So we are looking for a good scoring function f: S^2 --> G, (s_killer, s_victim) |--> [function term which is yet to be found] Where S denotes the set of possible score inputs [-1, 1] and G denotes the set of possible score gains [0, 1].

If someone can propose a nice function term, at best also link to a plotting of its graph

starman-teeworlds-cz commented 13 years ago

Everything below "More formally:" is mystery for me :D I hope someone less dumb than me is going to solve this :D

fstd commented 13 years ago

heh the formal part, well that's actually a lot blah blah saying what has already been said ;) i.e. that we need a function which takes killer and victim score (each between -1 and 1) as input, producing a good score gain as output (between 0 and 1)

fstd commented 13 years ago

Uhm, well i had some thought on it and played a bit around with gnuplot which resulted in a function which i think could be somewhat usable. All values are normalized, as stated in the above post. Furthermore note that 3/4 of the plot deal with situations where one involved player has negative score, which doesn't happen too often. The most relevant part is the far right quadrant (note (0,0) is in the center), where x and y are both positive. here is the plot scorefunplot

any opinions/suggestions etc?

ps: as hopefully comes through, the output of this function depends primarily on how much score your victim has, and secondarily on how much the killer has

starman-teeworlds-cz commented 13 years ago

Score will be counted in unwhole numbers? Looks like it's nearly impossible to gain 1 ... 1 is standard gain so i think it should be average.

fstd commented 13 years ago

well, no, i have just used normalized values (i.e. between -1 to 1) because this makes it simpler to deal with (thats why the axis are labeled 'normalized'). what is important here is not really the actual values, but rather the shape of this function, the relation in which killer score, victim score and score gain are put. think of the limits -1 and 1 as the minimum and maximum score a player can possibly have (that is, -1 resembles -999 score and 1 resembles 999 score) furthermore, think of the output '1' as maximum score gain we want to give out, rather than actually giving ONE score for it.

said differently, the output of the function will be eventually linearly scaled up to produce values in a desirable range of meaningful scores (maybe between 1 and 15), but without affecting the functions 'nature' aka it's plot's shape.

and ofc the whole thing will necessarily be quantized to integers, but that shouldn't be a problem

perogiue commented 13 years ago

I think the idea should hold until the core gameplay that everyone agrees on is settled.

fstd commented 13 years ago

that's not a real opinion towards the issue..

fstd commented 9 years ago

four years later, looking at it again, it strikes me as pointless.