codegen.adoc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. == Codegen Introduction
  2. Code generator for various - cross platform programming languages and paradims. All in one!
  3. Powered by AtomCore and JME3.
  4. ==== Inspired by
  5. ECore
  6. UML
  7. MetaWidget
  8. Other game engines and editor: UDK, Unity, Blender, GameMaker…
  9. Other node base editor:
  10. Web world:
  11. === Features
  12. Node & Flow & Graph base
  13. Model base
  14. Scope & Instruction & Control base
  15. === Comparasion
  16. ==== VS MetaWidget OIM
  17. link:http://metawidget.org/[http://metawidget.org/]
  18. is for generating UI from objects.
  19. *CodeGen* is for generating data (objects) from (data) objects.
  20. ==== VS EMF
  21. link:https://www.eclipse.org/modeling/emf/[https://www.eclipse.org/modeling/emf/]
  22. link:http://www.eclipse.org/ecoretools/[http://www.eclipse.org/ecoretools/]
  23. is for model based generation.
  24. *CodeGen* works upon EMF and also support others: flow base - scope base paradigm.
  25. CodeGen tools toward Netbean instead of Eclipse to suite with JME3's SDK. Also CodeGen toward Games, not general applications!
  26. ==== VS Morph/ BeanMapping / ORM
  27. Work in higher level than those.
  28. That's said!
  29. *CodeGen* work in higher level, solve other problems and depends on MetaWidget, EMF, Morph, BeanMapping and ORM.
  30. == First look
  31. === Generation
  32. link:http://en.wikipedia.org/wiki/Code_generation_%28compiler%29[http://en.wikipedia.org/wiki/Code_generation_%28compiler%29]
  33. Atom support code generation from multiple sources and to various targets to help speed up and unite production pipeline. CodeGen - Ultimate tools for code genration corporate with AtomExAsset - Ultimate tools for game assets management is 2 facilities in charge for the job.
  34. Sources
  35. * UML
  36. * ECore
  37. * Java code or Java classes with annotations
  38. * Code gen diagrams (modified UML diagrams for games)
  39. * 3D Model and assets
  40. Targets
  41. * Other Model format - via ECore, UML
  42. * Groovy or Java - via ECore, UML, ANTLR
  43. * Java bytecode - via instrument and transformation ASM
  44. * JavaScript - via GWT, ANTLR (supervisor translation)
  45. * StringTemplate, XML, Text, Configurations … and other textbased - via StringTemplate
  46. * Assetpack and other kind of assets - via processing pipeline
  47. === Simulation
  48. == Architecture & Designs
  49. === MetaWidget Architecture
  50. link:http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html[http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html]
  51. link:http://metawidget.sourceforge.net/elevator.php[http://metawidget.sourceforge.net/elevator.php]
  52. === EMF Architecture
  53. link:http://wiki.eclipse.org/index.php/EMF/FAQ[http://wiki.eclipse.org/index.php/EMF/FAQ]
  54. === CodeGen Architecture
  55. The initial idea of CodeGen is “there is similarity between two, there is a transform available, learnt from above.
  56. Also take a look at wisdoms and <<jme3/advanced/atom_framework/atomcore/algorithms#,Algorithms>> which AtomCore sketchs for Generation:
  57. * [Math] A function from one set to another set.
  58. * [Physics] Energy from one form to another.
  59. * [Language] Translate sematic from one to another language need a dictionary.
  60. * [Art] Nothing new, just a cover
  61. * [Computing] Template is a good abstraction of algorimths.
  62. * [Programming] DRY and open source.
  63. * [New techs &amp; trends] Topology and well defined network actually a virtue.
  64. === Layouts
  65. GraphLayout
  66. === Builders
  67. BlockBuilder
  68. === Blocks
  69. CodeBlock
  70. PlaceHolderBlock
  71. == Documentation