ItHadToComeToThis Posted April 4, 2020 Share Posted April 4, 2020 (edited) So, another combat system related question. More a math issue than anything. In my system I record the following information : Deaths Kills Hits taken I am wanting to use this data to determine someones combat rank. Now, I know I can divide say the kills by the deaths to get a K/D ratio and base my ranking on that. However, I want to include the amount of hits taken as my system has a couple of dodge options to evade damage. Is there a good method I can use to determine a ratio given these three variables and then break up the results to determine what rank someone is. The ranks in the system are simply E, D, C, B, A, S, SS. However, what I don't want to happen, ratio wise, is someone does their first ever kill and suddenly they gain the SS rank as their combat efficiency could technically be 100% at that point if they did it with no hits taken Edited April 4, 2020 by ItHadToComeToThis Link to comment Share on other sites More sharing options...
Lucia Nightfire Posted April 4, 2020 Share Posted April 4, 2020 Maybe include factors as difficulty in making the hits and dodging the hits based off distance to/from target, the size/speed/power or the artillery used versus defense/agility/luck of the target. All this creates a score for each attack which repitition math can be done on. This assumes mostly projectile type combat, but other things can be considered with melee based combat. Link to comment Share on other sites More sharing options...
Mollymews Posted April 5, 2020 Share Posted April 5, 2020 is always interesting this problem puzzle the problem: a person fires one shot, kills one person, takes no bullets and doesn't get killed themselves, then exits the arena naive math:. 1:1:0:0. A perfect kill and a perfect score a person fires 10 shots, kills 10 people, takes 5 bullets and doesn't get killed themselves, then exits naive math: 10:10:0:5. Not a perfect score but nearly 10 times better in kills than a 1 shot person there is a number of ways to ameliorate this. I put here a way it can be done a seeded 1-based method rather than 0-based to avoid division by zero compensation coding: float ammo = 0.001; // amount of ammo I have used. attacks I make float kills = 0.001; // number of targets I killed float wounds = 0.001; // number of wounds I received float deaths = 0.001; // number of times that I died increment each as it happens, by some scale factor to account for type of attack. Like killing a target with bare hands might be worth 1.0. Shooting them with a pistol might be 0.8. Fragging with a grenade 0.5. Sniping from range 0.25. Dropping a nuke on them 0.1, etc then use the formula: (ammo / kills) / (wounds / deaths) * kills breaking this down: float BKA = ammo / kills. Gives average amount of ammo used to kill a target float WDA = wounds / deaths. Gives average number of wounds inflicted to kill me float ratio = BKA / WDA; float points = ratio * kills; rank for 10 kills is always higher than 1 kill using same attack. Provided that player hasn't been wounded/killed heaps of times or expended zillions of ammo Player 1: 1 shot 1 kill then ammo = 1.001; kills = 1.001; BKA = 1.001 / 1.001 = 1.0 WDA = 0.001 / 0.001 = 1.0 ratio = 1.0 / 1.0 = 1.0 points = 1.0 * 1.001 = 1.001 Player 2: 100 ammo, 10 kills, 20 wounds, 2 deaths ammo = 100.001; kills = 10.001; wounds = 20.001; deaths = 2.001; BKA = 100.001 / 10.001 = 9.9991; WDA = 20.001 / 2.001 = 9.995502249; ratio = 9.9991 / 9.995502249 = 1.0036; points = 1.0036 * 10.001 = 10.0046; Player 3: 100 ammo, 10 kills, 10 wounds, 2 deaths ammo = 100.001; kills = 10.001; wounds = 10.001; deaths = 2.001; BKA = 100.001 / 10.001 = 9.9991; WDA = 10.001 / 2.001 = 4.998001; ratio = 9.9991 / 4.998001 = 2.00062; points = 2.00062 * 10.001 = 20.0082; Player 3 is 2 times better than Player 2, and 20 times better than Player 1 2 times better because Player 3 took half the number of wounds for the same number of everything else can adjust the input values as preferred. The basic formula remains the same on ranking leaderboards with ranking leaderboards then I prefer to see the last X battles fought ranked/listed by points. A player has only one name entry on the board. If they improve their points then moved up when the board does not have X entries, new players are added to the board until full each board entry has a datetime stamp when the board is full and a new person plays then regardless of their points they are added to the board and ranked. The oldest entry by datetime stamp is removed can have an all-time ranking board as well. Established players will try and get on this board but what I find is that the last X board is what keeps new people enthused and playing. Seeing their own name on a board even when a neophyte player Link to comment Share on other sites More sharing options...
Recommended Posts
Please take a moment to consider if this thread is worth bumping.
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now