Prechádzať zdrojové kódy

Removed atomix pages.

mitm 5 rokov pred
rodič
commit
b7d96920f8
40 zmenil súbory, kde vykonal 0 pridanie a 4783 odobranie
  1. 0 272
      src/docs/asciidoc/jme3/advanced/atom_framework/ai.adoc
  2. 0 139
      src/docs/asciidoc/jme3/advanced/atom_framework/ai/architecture.adoc
  3. 0 36
      src/docs/asciidoc/jme3/advanced/atom_framework/atom2d.adoc
  4. 0 18
      src/docs/asciidoc/jme3/advanced/atom_framework/atom2deditor.adoc
  5. 0 11
      src/docs/asciidoc/jme3/advanced/atom_framework/atomanim.adoc
  6. 0 458
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore.adoc
  7. 0 24
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/actor.adoc
  8. 0 481
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/algorithms.adoc
  9. 0 46
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/beans.adoc
  10. 0 11
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/cinematic.adoc
  11. 0 53
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/config.adoc
  12. 0 174
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/cycle.adoc
  13. 0 60
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/entitysystem.adoc
  14. 0 11
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/event.adoc
  15. 0 116
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/net.adoc
  16. 0 29
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/scenegraph.adoc
  17. 0 41
      src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/world.adoc
  18. 0 22
      src/docs/asciidoc/jme3/advanced/atom_framework/atomeditor.adoc
  19. 0 157
      src/docs/asciidoc/jme3/advanced/atom_framework/atomex.adoc
  20. 0 231
      src/docs/asciidoc/jme3/advanced/atom_framework/atomexasset.adoc
  21. 0 77
      src/docs/asciidoc/jme3/advanced/atom_framework/atomscripting.adoc
  22. 0 10
      src/docs/asciidoc/jme3/advanced/atom_framework/atomsdk.adoc
  23. 0 163
      src/docs/asciidoc/jme3/advanced/atom_framework/cc.adoc
  24. 0 48
      src/docs/asciidoc/jme3/advanced/atom_framework/citygen.adoc
  25. 0 167
      src/docs/asciidoc/jme3/advanced/atom_framework/codegen.adoc
  26. 0 288
      src/docs/asciidoc/jme3/advanced/atom_framework/comparison.adoc
  27. 0 414
      src/docs/asciidoc/jme3/advanced/atom_framework/design.adoc
  28. 0 145
      src/docs/asciidoc/jme3/advanced/atom_framework/design/patterns.adoc
  29. 0 244
      src/docs/asciidoc/jme3/advanced/atom_framework/docs.adoc
  30. 0 99
      src/docs/asciidoc/jme3/advanced/atom_framework/docs/code/structure.adoc
  31. 0 29
      src/docs/asciidoc/jme3/advanced/atom_framework/docs/managers.adoc
  32. 0 58
      src/docs/asciidoc/jme3/advanced/atom_framework/docs/project.adoc
  33. 0 71
      src/docs/asciidoc/jme3/advanced/atom_framework/docs/setup.adoc
  34. 0 68
      src/docs/asciidoc/jme3/advanced/atom_framework/facial.adoc
  35. 0 203
      src/docs/asciidoc/jme3/advanced/atom_framework/fx.adoc
  36. 0 63
      src/docs/asciidoc/jme3/advanced/atom_framework/gui.adoc
  37. 0 88
      src/docs/asciidoc/jme3/advanced/atom_framework/mmorpgtools.adoc
  38. 0 51
      src/docs/asciidoc/jme3/advanced/atom_framework/rpgcreator.adoc
  39. 0 30
      src/docs/asciidoc/jme3/advanced/atom_framework/status.adoc
  40. 0 77
      src/docs/asciidoc/jme3/advanced/atom_framework/teehee.adoc

+ 0 - 272
src/docs/asciidoc/jme3/advanced/atom_framework/ai.adoc

@@ -1,272 +0,0 @@
-= ai
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomAI
-
-Hi,
-
-This is the wiki for Atom AI framework.
-
-
-image::http://blogs.ifsworld.com/wp-content/uploads/2012/11/AI-lowres.jpg[AI-lowres.jpg,width="200",height="",align="right"]
-
-
-
-=== Questions and Answers
-
-*Question:* What's the h#$ll is AI or why should I bother in this thingy anyway emoji:
-
-*Answer:* It's big, over-complicated and also attractive subject in Game developing.. emoji: emoji:sunglasses
-
-*Question:* What can be use in my game?
-
-*Answer:* Everything… You can use this lib to:
-
-*   solve the common path finding,
-*  let your creature know how to think and learn,
-*  direct your vehicle the way to move,
-*  your camera to interact with the screen,
-*  teach your characters to walk/ talk/ shoot/ trading…
-*  You can also use it in various type of simulations and
-*  even try to solve a mathematic problem.
-
-*Question:* Sound wonderful…? But wait… It should be soooooooo freaking big and heavy, is it *real-time* shit?
-
-*Answer:* 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…
-
-*Question:* Eh… Universal solution can not be true…
-
-*Answer:* Let'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.
-
-*Question:* Nice, I want to try it?
-
-*Answer:* Everything is here at once, sir/ madam !
-More questions ? Not convinced yet? Go to <<FAQ,FAQ>>
-
-
-=== Introducing Atom AI framework
-
-This Atom AI framework are more or less a “framework to bring AI to jME3 game (also means real-time application)!
-
-
-[TIP]
-====
-Here is my picked list of <<jme3/advanced/atom_framework/ai/researches#,researches>> and articles you can read in AI field (game and none-game)
-====
-
-
-
-=== Idea & Buzz
-
-*  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.
-*  It's also come up with a lot of working examples in several game genre (RTS, RPG, FPS, Sport,…).
-*  40% of components, AI algorimth are rewritten by the author (@atomix) to be light-weight and usable in real-time application.
-*  Tend to be used in production application and games and suppose to support broadest cases it can.
-*  Users can use the pieces to build up their own AI part of their games and apps
-*  Pushed to future java techs: dependencies injection, parallel as its core…
-
-
-=== Features
-
-(T) means additional Tools are supported
-
-(C) means with examples cases
-
-(E) means use| depend on external libs
-
-
-[IMPORTANT]
-====
-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's better than nothing, that's the bright side
-====
-
-
-
-[IMPORTANT]
-====
-Read alternatives and searches if you want to go further than Atom!
-====
-
-
-
-==== Framework
-
-*  Modulize (E)
-*  Dependency free (E)
-*  Configable , balancable , profilable , level of detail (T)
-*  Paralel (E)
-
-
-==== Data Structure
-
-*  State (T)
-*  Tree (T)
-*  Graph (T)(E)
-*  Geometric (T)(E)
-
-
-==== General algorimth and Support techs
-
-*  Optimizing problem(E)
-*  Constraint programming(E)
-*  Fuzzy logic(E)
-*  Probability
-*  Genetic (T)(E)
-*  Neutral network (T)(E)
-*  Rule base (T)(E)
-*  Scripting (T)
-
-
-==== General AI Techs
-
-*  Movement
-**  Kinematic
-**  Physics embed
-**  Steering
-***  Boid
-***  Swarm
-
-**  Formation
-
-*  FSM , HFSM , FFSM for AI (T)
-*  Searching
-**  Path finding
-***  algorimth: A Star, theta Star
-***  space: Grid, Hex, Tris, Polys, 3D Block, 3D Terrain, NavMesh, points cloud/, graphs… [more]
-***  generate methods: navmesh gen,jump points, choke points, viewset points, … [more]
-***  re-touch methods: smooth, reduce, prunning, time-wise, cahing, progessive
-***  highly extensible, hookable, configableready to use as corporated with lower and higher techs
-
-**  General path finding
-***  Iterative deepending
-***  Some academic stuffs …
-
-
-*  Reasoning
-**  Decision Tree
-**  Minimax
-**  Some academic stuffs …
-
-*  Planning
-**  Goal base
-
-*  Problem sovling
-*  Learning
-
-
-==== Character AI
-
-
-===== Human
-
-*  Chatbot  (T)(E)(C)
-*  Dialoge (T)(C)
-*  Emotion (T)(C)
-*  Facial (T)(C)
-*  Voice (T)(E)
-*  Gesture (T)(E)
-*  CommonSense (C)
-*  Common Human AI usecases (C)
-
-
-===== Animal
-
-
-=== Architecture and components
-
-Here are its <<jme3/advanced/atom_framework/ai/architecture/architecture#,Architecture>> and <<jme3/advanced/atom_framework/ai/components/components#,Components>>.
-
-iframe::http://bubbl.us/view/1860d6/2fd76d/15vmlQSf.3GMg/[width="98%", height="400px", alt="600px,600px", scroll="true",border="true",align="false"]
-
-
-
-=== Vision
-
-As the framework grown up, I will bring more unit tests and example cases.
-
-Also it should has even better integration with the JME SDK and other Netbean's plugins like (weka, neuphons…). Corporate with Code gen, it'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!
-
-
-=== FAQ
-
-*Question*: Why warpers?
-
-*Answer*: Not reinventing the wheel, trust in good opensource project, broader use caces, broader user… And last but not least, it's just work!
-'''
-
-*Question*: Why java 1.5+?
-
-*Answer* : Consider this lib is a push to java techs and java'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.
-'''
-
-*Question*: Why f$#kin heavy and not light-weight, real-time, etc???
-
-*Answer*: 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!
-'''
-
-*Question*: Big jar?
-
-*Answer*: 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 *ALL* the features, the whole dependencies will take about *78MB* and *45MB* for the SDK plugins! And Maven should be to used to get every artifacts!
-'''
-
-*Question*: Documentations and javadoc?
-
-*Answer* : On its way, the orginal author (me, @atomix) are slow (busy) , volunteers are welcome! Also read all the external wel-documented open source libs <<jme3/advanced/atom_framework/ai/libs#, Full list here>> that this lib depend on are quite enough. Cause its idiom is simple.
-'''
-
-*Question*: I have ideas?
-
-*Answer* : Tell me , @atomix in the forum.
-
-
-=== Other open-source dependencies
-
-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…
-
-Let name the libs can be used:
-As category
-
-*  Neutral Network
-*  Machine Learning
-*  Search
-*  Constraint programming
-*  Geometry constraint
-*  Human language processing
-**  Chatbot
-
-
-
-== Documentation
-
-
-=== Basic
-
-
-=== Examples & Usecases
-
-
-=== API
-
-
-== Alternatives
-
-
-=== Open sources
-
-
-=== Commercial
-
-
-=== Toolset
-
-
-== Researches
-
-Go to <<jme3/advanced/atom_framework/researches#,researches>>

+ 0 - 139
src/docs/asciidoc/jme3/advanced/atom_framework/ai/architecture.adoc

@@ -1,139 +0,0 @@
-= architecture
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomAI
-
-AtomAI is an innovative framework for doing AI for simulations and interactive applications, focus in Games!
-
-
-=== Technologies
-
-AtomAI built up by bleeding-edge of AI technologies based in lastest researches. Underlying, it depends in extensible framework to leverage maximum Java language in spirit of Atom framework.
-
-Many parts of AtomAI are very innovative and actually release the developer from low level concerning and save a lot of time redo common usecases implementations; without errors.
-
-
-=== Dependencies
-
-AtomAI depend a lot in good AI opensource projects
-
-
-==== Java DataStructures & Mechanisms
-
-
-===== Javolution
-
-link:http://javolution.org/[http://javolution.org/]
-
-....
- Because real-time programming requires a time-predictable standard library. Javolution real-time goals are simple: To make your application faster and more time predictable!
-....
-
-Javolution solve some fundamental real-time problems with innovative technologies. Javolution is one of core dependencies of AtomCore and so AtomAI. 
-
-
-===== Guava & Guice
-
-Two google opensource projects that make Java developer's life easier.
-
-
-===== Apache Commons
-
-Lang
-
-BeanUtils 
-
-Math
-
-Logging
-
-
-[TIP]
-====
-Javolution, Guava, Guice, Commons Lang, BeanUtils, Math, Logging are a complete sets of libraries for Real-time applications with testable, logable capacities, fullfill each other and has just a little bit overlaps. You can setup them easily via Maven or gradle with JME3.
-====
-
-
-
-===== XXL
-
-link:http://code.google.com/p/xxl/[http://code.google.com/p/xxl/]
-
-....
- XXL is a Java library that contains a rich infrastructure for implementing advanced query processing functionality. The library offers low-level components like access to raw disks as well as high-level ones like a query optimizer. On the intermediate levels, XXL provides a demand-driven cursor algebra, a framework for indexing and a powerful package for supporting aggregation.
-....
-
-XXL already solved a lot of problems in spatial, relational and metadata… Upon that base, AtomAI focus in higher level of abstraction like Graph, State, Tree; Flow, Stream, Load balance;  later focus more in AI stuffs without worry about lower levels.
-
-
-===== Qi4j
-
-link:http://qi4j.org/[http://qi4j.org/]
-
-....
- is a framework for domain centric application development, including evolved concepts from Aspect Oriented Programming, Dependency Injection and Domain Driven Design.
-....
-
-....
- Qi4j™ is an implementation of Composite Oriented Programming, using the standard Java platform, without the use of any pre-processors or new language elements. Everything you know from Java still applies and you can leverage both your experience and toolkits to become more productive with Composite Oriented Programming today.
-....
-
-Qi4j offers a way to config the system by layers and entities. More over, Entity-Composite (with relasionship enable) compare to Entity-components is a better way to compose things.
-
-
-===== RxJava
-
-link:https://github.com/Netflix/RxJava[https://github.com/Netflix/RxJava]
-
-....
- Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM.
-....
-
-RxJava already provided mechanisms for composing asynchronous and event-based programs. AtomAI then focus in design the flows of events of agents. This is a win-win scenario for boths.
-
-
-==== Scripting
-
-
-===== Groovy
-
-Groovy leverage Java in a very elegent way. Make itself the most valid candidate to being a scripting language for Java and AtomAI to construct a very flexible framework. AtomAI also provide better mechanisms to automatic tasks and tools, give developer more power in editing scripts and actions.
-
-
-==== AI Model and source structure
-
-
-===== AIMA
-
-link:http://code.google.com/p/aima-java/[http://code.google.com/p/aima-java/]
-
-....
- Java implementation of algorithms from Norvig and Russell's Artificial Intelligence - A Modern Approach 3rd Edition
- 
-....
-
-is de-facto for AI techs. AtomAI *modify* and *add implementations* to AIMA-java that intergrate deeply with above technologies, make AIMA the most complete, powerful and open java AI framework.
-
-
-===== Choco
-
-link:https://github.com/chocoteam/choco3[https://github.com/chocoteam/choco3]
-
-....
-  Choco3 is an open-source Java library for Constraint Programming. 
-  Choco3 comes with:
-....
-
-....
-  various type of variables (integer, boolean, set, graph and real),
-  various state-of-the-art constraints (alldifferent, count, nvalues, etc.),
-  various search strategies, from basic ones (first_fail, smallest, etc.) to most complex (impact-based and activity-based search),
-  explanation-based engine, that enables conflict-based back jumping, dynamic backtracking and path repair
-....

+ 0 - 36
src/docs/asciidoc/jme3/advanced/atom_framework/atom2d.adoc

@@ -1,36 +0,0 @@
-= atom2d
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom2D
-
-Atom2D
-
-
-=== Datastructure
-
-
-=== Algorimths
-
-
-=== Geometry
-
-
-=== Assets
-
-
-=== Graphics
-
-
-=== Scenegraph2D
-
-
-=== Tools
-
-(Swing)

+ 0 - 18
src/docs/asciidoc/jme3/advanced/atom_framework/atom2deditor.adoc

@@ -1,18 +0,0 @@
-= atom2deditor
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomEditor
-
-Provide +++<abbr title="Application Programming Interface">API</abbr>+++ and implementation for “reactive in-game editor in JME3 and Atom framework. 
-
-Inspired by: 
-
-Netbean: link:https://netbeans.org/[https://netbeans.org/]
-LightTable: link:http://www.lighttable.com/[http://www.lighttable.com/]

+ 0 - 11
src/docs/asciidoc/jme3/advanced/atom_framework/atomanim.adoc

@@ -1,11 +0,0 @@
-= atomanim
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Animation

+ 0 - 458
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore.adoc

@@ -1,458 +0,0 @@
-= atomcore
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomCore Introduction
-
-AtomCore is the main component of Atom framework.
-
-This is the detailed documentation of AtomCore module architecture, design decisions, implementations and real usecases, examples, resources.
-
-Source: link:https://code.google.com/p/atom-game-framework/source/browse/AtomCore/[https://code.google.com/p/atom-game-framework/source/browse/AtomCore/]
-
-Javadoc:
-
-Issues:
-
-Quick links: _Read if you know ready know the basic_
-
-<<jme3/advanced/atom_framework/atomcore/cycle#,AtomCore Cycle>>
-
-<<jme3/advanced/atom_framework/design/patterns#,AtomCore patterns>>
-
-<<jme3/advanced/atom_framework/atomcore/algorithms#,AtomCore algorithms>>
-
-
-== Architecture Design
-
-Atom philosophy is “Minimal, “Only one.
-
-As a software modeler, you always need more than one thing to decribe your solutions. Atom try to compact them into mimimal sets and if possible, only one piece of consistent but flexible design.
-
-As a developer, you may find it easy to adapt and extend the framework to suite your games and purpose.
-
-Now talk about the most primitive “Core design of the framework is a “Relationship between the “Core and the “Container. This also the most important concept of philosophy of the universe, sciences and of course programming.
-
-AtomCore leverages Java programming with concepts and ultilities for various pairs of Core-Container (common in game development) such as: Actor &amp; Stage, Player &amp; League, Task &amp; Manager, Worker &amp; Thread, Entity &amp; Context, UI &amp; Layout, Stream &amp; Pipeline, Pipeline &amp; Topology…
-
-Beside of those common basis pairs, collections, graphs and other datastructure, executions, pattern and behaviours are also supported!
-
-The details of those techniques will be listed below.
-
-
-=== The core features:
-
-Features of AtomCore
-
-*  Cross game-genre elements: stage, cycle, entity, logic, trigger, event, config;
-*  Managers and management: Advanced assets manager, IOC, AOP, dependecy injection, factory, scripting, basic DB..;
-*  Common case: Common state, common scenerio, common UIs…
-
-Below you will read about how each feature is implemented in AtomCore.
-
-
-==== Cross game-genre elements
-
-From an abstraction level, a Game- a special kind of software (almost always):
-
-*  composed by Entities, and their Stage;
-*  where Actions happen in a Cycle, procedure Events;
-
-A little bit more detailed, Gameplay is the way player play the Game, has:
-
-*  Logic:
-**  Trigger: in which Conditions, active some appropriate Action, as primitive brick.
-**  Rule: the laws, restrictions form the game rule which player, entities obey.
-
-*  Routines: Situations/ Events/ Actions that happen in the game Cycle.
-**  Story/Cinematic mode: When player just watch the game like a movie.
-**  Interactive mode: When player interact with the game world
-
-*  Control: The way player handle their entities
-*  League:
-**  Player, Matchs, Groups and their infos &amp; activities
-**  Single: Infos, score, rewards stick to an individual
-**  Multi: The way players join, left, make friend and interactive and play together…
-
-*  Status: Way to pause/continue , save/load current game
-
-The game “software should be published in specific enviroment called Context, it then has:
-
-*  Configurations : appropriate settings for specific enviroment, device.
-*  Data : appropriate size and format
-
-
-===== Around Bean
-
-
-[NOTE]
-====
-This is so important to mention that every techs Atom framework are around Bean/ POJO technologies.
-====
-
-
-In <<jme3/advanced/atom_framework/atomcore/beans#,AtomCore Bean>> are leverage in a few ways:
-
-*  Modeling
-*  Generating
-*  Binding
-*  Mapping / Morphing
-*  Instropecting
-*  Managed
-
-
-===== Attend Cycle
-
-In JME3 we almost see the things work like this, the “almighty” Cycle:
-
-<<jme3/advanced/update_loop#,jme3:advanced:update_loop>>
-
-.  Input listeners respond to mouse clicks and keyboard presses – Input handling
-.  Update game state:
-..  Update overall game state – Execute Application States
-...  User code update – Execute simpleUpdate() method
-...  Logical update of entities – Execute Custom Controls
-
-
-.  Render audio and video
-..  Application States rendering.
-..  Scene rendering.
-..  User code rendering – Execute simpleRender() method.
-
-.  Repeat loop.
-
-The reason this cycle exists is because of JME3 application tied strictly with monotholic processing method, and the main convict is OpenGL.
-
-In Atom, is not actually the case!! Atom try to connect various parts of facilities in networks and try to run as independent-parallel as it can. Cycle defined as a pre-ordered routine is not suiable with the work of parallel processing and enterprise… That's why a sotiphicated customable-expandable “cycle is the heart to Atom framework which made it a solid replacement of “old JME3 cycle.
-
-Read more details in AtomCore's Cycle.
-
-<<jme3/advanced/atom_framework/atomcore#,atomcore>>
-
-
-===== As core of a whole Enterprise
-
-As a long term follower of Spring (one of Atom inspiration) :
-link:http://spring.io/[http://spring.io/]  …
-link:http://en.wikipedia.org/wiki/Spring_framework[http://en.wikipedia.org/wiki/Spring_framework]
-
-I learnt few things,eventually Spring is for Enterprise, so most of its features is accessed through AtomEx, but AtomCore will have some of its goods to be integrated later.
-
-<<jme3/advanced/atom_framework/atomex#,atomex>>
-
-
-=== AtomCore concepts
-
-....
- From the cross-genre games elements mentioned above, AtomCore introduce some concepts which latter implemented in classes in appropriate packages.
-....
-
-
-==== Entity
-
-
-===== Managers
-
-AtomCore introduce the concepts of Manager (then Helper, Worker, Actor later). What are they?
-
-Managers are useful objects (usually Singleton) to manage aspects of a game, such as Rendering,  Sounds, World, Assets, Networks, Effects, etc…
-
-Managers are born to help developer manage/ monitor/ manipulate every conner/ moment/ objects in the game code base and run-time activites.
-
-Manager is the concept of who have responsibities and power over others (as its children or employee in the real world), essentially it is a list of its children, and have basic opertions like add,remove to manage that list… You can also think about it as the Control of the MVC paradigm where it is the mediator between Model and View. In JME3, you see Manager every where such as AssetManager, StateManager as the wraper of underlying functions. So, event mixed up quite a lot concepts at once, Manager in Scripting is extremely useful and fullfill the missing piece of the picture we are painting for a while here.
-
-To clean the mist of confusion about mixed of concepts a little bit, there are some practical wisdoms about Manager implementation:
-
-....
-  Manager acts globally, handy: usually a Singleton, or really easy to reference in script
-  Manager wrap underlying details in intuitive way
-  Manager share common informations
-  Manager executions are frequently : like in an default update cycle
-  Manager have power over its children : its handle it children; in almost scenarios child has left its Manager's list come hollow (as null)
-....
-
-Entity related - Managers can be considered as the other piece in constrast with Entity, as it manage entity existing and activities.
-
-Also note that Managers normally form a Tree, with Hierarchy or dependency as commonly seen in OOP.
-
-But, the Manager-Entity system is not forced to be in relationship with each other! If work as a flat array, the Manager system can be transform to a Component process as seen in COP. This open a door to integrated deeply with Component base solutions as describled below.
-
-
-===== Actor
-
-
-===== Task & Worker
-
-
-===== Helper
-
-
-===== Component base solution
-
-
-[IMPORTANT]
-====
-We (forum members) and game devs all over the world also have controversial conversations, debates and judgments about it. But I have to admit its an undeniable trend game maker all head into in the next decade as the revolution of GPU, CPU employ data oriented approach and batch processing a lot.
-====
-
-
-You can read about Component base solutions and architecture here:
-
-In AtomCore I sketch some interface of ES in which not care much about the implementation of the ES (pure data, smart bean, DB backed what ever…), open possiblities to intergrated ES libs in Atom framework.
-
-
-==== Common implementations
-
-....
-  Of course a framewok is almost meaningless if it just contain psuedo code or interfaces without inplementation. I also implemented some common and useful piecies of code which ready to use :p.
-....
-
-
-===== Common Cycle
-
-The first thing should be mentioned, as essentital to the framework is root of the game activities: the Cycle - Ordered activities that repeat over and over!
-
-My basic form of game Cycle aka CommonCycle crafted to work well with AppState concept of JME3 and other existed Managers (StateManager, AssetManager, InputManager..).
-
-The Cycle consist 6 basis methods:
-
-.  init : Lazy init and be injected with its dependencies declaretion
-.  load : Load assets or underlying data (later than its dependencies)
-.  config : reconfig if need, even in update
-.  start : trigger start a working routine of the object
-.  update
-.  end
-
-why 6? Why cycle? The customizable version of cycle? Introduce new cycles, queues and stuffs. read <<jme3/advanced/atom_framework/atomcore/cycle#,cycle>>
-
-
-==== Common scenarios
-
-Common scenarios that almost every game have, help you to startup easily. That mean the code is there in the library, you can also overide because its very extensible!
-
-*  Manage entities: add/remove/select
-*  Composable logic: with condition, trigger
-*  Event messaging system (network ready): as inner / outter communicate media with eventbus and non blocking network
-*  Provide user functions and controls: As State, Control, Actors
-*  Game status persistent: Save/ Load/ Replay
-*  Routines: Interactive / non interactive as Cycle change to InteractiveMode or CinematicMode. Handle Tasks, Actions in good concurent way (multi threading, actor..).
-*  Easy UI making: as common ui below
-
-
-== Common scenarios Detailed
-
-
-=== Game related
-
-
-==== Managed entities
-
-The AtomCore offer (but not forced) you a way to manage “your entities (game objects) embeded to a scenegraph . This is the distinct point that made AtomCore entity difference with “other entity framework (component entity, pure data, …)
-
-Detail:
-
-
-==== Composable logic
-
-In AtomCore version 0.1, i've implementated my own Conditional checking and composing classes and functions to build up a composable logic system. That means compose a logic phrase out of 2 boolean values: true and false!
-
-This system later can be use as piece in Gameplay composing, piece of Decision tree, as Guard in Finite State Machine, as condition in selecting…
-
-In AtomCore 0.2, I made a change, consider big affect to the whole AtomCore I adapted to Guava's Function and Predicate. What's so intereting about Java's functional flavours? It provides more ways to compose logic, also more consise, readable, resuable if done right… Read more about Predicate:
-link:http://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Predicates[http://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Predicates]
-link:http://java.dzone.com/articles/google-guavas-predicates[http://java.dzone.com/articles/google-guavas-predicates]
-
-Detail:
-
-
-==== Event message system
-
-With eventbus
-
-non blocking network
-
-
-==== Common state
-
-In turn, along with this pre defined cycle, some common states which ready to use
-
-*  LoadState : load / watch
-*  MenuState : select / option / ingame / exit
-*  InGameState : pause/ stop
-
-
-==== Common Routines
-
-Handle Tasks, Actions in good concurent way (multi threading, actor..).
-
-
-===== Common Controls
-
-EntityControl
-
-SpatialEditorControl
-
-AtomCharacterControl
-
-AtomAnimationControl
-
-IKControl
-
-
-==== Common Actors
-
-
-==== Game status persistent
-
-
-===== Save
-
-
-===== Load
-
-
-===== Replay
-
-
-==== Common UIs
-
-Provide a easy way to make +++<abbr title="Graphical User Interface">GUI</abbr>+++ out of XML, bean, text, script… as seen in MetaWidget. Binding means input and data transaction ready.
-
-Some common game UI as FlashScreen, MainMenu, Options, Lobby, Credit…
-
-Advanced UI operation is on AtomGUI
-
-
-=== Application related
-
-
-==== Common Configs
-
-
-==== Common Services
-
-
-=== Packages
-
-
-==== sg.atom.core
-
-Core elements of the framework.
-
-*  annotations 	Annotations to setting up elements in java code. [Same in every packages!]
-*  assets 			Facilities to import / export assets from JME3 pipeline
-*  bean			Facilities to use Java bean in Atom context with mapping and binding.
-*  config			Facilities to use Configs in Atom, with the help of Common Configuration
-*  context			Bridge concepts help to bring entities from one enviroment to others crossed platforms.
-*  execution		Facilities for execution, with help of Common lang and Guava
-*  lifecycle		Concepts for game (and real time application) cycle
-*  monitor			Facilities to monitor your game and application
-*  timing			Concepts &amp; Facilities for real time application
-
-
-==== sg.atom.entity
-
-Concepts and Facilities to build up Game object. [Beta]
-
-
-==== sg.atom.fx
-
-Concepts and Facilities to create and manage animations and effects.
-
-*  anim			Concepts for animation
-*  automatic 		Automatic driven for animation
-*  constraint		Other way to declare relationship between entities and activities
-*  filters			Additions to JME3 filters
-*  functional		Functional flavours for effects
-*  particles 		Concepts to build bigger system from smaller part [Atom concepts]
-*  sprite			Concepts for cross dimensional elements
-*  timeline		Enhance of timming framework
-*  transition		Transition between stateful objects
-*  tween			Object interpolations.
-
-
-==== sg.atom.gameplay
-
-Concepts and facilities for games (cross-genre)
-
-*  action			Concepts and interfaces for action in games
-*  controls		Additional to JME3 character controls
-*  league			Leagues  group and tournament of players
-*  managers		Manager of leagues  group and tournament of players
-*  player			Player and their data
-*  replay			To record the game activities
-*  score			To recored the game results
-
-
-==== sg.atom.logic
-
-Basic block for building game from a programming language via formal system.
-
-
-==== sg.atom.net
-
-Concepts and interfaces for connectivity and communication via networks
-
-
-==== sg.atom.stage
-
-Concepts and facilities for cinematography like games
-
-*  actor			Bridge from entities to actor framework
-*  cine			Sostiphicate cinematic framework for complex video games
-*  helpers			“Inplace controls which know about Stage. Bridge from JME3 Controls concepts
-*  input			Sostiphicate high level input system use for develop and test game
-*  select			Facilities for selecting (from input) an on screen spatial or entities
-*  sound			Additional facilities to JME3 sound system
-*  sync			Additional facilities to syncing between multi thread progress
-
-
-==== sg.atom.state
-
-Additional for JME3 app state (bridge between to systems) and some common states for a common games
-
-
-==== sg.atom.ui
-
-General +++<abbr title="Graphical User Interface">GUI</abbr>+++ for user interaction and styling in hierachy (non-strict) elements
-
-
-==== sg.atom.utils
-
-Collections of userful utilities and datastructures, algorimths here and there.
-
-
-[WARNING]
-====
-Note: This package contains a lot of stuff borrowed from libraries and should be clean up. Do not rely too much in this library!
-====
-
-
-
-==== sg.atom.world
-
-Concepts and interfaces to build and manage the game world and enviroment
-
-*  gen				Generate the world from data
-*  geometry		Maths for geometries
-*  lod				Level of detail framework provides a lot of methods to optimize scene and geometry.
-*  material		Additional to JME3 material system
-*  physics			Additional to JME3 physic system
-*  rendering		Additional to JME3 render system
-*  terrain			Additional to JME3 terrain system
-*  visibility		Additional to JME3 cull and partition system
-
-
-== Documentation
-
-
-== Troubleshooting, gotchas & Best practices
-
-
-== Contributions

+ 0 - 24
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/actor.adoc

@@ -1,24 +0,0 @@
-= actor
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-Actor is
-
-AtomActor is
-
-
-== Concepts
-
-
-=== Act
-
-
-=== React
-
-
-=== Interact

+ 0 - 481
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/algorithms.adoc

@@ -1,481 +0,0 @@
-= algorithms
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Algorimths for games
-
-Single (or serveral) objective algorimths useful for games.
-
-link:http://en.wikipedia.org/wiki/Algorithm[http://en.wikipedia.org/wiki/Algorithm]
-
-link:http://en.wikipedia.org/wiki/Linear_programming[http://en.wikipedia.org/wiki/Linear_programming]
-
-Algorithm is a step-by-step procedure for calculations. An algorithm is an effective method expressed as a finite list[1] of well-defined instructions[2] for calculating a function.[3] Starting from an initial state and initial input (perhaps empty),[4] the instructions describe a computation that, when executed, proceeds through a finite[5] number of well-defined successive states, eventually producing “output[6] and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.[7]
-
-Linear programming (LP, or linear optimization) is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. More formally, linear programming is a technique for the optimization of a linear objective function, subject to linear equality and linear inequality constraints. Its feasible region is a convex polyhedron, which is a set defined as the intersection of finitely many half spaces, each of which is defined by a linear inequality. Its objective function is a real-valued affine function defined on this polyhedron. A linear programming algorithm finds a point in the polyhedron where this function has the smallest (or largest) value if such a point exists.
-
-
-=== Why use this ... for games?
-
-This package provides algorithms common in game developments. More to come but first let's take a look of those problems it trying to solve to distingish the objective and goals of this package compare to collection and others.
-
-
-==== It's not another Collection (DataStructure) or Pattern package!
-
-Sort, concurrent, packing, data compressing is also partial relate to its processing method (that's algorithm) but first, they are provided as the core of the programming language, second we want to care more about the high level of abstraction, not the details. It use “interface of structure for its explaination and progress.
-
-Also, pattern is the term refered to a popular method in software developmenet. Pattern is also in higher level of abstraction compare to algorimths. So consider pattern is the law and algorimth is the effective way of making the job work effectively obey that law.
-
-Algorithms involve logic, a lot of them. But it higher level than logic. And of course algorithms need math (some physics, philosophy also) to be smart!
-
-Algorithms are used heavily in AI. But this package only provide pure algorithms which can be used also outside of AI topics.
-
-That's said:
-
-*  Datastructure, Pattern, Logic and AI are supported elsewhere!
-**  Algorimths depends in Pattern, Logic, Interface of Structure.
-
-
-==== Each algorithm has a goal (or several) to accomplish!
-
-Developer want to use the algorithm they know to solve one or more goals (problem, requirement, aspect, situation, … what ever you call it). The algorithms provided here are the bricks for you to use and reuse, for different purposes. And you may notice the package also be arranged into purposes instead of implementations - techniques or another structure. That's explained the reason!
-
-
-==== For games?
-
-Yes, not all of the problems we know are solved by this library…??? You've already know. It not even sotiphicated like the alternatives below but they are extremely useful for average programmers; especially game programmer, who, usually focus in the fun side (Am I right? :) )
-
-The library try to provide useful algorithms (best practices and wisdoms) enough for a wide range of usecases and also used in Atom framework its self. The algorimths them self may use another algorimths to solve sub-problems. Of course, it also come with examples and a lot of applications &amp; suggestion, which its the algorithms use for you to quickly and smartly solve your own problem thank to it.
-Support algorithms by purposes
-
-....
- 1. Allocation: solve problems about resources.
-       1. Allocate resources efficiently on demand and sastify requirements:
-             1. in an amount of time (interval, arrangement, progess, budget)
-             2. with specific capacities of the network and memory (flow, route, budget)
-             3. with dependencies (order)
-             4. skip or retry if unsuccess (fault-tolerant)
-             5. cache
-       2. Skip resources that fault-tolerant: ( aka Reject)
-             1. Not affect its dependencies, or skip those dependant
-             2. Preseved the continuous, so the flow still smooth
-       3. Release resources ( aka Remove)
-             1. Determiate which resource are no more needed
-             2. Help the gabbage collector, cache to remove it
-       4. Update resources
-             1. Only what that need to be update
-             2. Deffered till the update process not abuse the other pioritied operations
- 2. Balance: find a division, equallity equilibrium between inputs of forces (presure).
-       1. Exchange: when force interact
-       2. Equilibrium: when force include, conccure together and zero total
- 3. Energy : more than just physics simulation, its applied physics-math based methods
-       1. Static:
-       2. Dynamic:
-       3. Potential: 
-       4. Tension:
- 4. Constraint: find a solution that sastify a list of constraints.
-       1. Search for sollution in avaiable space (travel)
-       2. Generate a sollution base in template
- 5. Interval: various problems related to intervals (values a duration of time).
-       1. Progress monitoring
-       2. Schedule jobs
- 6. Optimization: to optimize toward a goal
-       1. Maximize - minimize:
-       2. Resolution: Find a solution upon a known solution (aka neirghboor search)
-       3. Boost: wisdoms  to make higher performance and more efficient algorithms if not saturated (without resolution)
-             1. Reactive
-             2. Adaptive
-             3. Fractal
- 7. Relate: solve problems between things relate to other (Very close to abstract aglebra):
-       1. Reconfiguration: if one change, others react
-       2. Coupling: link-relink-relax link-remove link between two or a group by cateria (aka clustering)
-       3. Dependency: direct/ indirect depend on other and how to isolate
-       4. Order: study of ordering, very similar to sorting wisdoms but in higher level.
- 8. Score: Study the "number","amount" (aka quantity) of things; summarize and judge (aka quality). Wisdoms about: Measuring, scale, approximation, coloring or the alike.
-       1. Budget:
-       2. Audit: (aka Accounting)
-       3. Cardinality:
- 9. Travel: Study the step by step "move" between unit of things. This is a fundamental and essential spirit of algorithms.
-       1. Search: Study the exploring in space.
-       2. Trace: Study the affection (footprint, operations, cost.. ) the algorithms left each step
-       3. Track:  Study the  route  (path, track, flow,...)  the algorithms  pass.
-10.  Generation: good practises in making new things
-       1. Template is the resource of generation
-       2. Production is the progress of creating new things
-....
-
-
-== Concepts
-
-First of all this package has some degree similar to JScience and Opt4J… I can't denied I had used them intensively to know what is good and what is not. About the similarity between Ptolemy and Atom, even the two take different approaches and implementation, you can read from the Atom framework introduction.
-
-Algorimths in computing, programming and game programming has grown, based in knowledges and wisdoms from a lot of other sciences: math, physics, philosophy, chemistry, biology… etc. Here and there the concepts are familiar with developer because they've taught in schools. Some may require extra knowledge from mathematics and physics per se… But you know google can have any way.
-
-Here is the part where the concepts which used in algorithms in Atom framework which you can reference and research futher. Almost every part you can also google about them or try to find it in jscience +++<abbr title="Application Programming Interface">API</abbr>+++ javadoc:
-
-link:http://jscience.org/api/index.html[http://jscience.org/api/index.html]
-
-link:http://jscience.org/experimental/javadoc/[http://jscience.org/experimental/javadoc/]
-
-
-=== From Mathematics
-
-
-==== Algebra
-
-
-==== Topo & Graph
-
-
-=== From Physics
-
-
-==== Common
-
-
-==== Kinematic
-
-
-=== From computing techs
-
-
-=== Saturation of algorithms:
-
-You may notice that if there is a “pattern or “algorimth to optimize a progress. Can we use them repeatly until processing time toward minimum or even zero????
-
-This sounds totally untrue and also ridiculous but an interesting captious way of thinking. 
-
-link:http://algs4.cs.princeton.edu/66intractability/[http://algs4.cs.princeton.edu/66intractability/]
-
-link:http://en.wikipedia.org/wiki/Time_hierarchy_theorem[http://en.wikipedia.org/wiki/Time_hierarchy_theorem]
-
-link:http://www.npr.org/blogs/13.7/2011/09/19/140599268/minds-and-machines-the-limits-of-turing-complete-machines[http://www.npr.org/blogs/13.7/2011/09/19/140599268/minds-and-machines-the-limits-of-turing-complete-machines]
-
-link:http://en.wikipedia.org/wiki/Turing_machine#Computational_complexity_theory[http://en.wikipedia.org/wiki/Turing_machine#Computational_complexity_theory]
-
-Here i used the term the *saturation of algorithms* to describle the problem from overview.
-
-Let say the algorithm A needs B to compute, and than B needs A to compute. The Recursion will be forever in the turing machine such as our computer, until we out of memory or can even cause a crash in some programming language and computer-small scale ones (pc,console…). In real-life, it's hardly useful for game developing. 
-
-For example: 
-
-In Allocation package, we need to compute the dependencies between resources, si call Dependency package. In computing dependency, we need resource so we call allocation package… This loop is actually fine but its will run forever if there is no saturation point or the end point of the recursion calls. 
-
-So in AtomAA, there is a detection of Recursion and cyclic dependency that can break-out early from the infinite loops. Also if Dependency package call, it tell Allocation not to call it again in the amount of time. Allocation then will chose another path of computing by just allocate directly. This not gaurantee to prevent the problem but ease out the percentage you fall into a dead trap. It work pretty much like concurrent contention resolving in by synchronization in Java. 
-
-This mean the context of computing is affect the algorithms, lead the algorithm to context-depend. So is it conflict with the definition of algorithm and wrong? Well, in real-life, some algorithms actually work upon a data structure and context, if not to say all of them. The abstraction and agnostic of algorithm is limit but higher than data structure, it just depend in the “context of computing but work in various data structure, even a new one. It's also better than normal datastructure in this “loop situation. You may experience the situation that datastructure implementation may cause infinite loop with them self or others. At least algorithms try to prevent that…
-
-
-[WARNING]
-====
-*Note:* Actually when the situation happen, there is a way to stop the whole!… but not a clean way to set a flag, clear the flag and continue again, because the next time, the progress can not distingish between the normal processing and the invalid one. At least not a simple way without Tranactional Memeory Model.
-====
-
-
-In development mode, with AtomAA , the programmer will be notified and the progress will stop. A monitoring framework can also help. The determistic of the algorithms over arbitrary data (in real-life) is also quite a challange problem. That's also a caveat in AtomAA its self.
-
-
-== Implementation details
-
-
-[TIP]
-====
-The *[JavaAA]* (Java Atom Algorithms) tags mark what this package support.
-====
-
-
-
-=== Allocation
-
-solve problems about resources.
-
-....
-Allocate resources efficiently on demand and sastify requirements:
-  in an amount of time (interval, arrangement, progess, budget)
-  with specific capacities of the network and memory (flow, route, budget)
-  with dependencies (order)
-  skip or retry if unsuccess (fault-tolerant)
-  cache
-Skip resources that fault-tolerant: ( aka Reject)
-  Not affect its dependencies, or skip those dependant
-  Preseved the continuous, so the flow still smooth
-Release resources ( aka Remove)
-  Determiate which resource are no more needed
-  Help the gabbage collector, cache to remove it
-Update resources
-  Only what that need to be update
-  Deffered till the update process not abuse the other pioritied operations
-....
-
-
-=== Balance:
-
-....
-find a division, distribution for equality, find equilibrium between inputs of forces (presure).
- Exchange: when force interact
- Equilibrium: when force include, concur together and zero total
- 
-....
-
-higher wisdoms than equality and difference. Its the progress of making two or more things equal by exchanging one by one (local optimal or greedy). It's also a study of distribution to find equilibrium between inputs of forces. This problem araise a lot in classical game theory and later game developing. 
-
-Read: 
-link:http://en.wikipedia.org/wiki/Game_theory[http://en.wikipedia.org/wiki/Game_theory]
-
-link:http://en.wikipedia.org/wiki/Solution_concept[http://en.wikipedia.org/wiki/Solution_concept]
-
-link:http://en.wikipedia.org/wiki/Nash_equilibrium[http://en.wikipedia.org/wiki/Nash_equilibrium]
-
-link:http://en.wikipedia.org/wiki/Ultimatum_game[http://en.wikipedia.org/wiki/Ultimatum_game]
-
-
-=== Energy :
-
-....
-more than just physics simulation, its applied physics-math based methods
-  Static:
-  Dynamic:
-  Potential: 
-  Tension:
-....
-
-
-=== Constraint:
-
-find a solution that sastify a list of constraints.
-
-....
-Search for sollution in avaiable space (travel)
-Generate a sollution base in template
-  
-....
-
-
-=== Interval:
-
-various problems related to intervals (values a duration of time).
- Progress monitoring
- Schedule jobs
-
-
-=== Optimization:
-
-to optimize toward a goal
-
-....
- Maximize - minimize:
- Resolution: Find a solution upon a known solution (aka neirghboor search)
- Boost: wisdoms  to make higher performance and more efficient algorithms if not saturated (without resolution)
-   Reactive
-   Adaptive
-   Fractal
- Evolutionary: 
-....
-
-
-=== Relate:
-
- solve problems between things relate to other (Very close to abstract aglebra):
-
-....
- Reconfiguration: if one change, others react
- Coupling: link-relink-relax link-remove link between two or a group by cateria (aka clustering)
- Dependency: direct/ indirect depend on other and how to isolate
- Order: study of ordering, very similar to sorting wisdoms but in higher level.
-....
-
-The relationship between things cause complex problems, this package try to solve a subset of problems which is useful in programming and gamedev in general. Relation is very abstract, but some of  “relationship problems are well-defined like:
-
-*  the cause of declaration of relationships 
-*  the dependency between two subject
-*  the direction, order of relation or force
-*  the configuration need to the relationship
-
-*Dependency*: If one object “declare relationship to another, aka one-direction link:
-*Coupling*: If two objects “declare relationship between each other, aka bi-direction link:
-
-*  [Real-life] Imagine the marriage law when two get married :) 
-*  [Computing] The dependency between packages, modules, operations, tasks.
-*  [JavaAA] 
-**  The links can be create or not? 
-***  to prevent NullPointException if you invoke an empty link.
-***  to prevent IllegalException because of tabboo
-***  full satifaction conditions?
-
-**  What need for a link to be create? 
-***  load needed assets, classes, modules.. - like what osgi and maven does
-***  the first-attempt configuration in the two subjects.
-
-
-
-*Reconfiguration*: If two objet “change the relationship and the affections.
-
-*  [Real-life] Imagine a devote, and the fate of the property and children
-*  [Computing] Reconfiguration cause computation in the said domain and cause a chains of reaction in the network. The reconfiguration can cause “bigger affection than the first time config, but how to decrease the cost?
-*  [JavaAA] 
-**  Is there anything i can save?
-***  what is still valid and update just the delta?
-***  what is properly unchanged and really can not be changed?
-***  what will be abandond after reconfig?
-***  can the reconfig progress delay or divide-to-conquer?
-
-**  This also envolve in general LOD (LevelOfDetail) problems, which mainly focus in reconfig after changes. Divide-to-conquer is the main wisdom of this class of problems.
-
-
-*Order*: directions, or the order of travelling when bunch of objects are related.
-
-*  [Real-life] I want to travel in a city by roads. I have to know the map.
-*  [Computing] Graph problems and how to change the direction of processing
-*  [JavaAA] 
-**  Sort in graphs &amp; Order of Nodes
-**  Direction of Track
-**  Order of Intervals (conccurent progresses)
-
-
-
-=== Score:
-
-Study the “number,“amount (aka quantity) of things; summarize and judge (aka quality). Wisdoms about: Measuring, scale, approximation, coloring or the alike.
-
-....
- Budget:
- Audit: (aka Accounting)
- Cardinality:
- 
-....
-
-This package support the invoke of functions and actions for measurement in single step or a chain of steps. Also it provide the remain of power within a Budget. After serveral of steps, it can invoke audit for examine the progress. For doing this, it has to know detail about Unit by understand Cardinality in the context. 
-
-This package depend in Commons Math and JScience for useful functions.
-
-
-=== Travel:
-
-Study the step by step “move between unit of things. This is a fundamental and essential spirit of algorithms. <<jme3/advanced/atom_framework/atomcore/algorithms#algorimths_for_games,Read back algorithm definition above>>
-
-....
- Search: Study the exploring in space.
- Trace: Study the affection (footprint, operations, cost.. ) the algorithms left each step
- Track:  Study the  route  (path, track, flow,...)  the algorithms  pass.
- 
-....
-
-Travel depend in relate. It Explores bunch of things that relate to each others in a space (Data space, time space). The process known as Search. Doing Search, it left Traces. Flowing trace in each step, one can see a Track or a Flow of the progress.
-
-This package support: datastructure-agnostic search, traces and tracks (beside of those already supported in Java, Guava…)
-
-Search:  
-DFS, BFS, Traveler 
-
-Trace: 
-Visit, Footprint (mark), Cost
-
-Track: 
-ForwardTrack, BackwardTrack, Flow (TotalCostTrack-SingleStepCostTrack), FlowCapacity
-
-
-=== Generation:
-
- good practises in making new things
-
-....
- Template is the resource of generation
- Production is the progress of creating new things
-....
-
-A collections of wisdoms explain what/why/how to generate new things smart and efficiently.
-
-*  [Math] A function from one domain to another domain. 
-**  link:http://en.wikipedia.org/wiki/Function_%28mathematics%29[http://en.wikipedia.org/wiki/Function_%28mathematics%29]
-
-*  [Physics] Energy from one form to another. 
-**  link:http://en.wikipedia.org/wiki/Conservation_of_energy[http://en.wikipedia.org/wiki/Conservation_of_energy]
-
-*  [Language] Translate sematic from one to another language need a dictionary. 
-**  link:http://en.wikipedia.org/wiki/Semantic_similarity[http://en.wikipedia.org/wiki/Semantic_similarity]
-
-*  [Art] Nothing new, just a cover. 
-**  link:http://www.brainyquote.com/quotes/quotes/p/pablopicas380469.html[http://www.brainyquote.com/quotes/quotes/p/pablopicas380469.html]
-**  link:http://idioms.thefreedictionary.com/There+is+nothing+new+under+the+sun[http://idioms.thefreedictionary.com/There+is+nothing+new+under+the+sun]
-**  link:http://thephilthyway.files.wordpress.com/2012/09/boycottapple.png?w=549&h=279[http://thephilthyway.files.wordpress.com/2012/09/boycottapple.png?w=549&amp;h=279]
-
-*  [Computing] Template is a good abstraction of algorimths. 
-**  link:http://en.wikipedia.org/wiki/Generic_programming[http://en.wikipedia.org/wiki/Generic_programming]
-
-*  [Programming] DRY , data-driven and open source. 
-**  link:http://en.wikipedia.org/wiki/Don%27t_repeat_yourself[http://en.wikipedia.org/wiki/Don%27t_repeat_yourself]
-**  link:http://en.wikipedia.org/wiki/Open_source[http://en.wikipedia.org/wiki/Open_source]
-**  link:http://en.wikipedia.org/wiki/Data-driven_programming[http://en.wikipedia.org/wiki/Data-driven_programming]
-
-*  [New techs &amp; trends] Topology and well defined network actually a virtue. 
-**  link:http://en.wikipedia.org/wiki/Distributed_computing[http://en.wikipedia.org/wiki/Distributed_computing] 
-**  link:http://storm.incubator.apache.org/[http://storm.incubator.apache.org/]
-
-
-
-=== Limitations and futures
-
-Only simple forms. But External libs can be hooked!
-
-Usage of interface from sg.atom.world.physics package, should be all in sg.atom.utils only!
-
-Lack of unit tests. But in the future
-
-Lack of better documentation and education. Here you are, improve it your self.
-
-
-== Applications
-
-
-=== In Atom framework
-
-Used in Asset/Task packages
-
-
-=== Others
-
-This small library can be used in a wide range of applications especially games and simulations. 
-
-
-[TIP]
-====
-Don't limit your imagination
-====
-
-
-link:http://en.wikipedia.org/wiki/Algorithmic_game_theory[http://en.wikipedia.org/wiki/Algorithmic_game_theory]
-
-link:http://en.wikipedia.org/wiki/LP-type_problem[http://en.wikipedia.org/wiki/LP-type_problem]
-
-link:http://en.wikipedia.org/wiki/Multi-agent_systems[http://en.wikipedia.org/wiki/Multi-agent_systems]
-
-link:http://en.wikipedia.org/wiki/Auction_Theory[http://en.wikipedia.org/wiki/Auction_Theory]
-
-
-== Alternatives
-
-For scientific wisdom in Java:
-
-link:http://jscience.org/[http://jscience.org/]
-
-For full-ledged multi objective meta heristic algorithms, try:
-
-link:http://www.joptimizer.com[http://www.joptimizer.com]
-
-link:http://opt4j.sourceforge.net/[http://opt4j.sourceforge.net/]
-
-link:http://jmetal.sourceforge.net/[http://jmetal.sourceforge.net/]
-
-Constraint programming and solver:
-
-Choco
-
-JACK
-
-JaCop

+ 0 - 46
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/beans.adoc

@@ -1,46 +0,0 @@
-= beans
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom framework's Beans
-
-
-=== Technologies
-
-Bean is nothing new in Java, actually is … (a long story) plain old :)
-What Atom'sBeans try to do is similar to EJB without its complexility. Because we have to use it in real-time enviroment, we have to make its fast and have high through put performance.
-
-*  Bean binding : reactive binding with generated functions like 2-way mapping below
-*  Bean mapping / morphing : bytecode generation (or reflection) for mapping and interpolating, remote syncing 
-*  Bean modelling : code generation directly from java-java, java-xml, java-html
-*  Bean generation : bytecode generation with conventions, specifications, configurations to make Java's Object's bytecode cross platform as data
-*  Distributed bean: distributed bean with RPC and syncing
-
-The most different between this bean frameworks and others is it stand in J2SE specification and make bean related job really easy as it should! See to believe.
-
-
-=== Components
-
-
-=== AtomBean
-
-
-=== Bean binding
-
-
-=== Bean mapping / morphing
-
-
-=== Bean modeling
-
-
-=== Bean generation
-
-
-=== Distributed Bean

+ 0 - 11
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/cinematic.adoc

@@ -1,11 +0,0 @@
-= cinematic
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Cinematic

+ 0 - 53
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/config.adoc

@@ -1,53 +0,0 @@
-= config
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Configurations
-
-Atom Configurations provide facilities for do configurations and profiles for enviroments, Games of course instead of just normal Java applications.
-
-
-=== The past
-
-First let's take a look into the past of years and see how Java developers do configurations for their applications: 
-
-*  The config files for application in desktop enviroments may loaded from user's home, or the app's folder. The config files can be plain text, XML, JSON, binary or something else.
-*  The config can also be received from external sources like from network services, database. The protocol for them can be object base (POJO), relational structure based (resultset) or else …
-*  The config can also be intelligently procedure based in the stats and infos of the device or deployed enviroment…
-
-So there is not a single way to do configurations. Is there an unified way now?
-The answer is still NO. Configurations is the aspect of gamedev SHOULD be kept flexible the most. Tricks and smart stuffs can involve in this progress a lot: optimizations, per device &amp; per user configuration, policies… In another hand, it keep you busy with tricky parts and complexibilities of underlying datastructure and extra progress.
-
-Some other libraries and game engine tend to hide the detail from developer and provide a premade solutions for configurations in supported enviroment. 
-
-Ex: LibGDX with Prefs, Unity with Metadata, XNA with Properties…
-
-The more configurations apart from Data and Code, the more it getting complex. In the other hand, getting closer, it mixed and tangled with Data and Code. So how can we make it the right way?
-
-
-=== The solutions
-
-The Solution is actually very practical as it should. It's the corporation of existed techniques but with a fine-tuned and industrial approaches. The “Fine tuning are predefined or customized by the user them self (if they know how to do it). Isn't it what is configurations is all about. Think about a ridiculous control panel which have only one button, and the other complex and also not very useful with 300 of them… This framework is your control panel, tailored by you! What it help:
-
-.  There are “fine-tuned configurations for enviroments , devices, users, or aspects… and custom configurations for arbitrary scope and context.
-.  Abstract out the data structure of configurations and its lower level of persist, load and communications.
-.  Revolution in the publish, deloy enviroment and progress: to make the configuration actually is data (and code…), not something else.
-
-
-=== Technologies
-
-.  AtomEx's Universe provide a repository of configuration profiles. Concepts and mechanisms of Atom's Universe is the similar to Maven repository. So Java dev can use Maven or Gradle to include them at development time (or even runtime). In runtime, an IOC mechanism is provide for configurations initialization similar to Spring system.
-.  Apache Commons &amp; Archaius to abstract out the data structure of configurations. Under them are Utils that consider appliance of configurations as watchable Tasks.
-.  Gradle and Go is employed in the deploy progress make it very flexible and watchable. Configuration publishing is supported by tailored +++<abbr title="Graphical User Interface">GUI</abbr>+++ Editors in JMP. Generic configuration editors for Text, Properties, XML, JSON… are also provided.
-
-
-== Toolset
-
-
-== Documentation

+ 0 - 174
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/cycle.adoc

@@ -1,174 +0,0 @@
-= cycle
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Well defined Cycles
-
-Cycle are ordered activities which repeat over and over during the entire application life time. It's usually referred as game loop.
-
-If you see a cycle as a list (ordered collection) of actions that the application does one at a time. You will see the application Iterate over them. In the opposite view (or in the action body), a traveller (usually data) seen it drag from one to the next one, so call pull to next step.
-
-As Atom also support reactive programming, it's essential that developer should understand clearly what is the benefit of program with this direction or other. To get (Between) BEST OF BOTH WORLD!
-
-
-=== Why 6?
-
-Game programmer usually stick with 3 steps execution
-
-.  init
-.  update
-.  destroy
-
-Instead of that, Atom use 6 steps execution cycle:
-
-.  init
-.  start
-.  load
-.  config
-.  update
-.  finish
-
-These 6, I carefully learnt from other “good module and component framework I 've use: Wicket, OSGi,Spring…they have different steps number!
-
-link:http://wicketguide.comsysto.com/guide/chapter6.html#chapter6_1[http://wicketguide.comsysto.com/guide/chapter6.html#chapter6_1]
-
-link:http://en.wikipedia.org/wiki/OSGi#Life-cycle[http://en.wikipedia.org/wiki/OSGi#Life-cycle]
-
-link:http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm[http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm]
-
-The reason of these 6 step routine compare to 2,3,4,5.. or any other division is to support lazy loading, heavy task, gabage collection wise, much more…
-
-So we usually have these 3 main methods:
-
-....
-init , start , end
-....
-
-For a real-time game, we need 2 more:
-
-....
-load, update
-
-....
-
-“Config method is kind of a replicate of “init or “load, or confusion of these two, even can be done in “update somehow but in fact, it's worth to be separated. The config step will help you gain a lot in the way to extend the frameworks or to adapt/scale  your game to smaller or bigger usecase, anyway 6 “is not too much but enough !
-
-Anyway this is a common cycle and compromise between ICycle who join the Atom conversations; that's hook in methods (classic style isn't it?). Beside of that, you can define your own routines through safe tasks and channels which provided by AtomMain. Though this tunnels, all your operations are guarantee to be not conflict in concurrent term with any other jobs of Managers, actors or helpers. So the Data is for you until you end the tasks (or be shut by forced because timeout for ex)!!
-
-
-=== Pull or push?
-
-As said in the analysis about JME3's patterns, especially rendering and update loop, it's pull and push at the same time. Confused? Yes it's… Why is so confused?
-
-Java developers are “toooo familiar with MVC architecture that bring to us by Swing and all classic sun solutions. That's why we find them in every programming books and every beginner's articles, especially if you develops game in desktop, (obviously in swing also). OpenGL and LWJGL also start as window based solution. So that we get “used to it… Latter, a lot of web frameworks also make tanged mess of push &amp; pull concepts?
-
-Swing-MVC concepts are embeded in a event-driven enviroment… and it's actually pull.
-
-Real-time application can be event-driven or not. As my exprience, apply this Swing-MVC to real-time application not usually help greatly but sounds very confused and blury. It can help if you too familiar with it anyway, but be careful or you break the MVC contracts easily and make it not useful. You can blindy apply it without concerning of consequence, but that don’t make any sense.
-
-The solid and only reason to say JME3 is pull and push, and why we still has to stop once for a while because of OpenGL via LWJGL is still monotholic! Not the GPU processing or GPU-CPU data exchange. So we still have to stop at the renderer's door, knock and wait until its done, then go to next step? Umh not quite.
-
-But to do this, we have to not depend in the update() and render() methods to get to total freedom.
-
-
-==== Concurrent / Parallel world
-
-Welcome to the parallel world which some time the well-defined cycle not even exist.
-
-But the routine or the flow does exist indeed!
-
-Just look at how your “data or “signal actually run through your systems, though “node and “stages as a network of roads &amp; cars. This actually a well-study area known as data flow analysis. In a perspective, data seem to be “pushed from sources to targets. Some may also view its as data are “requested by some nodes and “pulled by those nodes.
-
-link:https://github.com/Netflix/RxJava/wiki[https://github.com/Netflix/RxJava/wiki]
-
-
-==== What is the new routines options?
-
-Even if “Cycle- which we used to known is just a conceptual view of points, my solution for this problem is to declare several new kinds of well-defined “Cycle :
-
-.  Push cycle
-.  Pull cycle
-.  Non-cycle
-
-… because defining routines in Atom is not only free but also helps in a lot of situations like when you interact with GUIs, networks or webs.
-
-
-===== Pull cycle
-
-To connect to Swing MVC (also a pull cycle) with events, you can wrap them in Actors and let events send as messages between actors. The Swing actor in the EDT act as the brigde here.
-
-
-===== Push cycle
-
-As in functional reactive programming and flow based programming, functions (small piece of jobs) are flow with their data. A flow is not a well defined cycle but a routine and can be monitored.
-
-
-===== Non-cycle
-
-A serial of Tasks can also form atribinary routines ( non-cycle) and be coordinated together via Data they exchange.
-
-
-[TIP]
-====
-Goto AtomPar for more concurrent/ paralell concepts and advices
-====
-
-
-
-== Customable cycles
-
-
-=== Customable routines
-
-Via tasks and workers, you can atribinary make your own cycle that do anything around and later participate in the rendering stage and JME logic stage (if they want).
-
-This freedom of doing things (in parallel if you want) is thanks to lock-free concurrent algorimths and data structure that Atom use. In other hand, the synchonizing problem is under research!
-
-Read: <<jme3/advanced/atom_framework/atomcore/concurrent#, AtomPar>>
-
-
-==== Customable (rendering) bucket
-
-Bucket is a way to layered your rendering queue into layers or separate them into different categories (aka buckets) to handle differently.
-
-With a composable comperator, a sub-list from a list, or a sub-tree from a tree, even a sub-graph from a entire scene graph can be extracted, or the whole collection can be sorted arcordingly. Custom bucket in Atom framework is implemented in AtomLight package to extend JME3 rendering pipeline.
-
-Note that a custom bucket is not very efficient! Even though if you enable a setting, Atom will take care of its render order and the update will be “IO wise with special indexing structure call B-Tree. If you use it without cautions it can require a lot of memory and make your rendering suffer.
-
-
-== Cycle & Scale
-
-You can see there is a trend for networks call non blocking IO, which Node.js is the first most and remarkable success. In that world, there is actually not a wellform cycle or turn at all. Because if there is a Queue or a lock, a insist port holder or an strict order (like a cycle), it can not scale at all!!
-
-In fact the atribinary networks and async data signals have a lot more problems than we can possible imagine. Not everything can be fast and precise…Some parts (services) may be slow by intend, some parts cause errors frequently.
-
-The fault torrent architecture of AtomEx make sure some sercurity and transactional problems are shielded. AtomDust in another hand focus in highly loose mobile devices and atribinay short range connections. Those carefully design systems for usecases actually make Atom suitable even without a real Cycle.
-
-
-[TIP]
-====
-Read more about AtomEx for Cloud scale and AtomDust of Mobile scale.
-====
-
-
-
-== Technical reviews
-
-
-=== Cycle (or ring)
-
-
-==== Cicular (or ring) buffer
-
-Ring buffer is fast way to make concurrent real time data streaming…
-
-link:http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html[http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html]
-
-
-==== Is there a real cycle? or just a lot of streams

+ 0 - 60
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/entitysystem.adoc

@@ -1,60 +0,0 @@
-= entitysystem
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomES - Entity Ecosystem
-
-*Real Object Oriented Programming Eco system.*
-
-
-=== Innovitation
-
-*OOP is not Class-based!*
-
-Read: link:http://qi4j.org/[http://qi4j.org/]
-
-*Entity System is a good choice to start your game!*
-
-Read: link:http://hub.jmonkeyengine.org/forum/topic/entity-system-topic-united/[http://hub.jmonkeyengine.org/forum/topic/entity-system-topic-united/]
-
-<<jme3/contributions/entitysystem/detailed#,jme3:contributions:entitysystem:detailed>>
-
-iframe::https://docs.google.com/presentation/d/1R5ovJi67i9ml6zAcmQPlSe9ZNem1Fuo14hoJZi3iRaY/embed?start=false&loop=false&delayms=3000[width="100%", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-
-=== Features
-
-*  Usable implementation which let Entity live in high concurrent distributed (over network) enviroment.
-*  A generic +++<abbr title="Application Programming Interface">API</abbr>+++ to implement a framework for your self
-*  Adapters for other ES frameworks to adapt to AtomES eco-system.
-
-
-== Technical review
-
-
-== Programming aspects
-
-
-=== Reusable
-
-
-=== Event communication
-
-
-=== Concurrent
-
-
-=== Workload and dataflows
-
-
-=== Java Expansion
-
-
-== Documentation

+ 0 - 11
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/event.adoc

@@ -1,11 +0,0 @@
-= event
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomCore 's Events

+ 0 - 116
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/net.adoc

@@ -1,116 +0,0 @@
-= net
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Core Network framework
-
-*Atom Core Network framework is for networked game developing in Java. Powered by JME3, SpiderMonkey, MirrorMonkey and Netty.*
-
-
-=== Introduction
-
-To make developing networked game (multiplayer, social, even MMO..) in JME3 much more easier! With Java, with tools, with monitors!
-
-This module depends in JME3, SpiderMonkey, MirrorMonkey and Netty. It has all the features that libries it depends on have with ultimate extra power!!
-
-You can include Optional modules like Kryo (Kryonet), ProtocolBuffer, Zay-ES which is official extensions for various of usecaces.
-
-
-=== Features
-
-
-=== Concepts & Papers
-
-iframe::https://docs.google.com/presentation/d/1YxUR8fCc115rkokROZb3GVq1J1vRGnGSlwlu6Q_SB48/embed?start=false&loop=false&delayms=3000[width="100%", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-*  Annotations: @Data, @Event, @Sync
-*  Interfaces: Hanler, Fiber, Filter
-*  Ultilities: NetworkType, NetworkService, NetworkBus
-*  Configurations: zero, override via XML, Groovy
-
-
-=== Quick look
-
-
-==== A simple network application
-
-[source,java]
-----
-
-class Client implement NetworkService{
-     DObject dobj;
-
-     void update(float tpf){
-         network.mirror(dobj);
-     }
-
-     public void response(NetworkService service){
-         dobj.mirror(service);
-    }
-}
-
-----
-
-[source,java]
-----
-
-class Server implement NetworkService{
-     DObject dobj;
-
-     void update(float tpf){
-          dobj.change()
-          network.in(client1,client2).mirror(dobj)
-    }
-
-     public void response(NetworkService service){
-         dobj.mirror(service);
-    }
-}
-
-----
-
-
-=== Under the curtain
-
-
-==== Dependencies
-
-
-==== NetworkType
-
-
-==== NetworkService
-
-
-==== NetworkBus
-
-
-== Examples
-
-Some examples 
-
-
-== Documentation
-
-
-=== Basic games networking
-
-link:http://gafferongames.com/networking-for-game-programmers/[http://gafferongames.com/networking-for-game-programmers/]
-
-link:https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking[https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking]
-
-
-=== Programming
-
-
-=== Workflows
-
-
-==== Tools

+ 0 - 29
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/scenegraph.adoc

@@ -1,29 +0,0 @@
-= scenegraph
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== World.Spatial package
-
-Scenegraph
-
-SceneGraphUtils
-
-Spatial Scheduler
-
-Spatial Relation
-
-Spatial Proxy
-
-Spatial hash
-
-Spatial cache
-
-TransformUtils
-
-TransformAligner

+ 0 - 41
src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/world.adoc

@@ -1,41 +0,0 @@
-= world
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== World
-
-
-=== Enviroment
-
-
-=== Geometry
-
-
-=== Generation
-
-
-=== Level of detail
-
-
-=== Materials
-
-
-=== Physics
-
-
-=== Rendering
-
-
-=== Spatial
-
-
-=== Terrain
-
-
-=== Visibility

+ 0 - 22
src/docs/asciidoc/jme3/advanced/atom_framework/atomeditor.adoc

@@ -1,22 +0,0 @@
-= atomeditor
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom2DEditor
-
-Editor for 2D game based in JME3, Atom, Atom2D technologies.
-
-
-=== Inspired by:
-
-Unity2D
-
-Sprite
-
-Web game editor : 

+ 0 - 157
src/docs/asciidoc/jme3/advanced/atom_framework/atomex.adoc

@@ -1,157 +0,0 @@
-= atomex
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Ex framework Introduction
-
-*Hi Monkeys,*
-*Atom Ex* framework helps you biggest steps to make your applications scale to web and distributed computing!
-
-
-[TIP]
-====
-
-It's one of my long-term research, result of more than 6 years of research and 2 years of studying and coding
-====
-
-
-
-=== Idea & Buzz
-
-*Bigger, more powerful with ease*
-[quote]
-____
-From Data Central and Web's battle field, end up in game developing, I've dreamt about games and applications that scale its self in a snap. At first, something like a render-farm to accelerate 3D rendering pipeline or baking lightmap, massive level entities computing to save 3D artist lives, then may be something like 3D collaborative editing enviroment…
-____
-
-Initial Ideas:
-
-*  Get to the cloud with ease, Spring-like but not just Spring
-*  Framework for games and apps(3D) 
-*  Nextgen techs
-
-But technically, is something like this possible at all????
-
-*Yes*, with helps of creative design of tools and frameworks, workflows and lastest technologies!!!
-
-link:http://en.wikipedia.org/wiki/Model-driven_architecture[http://en.wikipedia.org/wiki/Model-driven_architecture]
-
-link:http://en.wikipedia.org/wiki/Data-driven_architecture[http://en.wikipedia.org/wiki/Data-driven_architecture]
-
-.  The first thing that most important to make this idea possible: *Everything are data*, including source code. 
-.  How can it be? Yes, it can if source code are very *generative* , means it can be generated in this way or others. In fact, *generative* is also a key. 
-.  Every aspect of this software development framework involving different kinds of auto-generating. Once again, *automatic* instead of manual is a key
-.  Keep in mind *this is not magic but the lastest technologies* , means it's new, and some people also can not believe it real :p That's easy to understand. 
-
-In fact, current implementation of AtomEx only cover a very small part of the automatic distributed game development but its potential is large. 
-[quote]
-____
-As examples for distributed computing, I made a 3d rendering farm and a lightmap baker for demostration that show well the power of its theory and also helpful but not show much the automatic aspect. [quote]
-____
-In constrast, the example 1000MMORPG show only 1000 LOC (lines of code) of Groovy without the AtomEx's code base can make an full-scale MMORPG with Networking, Multi-nodes Database, servers, monitors, clients, SDKs , much more… which show the power of automatic code generation and model centric architecture. 
-____
-
-____
-
-
-[TIP]
-====
-Go try JMERenderFarmLite link:http://github.com/sgmedia/jme-renderfarm-lite[http://github.com/sgmedia/jme-renderfarm-lite] and 1000MMORPG link:http://github.com/sgmedia/jme-1000loc-mmorpg[http://github.com/sgmedia/jme-1000loc-mmorpg] on github
-====
-
-
-The most attractive and impressive part is this is not a “config hell framework, somehow Spring-like mechaism, but Convention over configuration…
-
-[to be continued]
-
-
-=== Features
-
-
-=== Architecture and components
-
-Here are its architecture and components.
-Atom Ex Core highlights:
-
-*  Beans: Java at its finesse
-*  Generative | Automative as its insistent characteristic
-*  Dependency | Component injection: For modular enterprise software
-*  Utilize the best open-source projects on earths
-*  Meta widget: for a flexible presentation solution
-*  Polymorphing via interfacing software architecture.
-*  Event base, messaging non block 
-*  Paralel ,utilize even GPU
-
-Atom DB : Generate all DAO, configs for persitent. One code, run anywhere.
-
-*  Bridge to ORMs : Cayneene , Hibernate
-*  Bridge to NoSQL : Casabranda , Neo4j
-*  Leverage all with “useful EJB3,Spring ideas and model driven architecture
-
-Atom WebScale : play with only the best in Web world, generate game's website front|admin in few clicks
-
-*  Bridge to Wicket
-*  Bridge to Grails
-*  Bridge to Play
-*  Bridge to SpringMVC
-*  Experiment with HTML5 and JavaScript almighty: Node.js , lot more… <<WebScale,WebScale>>
-
-Atom Cloud : Modulize the game | application project and deploy structure
-
-*  Bridge to Osgi
-*  Ultimate Maven Gradle automatic deployment
-*  Toward Collabrative enviroment
-
-Atom Storm : Distributed computing at its finesse
-
-*  Storm: as its best corporator
-*  Hadoop and folks as the runner-up
-*  Come with ready to use tools help 3D rendering and game creating pipeline
-
-Atom Universal : Bring it all to common open infrastructure
-
-*  Full distributed packages of the Atom framework online
-*  Dynamic flexiable linkage that can suite almost teamwork game developing projects
-*  Simple but powerful Pipeline | Workflow designer
-*  A lot of examples , architype , free stuffs
-*  Code link to OpenShift, Heroku, GoogleAppEngine, AppFrog,… via Git, SVN , Mecury
-*  Utilites to use standard deploy solutions …
-
-Atom Star Dust:
-
-*  Smallscale version of those mentioned components, toward mobile devices and web-base, HTML5 games for ex.
-*  Every where, small tiny, fastest, embed inside others, stick together well. 
-*  This is specific component of Atom framework really show up as “Atom
-
-
-=== Vision
-
-Without trying to bloat, this is a most attractive point of the whole framework - Atom. 
-
-You have open computing power, open infrastructure, open storage and everything under your hand and work as you wish!
-
-Toward “cloud for game development and gaming, even better than that! 
-
-Metaphorically, it's the sweestest result you can milk from the open source cows :p (Sorry if the idiom offense anyone) 
-
-Yeah, money somehow..? But Open spirit in its heart! 
-
-
-=== Other open-source dependencies
-
-
-[WARNING]
-====
-Hundred of opensource projects…Nail it
-====
-
-
-<<jme3/atomixtuts#, Atomix Series of game making>>
-
-GOTO <<jme3/advanced/atom_framework#,This Part of Atom framework >>

+ 0 - 231
src/docs/asciidoc/jme3/advanced/atom_framework/atomexasset.adoc

@@ -1,231 +0,0 @@
-= atomexasset
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== AtomExAssets
-
-The future assets pipeline for JME3 games!
-
-
-=== Features
-
-*  Real pipeline
-*  Multi sources &amp; Multi targets
-
-
-=== The "real" pipeline
-
-Pipeline is a common term in computing and also asset making. From sattelite view, pipeline is progresses between input and output.
-
-image:http://storm.incubator.apache.org/images/topology.png[400px,width="",height=""]
-
-Here in game we talking about Assets aspect, mostly!
-
-In real world, converting-processing data and assets also require amount of times, efforts and cause headaches, almost comparable to making data and assets.
-
-
-[TIP]
-====
-Some of the problems and solutions here can also be applied to other situation and usecaces
-====
-
-
-
-==== Converting
-
-Converting between things is a hard problem:
-
-*  Semantic: “things are different “in contexts.
-*  Incompatible: Converting almost one-direction only. Converter programs sometime not reliable and not support your data
-*  Hidden: Some format is unknown. Some require commercial and $$$
-*  Fault-tolerant: Currently almost asset pipeline is easy to fail and do not support recovery.
-
-
-==== Processing
-
-Processing again is require a lot power:
-
-*  Time: Did you ever generate lightmap or PVS? - It may take a long long wait and easy to fail.
-*  Power and units: Did you ever render a movie? - It may require a render farm.
-*  Connections: Is there anything has to transfer between units? - It may delay the whole progress.
-
-
-==== Innovations
-
-AtomExAsset try to leverage pipelines from ideas inspired:
-
-
-===== From Preon
-
-Bit stream language
-
-
-===== From DataTurbine
-
-Real-time data over network
-
-
-===== From Distributed computing
-
-link:http://storm.incubator.apache.org/[http://storm.incubator.apache.org/] -
-
-
-===== From Other CCDs and Engines
-
-3DSMax and Autodesk programs: Render farm integrated.
-
-Blender: DNA structure
-
-Unity: Metadata and SVN integrated
-
-
-=== Multi sources & Multi targets
-
-
-== First look
-
-
-=== Slides
-
-iframe::https://docs.google.com/presentation/d/1gvh00FBoSYgvryw7Czbcjxrt5TmlK12P14QRdjKo4NA/embed?start=false&loop=false&delayms=3000[width="100%", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-
-=== Architecture
-
-
-=== Supported sources & targets
-
-
-=== Quickstart
-
-
-==== Unified Format? How about NO
-
-“Unified Format (use one format to encoded, decoded all kind of assets) is actually a nice idea but it's not real useful in real life situtations (or not even possible?)
-
-AtomExAsset in other hand has unified pipeline via: Codecs, Flows, EntryPoints. Its “unified data are actually a temporial data which has meta-data embeded.
-
-
-==== Temporial scene data
-
-
-==== Codecs
-
-Models
-
-Textures
-
-Animations
-
-Basic usages
-
-
-==== EntryPoints
-
-EntryPoint is a higher abstract level of AssetKey where we accept the fact that Assets is not actually separated but reference in nested way, via each other and form a topology. We are talking about batch solutions which are very popular in real-life gamedev, and a way to integrate the flow of assets to the normal pipeline…
-
-A lot of AAA games of big company relied on packed and streaming assets (online, from disks..). This assets usually get loaded by chunks instead of a whole at a time, make it possible to process as fast and smooth as possible.
-
-You can see one simple example of the situation when:
-
-*  We reference to a Texture assetkey of a single Tile: assetManager.load(“tile1.png);
-*  We later make a texture atlas of Tiles: tiles.png
-*  How can we reference to the original tile the old way, ignore the fact that it got batched!?
-
-Texture atlas for ex and all kind of batching assets (pack, atlas, uber …) are techniques to optimize/boost  load time and real-time performance. Obfucasion, encoding add an extra layer technique that hide the real data from the back-end user; who shouldn't touch that data and modify them.
-
-Also the always processing nature of the the asset in Atom pipeline require “dynamic entry point which AssetKey's abstraction is not enough. EntryPoint and Flow are two new concept in the playground that you should take time to get familiar with.
-
-
-==== Flows
-
-
-==== J3A
-
-.j3a (see, it looks like j3o) stand for “Alternate Automatic Assets is not actually format, but a meta-data or entry point in the asset system. One can use .j3a as entry point to load what ever he want with just the name, for ex:
-
-....
- assetManager.load("monkey.j3o")
-....
-
-is equal with:
-
-....
- assetManager.load("monkey.j3a")
-....
-
-but the later has extra effects:
-
-*  It put a update watcher over the entry point
-**  the file in filesystem
-**  if you has config for that entry to “link to another remote point (git, remote asset central), it actually manage the linkage for you
-
-*  It manage the flows of the loading progress of that entry
-*  It manage the avaiablility, validation, necessarility of that entry if you are in a streaming scenario
-*  It let the assets pipeline fault tolerant.
-**  So if the entry point is not available yet, you has a place holder util the file is available. The “holding back effect also can be set if need
-**  If the request to the entry point actually timeouted, cached assets are used
-
-
-
-==== Usage along with the "official" asset pipeline
-
-You can see the Atom's asset pipeline as a replacement of the official one. In fact, you can also let them work together seamlessly because Atom pipeline just bypass JME3's assetManager in a few special case.
-
-
-[WARNING]
-====
-Remember Atom's asset pipeline is better for “not-well formed assets. In normal situation, you can use JME3's asset without a doubt!
-====
-
-
-Way1 - Atom over JME3: Put assetManager under an entry point, let call it “SEP - StaticEntryPoint.
-
-....
- assetManager.load("SEP\")
-....
-
-Way2 - Atom with JME#:
-
-....
- assetManager.load(".j3a")
-....
-
-
-== Documentation
-
-
-=== Write encoder & decoder
-
-Models
-
-Textures
-
-Animations
-
-Basic usage
-
-Preon reference:
-
-link:http://preon.codehaus.org/preon-binding/apidocs/1.1-SNAPSHOT/nl/flotsam/preon/codec/package-summary.html[http://preon.codehaus.org/preon-binding/apidocs/1.1-SNAPSHOT/nl/flotsam/preon/codec/package-summary.html]
-
-
-=== Manage dataflow & turbine
-
-
-=== Server & Nodes
-
-AtomExAssets ultimately use Building tools and Framework to help Java developer doing Game assets!
-
-Beside of Defacto of the building tools: Ant &amp; Maven, the new rising star Gradle. AtomExAssets also use the powerful framework:
-
-link:http://www.go.cd/[http://www.go.cd/]
-
-image:http://www.go.cd/images/home-image1.png[home-image1.png,width="",height=""]

+ 0 - 77
src/docs/asciidoc/jme3/advanced/atom_framework/atomscripting.adoc

@@ -1,77 +0,0 @@
-= atomscripting
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Scripting
-
-+++<abbr title="Application Programming Interface">API</abbr>+++ and ultilities for various scripting language upon Atom framework.
-
-
-=== Initial Idea
-
-
-==== Why limited your self in Java?
-
-Java has its quirk, the others JVM language try to fullfill it!
-
-
-==== Scripting - Polygon expanding?
-
-
-==== NEED OF POWERFUL SCRIPTING SYSTEM
-
-iframe::https://docs.google.com/presentation/d/1Kc1ehI1qLbtEGe-6-q8NikY7Q77A6jvozDaX94BqX0g/embed?start=false&loop=false&delayms=3000[width="100%", height="600px", alt="", scroll="true",border="true",align="false"]
-
-
-
-=== OVERVIEW
-
-Leverage Java syntax and capacities through scripting (or polygot expanding) with below languages:
-
-
-==== Features:
-
-Groovy
-
-Scala
-
-JLua
-
-Jython
-
-JavaScript
-
-Clojure
-
-
-=== TECH PROBS
-
-
-==== Incompatible
-
-
-==== Conccurent problems
-
-
-== DESIGN & ARCHITECTURE
-
-Slide
-
-
-== IMPLEMENTATION
-
-Slide
-
-
-== Scripting tutorials
-
-<<jme3/scripting#,Scripting tutorial>>
-
-
-== DOCUMENTATION

+ 0 - 10
src/docs/asciidoc/jme3/advanced/atom_framework/atomsdk.adoc

@@ -1,10 +0,0 @@
-= atomsdk
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-AtomSDK

+ 0 - 163
src/docs/asciidoc/jme3/advanced/atom_framework/cc.adoc

@@ -1,163 +0,0 @@
-= cc
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Character customization Introduction
-
-This is an introduction of Character customization tool of Atom framework
-
-
-[TIP]
-====
-Go to <<jme3/advanced/atom_framework/quickstart#,quickstart>> if you on a rush!
-====
-
-
-
-=== Ideas & Features
-
-
-==== Ideas
-
-The initial idea of Character customization is: We (human) are soooo *similiar*!!
-
-The second idea: *resuable* and *composable*!
-
-.  Cloths, skins, 3dmodels, animation.. are components of a whole, which made up character
-.  The same ideas with component oriented architecture
-
-So to reduce a very big workload of data and assets need for a game with vast data of character (football players, etc…) More over we can support and encourage gamer to “build their own character! This is how we handle the situations, similiar scenario can happen in a MMOs.
-
-
-==== Features
-
-*  Customize parts of characters (body, face, weapon) in gender | race (male - female, human - animal…), various height, weight!
-*  Customize cloths ( shirt, skirt) and their appearance (color, decal) . The cloth will fit its wearers!
-*  Customize the face with animation, emotions ( eyes, nose, mouth ) with (smile, angry …) goto <<jme3/advanced/atom_framework/facial#,facial>>
-*  As close as seen in current AAA games, open to MMORPG and social games.
-
-
-[IMPORTANT]
-====
-Go to alternatives and researches if you want to go further than Atom!
-====
-
-
-
-[TIP]
-====
-Try some example in Football game's character cusomization <<jme3/atomixtuts/kickgame/cc#,cc>>
-====
-
-
-
-== AtomFacial framework - First look
-
-
-=== Features
-
-.  Template: Slot, Part are “place and “item just like textbox, choicebox in a form.
-.  Composing: Provide Node base way to define Customable parts, material and assets for CC. A mesh can be stiched together again after composing.
-.  Optimization : Compress texture space, mesh verticles
-.  Transformation: Provide way to include mesh morph or bone transformation can be describle in Blender, Free form deformation to make fitable clothes.
-.  Paint and Projection: support layered paint and decal projection (box, cylinder, sphere) in mesh surface, can be baked afterward.
-
-
-=== Screenshots & Video
-
-image:jme3/advanced/atom_framework/youtube_fcf6grenolg[youtube_fcf6grenolg,width="",height=""]
-
-
-=== Techniques
-
-*1) Blend shape* :
-
-*2) Bone* :
-
-*3) Free form deformation*:
-
-
-=== Problems
-
-*1) Blend shape* :
-
-I saw that going to be added into the core soon. So exciting, that will help a tons, as soon as finish, I will make a patch to help import blend shape from blender too. One thing I still have to consider is: Can we make a type of Mesh that save a whole topology from Blender or other CAD and then become the base mesh for futher manipulate?
-
-*2) Bone* :
-
-I saw the current behavior of Bone, SkeletonControl are quite limited. I remember once @nehon explain that we don’t save the Length of the bone, but the trans/rot/scale just like a mat4… In fact, we can save more information in a Bone, and it will help tons when it come to a situation that someone want to manipulate the bone his self.
-
-_setUserControl_ didn’t sastify me cause I force me to patch the whole animation system just because I want to scale a bone up and down (ex: bigger nose for a character), and sync that with the existed animation. You can say it’s just my very own problem but …
-
-*3) Free form deformation*:
-
-For the need of cloth customization, I made my self a quick FFD system, in fact, it works extactly like a set of bones still have lengths and envelops on them. But in the end, once again I have to hack into the Mesh class and other things, just because a lot of private and final methods… It’s kind of sad that it should not be that hard for the engine users to add more features to the engine if the user want to.
-
-At the end, I just want what I want, that mean I just want things work if it’s really easy, silly me. So is there another way around to make those 2 simple things?
-
-1) Scale/Translate/Rotate a bonebut preseved the current animation. ⇒ If yes, go for Characer custumization and facial…
-
-2) The mesh class is the center of the system, we should provide a way for people to build in from scratch or preseved topology. May be another type of Mesh, like HalfEdge mesh. If the answer it’s No need for now just consider it once in the future (We are not just making game for the moment)!
-
-
-=== Architecture
-
-
-=== Components
-
-
-== Manuals
-
-Go Quick
-
-Go in depth
-
-
-=== Basic video tutorials
-
-
-=== In depth
-
-
-==== Quickstart
-
-
-==== Asset making
-
-
-==== Programming
-
-
-== Researches & Papers
-
-This is a short list of Researches &amp; Papers
-
-I have a Character customization system which i've plan to be quite complete. I reviewed a fews character system including:
-link:http://www.youtube.com/watch?v=RO8GIoRLGa0[http://www.youtube.com/watch?v=RO8GIoRLGa0]
-
-*  Perfect World
-*  APB: Reloaded
-*  Aion
-*  Star Trek Online
-*  Champions Online
-
-Some technical articles:
-
-* link:http://www.heroengine.com/heroengine/dynamic-character-systems/[http://www.heroengine.com/heroengine/dynamic-character-systems/]
-* link:http://hewiki.heroengine.com/wiki/Character_Design_and_Development[http://hewiki.heroengine.com/wiki/Character_Design_and_Development]
-* link:http://anticto.com/[http://anticto.com/]
-
-
-== Alternatives
-
-
-=== Opensource
-
-
-=== Commercial

+ 0 - 48
src/docs/asciidoc/jme3/advanced/atom_framework/citygen.adoc

@@ -1,48 +0,0 @@
-= citygen
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Citygen Introduction
-
-Geometric generator, editor and urban buildings, city simulation. All in one
-
-Powered by AtomCore, AtomAI, TopoMesh and JME3.
-
-
-=== Inspired by
-
-CityEngine
-
-CityGen
-
-Other CCD
-
-
-==== Features
-
-
-=== Shape grammar
-
-
-=== Simulation
-
-
-=== Optimization
-
-
-== First look
-
-
-=== Generation
-
-
-==== Simulation
-
-
-== Documentation

+ 0 - 167
src/docs/asciidoc/jme3/advanced/atom_framework/codegen.adoc

@@ -1,167 +0,0 @@
-= codegen
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== 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 &amp; Flow &amp; Graph base
-
-Model base
-
-Scope &amp; Instruction &amp; 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]
-
-
-[TIP]
-====
-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.
-====
-
-
-
-==== EMF Architecture
-
-link:http://wiki.eclipse.org/index.php/EMF/FAQ[http://wiki.eclipse.org/index.php/EMF/FAQ]
-
-
-[TIP]
-====
-MORAL:
-====
-
-
-
-==== 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 &amp; trends] Topology and well defined network actually a virtue.
-
-
-==== Layouts
-
-GraphLayout
-
-
-==== Builders
-
-BlockBuilder
-
-
-==== Blocks
-
-CodeBlock
-
-PlaceHolderBlock
-
-
-== Documentation

+ 0 - 288
src/docs/asciidoc/jme3/advanced/atom_framework/comparison.adoc

@@ -1,288 +0,0 @@
-= comparison
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Comparisons between 3D libs
-
-Comparisons of general Java 3D which not tied to games and simulation
-
-
-=== JME3
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| JME3
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== JScience
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| JScience
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Plotemy
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Plotemy
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Java3D
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Java3D
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-== Comparisons between 3D game/simulation dev framework
-
-3D game/simulation dev frameworks
-
-
-=== Java GameEngines
-
-Some of them are free and open sourced but limited in features compared to JME3 and Atom together. In fact one can learn the architecture of Atom and plug in their engines. It's not too hard to do so as I did go through that path. The problem is the architecture is very hard to built from different concepts and loads of researches I did in the past 6 years. :)) But yes, they can of course.
-
-
-=== LibGDX
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Unity
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Threerings
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Unity
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Alice
-
-Alice 4 is not open sourced yet
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Unity
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-==== Others
-
-Some of them are free for non-commercial usages. But they're not opensourced and also just a “game engine with a lot of limitation because of this closed model. Other technologies are slowly get into their supports (and even their mind set). In my POV, those limitation's not acceptable for a rapid changing world like we living in.
-
-
-=== Atom vs Unity
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| Unity
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Atom vs UDK
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| UDK
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Atom vs CryEngine
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| CryEngine
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-=== Atom vs HeroEngine
-[cols="3", options="header"]
-|===
-
-<a| Features
-<a| HeroEngine
-<a| Atom
-
-<a| Row 1 Col 1
-<a| Row 1 Col 2
-<a| Row 1 Col 3
-
-<a| Row 2 Col 1
-<a| some colspan
-<a|
-
-<a| Row 3 Col 1
-<a| Row 2 Col 2
-<a| Row 2 Col 3
-
-|===
-
-
-==== Conclusion
-
-Atom and JME3 are young but the vision is clear. We want to build next gen game engine for every one with the lastest technologies!

+ 0 - 414
src/docs/asciidoc/jme3/advanced/atom_framework/design.adoc

@@ -1,414 +0,0 @@
-= design
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Framework Design
-
-This is the repository resulted of the design phase of Atom framework over years.
-
-
-=== Motivation
-
-It born to helps JME3 focus in *game/simulation development*, push futher in lastest/future Java technologies toward to enterpise/AAA game dev as its final goal, but compromise/ compatible with existing insfracture of JME3 and OpenGL.
-
-Its concept, design and archictecture inspired by AAA game engine and Enterprise Java solution.
-
-
-=== Overview
-
-In this page:
-
-.  Goal of Atom framework - which tend to expand JME3 and Java language to suite more for game dev.
-.  Problems of realtime applications (especially games).
-.  Solutions and those base platforms, frameworks that we going to use to approach those goals.
-.  Remain works and future vision
-
-
-== Design goals
-
-
-=== Overal goals
-
-*  Flexible: Game | simulations centric but not forced!
-*  Modular: Dependency injection along with Component injection
-*  Parallel: Embrace parallel computing
-*  Next gen: Come with Bleeding edge technologies and powers of Java languages
-*  Cloud ready: Scale to web and distributed computing
-*  With ease: +++<abbr title="Graphical User Interface">GUI</abbr>+++ Tools everywhere, almost zero config need
-*  Cross devices: Can run wide range of devices PC-mobile-TV.. any one that has java!
-
-
-==== Additional sub goals
-
-*  Minimum dependencies and their overlap
-*  Small footprint &amp; Efficient
-
-
-=== Slides
-
-You can view slides and download papers about the design of Atom framework here.
-
-
-== Real time applications
-
-Atom is designed to *MAKE* concurrent, real-time, embedded systems and *GAMES*
-
-
-=== Atom VS ptolemy
-
-As mentioned in the Atom framwork's introduction, Atom is actually inspired by Plotemy project link:http://ptolemy.eecs.berkeley.edu/index.htm[http://ptolemy.eecs.berkeley.edu/index.htm]
-
- but it actually tend to has various different goals, techniques, mindset and approaches. The comparasion in constrast with Ptolemy will reveal a lot of Atom characteristics.
-
-....
- The Ptolemy project studies modeling, simulation, and design of concurrent, real-time, embedded systems. The focus is on assembly of concurrent components. The key underlying principle in the project is the use of well-defined models of computation that govern the interaction between components.A major problem area being addressed is the use of heterogeneous mixtures of models of computation.
-....
-
-*VS*
-
-....
- Atom is designed to **MAKE** concurrent, real-time, embedded systems and **GAMES**. So it focus more in code generation, profile, monitoring; focus more in graphics, physics, **player experience**... etc.   Underlying, it borrow quite a bunch of concepts that built in Ptolemy (not codes!).
-....
-
-
-==== Goals
-
-So the two projects' *goals* are quite overlapped but have different focus points and mindset!
-
-*  Atom has no or less concern/ interests about mathematic/ physics correctioness ( so simmulations) but the graphics side and overal behaviors.
-*  Atom has open-source spirit… but not academic!! You can see Plotemy is quite “complicated and not very popular as it provided for academic first; in constrast, Atom is broadcasted for every one to use and to make games as kids in sandboxes.
-
-
-==== Techniques differencies:
-
-*  Atom not “just depend on well-defined models!
-*  Atom use simplier models, …but sometime simplier is better!
-**  Simplier Entity model (not abstract out of Java object)
-**  Actor model is not as abstrat also actually from threaded enviroment
-**  No contract in Systems, the study of Systems conections and interactivities are though data-driven analysising only, that's it, a dataflow monitoring system over working system.
-**  Timming: Because of the lack of interests in math/ phycics, time model and precision model is undefined but also from Java platform.
-
-*  Those above and its core techniques that you can find below, lead Atom to be less independent from Java but also has well embeding characteristics of Java languages and run-time enviroments. So can say Atom is built directly on top of Java with no hesitate!
-
-
-=== Atom VS JScience
-
-Atom also depends in Javolution and has some parts from JScience code base but once again the purpose, Atom focus in Games and simulations… Also a lot of techniques Atom is different from one used in JScience.
-
-One can also see that Atom fullfill the lack of JScience's experimental Game package. :)
-
-
-=== Target Devices & Platforms
-
-
-==== PC
-
-
-==== Mobile
-
-
-===== Android
-
-
-==== Web
-
-
-===== HTML5 and WebGL
-
-
-== Problems
-
-
-== Solutions & Frameworks & Platforms
-
-In Java, a lot good opensource projects are already provide solutions for various challanges in software developments. The problem is how to glue those gems together in appropriate way and result in efficient, good quality product - Saving time and efforts.
-
-
-[WARNING]
-====
-Hundred of opensource projects…
-====
-
-
-For example, AtomCore module depends in these high quality libraries:
-
-*  JME3
-*  Common Java JSR annotations:
-*  Apache commons
-**  Lang
-**  Configurations
-**  BeanUtils
-**  Collections
-
-*  Google's
-**  Guava:
-**  Guice: Dependency injection
-**  Snappy:
-**  LevelDB
-**  Auto
-
-*
-
-Other require pieces are write from sk
-
-
-== Atom framework Design course
-
-This section is dedicated to explain some idioms, patterns, and long term solutions for problems and each design goals, structures.
-
-
-=== Game and real-time application
-
-
-==== Cross game-genre elements
-
-From an abstraction level, a Game- a special kind of software (almost always):
-
-*  composed by Entities, and their Stage;
-*  where Actions happen in a Cycle, procedure Events;
-
-A little bit more detailed, Gameplay is the way player play the Game, has:
-
-*  Logic:
-**  Trigger: in which Conditions, active some appropriate Action, as primitive brick.
-**  Rule: the laws, restrictions form the game rule which player, entities obey.
-
-*  Routines: Situations/ Events/ Actions that happen in the game Cycle.
-**  Story/Cinematic mode: When player just watch the game like a movie.
-**  Interactive mode: When player interact with the game world
-
-*  Control: The way player handle their entities
-*  League:
-**  Single: Infos, score, rewards stick to an individual
-**  Multi: The way players join, left, make friend and interactive and play together…
-
-*  Status: Way to pause/continue , save/load current game
-
-The game “software should be published in specific enviroment, it then has:
-
-*  Configurations : appropriate settings for specific enviroment, device.
-*  Data : appropriate size and format
-
-
-==== CPU-GPU interactions
-
-
-==== Java-Native interactions
-
-
-==== Timing
-
-
-==== Cycle
-
-
-=== AtomCore Architecture
-
-The Core is the part that focus in *Game and real-time application*. It declare
-
-You can read more about the Core architecture here.
-<<jme3/advanced/atom_framework/atomcore#,atomcore>>
-
-
-=== Design patterns & Programming paradigms
-
-Consider research through this trusted resources before we go deeper into Atom architecture and where/why/how it apply each Design patterns:
-
-<<jme3/advanced/atom_framework/design/patterns#,patterns>>
-
-
-=== Programming aspects
-
-
-==== Java, but not just Java
-
-The most “Java things in AtomCore is Bean and Properties. Two pure Java data type which are very useful in Game world. Bean is for game object modeling and Properties for configuration.
-
-Of course, other Java technologies are also used but not mentioned because it's not nessesary. But Bean and Properties are the two techs that heavily used!
-
-“Good Java extensions used in AtomCore 0.2+ is:
-Guava:
-
-*  Bring Eventbus, network in a snap
-*  Collection, Fluent, functional syntax and flavour to Java.
-*  Guava also support Cache, reflection and more low level operations
-
-Guice: bring Dependency injection, better unit test, refactoring in a lightweight manner.
-
-Groovy is a JVM language and intergrated deeply with AtomCore, most appreal as Scripting language but remember it also can replace Java, or seen as Java. Groovy also offer much more of superb things.
-
-
-==== Code vs Data
-
-For big game, the amount of Data required can be so much. Mean while the complexity of code also rise fast, as the result of data increasing!
-
-At some point, we have to find a solution to reduce “manual Data + code making and maintaining. That where “generative code also can be seen as a kind of Data was born. This called Data-driven architecture (solution). In AtomCore 0.2, it have features to support this trend.
-
-
-==== Around Bean
-
-
-[NOTE]
-====
-This is so important to mention that every techs Atom framework are around Bean/ POJO technologies.
-====
-
-For example:
-
-*  AtomEX : the bridge to AKKA Actor model also use POJO as its candidate
-*  EJB leverage…
-*  Fx: use POJO as its effect elements
-
-Here is a brief explaination why Bean/ POJO is choosed to be the Core of Atom framework?
-
-....
-As built in Java technologies, Bean/ POJO is the only "consider good" solution as:
-**"the bridge"** **from Java OOP to COP**, **from Java OOP to AOP**
-....
-
-....
-also can be seen as
-**from Object oriented programming to Data oriented programming**
-**from Object oriented programming to Aspect oriented programming**
-....
-
-....
-or **Code but also Data**...
-....
-
-
-=== Polygot programming
-
-....
- I want Best of both worlds!!
- (.. if it's possible?)
-....
-
-Atom in its core try to be polymorphism (polygot programming), to suite with OOP, COP, AOP or functional … Yeah, it's java after all but good kind of Java.
-
-Because AtomScripting and others use Groovy, so it inherit (a lot of) polygot capacity from Groovy.
-
-Read: link:http://groovy-lang.org/Polyglot+Programming+with+Groovy[http://groovy-lang.org/Polyglot+Programming+with+Groovy]
-
-
-==== Functional reactive programming
-
-
-==== Flow based programming
-
-
-==== Component based programming
-
-
-==== Composite based programming
-
-
-==== Data-driven & Model-driven & Domain-driven
-
-
-=== Modular architecture
-
-....
- I want to reuse (or DRY)!!
-....
-
-Take a look at a JME3 game, Manager for example, what if you want the two manager's work together but loosely depend on each other, or what if you want the State to direct the Manager to do something but have minimal informations about them…
-
-More abstract, whenever you have some kind of Service, which is loosely depend on each other, you should try Dependency Injection link:http://martinfowler.com/articles/injection.html[http://martinfowler.com/articles/injection.html] .
-
-That's where Guice help in the big picture.
-
-
-==== Dependency injection
-
-link:https://code.google.com/p/google-guice/[https://code.google.com/p/google-guice/]
-
-
-==== Component Injection
-
-link:http://wiki.apidesign.org/wiki/Component_Injection[http://wiki.apidesign.org/wiki/Component_Injection]
-
-
-==== Dependency injection VS Component Injection
-
-link:http://code.imagej.net/gbh/lookup/DependencyInjectionandLookup.html[http://code.imagej.net/gbh/lookup/DependencyInjectionandLookup.html]
-
-
-==== Dependency management coolness
-
-So what's cool about dependency in real-time application and game that Atom included…
-A lot of things, but let me point out fews:
-
-*Real-time dependency* is a new feature for game developing…
-Imagine that even the game just can load part of assets, with the other are delayed or missing, the dependency graph can help the game cycle continue to run, part of it in the mean time.
-
-In fact the dependency graph can be considered the topo structure of JME assets dependency graph before it built, means hard links via references. Now even when the assets graph are just partly loaded, the game can run because it know a resolution to safety resolve the assets graph and scene graph afterward.
-
-*Enterprise features*
-You can imagine how Atom framework tend to bridge JME game and the Web universal. It's not so hard in fact. Cause Java enterprise technologies are already there to use. Lot of them are built on the top of Dependency injection and Inversion of control (or else)… I really like dependency injection but I can not agree that i should always couple with IoC per se. This will be discuss later in this documentation
-
-
-== Enterprise facilities
-
-
-=== Services, Dependency and Decoupling
-
-The world of enteprise evolve Modular paradigm a lot to link services (database, configurations, network protocols, web…) and help they work together in one application.
-
-
-=== Available Services
-
-Try AtomEx
-
-
-==== To Database
-
-
-==== To other repository
-
-
-==== To configurations
-
-
-==== To web
-
-
-== Monitoring and development workflow
-
-
-== Future vision
-
-
-== References and Inspiration
-
-Atom framework's design is inspried by:
-
-*  Game Engine Architcture book
-*  Game Programming gems serires
-*  AI Game Engine book
-*  AI Game Wisdom book
-
-other GameEngine that I did use:
-
-*  UDK
-*  Unity
-*  CryEngineSDK
-*  JavaScript game engines : CraftyJs, GameQuery ..
-*  Flash game engines : Starling ,
-*  … dozen of close-source engine.
-
-other Java techs:
-
-*  EJB
-*  Spring
-*  Groovy
-*  Netbean
-*  … hunread of open-source projects
-
-Full researched papers list are comming.

+ 0 - 145
src/docs/asciidoc/jme3/advanced/atom_framework/design/patterns.adoc

@@ -1,145 +0,0 @@
-= patterns
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== [Focus in] Design patterns and paradigms
-
-This page is about design patterns, programming paradigms in game developing and those supported in AtomCore.
-
-[WARNING]
-====
-This is *NOT* 1st Computer science class!! Understanding programming paradigms and patterns are very important to who want to do game programming, espeacially in Atom framework; which require *very good* knowledge of paradigms and patterns!
-====
-
-
-
-=== Programming paradigms
-
-Programming generally and programming languages usually designed toward a paradigm, but some of them are multi-paradigm also.
-
-link:http://en.wikipedia.org/wiki/Programming_paradigm[http://en.wikipedia.org/wiki/Programming_paradigm]
-
-link:http://en.wikipedia.org/wiki/Comparison_of_programming_paradigms[http://en.wikipedia.org/wiki/Comparison_of_programming_paradigms]
-
-
-==== Java programming language
-
-
-image::http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Java_logo_and_wordmark.svg/150px-Java_logo_and_wordmark.svg.png[200,width="",height="",align="left"]
- *Java* is a computer programming language that is concurrent, class-based, object-oriented, (mostly) imperative, structured (also referred as strictly typed)
-
-emoji:sunglasses Suppose that when you read this wiki you already know what Java is (partly)
-
-*Groovy*…
-
-image::wiki/groovy-logo.png[200,width="",height="",align="right"]
-
-
-is an agile and dynamic language for the Java Virtual Machine
-builds upon the strengths of Java but has additional power features inspired by languages like Python, Ruby and Smalltalk
-
-link:http://groovy-lang.org/[http://groovy-lang.org/]
-
-
-[TIP]
-====
-Learn groovy: <<jme3/scripting#,jme3:scripting>>
-====
-
-
-
-=== Game Programming paradigms
-
-Game framework or game engines also be comparasion (along with its programming language) into some category (not include graphics capacity):
-
-
-==== By
-
-Entity System
-
-
-==== By concurrent capicity
-
-Active
-
-Reactive
-
-Interactive
-
-
-=== Design patterns
-
-link:http://en.wikipedia.org/wiki/Software_design_pattern[http://en.wikipedia.org/wiki/Software_design_pattern]
-
-link:http://sourcemaking.com/[http://sourcemaking.com/]
-
-link:http://wiki.apidesign.org/wiki/Main_Page[http://wiki.apidesign.org/wiki/Main_Page]
-
-
-=== Design patterns in game developing
-
-link:http://gameprogrammingpatterns.com/[http://gameprogrammingpatterns.com/]
-
-
-==== Singleton . Central . Law of detemer
-
-
-==== Lightweight & Decorator
-
-
-==== Inversion of Control
-
-
-==== Factory
-
-
-==== MVC & MVC?
-
-MPV: Model View Presenter is the two way of
-MVC Model View Controller; where Presenter is the middle-man, the mediator between Model and View know and get notificated by both Model and View.
-
-Talk about MVC first: Assume you know about web
-
-from Wikipedia link:http://en.wikipedia.org/wiki/Web_application_framework#Push-based_vs._pull-based[http://en.wikipedia.org/wiki/Web_application_framework#Push-based_vs._pull-based]
-
-*Push-based vs. pull-based*
-
-....
-Most MVC frameworks follow a push-based architecture also called “action-based”. These frameworks use actions that do the required processing, and then “push” the data to the view layer to render the results.[5] Struts, Django, Ruby on Rails, Symfony, Yii, Spring MVC, Stripes, Play, CodeIgniter, and Struts2[6] are good examples of this architecture. An alternative to this is pull-based architecture, sometimes also called “component-based”. These frameworks start with the view layer, which can then “pull” results from multiple controllers as needed. In this architecture, multiple controllers can be involved with a single view. Lift, Tapestry, JBoss Seam, JavaServer Faces, and Wicket are examples of pull-based architectures.
-....
-
-MVC Push was born in the world of “none frequent” and not suite well for kind of application almost done update every-frame. So there is some kind of Event,Action embed on it.
-
-MVC Pull in another hand, suite better for “frequent update” and assume that View is the one trigger the update call.
-
-Back to real-time game, if you not making a chess game, almost you “are doing” a pull based MVC, or apply this pattern privately.
-
-
-== Design patterns in JME3
-
-Here some analysing about patterns in JME3 world so Atom bypass or inherit them.
-
-
-=== Push or pull ?
-
-worth to note:
-even some part of JME3 assemble MPV, it’s not the whole!
-also for a game, apply MPV is quite annoying and also tricky!
-
-
-[TIP]
-====
-Here is the twist: Actually in JME3, you are doing both, that’s why it look like MVP!
-====
-
-
-because of this cycle
-
-
-== Design patterns in Atom

+ 0 - 244
src/docs/asciidoc/jme3/advanced/atom_framework/docs.adoc

@@ -1,244 +0,0 @@
-= docs
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom Framework Documentations
-
-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.
-
-
-=== Structure of the Documentations
-
-.  Architecture Design
-.  General docs
-..  Setup
-..  Coding and project structure convention
-..  Usages of SDK
-
-.  Component's docs
-..  AtomCore
-..  AtomEx
-..  AtomSDK
-..  TeeHee .. others
-
-
-
-== Download and Setup
-
-<<jme3/advanced/atom_framework/docs/setup#,Download and Setup instructions>>
-
-
-== Design documentation
-
-Design &amp; Architecture documentation page: 
-<<jme3/advanced/atom_framework/design#,design>>
-
-
-== The Code
-
-
-[IMPORTANT]
-====
-Make sure that you've read and understanded Atom's Design part
-====
-
-
-
-=== Programming aspects
-
-*  Java
-*  Groovy
-*  XML
-
-
-=== Polygot programming
-
-AtomCore (pure Java) supports:
-
-*  Functional reactive programming
-*  Flow based programming
-*  Component based programming
-*  Composite based programming
-*  Data-driven &amp; Model-driven &amp; Domain-driven
-
-Because AtomScripting and others use Groovy, so it inherit (a lot of) polygot capacity from Groovy.
-
-Read: link:http://groovy-lang.org/Polyglot+Programming+with+Groovy[http://groovy-lang.org/Polyglot+Programming+with+Groovy]
-
-
-=== How can I structure my code?
-
-....
-How can I structure my code in Atom framework and in JME3 games. What is the best practices, some patterns, pros cons and caveat?
-
-....
-
-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/]
-
-More detailed, <<jme3/advanced/atom_framework/docs/code/structure#,Code structure explained>>
-
-You can also find a better examples here in my game examples:
-<<jme3/atomixtuts#, Atomix's tutorials games>>
-
-
-=== Code 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. <<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.
-
-
-==== 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
-
-
-=== More coding convention
-
-
-=== Configurations
-
-Atom support configs based in Apache Commons Configurations:
-link:http://commons.apache.org/proper/commons-configuration/[http://commons.apache.org/proper/commons-configuration/]
-
-Apache Commons Configurations supported configuration format:
-
-*  Properties 
-*  XML
-*  JMX
-
-Additionally Atom support configuration via:
-
-*  Java Annotations 
-*  GroovyConfigs
-
-
-=== Scripting
-
-Default scripting language of Atom framework is Groovy. 
-
-Some optional groovy facilities are also included (gpars, ASM, ANTLR…) 
-
-
-[IMPORTANT]
-====
-But note that AtomCore is not depend in Groovy.
-====
-
-
-You can also do scripting in other Java scripting frameworks like BeanScript or JavaScript.
-
-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:
-
-<<jme3/advanced/atom_framework/atomscripting#,jme3:advanced:atom_framework:atomscripting>>
-
-<<jme3/scripting#,jme3:scripting>>
-
-
-== The Project
-
-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.
-
-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).
-
-<<jme3/advanced/atom_framework/docs/project#,Project details>>
-
-
-=== Project structure
-
-The project also has a folder structure (directories and files) convention just like JME3. Aware of that when coding or making assets.
-
-<<jme3/advanced/atom_framework/docs/project/structure#,Project structure>>
-
-
-=== Code or Data?
-
-First take a look at how Atom manage Data…
-
-<<jme3/advanced/atom_framework/atomexasset#,AtomExAsset>>
-
-*One question you may ask: if Atom was so Data+Model-driven and generative. Is code still code or is Data?*
-
-.  Code is still code in almost every situations. 
-.  Till it's sent into generation pipelines (when you hit build or so), the new code and assets are generated.
-.  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.
-.  In the run-time enviroment again, they are data of the JVM to execute which instruct the machine to do something (your games)
-.  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.
-
-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!
-
-
-=== Project settings
-
-
-== Usage of SDK
-
-
-=== For 3D editing
-
-
-=== For project management
-
-
-=== For code generation
-
-
-== Components documentations
-
-
-=== Atom Libraries
-
-AtomCore
-
-AtomSripting
-
-AtomEditor
-
-Atom2D
-
-Atom2DEditor
-
-CodeGen
-
-CityGen
-
-AtomEx
-
-AtomExAsset
-
-AtomLight
-
-AtomAnim
-
-AtomAI
-
-AtomTestbed
-
-
-=== Inside AtomSDK
-
-TeeHeeComposer
-
-CharacterCreator
-
-MMO-Machines

+ 0 - 99
src/docs/asciidoc/jme3/advanced/atom_framework/docs/code/structure.adoc

@@ -1,99 +0,0 @@
-= structure
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../../
-:imagesdir: ../../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== How can I structure my code?
-
-
-=== The question
-
-....
-How can I structure my code?
-
-....
-
-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/]
-
-
-=== The pattern
-
-Read the explain about some design patterns in Design <<jme3/advanced/atom_framework/design#,design>>
-
-This queston evolve several patterns like Singleton, Manager, Factory and related directly to the Central idiom of Atom's framework!
-
-
-=== The central
-
-Now talking about the long “getManager().getSubManager().getItsManagedObject().doSomeThing()”
-Consider asking your self this when you code:
-
-.  Can singleton help?
-.  Can hierarchy actually help?
-.  How secure is your application, is it a game or anything else?
-.  How perfomance sensitive your game is?
-
-For this particular example, related to “Law of Demeter” that @zanval88 mentioned is about “communicating range scope” and “hiding information”, appear as “encapsulation” and “reference” in Java.
-
-.  If all your Manager classes is public, and referenced every where chances that they can be Singleton (read more about singleton for its downside).
-.  If not, you should nest your Manager and its ManagedObject it arbitrary order and way. Consider this for a game, it’s almost always not necessary!
-..  When you have your Managers and Object form a “tree” and obey a “cycle” or “protocol” or “common pattern”, may be contract them with an Interface or force them to extend the same base. [I DID this in my Atom framework!]
-..  Actually while a lower (near the core) Manager are more powerful and can capture the whole process, the higher level Manager (extended Manager or sub manager) know better about detail and specific aspects. The split should be carefully thought first to avoid un necessary burden of too much Managers. Personally, I usually think about an interesting example about a society with many cops and few citizens to imagine about this balance.
-
-.  For part of the game, when security are most important but not the performance, or for external services. Long indirect call is the most appropriate method, because of the availability (something should be injected, lazy loaded…) and security (some protol given, real info is hidden from our view,…etc). Without a check of availability, chance that you have NPE all the time!
-.  For part of the game that need performance. I said “a big deal of performance” you should try “singleton” for final class (and bare with its other issuses) or bet in some other flatten type of reference (little bit worse performance – one level of indirect) should also be concerned:
-..  array or list with an index. map via Class(Type) apear as Template in java … 
-...  ex: StateManager.getState(ClassName.class).doSomething(); 
-...  or even more abstract somekind of Central.get(“StateManager”).do(“ItsFunctionName”)!!! I do this in groovy and for Java 8 dynamic invoking
-
-..  evolve your hierarchy with EntitySystem paradigm
-
-
-
-=== The structure
-
-I have a strong conceptual POV about video game, which affected by cinematography a lot. Because English is not my native language I can misunderstood the real meaning of the noun but I’ve tried to find the right words in decade.
-
-This one is mine, maybe only me but noone else :p :
-
-So consider this 5 level of separation:
-
-.  Main : The main entry, have everything only relate to this single game, single application. Also game specific Configs should be here
-.  Core : The shared part can be used in almost every application share the same base
-.  Stage : The ‘Stage’ is the base of entities, activites and events… It’s not nessesary care about the gameplay but the World, Camera, Light and Effects, Cinematic. Stage contain most of the underlying logic, and the actors.
-.  GamePlay: The part care about the routine of the game, the player, characters, stories, items, gameactions, techtree… it’s make the game look more like a game than an normal software or a movie. Gameplay contain most of the interactive part.
-.  State : Even your game routine can be modeled by something else not States, I introduced State to be more friendly with JME3′s AppState concept. I ultilized it and leveraged it, and you should also.
-
-Others optional:
-
-.  *Network : For network game, blending between state, sub-routine and arbitrary events is difficult and may require other kind of paradigm, that’s why is not in Stage, but elsewhere outside.
-.  *Services: If your game use external services such as Web or IAP or something like that.
-.  *UI: UI stand for user interface, almost everygame have user interfaces but not all, so it’s also optional
-.  *Script: For scripting, in my application, I embed Groovy everywhere, but I also preseved a place to hold “tranditional” run-time script that only be awared and executed when the game is already running.
-.  *Model: If you are in a company or from a strong “standard lized” Java workflow, it’s nearly you’ll come up with some Bean like this, but it’s kind of for normal software not a game.
-.  *Generated: Also if you have to embed some XML or some generated sources
-.  *DB: Of course Database and persistent solution can be here( if not better be in the Service section)
-
-…
-
-The directory :
- * src
-
-* my.game.name
-** main
-** core
-** state
-** gameplay
-** (*)network
-** (*)services
-** (*)ui
-** (*)others
-
-
-More detailed, You can find a better example here in my game examples:
-<<jme3/atomixtuts#,atomixtuts>>

+ 0 - 29
src/docs/asciidoc/jme3/advanced/atom_framework/docs/managers.adoc

@@ -1,29 +0,0 @@
-= managers
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom framework's Managers
-
-Read about the Manager idea here <<jme3/advanced/atom_framework/atomcore#,atomcore>>
-
-Atom also have a lot of Managers. *Here suggestion for implemented one!*, you can call it a convention because it's not forced on you to gain more flexibility.
-
-Manager can has SubManagers, as a List or a Map (Hierarchy or not is not forced)
-
-Manager can be extended or Singleton or DefaultInstance (can be getDefault() but not a singleton) here and there. Manager all “attend” in a “cycle” but not “obey”. They can implement ICycle to mark they executor as Obey stricly to the Cycle.
-
-you can do Main.getManager(Class) if your Main support it, or doing the long reference getManager().getSubManager().
-
-You can see it as a hybrid or “no contract yet” – “not stricted to” way of implementing to get “best of both world” out of:
-
-.  singleton vs default vs linked instance
-.  hierarchy vs flatten component base
-.  cycle attend vs a random routine.
-
-In this implementation, I also try to have a good balance between flexibility and usefulness, clearance and performance. In the near future, when my framework is proved to be statable and useful, I will release it fully.

+ 0 - 58
src/docs/asciidoc/jme3/advanced/atom_framework/docs/project.adoc

@@ -1,58 +0,0 @@
-= project
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== The structure
-
-
-=== Videogame structure
-
-I have a strong conceptual POV about video game, which affected by cinematography a lot. Because English is not my native language I can misunderstood the real meaning of the noun but I’ve tried to find the right words in decade.
-
-This one is mine, maybe only me but noone else :p :
-
-So consider this 5 level of separation:
-
-.  Main : The main entry, have everything only relate to this single game, single application. Also game specific Configs should be here
-.  Core : The shared part can be used in almost every application share the same base
-.  Stage : The ‘Stage’ is the base of entities, activites and events… It’s not nessesary care about the gameplay but the World, Camera, Light and Effects, Cinematic. Stage contain most of the underlying logic, and the actors.
-.  GamePlay: The part care about the routine of the game, the player, characters, stories, items, gameactions, techtree… it’s make the game look more like a game than an normal software or a movie. Gameplay contain most of the interactive part.
-.  State : Even your game routine can be modeled by something else not States, I introduced State to be more friendly with JME3′s AppState concept. I ultilized it and leveraged it, and you should also.
-
-Others optional:
-
-.  *Network : For network game, blending between state, sub-routine and arbitrary events is difficult and may require other kind of paradigm, that’s why is not in Stage, but elsewhere outside.
-.  *Services: If your game use external services such as Web or IAP or something like that.
-.  *UI: UI stand for user interface, almost everygame have user interfaces but not all, so it’s also optional
-.  *Script: For scripting, in my application, I embed Groovy everywhere, but I also preseved a place to hold “tranditional” run-time script that only be awared and executed when the game is already running.
-.  *Model: If you are in a company or from a strong “standard lized” Java workflow, it’s nearly you’ll come up with some Bean like this, but it’s kind of for normal software not a game.
-.  *Generated: Also if you have to embed some XML or some generated sources
-.  *DB: Of course Database and persistent solution can be here( if not better be in the Service section)
-
-…
-
-
-=== Project source structure
-
-The directory :
- * src
-
-* my.game.name
-** main
-** core
-** state
-** gameplay
-** (*)network
-** (*)services
-** (*)ui
-** (*)others
-
-
-More detailed, You can find a better example here in my game examples:
-<<jme3/atomixtuts#,atomixtuts>>

+ 0 - 71
src/docs/asciidoc/jme3/advanced/atom_framework/docs/setup.adoc

@@ -1,71 +0,0 @@
-= setup
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../../
-:imagesdir: ../../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Download and Setup
-
-Checklists before you start:
-
-....
-  You has JME3 Engine and SDK installed properly with lastest version
-  You've read the wiki and know what Atom framework is? 
-....
-
-Checkout
-
-....
-  Check out the source from
-....
-
-....
-      http://code.google.com/p/atom-game-framework/source/checkout 
-....
-
-....
-  Open atom-testbed-examples in the SDK. 
-....
-
-
-=== Download
-
-Jar:
-
-Repository:
-
-Update central:
-
-Maven:
-
-Gradle:
-
-
-=== Setup
-
-
-==== For AtomSDK
-
-
-==== For Atom TeeHee
-
-Troubleshoots
-
-If you can not get this basic start, don't worry.
-
-Read back JME3 simple tutorials first and come back. Just take 10 mins or so. :) or goto: link:http://code.google.com/p/atom-game-framework/wiki/Troubleshootings[http://code.google.com/p/atom-game-framework/wiki/Troubleshootings]
-
-Cheer.
-Install AtomSDK from Update Central
-Done, let's make games!
-
-
-== Let's take basic tutorials here.
-
-If you 'are proficient enough with Java+GameDev?+JME3. 
-
-Let's go to immediate tutorials and examples here. 

+ 0 - 68
src/docs/asciidoc/jme3/advanced/atom_framework/facial.adoc

@@ -1,68 +0,0 @@
-= facial
-:author:
-:revnumber:
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Facial Techs Introduction
-
-Eh… What 's so fancy about those AAA games, like MassEffect, Drake and those from UDKs…?
-
-It's all about the face!
-
-....
-  Yeah, indeed. Facial animation play an important role in game industry today. I won't tell you much about how much money are spent to get that character's face talk and lively... From an artist point of view, facial and emotional behavior of human character is the point to make a game's state of art!
-....
-
-Let see how can we do it in JME3, shall we?
-
-
-=== Ideas
-
-*  Customize the face with animations, emotions: ( eyes, nose, mouth ) with (smile, angry …)
-*  User friendly.
-**  For newbies
-**  but also for professinal. especially with those who use FaceFx and UDK
-
-*  Rooms for extends and usecases ( changing art-style, more specialize for simulations…)
-
-
-[IMPORTANT]
-====
-
-Go to <<Researches & Papers,alternatives and researches>> if you want to go further than Atom!
-====
-
-
-
-== AtomFacial framework
-
-image:jme3/advanced/atom_framework/youtube_fcf6grenolg[youtube_fcf6grenolg,width="",height=""]
-
-
-=== Architecture
-
-
-=== Components
-
-
-=== Features
-
-
-== Manuals
-
-
-== Researches & Papers
-
-
-== Alternatives
-
-
-=== Opensource
-
-
-=== Commercial

+ 0 - 203
src/docs/asciidoc/jme3/advanced/atom_framework/fx.adoc

@@ -1,203 +0,0 @@
-= fx
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== FX
-
-Stand for Effects.
-
-Also stand for dynamic value functions f(x). 
-
-Inspired by 
-
-link:http://nodebox.net/node/[http://nodebox.net/node/]
-
-link:http://udk.com[http://udk.com]
-
-
-=== What's about the f(x) ?
-
-For various effects the game may require. Need customable, extensible way to declare input-process-ouput:
-
-.  dynamic generic Data, which can be procedure by various sources, signals, services
-.  dynamic generic declaration of operations
-.  dynamic generic declaration of output order
-
-Last but not least, it should be resuable, generative and composable.
-
-
-==== In Java?
-
-About the implementation, such as language should be under considered!
-
-These all requirements fit to an DSL, functional and lazy like groovy scenario, but what about java - a traditional grown as imperative language? It's like we going to implement all its core language elements for god-sake… Umh, not like that. With the help of Guava, we do it properly acceptable and scalable! But read it carefully first or mislead later!!!
-
-link:http://code.google.com/p/guava-libraries/wiki/FunctionalExplained[http://code.google.com/p/guava-libraries/wiki/FunctionalExplained]
-
-[IMPORTANT]
-====
-This framework's feature goes in two branches: in Java 1.5+ with Guava and in Groovy2+ , the difference will be distinguish later!
-====
-
-
-
-==== Focus in effects
-
-
-[IMPORTANT]
-====
-The abstract concept and even implementation of the Fx framework make it look similar or even exactly like Codegen - the Atom's code generation framework. Because they both lend them selfs from same underlying concepts. But remember Fx is for effects and not focus in the code side. It was born to help people like artist to survive their career without reading more programmin books!!
-====
-
-
-Of course we not going to do a whole language enhancement here but use a functional ultilities to get start up quick and go straight to the “real-time effects part later. But remember the base concepts of it, which really to be extend and custom for your own needs. 
-
-Now Let's see how does it work?
-
-
-=== Interface & Abstract
-
-We need dynamic Data, which can be procedure through various sources, signals, services… let call the abstract which provide the data IValueProvider:
-
-interface IValueProvider &lt;x,y&gt;{
-y   value(x) return new y
-}
-
-Function &lt;x,y&gt; is the default implementation
-
-Function &lt;x,y&gt;{
-}
-
-
-=== Input
-
-So what can be the input?
-
-Single&lt;Value&gt; or any primitive
-
-List&lt;Value&gt; . String
-
-more
-
-
-=== Time factor & Real time application
-
-An important factor of a real time system is … time, indeed. Imagine a physic world functioning with f(t) is the primitive law. Our effects system also. Almost every effects envolve time and almost modify or procedure several positions values. It's a very common case in this scenario.
-
-In fact almost of the F(x) features are actually f(t) which t is the time provided by the system via update cycle. 
-
-Now consider this very simple physic xample :
-
-S = V.t 
-
-pos = startPos + S 
-
-→ pos = startPos + V.t
-
-We have:
-
-.  startPos is a Vector3f (can be localTranslation of a jme3's Spatial!). 
-.  a parameter vector V, basicly stand for the Speed
-.  t is time provided by system
-.  plus and multiply is numberical operations
-
-→ We can compute the new pos which we can use as a slide of a ball!
-
-In this simplest example, we should reads a mathematic equations as a “procedural process in our fx system with time as an essential key. Which later will help us build up extraordary complex effect!
-
-
-==== Animations concepts
-
-Here we will revised some animation concept. Kinematic and functionals.
-
-
-===== Timeline
-
-
-===== Keyframe
-
-
-===== Sequence
-
-
-===== Track
-
-
-=== Operations
-
-
-==== Single operation
-
-
-===== Math
-
-
-===== Add remove
-
-
-==== List operation
-
-
-===== Add remove
-
-
-===== Transfrom
-
-
-===== Indexing
-
-
-==== 3D Geometric operation
-
-
-===== Curve . Interpolator
-
-IValueProvider
-
-
-===== Layout
-
-
-===== Shape and formation
-
-
-===== Steering
-
-
-== Effects
-
-
-[NOTE]
-====
-Ideas from Adobe After effect ,3DSMax, Cinema4D, Processing, Blender…!
-====
-
-
-
-=== Text Effects
-
-One of the most under rated part in almost every 3d game engine I come across is the *Text effect*. We *DO* need Text effect but it didn't have any native support. I've started by doing a lot of After effect's text effects and plugin, then trying in 3DSMax, Cinema4D, later in Processing… but I can not find one that make me feel easy to use and powerful. From some ideas borrow from those applications, I try to implement some in this framework.
-
-
-=== Particle Effects
-
-
-=== Cinematic Effects
-
-
-=== Color & Texture Effects
-
-
-=== Mesh & Spatials Effects
-
-
-=== Animation Effects
-
-
-=== Scripted Effects

+ 0 - 63
src/docs/asciidoc/jme3/advanced/atom_framework/gui.adoc

@@ -1,63 +0,0 @@
-= gui
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Atom's GUI
-
-In Atom framework, I choose NiftyGUI because its much more features, expandable, have active developing status, and good friendly supports. 
-
-AtomGUI is the base of AtomEditor component (of Atom framework), which in turn provide easy editing support for game objects, configs and such, just like Swing does with Java's bean and Models, but in 3D with hardware accelarated.
-
-
-=== Additions
-
-My additions for NiftyGUI:
-
-*  Lightweight MVC
-**  Template framework
-**  a Groovy builder
-**  a +++<abbr title="Cascading Style Sheets">CSS</abbr>+++ (Cascaded Style Sheet) implementation (for NiftyGUI), even a LESS
-**  a simplier Localization framework
-**  GQuery stand for “JQuery in Groovy
-**  a lot of Groovy  scripting and functional sugar for NiftyGUI
-
-
-=== Ideas
-
-
-==== JavaScript and Web world Ideas
-
-It's worthy to note that I come from the Web world, and I use JavaScript everyday beside of Java. That's why I always want “good things in JavaScript world show up in game dev world.
-
-Things such like Template, +++<abbr title="Cascading Style Sheets">CSS</abbr>+++, GQuery, … corporate tightly with JME3 systems but with a lot of additional gun and gears. Make Nifty and JME3 a real powerful monkey as it should!
-
-
-=== Template and CSS
-
-Every Web framework come with a Template framework, facade and styles make the Web world colorful and attractive but +++<abbr title="HyperText Markup Language">HTML</abbr>+++ and +++<abbr title="Cascading Style Sheets">CSS</abbr>+++ is a blow-up standard!!! 
-
-What we trying to do here is to make is compact and usable but with posibility to enhance and extend.
-There are some “good template framework in the Java and JavaScript world:
-- Mustache
-- StringBuilder
-- Veclocity
-
-Also worth to take a look is : LESS (the scriptable +++<abbr title="Cascading Style Sheets">CSS</abbr>+++)
-
-I see much powerful can be gained if we open this direction with the combination of : JME3 + Nifty + Groovy. That's why I experiment all this stuffs.
-
-
-=== GQuery
-
-GQuery stand for “JQuery like in Groovy. 
-
-JQuery is a famous framework in the JavaScript and Web world. GQuery try to provide some of its features, immtimate its syntax and sugars, leverage by Groovy:
-
-*  Query, select a Node Tree (like +++<abbr title="HyperText Markup Language">HTML</abbr>+++, Nifty elements,…) with a minimal Path syntax , same as XPath
-*  Hooks to Node's (components, elements..) events with Eventbus

+ 0 - 88
src/docs/asciidoc/jme3/advanced/atom_framework/mmorpgtools.adoc

@@ -1,88 +0,0 @@
-= mmorpgtools
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== MMORPG Tools Introduction
-
-This is the introduction of Atoms framework's MMORPG Tools.
-
-
-=== Ideas
-
-A lot of MMORPG game are published but how many in java you can count?
-
-Do you feel so strange about it, even if we have the most powerful programming languages, techniques and toolset?
-
-
-==== Problems
-
-Let's talk a little bit about the problems:
-
-.  Too much technical problems
-.  Too much framework to use, which one is right?
-.  Too much data to make
-.  Too much people in teams, company involve the process
-.  Too much time, competitors, requirements, money, efforts, …[over 9000 probs more!]
-
-More about the MMORPG dream for small team, even invidual <<jme3/atomixtuts/mmorpg#,mmorpg>>
-
-
-==== Solution?
-
-Only one word (or 2): Open-source!
-
-So in short, what I telling you is at least it provide you a framework and a rich toolset to build up your dream game and also a production enviroment to make MMORPG!
-
-.  Stand in the shoulders of best open-source projects and also open-source spirit in its heart. 
-.  Also born form the most innovative ideas of game production and deployment.
-
-
-=== Buzz
-
-It's coming with:
-
-.  Ease of use - even your grandma can do, less code, smart tools in every single step
-.  Effiecient - increase your productivity at least 10x
-.  Scale to massive! - distributed computing, multi node , graph base database, non block event messaging, social network … much more!
-.  Trick of the trade! - Yeah, money making tricks…
-
-
-=== Current Tool?
-
-Read the full article in researches about the open-source and commercial tool for MMORPG we have currently (well, the most popular) <<jme3/atomixtuts/mmorpg/researches/toolset#,toolset>>
-
-
-=== Features
-
-
-=== Techniques
-
-
-[WARNING]
-====
-Warning: hundreds of open-source project. Nail it…
-====
-
-
-[IMPORTANT]
-====
-Go to alternatives and researches if you want to go further than Atom!
-====
-
-
-
-== Architecture
-
-
-== Documentation
-
-
-== Use case & Example
-
-<<jme3/atomixtuts/mmorpg#,mmorpg>>

+ 0 - 51
src/docs/asciidoc/jme3/advanced/atom_framework/rpgcreator.adoc

@@ -1,51 +0,0 @@
-= rpgcreator
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Introduction
-
-This is the introduction of the RPGCreator
-
-Despite of its name, its not just for Role playing game!  
-
-Provide functions to create| test| config basic game with these key elements : characters| stories| skills| items| modes| regions… almost every game genre has them embeded partly, means cross game genre!
-
-
-=== Ideas
-
-*Question*: Why not a general Entity framework?
-
-*Answer*: You've told somewhere else that an Entity framework can compose up every thing… Yeah, quite. But for RPG, more specificly, for the idea phase, same with software modeling phase in game ( means when character concept, design, voice acting, dialoge, scripts…are made), it's not really appropriated! 
-'''
-
-*Question*: So you telling about the gaps?
-
-*Answer*: Yes, you know, thoose guys (script writer) not really need to know any technical things. They just like to made up stuffs. That's why after write down thoose ideas, this framework change the resulted data into programming materials (code, config, 3d models…). Consider this a bridge from game designers to coder, and the script writer to the teams.
-'''
-
-*Question*: What so Next-gen about it?
-
-*Answer*: Yeah, not so much. The idea at first is humble, but it will leverage so much your company's productivity. In fact, big team and big company use home grown tools to archive their scripts and ideas,intelectual properties. That's how their do it, if you know yet!
-'''
-
-*Question*: Enouh, show me?
-
-*Answer*: Here is it!
-
-
-=== Features
-
-
-=== Components
-
-
-== Use cases
-
-
-== Manual

+ 0 - 30
src/docs/asciidoc/jme3/advanced/atom_framework/status.adoc

@@ -1,30 +0,0 @@
-= status
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== Status
-
-
-== Issues
-
-Check google code issues checker
-
-link:https://code.google.com/p/atom-game-framework/issues/list[https://code.google.com/p/atom-game-framework/issues/list]
-
-
-== Dificulties
-
-
-== Not implemented (yet!)
-
-
-== Vison
-
-
-== Plans

+ 0 - 77
src/docs/asciidoc/jme3/advanced/atom_framework/teehee.adoc

@@ -1,77 +0,0 @@
-= teehee
-:author: 
-:revnumber: 
-:revdate: 2016/03/17 20:48
-:relfileprefix: ../../../
-:imagesdir: ../../..
-ifdef::env-github,env-browser[:outfilesuffix: .adoc]
-
-
-
-== TeeHee Composer
-
-
-=== Introduction
-
-
-==== Why TeeHee ?
-
-Cauz it's a funny thing. You play with it. 
-*Compose anything you want as easy as smart kids-can-do*
-
-
-==== What can it make ?
-
-Inspired by +++<strike>UDK and Unity's</strike>+++ , Adobe, Blender and few more…toolset and workflow. 
-
-Includes all of their goods but excludes or minimize their bads!
-
-Inspite of the fact its name is kind of funny, it's very powerful, even more than you imagine. 
-
-Let's me get that straight!
-
-
-==== Features
-
-*  Compose anything you want as easy as kids-can-do
-**  Rich toolset 
-**  +++<abbr title="Graphical User Interface">GUI</abbr>+++ everywhere - Extremely user friendly
-**  Codeless solution
-
-*  Strongly intergrated with a underlying framework
-**  Corporate with Atom framework and JME3 based techniques 
-**  Base for various expansion techiques
-
-*  But Loosely | very flexible in technical aspect: 
-**  Work as plugins
-**  Generate java, entities, xml, text configs, script, protocol… 
-**  Generic enough?
-
-*  Focus in animation, effect and cinematic aspect!
-**  Effects + sound as Adobe Premier + AfterEffect with screen + text effects 
-**  Animation + Cinematic like 3DSMax + Blender + UDK…
-**  Come with presets
-
-*  Real-time! F$#k Yeah!
-**  Everything on the screen, all inside JMP at design time.
-**  Can be configed in varios way to be realtime
-**  Save rendered movies
-**  Toward a java 3D animation composer 
-
-*  Shake and bake with Codegen for Code generation <<jme3/advanced/atom_framework/codegen#,codegen>>
-
-
-== Architecture
-
-Components
-
-*  Cinematic composer
-*  Dialogue composer
-*  Effect composer
-*  Particle composer
-*  Animation composer
-
-Screenshots
-
-
-== Manuals