| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <!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>atomexasset</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"><link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css"></head><body class="article toc2 toc-left"><div id="header"><div id="toolbar"><a href="https://github.com/jMonkeyEngine/wiki/edit/master/src/docs/asciidoc/jme3/advanced/atom_framework/atomexasset.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/"><i class="fa fa-plus-square" aria-hidden="true"></i></a><input dir="auto" style="position: relative; vertical-align: top;" spellcheck="false" autocomplete="off" class="searchbox__input aa-input" id="doc-search" name="search" placeholder="Search in the doc" required="required" type="search"></div><h1>atomexasset</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="toctitle">Table of Contents</div><ul class="sectlevel1"><li><a href="#atomexassets">AtomExAssets</a><ul class="sectlevel2"><li><a href="#features">Features</a></li><li><a href="#the-real-pipeline">The "real" pipeline</a></li><li><a href="#multi-sources-multi-targets">Multi sources & Multi targets</a></li></ul></li><li><a href="#first-look">First look</a><ul class="sectlevel2"><li><a href="#slides">Slides</a></li><li><a href="#architecture">Architecture</a></li><li><a href="#supported-sources-targets">Supported sources & targets</a></li><li><a href="#quickstart">Quickstart</a></li></ul></li><li><a href="#documentation">Documentation</a><ul class="sectlevel2"><li><a href="#write-encoder-decoder">Write encoder & decoder</a></li><li><a href="#manage-dataflow-turbine">Manage dataflow & turbine</a></li><li><a href="#server-nodes">Server & Nodes</a></li></ul></li></ul></div></div><div id="content"><div class="sect2"><h3 id="atomexassets">AtomExAssets</h3><div class="paragraph"><p>The future assets pipeline for JME3 games!</p></div>
- <div class="sect2"><h3 id="features">Features</h3><div class="ulist"><ul><li><p>Real pipeline</p></li><li><p>Multi sources & Multi targets</p></li></ul></div></div>
- <div class="sect2"><h3 id="the-real-pipeline">The "real" pipeline</h3><div class="paragraph"><p>Pipeline is a common term in computing and also asset making. From sattelite view, pipeline is progresses between input and output.</p></div>
- <div class="paragraph"><p><span class="image"><img src="http://storm.incubator.apache.org/images/topology.png" alt="400px" width="" height=""></span></p></div>
- <div class="paragraph"><p>Here in game we talking about Assets aspect, mostly!</p></div>
- <div class="paragraph"><p>In real world, converting-processing data and assets also require amount of times, efforts and cause headaches, almost comparable to making data and assets.</p></div>
- <div class="admonitionblock tip"><table><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><div class="paragraph"><p>Some of the problems and solutions here can also be applied to other situation and usecaces</p></div></td></tr></table></div>
- <div class="sect3"><h4 id="converting">Converting</h4><div class="paragraph"><p>Converting between things is a hard problem:</p></div>
- <div class="ulist"><ul><li><p>Semantic: “things are different “in contexts.</p></li><li><p>Incompatible: Converting almost one-direction only. Converter programs sometime not reliable and not support your data</p></li><li><p>Hidden: Some format is unknown. Some require commercial and $$$</p></li><li><p>Fault-tolerant: Currently almost asset pipeline is easy to fail and do not support recovery.</p></li></ul></div></div>
- <div class="sect3"><h4 id="processing">Processing</h4><div class="paragraph"><p>Processing again is require a lot power:</p></div>
- <div class="ulist"><ul><li><p>Time: Did you ever generate lightmap or PVS? - It may take a long long wait and easy to fail.</p></li><li><p>Power and units: Did you ever render a movie? - It may require a render farm.</p></li><li><p>Connections: Is there anything has to transfer between units? - It may delay the whole progress.</p></li></ul></div></div>
- <div class="sect3"><h4 id="innovations">Innovations</h4><div class="paragraph"><p>AtomExAsset try to leverage pipelines from ideas inspired:</p></div>
- <div class="sect4"><h5 id="from-preon">From Preon</h5><div class="paragraph"><p>Bit stream language</p></div></div>
- <div class="sect4"><h5 id="from-dataturbine">From DataTurbine</h5><div class="paragraph"><p>Real-time data over network</p></div></div>
- <div class="sect4"><h5 id="from-distributed-computing">From Distributed computing</h5><div class="paragraph"><p><a href="http://storm.incubator.apache.org/">http://storm.incubator.apache.org/</a> -</p></div></div>
- <div class="sect4"><h5 id="from-other-ccds-and-engines">From Other CCDs and Engines</h5><div class="paragraph"><p>3DSMax and Autodesk programs: Render farm integrated.</p></div>
- <div class="paragraph"><p>Blender: DNA structure</p></div>
- <div class="paragraph"><p>Unity: Metadata and SVN integrated</p></div></div></div></div>
- <div class="sect2"><h3 id="multi-sources-multi-targets">Multi sources & Multi targets</h3></div></div>
- <div class="sect2"><h3 id="first-look">First look</h3><div class="sect2"><h3 id="slides">Slides</h3><div class="paragraph"><p>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"]</p></div></div>
- <div class="sect2"><h3 id="architecture">Architecture</h3></div>
- <div class="sect2"><h3 id="supported-sources-targets">Supported sources & targets</h3></div>
- <div class="sect2"><h3 id="quickstart">Quickstart</h3><div class="sect3"><h4 id="unified-format-how-about-no">Unified Format? How about NO</h4><div class="paragraph"><p>“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?)</p></div>
- <div class="paragraph"><p>AtomExAsset in other hand has unified pipeline via: Codecs, Flows, EntryPoints. Its “unified data are actually a temporial data which has meta-data embeded.</p></div></div>
- <div class="sect3"><h4 id="temporial-scene-data">Temporial scene data</h4></div>
- <div class="sect3"><h4 id="codecs">Codecs</h4><div class="paragraph"><p>Models</p></div>
- <div class="paragraph"><p>Textures</p></div>
- <div class="paragraph"><p>Animations</p></div>
- <div class="paragraph"><p>Basic usages</p></div></div>
- <div class="sect3"><h4 id="entrypoints">EntryPoints</h4><div class="paragraph"><p>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…</p></div>
- <div class="paragraph"><p>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.</p></div>
- <div class="paragraph"><p>You can see one simple example of the situation when:</p></div>
- <div class="ulist"><ul><li><p>We reference to a Texture assetkey of a single Tile: assetManager.load(“tile1.png);</p></li><li><p>We later make a texture atlas of Tiles: tiles.png</p></li><li><p>How can we reference to the original tile the old way, ignore the fact that it got batched!?</p></li></ul></div>
- <div class="paragraph"><p>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.</p></div>
- <div class="paragraph"><p>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.</p></div></div>
- <div class="sect3"><h4 id="flows">Flows</h4></div>
- <div class="sect3"><h4 id="j3a">J3A</h4><div class="literalblock"><div class="title">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:</div>
- <div class="content"><pre> assetManager.load("monkey.j3o")</pre></div></div>
- <div class="paragraph"><p>is equal with:</p></div>
- <div class="literalblock"><div class="content"><pre> assetManager.load("monkey.j3a")</pre></div></div>
- <div class="paragraph"><p>but the later has extra effects:</p></div>
- <div class="ulist"><ul><li><p>It put a update watcher over the entry point</p><div class="ulist"><ul><li><p>the file in filesystem</p></li><li><p>if you has config for that entry to “link to another remote point (git, remote asset central), it actually manage the linkage for you</p></li></ul></div></li><li><p>It manage the flows of the loading progress of that entry</p></li><li><p>It manage the avaiablility, validation, necessarility of that entry if you are in a streaming scenario</p></li><li><p>It let the assets pipeline fault tolerant.</p><div class="ulist"><ul><li><p>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</p></li><li><p>If the request to the entry point actually timeouted, cached assets are used</p></li></ul></div></li></ul></div></div>
- <div class="sect3"><h4 id="usage-along-with-the-official-asset-pipeline">Usage along with the "official" asset pipeline</h4><div class="paragraph"><p>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.</p></div>
- <div class="admonitionblock warning"><table><tr><td class="icon"><i class="fa icon-warning" title="Warning"></i></td><td class="content"><div class="paragraph"><p>Remember Atom’s asset pipeline is better for “not-well formed assets. In normal situation, you can use JME3’s asset without a doubt!</p></div></td></tr></table></div>
- <div class="paragraph"><p>Way1 - Atom over JME3: Put assetManager under an entry point, let call it “SEP - StaticEntryPoint.</p></div>
- <div class="literalblock"><div class="content"><pre> assetManager.load("SEP\")</pre></div></div>
- <div class="paragraph"><p>Way2 - Atom with JME#:</p></div>
- <div class="literalblock"><div class="content"><pre> assetManager.load(".j3a")</pre></div></div></div></div></div>
- <div class="sect2"><h3 id="documentation">Documentation</h3><div class="sect2"><h3 id="write-encoder-decoder">Write encoder & decoder</h3><div class="paragraph"><p>Models</p></div>
- <div class="paragraph"><p>Textures</p></div>
- <div class="paragraph"><p>Animations</p></div>
- <div class="paragraph"><p>Basic usage</p></div>
- <div class="paragraph"><p>Preon reference:</p></div>
- <div class="paragraph"><p><a href="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</a></p></div></div>
- <div class="sect2"><h3 id="manage-dataflow-turbine">Manage dataflow & turbine</h3></div>
- <div class="sect2"><h3 id="server-nodes">Server & Nodes</h3><div class="paragraph"><p>AtomExAssets ultimately use Building tools and Framework to help Java developer doing Game assets!</p></div>
- <div class="paragraph"><p>Beside of Defacto of the building tools: Ant & Maven, the new rising star Gradle. AtomExAssets also use the powerful framework:</p></div>
- <div class="paragraph"><p><a href="http://www.go.cd/">http://www.go.cd/</a></p></div>
- <div class="paragraph"><p><span class="image"><img src="http://www.go.cd/images/home-image1.png" alt="home-image1.png" width="" height=""></span></p></div></div></div></div><div id="footer"><div id="footer-text">Version <br>Last updated 2018-11-20 05:41:31 +00:00</div></div><script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script><script>docsearch({
- apiKey: 'a736b6d93de805e26ec2f49b55013fbd',
- indexName: 'jmonkeyengine',
- inputSelector: '#doc-search',
- debug: false // Set debug to true if you want to inspect the dropdown
- });</script></body></html>
|