123456789101112131415 |
- <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]--><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="Asciidoctor 1.5.4"><title>config</title><link rel="stylesheet" href="./asciidoctor.css">
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
- <link rel="stylesheet" href="./coderay-asciidoctor.css"></head><body class="article toc2 toc-left"><div id="header"><h1>config</h1><div class="details"><span class="author" id="author"></span><br><span id="revnumber">version ,</span> <span id="revdate">2016/03/17 20:48</span></div><div id="toc" class="toc2"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/config.adoc"><i class="fa fa-pencil-square" aria-hidden="true"></i></a><a href="https://github.com/jMonkeyEngine/wiki/new/master/src/docs/asciidoc/jme3/advanced/atom_framework/atomcore/"><i class="fa fa-plus-square" aria-hidden="true"></i></a></div><div id="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#atom-configurations">Atom Configurations</a><ul class="sectlevel2"><li><a href="#the-past">The past</a></li><li><a href="#the-solutions">The solutions</a></li><li><a href="#technologies">Technologies</a></li></ul></li><li><a href="#toolset">Toolset</a></li><li><a href="#documentation">Documentation</a></li></ul></div></div><div id="content"><div class="sect2"><h3 id="atom-configurations">Atom Configurations</h3><div class="paragraph"><p>Atom Configurations provide facilities for do configurations and profiles for enviroments, Games of course instead of just normal Java applications.</p></div>
- <div class="sect2"><h3 id="the-past">The past</h3><div class="paragraph"><p>First let’s take a look into the past of years and see how Java developers do configurations for their applications:</p></div>
- <div class="ulist"><ul><li><p>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.</p></li><li><p>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 …</p></li><li><p>The config can also be intelligently procedure based in the stats and infos of the device or deployed enviroment…</p></li></ul></div>
- <div class="paragraph"><p>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 & per user configuration, policies… In another hand, it keep you busy with tricky parts and complexibilities of underlying datastructure and extra progress.</p></div>
- <div class="paragraph"><p>Some other libraries and game engine tend to hide the detail from developer and provide a premade solutions for configurations in supported enviroment.</p></div>
- <div class="paragraph"><p>Ex: LibGDX with Prefs, Unity with Metadata, XNA with Properties…</p></div>
- <div class="paragraph"><p>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?</p></div></div>
- <div class="sect2"><h3 id="the-solutions">The solutions</h3><div class="paragraph"><p>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:</p></div>
- <div class="olist arabic"><ol class="arabic"><li><p>There are “fine-tuned configurations for enviroments , devices, users, or aspects… and custom configurations for arbitrary scope and context.</p></li><li><p>Abstract out the data structure of configurations and its lower level of persist, load and communications.</p></li><li><p>Revolution in the publish, deloy enviroment and progress: to make the configuration actually is data (and code…), not something else.</p></li></ol></div></div>
- <div class="sect2"><h3 id="technologies">Technologies</h3><div class="olist arabic"><ol class="arabic"><li><p>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.</p></li><li><p>Apache Commons & Archaius to abstract out the data structure of configurations. Under them are Utils that consider appliance of configurations as watchable Tasks.</p></li><li><p>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.</p></li></ol></div></div></div>
- <div class="sect1"><h2 id="toolset">Toolset</h2><div class="sectionbody"></div></div>
- <div class="sect1"><h2 id="documentation">Documentation</h2><div class="sectionbody"></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2016-07-06 19:47:04 UTC</div></div></body></html>
|