docs.adoc 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. = docs
  2. :author:
  3. :revnumber:
  4. :revdate: 2016/03/17 20:48
  5. :relfileprefix: ../../../
  6. :imagesdir: ../../..
  7. ifdef::env-github,env-browser[:outfilesuffix: .adoc]
  8. == Atom Framework Documentations
  9. Welcome this is the main entrance of Atom framework documentation. Here you will find all the resource you need to start developing with Atom framework. First take a look at the structure of the documentation.
  10. === Structure of the Documentations
  11. . Architecture Design
  12. . General docs
  13. .. Setup
  14. .. Coding and project structure convention
  15. .. Usages of SDK
  16. . Component's docs
  17. .. AtomCore
  18. .. AtomEx
  19. .. AtomSDK
  20. .. TeeHee .. others
  21. == Download and Setup
  22. <<jme3/advanced/atom_framework/docs/setup#,Download and Setup instructions>>
  23. == Design documentation
  24. Design &amp; Architecture documentation page:
  25. <<jme3/advanced/atom_framework/design#,design>>
  26. == The Code
  27. [IMPORTANT]
  28. ====
  29. Make sure that you've read and understanded Atom's Design part
  30. ====
  31. === Programming aspects
  32. * Java
  33. * Groovy
  34. * XML
  35. === Polygot programming
  36. AtomCore (pure Java) supports:
  37. * Functional reactive programming
  38. * Flow based programming
  39. * Component based programming
  40. * Composite based programming
  41. * Data-driven &amp; Model-driven &amp; Domain-driven
  42. Because AtomScripting and others use Groovy, so it inherit (a lot of) polygot capacity from Groovy.
  43. Read: link:http://groovy.codehaus.org/Polyglot+Programming+with+Groovy[http://groovy.codehaus.org/Polyglot+Programming+with+Groovy]
  44. === How can I structure my code?
  45. ....
  46. How can I structure my code in Atom framework and in JME3 games. What is the best practices, some patterns, pros cons and caveat?
  47. ....
  48. link:http://hub.jmonkeyengine.org/forum/topic/how-to-structure-the-game-code/[http://hub.jmonkeyengine.org/forum/topic/how-to-structure-the-game-code/]
  49. More detailed, <<jme3/advanced/atom_framework/docs/code/structure#,Code structure explained>>
  50. You can also find a better examples here in my game examples:
  51. <<jme3/atomixtuts#, Atomix's tutorials games>>
  52. === Code generation
  53. link:http://en.wikipedia.org/wiki/Code_generation_%28compiler%29[http://en.wikipedia.org/wiki/Code_generation_%28compiler%29]
  54. Atom support code generation from multiple sources and to various targets to help speed up and unite production pipeline. <<jme3/advanced/atom_framework/codegen#,CodeGen>> - Ultimate tools for code genration corporate with <<jme3/advanced/atom_framework/atomexasset#,AtomExAsset>> - Ultimate tools for game assets management is 2 facilities in charge for the job.
  55. ==== Sources
  56. * UML
  57. * ECore
  58. * Java code or Java classes with annotations
  59. * Code gen diagrams (modified UML diagrams for games)
  60. * 3D Model and assets
  61. ==== Targets
  62. * Other Model format - via ECore, UML
  63. * Groovy or Java - via ECore, UML, ANTLR
  64. * Java bytecode - via instrument and transformation ASM
  65. * JavaScript - via GWT, ANTLR (supervisor translation)
  66. * StringTemplate, XML, Text, Configurations … and other textbased - via StringTemplate
  67. * Assetpack and other kind of assets - via processing pipeline
  68. === More coding convention
  69. === Configurations
  70. Atom support configs based in Apache Commons Configurations:
  71. link:http://commons.apache.org/proper/commons-configuration/[http://commons.apache.org/proper/commons-configuration/]
  72. Apache Commons Configurations supported configuration format:
  73. * Properties
  74. * XML
  75. * JMX
  76. Additionally Atom support configuration via:
  77. * Java Annotations
  78. * GroovyConfigs
  79. === Scripting
  80. Default scripting language of Atom framework is Groovy.
  81. Some optional groovy facilities are also included (gpars, ASM, ANTLR…)
  82. [IMPORTANT]
  83. ====
  84. But note that AtomCore is not depend in Groovy.
  85. ====
  86. You can also do scripting in other Java scripting frameworks like BeanScript or JavaScript.
  87. Scripting leverage game programming a lot. You can stay inside the running game and make changes into the game enviroment (is just one small advantage aside of other super cool features!). So read about how to do scripting here:
  88. link:http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:atom_framework:atomscripting[http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:atom_framework:atomscripting]
  89. link:http://hub.jmonkeyengine.org/wiki/doku.php/jme3:scripting[http://hub.jmonkeyengine.org/wiki/doku.php/jme3:scripting]
  90. == The Project
  91. Atom provide two editing facilities : AtomEditor for ingame editing and AtomSDK for desktop swing based in Netbean. Both of them working with a Project format and structure defined in AtomEditor structure.
  92. The main format to save Project informations is XML. With default settings format is normal XML, it can be set to used a multiversion XML tree (imagine git but effective in XML).
  93. <<jme3/advanced/atom_framework/docs/project#,Project details>>
  94. === Project structure
  95. The project also has a folder structure (directories and files) convention just like JME3. Aware of that when coding or making assets.
  96. <<jme3/advanced/atom_framework/docs/project/structure#,Project structure>>
  97. === Code or Data?
  98. First take a look at how Atom manage Data…
  99. <<jme3/advanced/atom_framework/atomexasset#,AtomExAsset>>
  100. *One question you may ask: if Atom was so Data+Model-driven and generative. Is code still code or is Data?*
  101. . Code is still code in almost every situations.
  102. . Till it's sent into generation pipelines (when you hit build or so), the new code and assets are generated.
  103. . In pakaging phase, code (as byte code or scripts) are packed completely in jar (or packages format). Some of them are ofucased, zipped then translate via network. They are now data.
  104. . In the run-time enviroment again, they are data of the JVM to execute which instruct the machine to do something (your games)
  105. . Some of data are still data the whole time :Images or 3D Models and almost Assets for examples. But because some user data can be embeded in j3o (script for example) so they are also code in other perspective.
  106. The distingish between data and code just need to be clear if you like to process on them. As long as you don't, they are same bit, forget about the differencies totally - who give a $%it!
  107. === Project settings
  108. == Usage of SDK
  109. === For 3D editing
  110. === For project management
  111. === For code generation
  112. == Components documentations
  113. === Atom Libraries
  114. AtomCore
  115. AtomSripting
  116. AtomEditor
  117. Atom2D
  118. Atom2DEditor
  119. CodeGen
  120. CityGen
  121. AtomEx
  122. AtomExAsset
  123. AtomLight
  124. AtomAnim
  125. AtomAI
  126. AtomTestbed
  127. === Inside AtomSDK
  128. TeeHeeComposer
  129. CharacterCreator
  130. MMO-Machines