Difference between revisions of "Strategies"

From Gladiabots Wiki
Jump to: navigation, search
(2 intermediate revisions by the same user not shown)
Line 17: Line 17:
 
== Useful resources ==
 
== Useful resources ==
  
* In general, it is recommended to check the [https://forum.gladiabots.com/index.php forum] sections <i>Questions</i> and <i>Strategies</i>. Also "old" topics can give nice information. Another place where tactics are shared are the chat groups on Discord and Telegram (see forum [https://forum.gladiabots.com/viewforum.php?f=12 links]).
+
There are several places to discover new strategies, learn tactics of other players or ask questions:
* [https://forum.gladiabots.com/viewtopic.php?f=3&t=823 Shared ideas how players approach the game] (several strong players, at least strong for the first half of 2017, contributed to the topic)
+
  
<!--
+
* Check the [https://forum.gladiabots.com community forum]. Also "old" topics there can give nice information.
 +
** Especially the sections ''Strategies'' and ''Questions'' are interesting.
 +
** For example check [https://forum.gladiabots.com/viewtopic.php?f=3&t=823 this topic about shared ideas how players approach the game]. Several strong players of the year 2017 contributed to it.
 +
* Check the chat groups on [http://telegram.gladiabots.com/ telegram] and [http://discord.gladiabots.com/ discord].
 +
* Check the wiki itself to learn about game mechanics and bot programming and their sub topics. There are several nifty details to discover.
 +
* Check the [[changelog]] or [http://roadmap.gladiabots.com roadmap] to learn about recent or planned changes and adjust your AIs according to them.
  
Game mechanics
+
Last but not least one should play the game. Especially lost games show flaws of the AI, that need to improved. Try to analyze the strategy your enemy used.
Bot programming
+
  
* Wiki itself
+
== Simple bots ==
  
* [https://forum.gladiabots.com Community forum]
+
One can learn of bots with few nodes that have a pretty good performance in the game. They are a great base to start optimizing for beginners but also for advanced players to test their AI against.
* [http://roadmap.gladiabots.com Roadmap] [[Changelog]]
+
* [https://stats.gladiabots.com/ Gladiabots stats]
+
* [http://gladiabots-stats.info.tm/ Unofficial Gladiabots stats]
+
* [https://cmrichards.github.io/glad_simulation/ Unofficial Gladiabots simulator]
+
* [http://telegram.gladiabots.com/ Telegram chat]
+
* [http://discord.gladiabots.com/ Discord chat]
+
  
 +
=== Ultimate AI for beginners (16 nodes) ===
  
played games itself
+
PEW presented this [https://forum.gladiabots.com/viewtopic.php?f=3&t=647 Ultimate AI for beginners] in the forum.
  
 +
[[File:Ultimate AI for beginners.png|thumb|none|800px|Ultimate AI for beginners - [https://wiki.gladiabots.com/images/3/3c/Ultimate_AI_for_beginners.png Higher resolution (2236 × 1228 pixel)]]]
 +
 +
The AI is split into this main modules:
 +
 +
* Blue: The retreat module
 +
* Yellow: The shooting module (with high priority)
 +
* Green: The resource module
 +
* Red: The pushing module
 +
* Pink: The shooting module (with low priority)
 +
 +
=== Grand Master League Bot (30 nodes) ===
 +
 +
LuBeNo presented this [https://forum.gladiabots.com/viewtopic.php?f=3&t=605 Grand Master League Bot] in the forum.
 +
 +
[[File:Grand Master League Bot.png|thumb|none|800px|Ultimate AI for beginners - [https://wiki.gladiabots.com/images/7/7a/Grand_Master_League_Bot.png Higher resolution (2276 × 986 pixel)]]]
 +
 +
The AI is split into this modules:
 +
 +
* Defense
 +
* Shotgun
 +
* Offense
 +
* Dancing
 +
 +
== Ideas worth implementing ==
 +
 +
=== Retreating ===
 +
 +
{{InformationCollapsed|1=Retreat at shield level other than 0-25%.|2=Retreat early when being attacked by several units at medium range. Don't wait until your shield is 0-25%, otherwise those enemy units attacking you at medium range will continue to attack you as you move into long range, which is something you want to avoid with such a low shield. If you're being attacked by a machine gun and a sniper at medium range then you'll probably want to retreat at all shield/health levels.}}
 +
 +
{{InformationCollapsed|1=Only retreat as long as someone is attacking.|2=Don't retreat because your shield is low, but because someone attacks you. If no one attacks you anymore stop the retreat process.}}
 +
 +
=== Attacking ===
 +
 +
 +
 +
<!--
  
  
Line 43: Line 77:
 
* Assault specific strategies / Shotgun specific strategies / Machine gun specific strategies / Sniper specific strategies
 
* Assault specific strategies / Shotgun specific strategies / Machine gun specific strategies / Sniper specific strategies
 
** [https://forum.gladiabots.com/viewtopic.php?f=22&t=126&p=4470#p4470 decorators]
 
** [https://forum.gladiabots.com/viewtopic.php?f=22&t=126&p=4470#p4470 decorators]
** [https://forum.gladiabots.com/viewtopic.php?f=3&t=605 Grand Master League Bot]
 
** [https://forum.gladiabots.com/viewtopic.php?f=3&t=647 Ultimate AI for beginners]
 
  
 
what are the most important things to implement for new players? (A little bit more explaining text or a link appreciated)
 
what are the most important things to implement for new players? (A little bit more explaining text or a link appreciated)
Line 58: Line 90:
 
Dancing (both resource and range based)
 
Dancing (both resource and range based)
 
Arena Positioning System (using bases and Bots and resources, used for flanking and retreat.)  
 
Arena Positioning System (using bases and Bots and resources, used for flanking and retreat.)  
 +
 +
  
  
 
1. Aggressivly push to medium range. Little damage is done at long range, so pushing to medium maximises your damage and also pushes your opponent, especially if you have many pushing at once. This is critical. Don't push when being attacked (I don't always follow this rule)
 
1. Aggressivly push to medium range. Little damage is done at long range, so pushing to medium maximises your damage and also pushes your opponent, especially if you have many pushing at once. This is critical. Don't push when being attacked (I don't always follow this rule)
  
2. Retreat early when being attacked by units at medium range. Don't wait until your shield is <25%, otherwise those enemy units attacking you at medium range will continue to attack you as you move into long range, which is something you want to avoid with such a low shield. If you're being attacked my a machine gun and shotgun at medium range then you'll probably want to retreat at all shield/health levels.
 
  
 
3. Pay a lot of attention to your opponent's sniper. Your sniper should prioritize attacking the enemies sniper. If your sniper hits the opponent's sniper then it's probably worth changing the attack target of all your nearby units to it even if they are attacking medium range units (and only if it is safe/worthwhile doing so)
 
3. Pay a lot of attention to your opponent's sniper. Your sniper should prioritize attacking the enemies sniper. If your sniper hits the opponent's sniper then it's probably worth changing the attack target of all your nearby units to it even if they are attacking medium range units (and only if it is safe/worthwhile doing so)
Line 79: Line 112:
  
  
1. Retreat at shield level other than 25% (from closest enemy attacking self)
+
 
 
2. Continuously attacking enemy bots(this was a new concept for me)
 
2. Continuously attacking enemy bots(this was a new concept for me)
 
3. Attacking enemies nearby allies are attacking(focus fire)
 
3. Attacking enemies nearby allies are attacking(focus fire)

Revision as of 00:27, 6 December 2017

Information.png This page needs improvement, you are welcome to contribute.

Best practices for AI design

Some best coding practices from software development also apply to AIs in Gladiabots. The following rules can help improve the quality of AIs, enhancing both the initial development and subsequent maintenance of the AI.

Information.png
Divide and conquer. 

Break down a problem into two or more sub-problems and solve each of them separately. Complex sub-problems can again be divided. In Gladiabots this could be done by creating sub-AIs for each sub-problem. The complexity is reduced leading to a better maintainability.

Information.png
Readability first. 

AIs are written once, but read many times. Overlapping nodes, links crossing each other and great distances between linked nodes are difficult to read and should be avoided. AIs should have meaningful names revealing their purpose. One should consider to align nodes to the grid.

Information.png
Don't repeat yourself. 

Avoid using the exact same set of nodes in several places. Sometimes duplicate nodes can be prevented by using bot specific filters or additional conditions. If its not possible to prevent duplicate nodes in the first place one can try to move them to sub AIs.

Information.png
Keep it simple. 

The size of an AI has a significant effect on the error rate. A simple solution should be preferred over a complex one leading to the same or very similar results. One should ask the question: "Has this AI been implemented with the least amount of nodes necessary?". The more complex the AI is the more likely it is to be buggy.

Information.png
Test, test, test. 

"If debugging is the process of removing bugs, then programming must be the process of putting them in." (Edsger Wybe Dijkstra) As no developer is perfect, new nodes should be tested and debugged right after they were added.

Useful resources

There are several places to discover new strategies, learn tactics of other players or ask questions:

  • Check the community forum. Also "old" topics there can give nice information.
  • Check the chat groups on telegram and discord.
  • Check the wiki itself to learn about game mechanics and bot programming and their sub topics. There are several nifty details to discover.
  • Check the changelog or roadmap to learn about recent or planned changes and adjust your AIs according to them.

Last but not least one should play the game. Especially lost games show flaws of the AI, that need to improved. Try to analyze the strategy your enemy used.

Simple bots

One can learn of bots with few nodes that have a pretty good performance in the game. They are a great base to start optimizing for beginners but also for advanced players to test their AI against.

Ultimate AI for beginners (16 nodes)

PEW presented this Ultimate AI for beginners in the forum.

Ultimate AI for beginners - Higher resolution (2236 × 1228 pixel)

The AI is split into this main modules:

  • Blue: The retreat module
  • Yellow: The shooting module (with high priority)
  • Green: The resource module
  • Red: The pushing module
  • Pink: The shooting module (with low priority)

Grand Master League Bot (30 nodes)

LuBeNo presented this Grand Master League Bot in the forum.

Ultimate AI for beginners - Higher resolution (2276 × 986 pixel)

The AI is split into this modules:

  • Defense
  • Shotgun
  • Offense
  • Dancing

Ideas worth implementing

Retreating

Information.png
Retreat at shield level other than 0-25%. 

Retreat early when being attacked by several units at medium range. Don't wait until your shield is 0-25%, otherwise those enemy units attacking you at medium range will continue to attack you as you move into long range, which is something you want to avoid with such a low shield. If you're being attacked by a machine gun and a sniper at medium range then you'll probably want to retreat at all shield/health levels.

Information.png
Only retreat as long as someone is attacking. 

Don't retreat because your shield is low, but because someone attacks you. If no one attacks you anymore stop the retreat process.

Attacking