ai.html 15 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><title>ai</title><link rel="stylesheet" href="./asciidoctor.css">
  2. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
  3. <link rel="stylesheet" href="./coderay-asciidoctor.css"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/advanced/atom_framework/ai.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/advanced/atom_framework/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>ai</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/03/17 20:48</span></div><div id="toc" class="toc2"><div id="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#atomai">AtomAI</a><ul class="sectlevel2"><li><a href="#questions-and-answers">Questions and Answers</a></li><li><a href="#introducing-atom-ai-framework">Introducing Atom AI framework</a></li><li><a href="#idea-buzz">Idea &amp; Buzz</a></li><li><a href="#features">Features</a></li><li><a href="#architecture-and-components">Architecture and components</a></li><li><a href="#vision">Vision</a></li><li><a href="#faq">FAQ</a></li><li><a href="#other-open-source-dependencies">Other open-source dependencies</a></li></ul></li><li><a href="#documentation">Documentation</a><ul class="sectlevel2"><li><a href="#basic">Basic</a></li><li><a href="#examples-usecases">Examples &amp; Usecases</a></li><li><a href="#api">API</a></li></ul></li><li><a href="#alternatives">Alternatives</a><ul class="sectlevel2"><li><a href="#open-sources">Open sources</a></li><li><a href="#commercial">Commercial</a></li><li><a href="#toolset">Toolset</a></li></ul></li><li><a href="#researches">Researches</a></li></ul></div></div><div id="content"><div class="sect2"><h3 id="atomai">AtomAI</h3><div class="paragraph"><p>Hi,</p></div>
  4. <div class="paragraph"><p>This is the wiki for Atom AI framework.</p></div>
  5. <div style="text-align: right;" class="imageblock"><div class="content"><img src="http://blogs.ifsworld.com/wp-content/uploads/2012/11/AI-lowres.jpg" alt="AI-lowres.jpg" height=""></div></div>
  6. <div class="sect2"><h3 id="questions-and-answers">Questions and Answers</h3><div class="paragraph"><p><strong>Question:</strong> What&#8217;s the h#$ll is AI or why should I bother in this thingy anyway emoji:</p></div>
  7. <div class="paragraph"><p><strong>Answer:</strong> It&#8217;s big, over-complicated and also attractive subject in Game developing.. emoji: emoji:sunglasses</p></div>
  8. <div class="paragraph"><p><strong>Question:</strong> What can be use in my game?</p></div>
  9. <div class="paragraph"><p><strong>Answer:</strong> Everything… You can use this lib to:</p></div>
  10. <div class="ulist"><ul><li><p>solve the common path finding,</p></li><li><p>let your creature know how to think and learn,</p></li><li><p>direct your vehicle the way to move,</p></li><li><p>your camera to interact with the screen,</p></li><li><p>teach your characters to walk/ talk/ shoot/ trading…</p></li><li><p>You can also use it in various type of simulations and</p></li><li><p>even try to solve a mathematic problem.</p></li></ul></div>
  11. <div class="paragraph"><p><strong>Question:</strong> Sound wonderful…? But wait… It should be soooooooo freaking big and heavy, is it <strong>real-time</strong> shit?</p></div>
  12. <div class="paragraph"><p><strong>Answer:</strong> Yes, partly… Some parts are real heavy for real time computing. They just can be used in non real time application or few kind of games. Others apx 60% are designed well enough to run in real time, and also provided with JME examples. It also comes with architectures/ functions that can config, optimize, balance, cache, and batch it selfs for real-time applications…</p></div>
  13. <div class="paragraph"><p><strong>Question:</strong> Eh… Universal solution can not be true…</p></div>
  14. <div class="paragraph"><p><strong>Answer:</strong> Let&#8217;s me explain. Consider this a warper of every good open-source java AI libraries you can name out and hook in to JME architecure (AppState, Sptial, Entity, Control, Update cycle…etc). Under the hood, I use Guice| OSGi |Felix to dynamicly link/bind them, when you need it. The full explaination you will find below.</p></div>
  15. <div class="paragraph"><p><strong>Question:</strong> Nice, I want to try it?</p></div>
  16. <div class="paragraph"><p><strong>Answer:</strong> Everything is here at once, sir/ madam !
  17. More questions ? Not convinced yet? Go to <a href="#faq">FAQ</a></p></div></div>
  18. <div class="sect2"><h3 id="introducing-atom-ai-framework">Introducing Atom AI framework</h3><div class="paragraph"><p>This Atom AI framework are more or less a “framework to bring AI to jME3 game (also means real-time application)!</p></div>
  19. <div class="admonitionblock tip"><table><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><div class="paragraph"><p>Here is my picked list of <a href="../../../jme3/advanced/atom_framework/ai/researches.html">researches</a> and articles you can read in AI field (game and none-game)</p></div></td></tr></table></div></div>
  20. <div class="sect2"><h3 id="idea-buzz">Idea &amp; Buzz</h3><div class="ulist"><ul><li><p>It contains warpers for various java AI libraries build on top of light-weight, configable module architecture and provide the way to hook seamlessly to jME3 games.</p></li><li><p>It&#8217;s also come up with a lot of working examples in several game genre (RTS, RPG, FPS, Sport,…).</p></li><li><p>40% of components, AI algorimth are rewritten by the author (@atomix) to be light-weight and usable in real-time application.</p></li><li><p>Tend to be used in production application and games and suppose to support broadest cases it can.</p></li><li><p>Users can use the pieces to build up their own AI part of their games and apps</p></li><li><p>Pushed to future java techs: dependencies injection, parallel as its core…</p></li></ul></div></div>
  21. <div class="sect2"><h3 id="features">Features</h3><div class="paragraph"><p>(T) means additional Tools are supported</p></div>
  22. <div class="paragraph"><p>&#169; means with examples cases</p></div>
  23. <div class="paragraph"><p>(E) means use| depend on external libs</p></div>
  24. <div class="admonitionblock important"><table><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content"><div class="paragraph"><p>Note that: despite of the fact, the lib has a lot of dependencies, the author always try have simple fallback - homegrown implemention. Of course, support a fewer use cases, mainly for specific game genres, but it&#8217;s better than nothing, that&#8217;s the bright side</p></div></td></tr></table></div>
  25. <div class="admonitionblock important"><table><tr><td class="icon"><i class="fa icon-important" title="Important"></i></td><td class="content"><div class="paragraph"><p>Read alternatives and searches if you want to go further than Atom!</p></div></td></tr></table></div>
  26. <div class="sect3"><h4 id="framework">Framework</h4><div class="ulist"><ul><li><p>Modulize (E)</p></li><li><p>Dependency free (E)</p></li><li><p>Configable , balancable , profilable , level of detail (T)</p></li><li><p>Paralel (E)</p></li></ul></div></div>
  27. <div class="sect3"><h4 id="data-structure">Data Structure</h4><div class="ulist"><ul><li><p>State (T)</p></li><li><p>Tree (T)</p></li><li><p>Graph (T)(E)</p></li><li><p>Geometric (T)(E)</p></li></ul></div></div>
  28. <div class="sect3"><h4 id="general-algorimth-and-support-techs">General algorimth and Support techs</h4><div class="ulist"><ul><li><p>Optimizing problem(E)</p></li><li><p>Constraint programming(E)</p></li><li><p>Fuzzy logic(E)</p></li><li><p>Probability</p></li><li><p>Genetic (T)(E)</p></li><li><p>Neutral network (T)(E)</p></li><li><p>Rule base (T)(E)</p></li><li><p>Scripting (T)</p></li></ul></div></div>
  29. <div class="sect3"><h4 id="general-ai-techs">General AI Techs</h4><div class="ulist"><ul><li><p>Movement</p><div class="ulist"><ul><li><p>Kinematic</p></li><li><p>Physics embed</p></li><li><p>Steering</p><div class="ulist"><ul><li><p>Boid</p></li><li><p>Swarm</p></li></ul></div></li><li><p>Formation</p></li></ul></div></li><li><p>FSM , HFSM , FFSM for AI (T)</p></li><li><p>Searching</p><div class="ulist"><ul><li><p>Path finding</p><div class="ulist"><ul><li><p>algorimth: A Star, theta Star</p></li><li><p>space: Grid, Hex, Tris, Polys, 3D Block, 3D Terrain, NavMesh, points cloud/, graphs… [more]</p></li><li><p>generate methods: navmesh gen,jump points, choke points, viewset points, … [more]</p></li><li><p>re-touch methods: smooth, reduce, prunning, time-wise, cahing, progessive</p></li><li><p>highly extensible, hookable, configableready to use as corporated with lower and higher techs</p></li></ul></div></li><li><p>General path finding</p><div class="ulist"><ul><li><p>Iterative deepending</p></li><li><p>Some academic stuffs …</p></li></ul></div></li></ul></div></li><li><p>Reasoning</p><div class="ulist"><ul><li><p>Decision Tree</p></li><li><p>Minimax</p></li><li><p>Some academic stuffs …</p></li></ul></div></li><li><p>Planning</p><div class="ulist"><ul><li><p>Goal base</p></li></ul></div></li><li><p>Problem sovling</p></li><li><p>Learning</p></li></ul></div></div>
  30. <div class="sect3"><h4 id="character-ai">Character AI</h4><div class="sect4"><h5 id="human">Human</h5><div class="ulist"><ul><li><p>Chatbot (T)(E)&#169;</p></li><li><p>Dialoge (T)&#169;</p></li><li><p>Emotion (T)&#169;</p></li><li><p>Facial (T)&#169;</p></li><li><p>Voice (T)(E)</p></li><li><p>Gesture (T)(E)</p></li><li><p>CommonSense &#169;</p></li><li><p>Common Human AI usecases &#169;</p></li></ul></div></div>
  31. <div class="sect4"><h5 id="animal">Animal</h5></div></div></div>
  32. <div class="sect2"><h3 id="architecture-and-components">Architecture and components</h3><div class="paragraph"><p>Here are its <a href="../../../jme3/advanced/atom_framework/ai/architecture/architecture.html">Architecture</a> and <a href="../../../jme3/advanced/atom_framework/ai/components/components.html">Components</a>.</p></div>
  33. <div class="paragraph"><p>iframe::http://bubbl.us/view/1860d6/2fd76d/15vmlQSf.3GMg/[width="98%", height="400px", alt="600px,600px", scroll="true",border="true",align="false"]</p></div></div>
  34. <div class="sect2"><h3 id="vision">Vision</h3><div class="paragraph"><p>As the framework grown up, I will bring more unit tests and example cases.</p></div>
  35. <div class="paragraph"><p>Also it should has even better integration with the JME SDK and other Netbean&#8217;s plugins like (weka, neuphons…). Corporate with Code gen, it&#8217;s can easily replace Alice, Manson,etc… as much better 3D non-coding enviroment and one day maybe become the most advanced AI simulation enviroment on earth!</p></div></div>
  36. <div class="sect2"><h3 id="faq">FAQ</h3><div class="paragraph"><p><strong>Question</strong>: Why warpers?</p></div>
  37. <div class="paragraph"><p><strong>Answer</strong>: Not reinventing the wheel, trust in good opensource project, broader use caces, broader user… And last but not least, it&#8217;s just work!
  38. '''</p></div>
  39. <div class="paragraph"><p><strong>Question</strong>: Why java 1.5+?</p></div>
  40. <div class="paragraph"><p><strong>Answer</strong> : Consider this lib is a push to java techs and java&#8217;s game techs. The user are forced to get familiar with the changing world… Yes, AI is a rapid changing subject and we (java game devs) should keep up.
  41. '''</p></div>
  42. <div class="paragraph"><p><strong>Question</strong>: Why f$#kin heavy and not light-weight, real-time, etc???</p></div>
  43. <div class="paragraph"><p><strong>Answer</strong>: This libs provide some features which just optimized enough to run in “quite high performance machine. But it also have sotiphicated methods to config it self. Consider this key feature to keep in mind. Get fit!
  44. '''</p></div>
  45. <div class="paragraph"><p><strong>Question</strong>: Big jar?</p></div>
  46. <div class="paragraph"><p><strong>Answer</strong>: Nope, consider not too big… thanks to Guice, size &lt; 6MBs and can even smaller if you compile it your self and cut the unneccesary things. In some case you want to use <strong>ALL</strong> the features, the whole dependencies will take about <strong>78MB</strong> and <strong>45MB</strong> for the SDK plugins! And Maven should be to used to get every artifacts!
  47. '''</p></div>
  48. <div class="paragraph"><p><strong>Question</strong>: Documentations and javadoc?</p></div>
  49. <div class="paragraph"><p><strong>Answer</strong> : On its way, the orginal author (me, @atomix) are slow (busy) , volunteers are welcome! Also read all the external wel-documented open source libs <a href="../../../jme3/advanced/atom_framework/ai/libs.html">Full list here</a> that this lib depend on are quite enough. Cause its idiom is simple.
  50. '''</p></div>
  51. <div class="paragraph"><p><strong>Question</strong>: I have ideas?</p></div>
  52. <div class="paragraph"><p><strong>Answer</strong> : Tell me , @atomix in the forum.</p></div></div>
  53. <div class="sect2"><h3 id="other-open-source-dependencies">Other open-source dependencies</h3><div class="paragraph"><p>As said, even if I try to rewriten some parts that most critical for real time game, I cannot against the ideas of including every good functions of other libs. So, I provide good way to communicate between them and the way to link them on demand…</p></div>
  54. <div class="paragraph"><p>Let name the libs can be used:
  55. As category</p></div>
  56. <div class="ulist"><ul><li><p>Neutral Network</p></li><li><p>Machine Learning</p></li><li><p>Search</p></li><li><p>Constraint programming</p></li><li><p>Geometry constraint</p></li><li><p>Human language processing</p><div class="ulist"><ul><li><p>Chatbot</p></li></ul></div></li></ul></div></div></div>
  57. <div class="sect2"><h3 id="documentation">Documentation</h3><div class="sect2"><h3 id="basic">Basic</h3></div>
  58. <div class="sect2"><h3 id="examples-usecases">Examples &amp; Usecases</h3></div>
  59. <div class="sect2"><h3 id="api">API</h3></div></div>
  60. <div class="sect2"><h3 id="alternatives">Alternatives</h3><div class="sect2"><h3 id="open-sources">Open sources</h3></div>
  61. <div class="sect2"><h3 id="commercial">Commercial</h3></div>
  62. <div class="sect2"><h3 id="toolset">Toolset</h3></div></div>
  63. <div class="sect1"><h2 id="researches">Researches</h2><div class="sectionbody"><div class="paragraph"><p>Go to <a href="../../../jme3/advanced/atom_framework/researches.html">researches</a></p></div></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2016-07-22 07:15:15 UTC</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
  64. apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
  65. indexName: 'jmonkeyengine',
  66. inputSelector: '#doc-search',
  67. debug: false // Set debug to true if you want to inspect the dropdown
  68. });</script></body></html>