Community FAQ

pier4r
Skynet
Skynet
Posts: 3390

Community FAQ

Post#1 » 08 Dec 2016, 19:40

When a nice explanation of some game mechanics pops out on the forum I try to collect it in the gladiabots' wiki (see links section).

Nevertheless we could start to collect info about stuff that for us are granted by for new players (and not only, I may be wrong) are not.

Everyone can contribute providing the explanation of something. Then someone else can link it in the wiki (worst case: me, I deserve the dataset dump!).

some parts are valid for older gladiabots versions, we should move to the wiki slowly.

########################
Index:
- bots stats and computation formulas from the community: http://gfx47.com/games/Gladiabots/Forum ... 7&p=67#p61

- Brief explanation of conditions and, similarly, actions http://gfx47.com/games/Gladiabots/Forum ... 1087#p1087
- alpha 7.x action filters : http://gfx47.com/games/Gladiabots/Forum ... 6427#p6422
- any and all: http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=743

- connectors: http://gfx47.com/games/Gladiabots/Forum ... 1080#p1082

- tip ordering AIs: http://gfx47.com/games/Gladiabots/Forum ... 1135#p1135
-- a possible naming convention: http://gfx47.com/games/Gladiabots/Forum ... 2327#p2323
-- another naming convention http://gfx47.com/games/Gladiabots/Forum ... 2546#p2546
-- again a naming convention http://gfx47.com/games/Gladiabots/Forum ... 2823#p2822
-- further naming conventions http://gfx47.com/games/Gladiabots/Forum ... ?f=3&t=433

- score explanation: http://gfx47.com/games/Gladiabots/Forum ... 1253#p1253
-- can someone, that plays a little (but more than an handful of matches), be able to keep a score way over the others if his strength would not be superior? http://gfx47.com/games/Gladiabots/Forum ... 2350#p2350
-- another bit about score computation http://gfx47.com/games/Gladiabots/Forum ... ?f=6&t=268
-- On score inflation for master league and how to compare historical scores. http://gfx47.com/games/Gladiabots/Forum ... 3880#p3880
-- determining the average opponent score through Xp value http://gfx47.com/games/Gladiabots/Forum ... 3885#p3885 (valid only if Xp are assigned by victories)
-- remembering the score formula rewards the player that has better tactics, although for tiny details: http://gfx47.com/games/Gladiabots/Forum ... 4819#p4819
-- why the win ratio counts nothing: http://gfx47.com/games/Gladiabots/Forum ... 6828#p6828

- How to unlock classes: http://gfx47.com/games/Gladiabots/Forum ... t=108#p874

- how a map is selected: http://gfx47.com/games/Gladiabots/Forum ... ead#unread

- hotkeys for playback http://gfx47.com/games/Gladiabots/Forum ... ?f=2&t=149

- how robots are chosen when more than one robot respect the filters and the conditions in an action or a condition: http://gfx47.com/games/Gladiabots/Forum ... 1469#p1465
-- what happens if more than one bot is eligible for an action? (capturing a resource) http://gfx47.com/games/Gladiabots/Forum ... =637#p8149

- explanation about keep local data or server data (cloud synch): http://gfx47.com/games/Gladiabots/Forum ... ?f=6&t=173

- real subtrees http://gfx47.com/games/Gladiabots/Forum ... 2161#p2187

- tagging http://gfx47.com/games/Gladiabots/Forum ... 2161#p2187
-- examples of bot tags to return from a subtree http://gfx47.com/games/Gladiabots/Forum ... =175#p4195
-- decorators http://gfx47.com/games/Gladiabots/Forum ... 4470#p4470
-- updates alpha 7.x
... http://gfx47.com/games/Gladiabots/Forum ... =278#p2865

- starting point orders in maps: http://gfx47.com/games/Gladiabots/Forum ... 2259#p2257

- when damage is calculated: http://gfx47.com/games/Gladiabots/Forum ... ead#unread
-- hit computed per bullet http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=545

- organizing decision trees, examples: http://gfx47.com/games/Gladiabots/Forum ... &t=92#p677

- Logical ways to arrange nodes: logical gates.
-- more on logical gates: http://gfx47.com/games/Gladiabots/Forum ... ?f=7&t=600
-- not (A and B) as "notA OR notB". Remember that the AIs is checked before, like looking at the snapshot of the situation. Therefore if a branch captures a condition, that condition cannot "pass through" another branch. http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=364

- (obsolete) Currently targeted: https://itch.io/t/27475/tips-chunky-mon ... y-targeted .

- SR Latch: (to have a "stored value") https://www.reddit.com/r/Gladiabots/com ... _sr_latch/

- filter options within a category are in "or" between them, not "and" : http://gfx47.com/games/Gladiabots/Forum ... 2468#p2465
-- not always! Alpha 7 http://gfx47.com/games/Gladiabots/Forum ... t=40#p2950
-- more info about filters introduced in alpha 7 and the OR /AND part http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=582
-- more info about OR/AND between filter categories. http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=815


- Why a player must watch every match without skipping them. http://gfx47.com/games/Gladiabots/Forum ... =517#p5798

- private matches expiration: http://gfx47.com/games/Gladiabots/Forum ... ?f=8&t=921

- More collected info in the wiki: https://www.reddit.com/r/Gladiabots/wiki/

- official manuals: http://gfx47.com/games/Gladiabots/Forum ... m.php?f=22

########################
Analyses

- By pier4r: https://www.reddit.com/r/Gladiabots/wik ... _shield_k1

######################


Fixes are welcomed. Other posts explained something else (even extra small) are welcomed.

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.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#2 » 08 Dec 2016, 20:11

subtrees nodes: Useful to reorganize nodes, especially to move them around.

See an example: viewtopic.php?f=8&t=31
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

User avatar
GFX47
Dev
Dev
Posts: 2914

Re: [trial#1]FAQs

Post#3 » 08 Dec 2016, 20:26

Filters are actually applied BEFORE checking the condition:
  • get all the entities of the <target type>
  • only keep the entities matching the <target filters>
  • if no entity is returned by previous step, condition is considered invalid
  • select the best entity according to the <target selector> ("any" is a special case where you keep all the entities from previous step)
  • check the condition on the remaining entity(ies) (for "any" selector, node is valid if the condition is valid on at least one of the entities)

Actions follow these steps:
  • 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

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#4 » 08 Dec 2016, 20:31

Thanks for sharing (and translating from code!), fixed.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

User avatar
GFX47
Dev
Dev
Posts: 2914

Re: [trial#1]FAQs

Post#5 » 08 Dec 2016, 20:34

Added the action steps.

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#6 » 08 Dec 2016, 20:39

What a condition means: (the meaning of an action is similar)
(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, condition is considered invalid
  • select the best entity according to the <target selector> ("any" is a special case where you keep all the entities from previous step)
  • check the condition on the remaining entity(ies) (for "any" selector, node is valid if the condition is valid on at least one of the entities)

Examples:
target type: enemy
target selection: any
condition: exist
invert: no
filters: medium range.

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.
Last edited by pier4r on 23 May 2017, 12:12, edited 1 time in total.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#7 » 09 Dec 2016, 10:32

Tip for ordering AIs until the alphanumeric sorting is in place.

Rename the old Ais with "z oldainame"
and/or
Rename the new Ais with "0 newainame" 0 = zero
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

User avatar
GFX47
Dev
Dev
Posts: 2914

Re: [trial#1]FAQs

Post#8 » 09 Dec 2016, 12:23

pier4r wrote:until the alphanumeric sorting is in place


It IS in place.
What is the problem exactly?

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#9 » 09 Dec 2016, 12:58

Hmm, I was not clear, imagine that in beta 2 you will put "recently used Ais" as sort, so the FAQ is valid until the alphanumeric sort is used.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

User avatar
GFX47
Dev
Dev
Posts: 2914

Re: [trial#1]FAQs

Post#10 » 09 Dec 2016, 13:00

Oh, OK. My bad.

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#11 » 11 Dec 2016, 11:16

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
gladiabots_elo_20161211_delta_500_0.png (29.4 KiB) Viewed 6631 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
gladiabots_elo_20161211_delta_0_-500.png (28.3 KiB) Viewed 6631 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"


Sources (see also the wiki):
gladiabots_elo_20161211_sources.png
gladiabots_elo_20161211_sources.png (102.92 KiB) Viewed 6631 times

typo: actually is delta score p1-p2 not p2-p1.
Last edited by pier4r on 16 Feb 2017, 13:38, edited 2 times in total.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: [trial#1]FAQs

Post#12 » 17 Dec 2016, 22:30

Updated the first post. If you think I missed some explanations in whatever thread, please link them here.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

User avatar
GFX47
Dev
Dev
Posts: 2914

Re: FAQ

Post#13 » 18 Dec 2016, 00:43

Move this topic in the "Questions" forum as an announcement to help newcomers.
Thank you pier4r for creating and maintaining it <3

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#14 » 18 Dec 2016, 01:07

I learned that if one cannot do code, an do documentation, that is gold as much as the rest in certain cases. So, happy to help for this great game.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#15 » 24 Dec 2016, 00:20

Updated the first post. Everyone contribution is welcomed directly in this post if you want. otherwise even links to other posts / articles are welcomed.

The best would be updating the wiki, since the wiki is collaborative.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#16 » 25 Dec 2016, 21:45

first post updated. Any contribution is welcomed.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#17 » 26 Dec 2016, 21:49

Added a link to this post: viewtopic.php?f=3&t=228&p=2327#p2323

naming conventions are welcomed!
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#18 » 27 Dec 2016, 19:56

So for future reference.

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.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#19 » 15 Jan 2017, 22:09

Updated the first post with references with the new handling of filters. (actually would be better to do such faqs in the wiki that is collaborative, but for the moment this is better than nothing)
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

pier4r
Skynet
Skynet
Posts: 3390

Re: FAQ

Post#20 » 19 Jan 2017, 09:55

Todo: explaining all the filters in alpha 7 and maybe reexplaining tagging a bit.
http://www.reddit.com/r/Gladiabots/wiki/players/pier4r_nvidia_shield_k1 -> Gladiabots CHAT, stats, insights and more ;

Return to “Manual”

Who is online

Users browsing this forum: No registered users and 1 guest