| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- == Codegen Introduction
- Code generator for various - cross platform programming languages and paradims. All in one!
- Powered by AtomCore and JME3.
- ==== Inspired by
- ECore
- UML
- MetaWidget
- Other game engines and editor: UDK, Unity, Blender, GameMaker…
- Other node base editor:
- Web world:
- === Features
- Node & Flow & Graph base
- Model base
- Scope & Instruction & Control base
- === Comparasion
- ==== VS MetaWidget OIM
- link:http://metawidget.org/[http://metawidget.org/]
- is for generating UI from objects.
- *CodeGen* is for generating data (objects) from (data) objects.
- ==== VS EMF
- link:https://www.eclipse.org/modeling/emf/[https://www.eclipse.org/modeling/emf/]
- link:http://www.eclipse.org/ecoretools/[http://www.eclipse.org/ecoretools/]
- is for model based generation.
- *CodeGen* works upon EMF and also support others: flow base - scope base paradigm.
- CodeGen tools toward Netbean instead of Eclipse to suite with JME3's SDK. Also CodeGen toward Games, not general applications!
- ==== VS Morph/ BeanMapping / ORM
- Work in higher level than those.
- That's said!
- *CodeGen* work in higher level, solve other problems and depends on MetaWidget, EMF, Morph, BeanMapping and ORM.
- == First look
- === Generation
- link:http://en.wikipedia.org/wiki/Code_generation_%28compiler%29[http://en.wikipedia.org/wiki/Code_generation_%28compiler%29]
- 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.
- Sources
- * UML
- * ECore
- * Java code or Java classes with annotations
- * Code gen diagrams (modified UML diagrams for games)
- * 3D Model and assets
- Targets
- * Other Model format - via ECore, UML
- * Groovy or Java - via ECore, UML, ANTLR
- * Java bytecode - via instrument and transformation ASM
- * JavaScript - via GWT, ANTLR (supervisor translation)
- * StringTemplate, XML, Text, Configurations … and other textbased - via StringTemplate
- * Assetpack and other kind of assets - via processing pipeline
- === Simulation
- == Architecture & Designs
- === MetaWidget Architecture
- link:http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html[http://metawidget.sourceforge.net/doc/reference/en/html/ch02.html]
- link:http://metawidget.sourceforge.net/elevator.php[http://metawidget.sourceforge.net/elevator.php]
- “
- === EMF Architecture
- link:http://wiki.eclipse.org/index.php/EMF/FAQ[http://wiki.eclipse.org/index.php/EMF/FAQ]
- === CodeGen Architecture
- The initial idea of CodeGen is “there is similarity between two, there is a transform available, learnt from above.
- Also take a look at wisdoms and <<jme3/advanced/atom_framework/atomcore/algorithms#,Algorithms>> which AtomCore sketchs for Generation:
- * [Math] A function from one set to another set.
- * [Physics] Energy from one form to another.
- * [Language] Translate sematic from one to another language need a dictionary.
- * [Art] Nothing new, just a cover
- * [Computing] Template is a good abstraction of algorimths.
- * [Programming] DRY and open source.
- * [New techs & trends] Topology and well defined network actually a virtue.
- === Layouts
- GraphLayout
- === Builders
- BlockBuilder
- === Blocks
- CodeBlock
- PlaceHolderBlock
- == Documentation
|