

== Soccer AI

…
Sport and Physical, Human AI are very active parts of AI nowaday. It involve a lot of subjects… That's why is also quite hard to bring into game.


Two category:


.  Invidual AI:
..  Human as Agent in a Team in a sport Game.
..  Human behaviour in a sport Game.
...  Movement behaviour
...  Brain
...  Physical (tesion, …) 
...  Balance and locomotion


.  Group AI:
..  Stragegy 
..  Plan (Goal , situation base..)
..  Some thing else…



==== Initial approach

As for EuroKick, my *initial approach* is the most basic form:


.  State machine for invidual AI
.  Hard code decision tree and some support techniques for group AI

For futher reading about this naive approach, almost adapt from the SportAI chapter of the famous “Programming Game AI by example book, you can find it here: link:http://www.ai-junkie.com/books/toc_pgaibe.html[http://www.ai-junkie.com/books/toc_pgaibe.html]


The book come with C++ source code, and fortunately someone port it to Java: link:http://www.sallyx.org/sally/en/game-ai/[http://www.sallyx.org/sally/en/game-ai/] , of source I use the source code but I port it to Groovy and change a lot in the structure to fit with out JME3 architecture, 3D, animations…etc Why Groovy? For operation overiding, scripting and such…


For this approach, the invidual AI represent as a moving point and some simplest action, it normally is quite enough for a management game (and also for the tutorial) but for a football controlling game like ProEvolution soccer or Fifa it's lack a lot of supports.



==== Next-gen approaches

In my second attempt recently, I'd like to improve both invidual level and group level envolve fuzzy, emotional, goalbase and training. 


Also in the process of making AtomAI, envolving more advance AI techniques like AI programming language and some “new born - “academic like POSH, Pogamut … <<jme3/advanced/atom_framework/atomai#,Read AtomAI>>, I want to make a push to this project by envolving this “new born techs.


Football player in the field can consider a physical-emotional creature know how to:


.  move (run,jump,balance..) 
.  play with the ball masterfully (kick, lead, pass..) 
.  have own personalities and charateristic.. 

compare to a single steering point (in the old approach)!


The players and all other characters:
 - interact, comunicate with teammates, refree, activities on the field
 - have overal stragegy, tactic, formation which can be change on the fly, train via training course .. etc..


Other than that, football players, coachs - they have nagotiation skills and can chat! If you watch Soccer Manager game evolutions closely, you can find the charater get smarter and smarter every year when they negotiate about the transactions, rercuitment … They have memories, can also express their ideas, emotions, and words …


That make the game much more challanging, interesting and enjoyable! Of course the underlying techs change and enable a whole new level of intelligent game agents, the same we want to see in our game!


But for a game development process, at some point you have to decide how much efforts are considered enough for your game and stop there! It's a game anyway, not a freaking science simmulation. Let's named what we have:



==== Physical - Emotional Human AI

This mainly required by Match gameplay.
Human brain and emotions is very difficult to simmulate. These are what AtomAI brings:


.  Emotions ( fuzzy, memories, ..)
.  Physical ( balance, physic aware, IK..)
.  Talkative agent ( chatbot, memories, nature language processing …)
.  Learnable - Trainable ( machine learning, skill improving with althelist simmulation models …)


==== Group AI

This mainly required by Coaching gameplay.
A group of invidual agents obey, rely on some global/overal stragegy or direction, in which forming a coach in real life.


Of course coaching appreared as in-match and our-match plans. Which we will consider to simmulate in different ways in our design.



==== Data

The data for this game can be huge to make some techniques work well:


.  Datas of gameplay: Football players and clubs infomations (attributes, tranactions, trainings, 3d models, characteristics …) to use in gameplay, simmulate economic models.. <<jme3/atomixtuts/kickgame/data#,Read more in Data section>>
.  Datas for AI: human physical-emotions simmulation, language recoginizing, processing, training materials…

I still want to sketch a framework and open it for community driven like other opensource: Then the required data can be procedured in network, webs of computers and devs…That's my point!

