PS; since I am pretty active in the forum (posting), I'm trying to use my signature as advertisement for useful info. If you find it useful and you are active on the forum too, please put in your signature info that you think may be useful for the community.

Last edited by pier4r on 02 Apr 2018, 14:34, edited 54 times in total.

This means: If one or more enemies exists and are at medium range, then select all of them. Check if the condition is true for any of the enemies selected.

What an action means:: (See GFX explanation some posts below)

get all the entities of the <target type>

only keep the entities matching the <target filters>

if no entity is returned by previous step, action is considered invalid

select the best entity according to the <target selector> ("any" is not allowed for action targeting)

if action is possible, execute it

Meaning of some filters- Resource: either the enemy/ally robot is carrying a resource or not. If no selection, it does not matter.- BotClass: the enemy/ally robots are of the type selected, if no selection, it does not matter.- Range: the target type is within the selected ranges, if no selection, it does not matter.- Health/Shield: the enemy/ally robots have an amount of health that falls in the selected ranges, if no selection, it does not matter.

Meaning of some conditions:- Invert: to negate the condition, and only the condition not the result of the entire node!- Resource: if the target type is carrying the resource. The negation is "if thetarget type is NOT carrying the resouce"- Bot class: if the target type is of the bot class. Notice that one can select one bot class, so the filters are more powerful. The negation means "the target type is not of the bot class selected, but all the others are ok"- Range: like the bot class, if the target type is at a certain range. The negation means that the target type is in every range except the one selected.health/shield: if the target type has the health (equivalent for shield) within a certain range. The negation means all the other intervals. For example "not health 0-25, means health 26-100"- Exists: if the target type exists (given also the filters)

Meaning of target selection:Here I wander in the void, but I try to guess.- Closest: the target type is the closest that respect the condition + filters compared to the robot that is checking the condition.- Furthest: the contrary of Closest.- Weakest: the ally/enemy robot , that respect conditions and filters, has the lower health in terms of numeric value. Like 1200 points. Note that at the start, when no robot is damaged, the weakest is always a sniper. Lack of information(one of many): given more than one robot satisfying the condition and filters, and given that they have the same health, how is the selection made? 2016.12.15. It seems solved: viewtopic.php?f=3&t=150&p=1469#p1465 ; see also: viewtopic.php?f=8&t=669&p=7706#p7706- Strongest: like weakest, but one selects the ally/enemy robot with more absolute health. viewtopic.php?f=3&t=150&p=1469#p1465- WeakestRatio: Like weakest, but the ratio compared to the maximum health. For example a robot class "A" may have a maximum of 5000 health points, the robot class "B" would have 3000. Now a robot of class A has 4000 hp, while a robot of class B has 3000. The weakest is the robot of class B, but the weakest ration is the robot of class A, because it has 4/5 of the health that it could have. viewtopic.php?f=3&t=150&p=1469#p1465 ; see also: viewtopic.php?f=8&t=669&p=7706#p7706- StrongestRatio: like the contrary of the WeakestRatio. In the example made for weakestRation, the root of class B would have the strongest ration because it is full of health. viewtopic.php?f=3&t=150&p=1469#p1465- WeakestShield: like weakest, but for shield (that regenerates!) - Same selection as above.- StrongestShield: like strongest, but for shield (that regenerates!) - Same selection as above.- Shieldratios: as with the health, just the shield regenerates. - Same selection as above.- Any: Given the objects that satisfy condition and filters, one of them is selected. See rest of the faq.

So far gladiabots use the Arpad Elo's formula to compute the score of the players.

There are hundreds of analysis of the elo score around the internet, but since some quick tables are indeed quick, I produce the nth case of a basic visualization of the elo results (only for wins and losses, for draws the computation is similar, points exchanged are less and are also halved after the Elo's formula. Cannot find the source for the moment).

The following table shows: - the difference in elo/score points between you and the opponent. - how this difference is used to compute the expected result (according to the Elo formula)- how the expected result is used in comparison to the actual result to compute the point exchanged. Note that so far the points are exchanged. One player gets +points the other gets -points.- Then the points exchanged variate with the league because the idea of the K factor is: the larger, the faster one change one's score, in league4 one should be quite stable so the K factor is smaller.

gladiabots_elo_20161211_delta_500_0.png (29.4 KiB) Viewed 5277 times

The table above shows, if we concentrate on league4 on some score differences, that if one wins a player with 200 points more, one gets 19 points as reward (the other one gets -19).

If one wins a player with 300 points more, one gets 21 points (and the player with 300 points more gets -21 points).

gladiabots_elo_20161211_delta_0_-500.png (28.3 KiB) Viewed 5277 times

The table above shows, if we concentrate on league4 on some score differences, that if one wins a player with 200 points less, one gets 6 points as reward (the other one gets -6).

And so on.

Observations: - If a player loses against someone that has 100 points less in league4, then he needs 2 wins against someone with 100 point less to compensate the loss and get some profit.- If a player loses against a player with 200 point less in league4, then he needs 4 wins against players with 200 points less to compensate the loss and get some profit.- If a player is at the top with large margin over other players in the league, and the activity in the league is variable, so sometimes top players are active sometimes players with 200 or 300 points less than the player are active, to keep the top either one is very good, or plays a little (still not losing too much though).

In other words the current Elo formula (that can be tweaked a lot creating variants. For example one variant is applied to ass. football) is crafted to model the following: "The score is a prediction of the player strength, so If you are good compared to your opponent, I expect you to win, so you get little reward, if you are not good, it is a surprise, so you get a lot of reward. Conversely, if you lose from someone that is good, it is expected, so I do not change your rating so much, if you lose someone that is rated way less than you, maybe my prediction was very off the track, so I take away a lot of points from you"

During alpha 5.x and alpha 6.x there was a player called nullpointer that dominated the rankings (at this moment this player is still dominating the rankings). The values of his score were often 100 points higher, if not more, than the successive group of players in the rankings. Like he had 1800+ points and the immediate competitors had 1650+ points . See also: viewtopic.php?f=7&t=60

A question that was often raised was: since nullpointer plays not so often (or often with alt accounts for testing) it is easy for him to keep the score.

Well that is not entirely true.

Consider the following assumptions:- there is a player at the top with 100 or 200 score higher than the immediate group of competitors.- this player plays, say, at least 10 games per week against the immediate group of competitors.- we assume that even someone not stronger than the direct competitors but playing a little could hold the score. So the top player against one opponent in the group of competitors wins 30% of the time, draws 40% of the time, and loses 30% of the time.

As reported by this post , for the 3 wins gained from the direct competitors, the player will gain between 9 and 6 points. So a maximum of 27 points gained. The 4 draws have a negative impact. This is not reported in the linked post but the point lost should be round about 8. Then every of the 3 losses would produce a negative impact between 16 and 19 points, for a minimum (in this case we are conservative) of 48 points lost. Net points after those 10 games: -29 points. So, if the top player would not be so strong, after every week the matches with the direct competitors would erode his advantage quite quickly. Sure the top player may meet lower ranked players and gain points but this is valid also for the direct competitors that are assumed with the same strength.

So, the only way for the top player, that plays a little (but more than an handful of matches per week), to keep a way higher score is to be consistently better than the others. In other words, the elo gap would reflect, more or less, the strength gap between the top player and the rest.

Of course gladiabot shows that tactics evolves quite quickly so a certain strength on a day may be untenable 3 days later with the same tactics.