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

is for generating UI from objects.

CodeGen is for generating data (objects) from (data) objects.

VS EMF

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

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

MORAL: Object has “similar semantic with its UI. A thing has conceptal similarties with its representation, if there is a projection from it to the representation.

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 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