

== Atom framework Introduction

*Hi Monkeys,*


*Atom framework for game developing in Java. Powered by JME3.*


*Atom* framework which on top of JME3 and have some features like AI, Scripting, Database, VirtualReallity, Trigger, Multiplayer…(more below)  to make developing game process in JME3 much more easier!



<<jme3/atomixtuts#,atomixtuts>>



=== Open Source

Atom Core : The AtomCore source code is hosted in Googlecode


Googlecode: link:https://code.google.com/p/atom-game-framework/[https://code.google.com/p/atom-game-framework/]


Github: link:https://github.com/atomixnmc/atom-game-framework[https://github.com/atomixnmc/atom-game-framework]


Wiki: link:https://code.google.com/p/atom-game-framework/wiki/[https://code.google.com/p/atom-game-framework/wiki/]



=== Documentations:

<<jme3/advanced/atom_framework/design#, Detailed architecture designs >>


<<jme3/advanced/atom_framework/docs#, Detailed documentation >>


<<jme3/advanced/atom_framework/comparison#, Detailed comparison>>



=== Idea & Buzz

*Better, more freedom, more fun!*


From +++<strike>UDK and Unity</strike>+++ 's battle field, I've dreamt about making even better game engine with the help of my 2 fav technologies - *Java* and *opensource*.


JME3 and Netbean combination are the most brighten idea I 've seen in years. I think it deserve a better reputation worldwide.



==== Initial Ideas:

*  Ease the learning curve
*  Fun play/create game like kids in a sandbox
*  Framework for games and apps(3D) 
*  Nextgen techs


==== Why call it Atom?

link:https://en.wikipedia.org/wiki/Atom[https://en.wikipedia.org/wiki/Atom]


Yes, this is for game developing. But in its heart is future's technologies. 


....
 Atom Etymology: Devive the thing as small as you can, than compose it into a thing again.
....
[quote]
____
 The same in programming, after all, modulize is to be integrated again! That really is the core idea of Atom framework, use the most simple primitives to compose the bigger, bigger matter! Every where, small tiny, fastest, embed inside others, stick together well…Take a look in Atom Ex <<jme3/advanced/atom_framework/atomex#,atomex>>, you will see the picture more clearly.
____

The most conceptual inspiration for Atom framework is project link:http://ptolemy.eecs.berkeley.edu/index.htm[http://ptolemy.eecs.berkeley.edu/index.htm] . Unfortunately Ptolemy is in “for research only area and its direction toward the much large scale than game developing. That's why Atom framework was born with the learnt architecture from Ptolemy. 

[quote]
____
 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
____
[quote]
____
 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 concept that built in Ptolemy.
____


=== Features

* Atom framework Highlights*


*  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

Full Features list


*  Cross game genre framework for JME3
**  <<jme3/advanced/atom_framework/atomcore#,General stage - world ; game play and cycle>>
**  <<jme3/advanced/atom_framework/atomcore/entitysystem#,General Entity framework>>
**  <<jme3/advanced/atom_framework/atomcore/event#,General Event framework>>
**  <<jme3/advanced/atom_framework/atomcore/config#,Intuitive config framework  >>- toward zero-config approach
**  <<jme3/advanced/atom_framework/atomcore/actor#,Actor and interactive agents, workers>>
**  <<jme3/advanced/atom_framework/atomcore/execution#,Execution and monitor>>

*  Network | Web ready
**  Web scale support 
**  <<jme3/advanced/atom_framework/atomcore/net#, Network &amp; Messaging framework>>
**  <<jme3/advanced/atom_framework/atomcore/league#, Social foundation framework>>

*  Additional to JME3 features (as libraries or toolkits)
**  <<jme3/advanced/atom_framework/atomcore/fx#, UltimateEffects >>
***  <<jme3/advanced/atom_framework/atomcore/particles#, UltimateParticles>>
***  <<jme3/advanced/atom_framework/atomcore/sprite#, Cross dimension model >>
***  <<jme3/advanced/atom_framework/atomcore/filters#, Filters >>

**  <<jme3/advanced/atom_framework/atomcore/cinematic#, Cinematic >>
**  <<jme3/advanced/atom_framework/atomcore/gui#, General extensible GUI with CSS>>
**  <<jme3/advanced/atom_framework/atomexasset#, Ultimate asset pipeline>>
**  <<jme3/advanced/atom_framework/atomanim#, Ultimate animation framework>>
**  <<jme3/advanced/atom_framework/atomelight#, Extra rendering methods>>



=== Architecture and components

Here are its architecture and components.






==== Atom Core Libraries

*  *<<jme3/advanced/atom_framework/atomcore#, AtomCore>>* : addition to JME3 core packages. 
**  Cross game-genre elements: stage, cycle, entity, logic, trigger, event, config; 
**  Managers: Advanced assets manager, dependecy injection, factory, scripting, basic DB..; 
**  Common case: Common state, common scenerio, common UIs… 
**  More Buzz? <<jme3/advanced/atom_framework/atomcore#, AtomCore documentation >>

*  *<<jme3/advanced/atom_framework/atomscripting#, Atom Scripting>>* Base technology for use Groovy (potentional Scala, Jython..) as JME game scripting language… 
**  Provide Test bed enviroment, thread-safe and intelligent Groovy swing component to extend the SDK in seconds
**  More Buzz? <<jme3/advanced/atom_framework/atomscripting#, Atom Scripting>>

*  *<<jme3/advanced/atom_framework/ai#, Atom AI>>* : a “framework to bring AI to jME3 game (also means real-time application)! But it's awesome in its own way. 
**  Focus in AI coding, creating, testing, simulating, profiling in 3d enviroments.
**  Come with tools as SDK plugins!
**  Check <<jme3/advanced/atom_framework/ai#, Atom AI wiki>> for more buzz



==== Ingame editor facilities and kits

*  <<jme3/advanced/atom_framework/atomeditor#,Atom Editor>>: sotiphicated in-game editor application and +++<abbr title="Application Programming Interface">API</abbr>+++ for 3D games modelled toward netbean platform architecture. [In constrast with SimpleGameEditor project].
*  <<jme3/advanced/atom_framework/atom2deditor#,Atom 2D Editor>>: for 2D games.
*  *<<jme3/advanced/atom_framework/codegen#,Code Gen>>*: a “framework that intend to become the base technologies for all generation related techs in the Atom framework. <<jme3/advanced/atom_framework/codegen#,codegen>>
**  Focus in provide general and abstract way to modeling|design game|real-time app concept and object, source codes. 
**  Its first attempt to become a GLSL, Groovy generator, then become a Logic, source code generator… 
**  Come with tools as SDK plugins!

*  *<<jme3/advanced/atom_framework/citygen#,City Gen>>*: a “framework at first try to be a city generator, then grow up to be fullfill every geometric generating operations in 3D.
**  Focus in “Level generator with 3d models, blueprint and geometric shapes, such as dugeon, city, rivers, mountain, trees…
**  Can corporate with Code gen and other geometric libs to become a generative 3D editor…
**  Come with tools as SDK plugins!



==== Atom SDK

*  *Atom SDK* : Expansion for current functions and features of the jME SDK on top of Netbean platform for desktop Swing based editing, more intuitive more user friendly and suchs.
**  Full List? <<jme3/advanced/atom_framework/atomsdk#,atomsdk>>

*  *TeeheeComposer* : Act as the base editor for video, cinematic, audio, effects, facial composer… anything require time-base keyframed or unlinear editing like sequences.
**  An almighty composer, think about 3DSMax or Adobe After Effect in 3D
**  Come with a lot of tools for the SDK : <<jme3/advanced/atom_framework/teehee#,teehee>>
***  Cinematic composer
***  Dialogue composer
***  Effect composer
***  Particle composer
***  Animation composer


*  *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 ( cross game genre)
**  Come with tools as SDK plugins! <<jme3/advanced/atom_framework/rpgcreator#,rpgcreator>>

*  *Nextgen Tools*
**  Facial tools : Think FaceFX for JME :p <<jme3/advanced/atom_framework/facial#,facial>>
**  Character customization management tools : Smart way to organize and corporate your assets, config, database and code for CC <<jme3/advanced/atom_framework/cc#,cc>>
**  Vitural reality tools : Toolset for corporate vitural reality artifact in your app <<jme3/advanced/atom_framework/vr#,vr>>
**  MMORPG tools : Toolset for creating of a MMORPG game's component and all its management structure. Epic! <<jme3/advanced/atom_framework/mmorpgtools#,mmorpgtools>>
**  Human Simulation tools: Think advanced locomotion and AI (like Mechanim of Unity) multiply 10. In fact, it's quite similar with tool from Autodesk that simulations social beheviours of human characters. Epic! <<jme3/advanced/atom_framework/humansim#,humansim>>



==== AtomEx Libraries and platform

*  *Atom Ex* : addition to Atom framework which make its much more modulizable, extensible and enterprise ready. Distributed computing, web based, database… much more.
**  More Buzz? <<jme3/advanced/atom_framework/atomex#, AtomEx documentation >>



=== Vision


==== Java,... again??!

Yeah, it was long time ago, you quit learning java because java gaming is a dead end.


But Android come to play, and the the market are open so freaking big that even companies live with their C++ code base want to take advantage of the new wave…


Recently Java has so much improvements and then JME3 enchant the talents all around the world to develop the master peices of software!



==== But did we chasing after them?

No, we are not. We are going ahead of them with all the techniques from the almightly open-source.


Java communities are much more open and helpful than any of those Microsoft, Apple, UDK, Unity,… evils… Let's make a fairplay at last!



==== Can we win?

The time will tell… but at least, we once gain give the power to the hands of the people, not just some rich and intelligent people, that's the most critical point!



=== Project status

If you interest in contribute to Atom framework open-sourced project, here is the status of the project in 2014 and some mile stones it want to reach in the future.


<<jme3/advanced/atom_framework/status#,Atom framework open-sourced project Status - 2014>>



=== Other open-source dependencies

Actually it use directly/indirectly various projects of JME3 great contributors and open source projects:


*  AI from @Sploreg,@shirkit and mine
*  VirtualReallity integrated with OpenCV, JavaCV : @noncom + mine
*  ShaderBlow from @mifth
*  SpriteEngine @dansion
*  Forestor from @androlo
*  Multiplayer on top of MirrorMonkey, Kryonet, Arianne, ThreeRings, …
*  MonkeyZone code which I believe written by @normen @nehon and core guys :p
*  Database using Cayenne, Depot
*  … other contributors 

( I will add them later :p please forgive if I can't remember your name immediately )
…


_I want to thank all of you for you great great great contributions, help me and my friends here to start learning game programming and doing our own game. Salute! My job is to glue the those great gems together, (pretty time consuming job) :_



As the spliting above, then I will make two different topic to keep them separate, the Atom framework and the Series of game making.


<<jme3/atomixtuts#, Atomix Series of game making>>


GOTO <<jme3/advanced/atom_framework/docs#,Detailed Atom framework Documentation>>

