atomcore.html 57 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <meta name="generator" content="Asciidoctor 1.5.4">
  8. <title>atomcore</title>
  9. <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700">
  10. <style>
  11. /* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */
  12. /* Remove comment around @import statement below when using as a custom stylesheet */
  13. /*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/
  14. article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}
  15. audio,canvas,video{display:inline-block}
  16. audio:not([controls]){display:none;height:0}
  17. [hidden],template{display:none}
  18. script{display:none!important}
  19. html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
  20. body{margin:0}
  21. a{background:transparent}
  22. a:focus{outline:thin dotted}
  23. a:active,a:hover{outline:0}
  24. h1{font-size:2em;margin:.67em 0}
  25. abbr[title]{border-bottom:1px dotted}
  26. b,strong{font-weight:bold}
  27. dfn{font-style:italic}
  28. hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}
  29. mark{background:#ff0;color:#000}
  30. code,kbd,pre,samp{font-family:monospace;font-size:1em}
  31. pre{white-space:pre-wrap}
  32. q{quotes:"\201C" "\201D" "\2018" "\2019"}
  33. small{font-size:80%}
  34. sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
  35. sup{top:-.5em}
  36. sub{bottom:-.25em}
  37. img{border:0}
  38. svg:not(:root){overflow:hidden}
  39. figure{margin:0}
  40. fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}
  41. legend{border:0;padding:0}
  42. button,input,select,textarea{font-family:inherit;font-size:100%;margin:0}
  43. button,input{line-height:normal}
  44. button,select{text-transform:none}
  45. button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}
  46. button[disabled],html input[disabled]{cursor:default}
  47. input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}
  48. input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}
  49. input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}
  50. button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}
  51. textarea{overflow:auto;vertical-align:top}
  52. table{border-collapse:collapse;border-spacing:0}
  53. *,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}
  54. html,body{font-size:100%}
  55. body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto}
  56. a:hover{cursor:pointer}
  57. img,object,embed{max-width:100%;height:auto}
  58. object,embed{height:100%}
  59. img{-ms-interpolation-mode:bicubic}
  60. .left{float:left!important}
  61. .right{float:right!important}
  62. .text-left{text-align:left!important}
  63. .text-right{text-align:right!important}
  64. .text-center{text-align:center!important}
  65. .text-justify{text-align:justify!important}
  66. .hide{display:none}
  67. body{-webkit-font-smoothing:antialiased}
  68. img,object,svg{display:inline-block;vertical-align:middle}
  69. textarea{height:auto;min-height:50px}
  70. select{width:100%}
  71. .center{margin-left:auto;margin-right:auto}
  72. .spread{width:100%}
  73. p.lead,.paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{font-size:1.21875em;line-height:1.6}
  74. .subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em}
  75. div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr}
  76. a{color:#2156a5;text-decoration:underline;line-height:inherit}
  77. a:hover,a:focus{color:#1d4b8f}
  78. a img{border:none}
  79. p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility}
  80. p aside{font-size:.875em;line-height:1.35;font-style:italic}
  81. h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em}
  82. h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0}
  83. h1{font-size:2.125em}
  84. h2{font-size:1.6875em}
  85. h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em}
  86. h4,h5{font-size:1.125em}
  87. h6{font-size:1em}
  88. hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0}
  89. em,i{font-style:italic;line-height:inherit}
  90. strong,b{font-weight:bold;line-height:inherit}
  91. small{font-size:60%;line-height:inherit}
  92. code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)}
  93. ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit}
  94. ul,ol,ul.no-bullet,ol.no-bullet{margin-left:1.5em}
  95. ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em}
  96. ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit}
  97. ul.square{list-style-type:square}
  98. ul.circle{list-style-type:circle}
  99. ul.disc{list-style-type:disc}
  100. ul.no-bullet{list-style:none}
  101. ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0}
  102. dl dt{margin-bottom:.3125em;font-weight:bold}
  103. dl dd{margin-bottom:1.25em}
  104. abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help}
  105. abbr{text-transform:none}
  106. blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd}
  107. blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)}
  108. blockquote cite:before{content:"\2014 \0020"}
  109. blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)}
  110. blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)}
  111. @media only screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2}
  112. h1{font-size:2.75em}
  113. h2{font-size:2.3125em}
  114. h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em}
  115. h4{font-size:1.4375em}}
  116. table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede}
  117. table thead,table tfoot{background:#f7f8f7;font-weight:bold}
  118. table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left}
  119. table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)}
  120. table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7}
  121. table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6}
  122. body{tab-size:4}
  123. h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em}
  124. h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400}
  125. .clearfix:before,.clearfix:after,.float-group:before,.float-group:after{content:" ";display:table}
  126. .clearfix:after,.float-group:after{clear:both}
  127. *:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed}
  128. pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed}
  129. .keyseq{color:rgba(51,51,51,.8)}
  130. kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap}
  131. .keyseq kbd:first-child{margin-left:0}
  132. .keyseq kbd:last-child{margin-right:0}
  133. .menuseq,.menu{color:rgba(0,0,0,.8)}
  134. b.button:before,b.button:after{position:relative;top:-1px;font-weight:400}
  135. b.button:before{content:"[";padding:0 3px 0 2px}
  136. b.button:after{content:"]";padding:0 2px 0 3px}
  137. p a>code:hover{color:rgba(0,0,0,.9)}
  138. #header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;max-width:62.5em;*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em}
  139. #header:before,#header:after,#content:before,#content:after,#footnotes:before,#footnotes:after,#footer:before,#footer:after{content:" ";display:table}
  140. #header:after,#content:after,#footnotes:after,#footer:after{clear:both}
  141. #content{margin-top:1.25em}
  142. #content:before{content:none}
  143. #header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0}
  144. #header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8}
  145. #header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px}
  146. #header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap}
  147. #header .details span:first-child{margin-left:-.125em}
  148. #header .details span.email a{color:rgba(0,0,0,.85)}
  149. #header .details br{display:none}
  150. #header .details br+span:before{content:"\00a0\2013\00a0"}
  151. #header .details br+span.author:before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)}
  152. #header .details br+span#revremark:before{content:"\00a0|\00a0"}
  153. #header #revnumber{text-transform:capitalize}
  154. #header #revnumber:after{content:"\00a0"}
  155. #content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem}
  156. #toc{border-bottom:1px solid #efefed;padding-bottom:.5em}
  157. #toc>ul{margin-left:.125em}
  158. #toc ul.sectlevel0>li>a{font-style:italic}
  159. #toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0}
  160. #toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none}
  161. #toc li{line-height:1.3334;margin-top:.3334em}
  162. #toc a{text-decoration:none}
  163. #toc a:active{text-decoration:underline}
  164. #toctitle{color:#7a2518;font-size:1.2em}
  165. @media only screen and (min-width:768px){#toctitle{font-size:1.375em}
  166. body.toc2{padding-left:15em;padding-right:0}
  167. #toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto}
  168. #toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em}
  169. #toc.toc2>ul{font-size:.9em;margin-bottom:0}
  170. #toc.toc2 ul ul{margin-left:0;padding-left:1em}
  171. #toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em}
  172. body.toc2.toc-right{padding-left:0;padding-right:15em}
  173. body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}}
  174. @media only screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0}
  175. #toc.toc2{width:20em}
  176. #toc.toc2 #toctitle{font-size:1.375em}
  177. #toc.toc2>ul{font-size:.95em}
  178. #toc.toc2 ul ul{padding-left:1.25em}
  179. body.toc2.toc-right{padding-left:0;padding-right:20em}}
  180. #content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
  181. #content #toc>:first-child{margin-top:0}
  182. #content #toc>:last-child{margin-bottom:0}
  183. #footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em}
  184. #footer-text{color:rgba(255,255,255,.8);line-height:1.44}
  185. .sect1{padding-bottom:.625em}
  186. @media only screen and (min-width:768px){.sect1{padding-bottom:1.25em}}
  187. .sect1+.sect1{border-top:1px solid #efefed}
  188. #content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400}
  189. #content h1>a.anchor:before,h2>a.anchor:before,h3>a.anchor:before,#toctitle>a.anchor:before,.sidebarblock>.content>.title>a.anchor:before,h4>a.anchor:before,h5>a.anchor:before,h6>a.anchor:before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em}
  190. #content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible}
  191. #content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none}
  192. #content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221}
  193. .audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em}
  194. .admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic}
  195. table.tableblock>caption.title{white-space:nowrap;overflow:visible;max-width:0}
  196. .paragraph.lead>p,#preamble>.sectionbody>.paragraph:first-of-type p{color:rgba(0,0,0,.85)}
  197. table.tableblock #preamble>.sectionbody>.paragraph:first-of-type p{font-size:inherit}
  198. .admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%}
  199. .admonitionblock>table td.icon{text-align:center;width:80px}
  200. .admonitionblock>table td.icon img{max-width:none}
  201. .admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase}
  202. .admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)}
  203. .admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0}
  204. .exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px}
  205. .exampleblock>.content>:first-child{margin-top:0}
  206. .exampleblock>.content>:last-child{margin-bottom:0}
  207. .sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px}
  208. .sidebarblock>:first-child{margin-top:0}
  209. .sidebarblock>:last-child{margin-bottom:0}
  210. .sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center}
  211. .exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0}
  212. .literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8}
  213. .sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1}
  214. .literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em}
  215. .literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal}
  216. @media only screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}}
  217. @media only screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}}
  218. .literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)}
  219. .listingblock pre.highlightjs{padding:0}
  220. .listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px}
  221. .listingblock pre.prettyprint{border-width:0}
  222. .listingblock>.content{position:relative}
  223. .listingblock code[data-lang]:before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999}
  224. .listingblock:hover code[data-lang]:before{display:block}
  225. .listingblock.terminal pre .command:before{content:attr(data-prompt);padding-right:.5em;color:#999}
  226. .listingblock.terminal pre .command:not([data-prompt]):before{content:"$"}
  227. table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none}
  228. table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45}
  229. table.pyhltable td.code{padding-left:.75em;padding-right:0}
  230. pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8}
  231. pre.pygments .lineno{display:inline-block;margin-right:.25em}
  232. table.pyhltable .linenodiv{background:none!important;padding-right:0!important}
  233. .quoteblock{margin:0 1em 1.25em 1.5em;display:table}
  234. .quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em}
  235. .quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify}
  236. .quoteblock blockquote{margin:0;padding:0;border:0}
  237. .quoteblock blockquote:before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)}
  238. .quoteblock blockquote>.paragraph:last-child p{margin-bottom:0}
  239. .quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right}
  240. .quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)}
  241. .quoteblock .quoteblock blockquote{padding:0 0 0 .75em}
  242. .quoteblock .quoteblock blockquote:before{display:none}
  243. .verseblock{margin:0 1em 1.25em 1em}
  244. .verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility}
  245. .verseblock pre strong{font-weight:400}
  246. .verseblock .attribution{margin-top:1.25rem;margin-left:.5ex}
  247. .quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic}
  248. .quoteblock .attribution br,.verseblock .attribution br{display:none}
  249. .quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)}
  250. .quoteblock.abstract{margin:0 0 1.25em 0;display:block}
  251. .quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{text-align:left;word-spacing:0}
  252. .quoteblock.abstract blockquote:before,.quoteblock.abstract blockquote p:first-of-type:before{display:none}
  253. table.tableblock{max-width:100%;border-collapse:separate}
  254. table.tableblock td>.paragraph:last-child p>p:last-child,table.tableblock th>p:last-child,table.tableblock td>p:last-child{margin-bottom:0}
  255. table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede}
  256. table.grid-all th.tableblock,table.grid-all td.tableblock{border-width:0 1px 1px 0}
  257. table.grid-all tfoot>tr>th.tableblock,table.grid-all tfoot>tr>td.tableblock{border-width:1px 1px 0 0}
  258. table.grid-cols th.tableblock,table.grid-cols td.tableblock{border-width:0 1px 0 0}
  259. table.grid-all *>tr>.tableblock:last-child,table.grid-cols *>tr>.tableblock:last-child{border-right-width:0}
  260. table.grid-rows th.tableblock,table.grid-rows td.tableblock{border-width:0 0 1px 0}
  261. table.grid-all tbody>tr:last-child>th.tableblock,table.grid-all tbody>tr:last-child>td.tableblock,table.grid-all thead:last-child>tr>th.tableblock,table.grid-rows tbody>tr:last-child>th.tableblock,table.grid-rows tbody>tr:last-child>td.tableblock,table.grid-rows thead:last-child>tr>th.tableblock{border-bottom-width:0}
  262. table.grid-rows tfoot>tr>th.tableblock,table.grid-rows tfoot>tr>td.tableblock{border-width:1px 0 0 0}
  263. table.frame-all{border-width:1px}
  264. table.frame-sides{border-width:0 1px}
  265. table.frame-topbot{border-width:1px 0}
  266. th.halign-left,td.halign-left{text-align:left}
  267. th.halign-right,td.halign-right{text-align:right}
  268. th.halign-center,td.halign-center{text-align:center}
  269. th.valign-top,td.valign-top{vertical-align:top}
  270. th.valign-bottom,td.valign-bottom{vertical-align:bottom}
  271. th.valign-middle,td.valign-middle{vertical-align:middle}
  272. table thead th,table tfoot th{font-weight:bold}
  273. tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7}
  274. tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold}
  275. p.tableblock>code:only-child{background:none;padding:0}
  276. p.tableblock{font-size:1em}
  277. td>div.verse{white-space:pre}
  278. ol{margin-left:1.75em}
  279. ul li ol{margin-left:1.5em}
  280. dl dd{margin-left:1.125em}
  281. dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0}
  282. ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em}
  283. ul.unstyled,ol.unnumbered,ul.checklist,ul.none{list-style-type:none}
  284. ul.unstyled,ol.unnumbered,ul.checklist{margin-left:.625em}
  285. ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1em;font-size:.85em}
  286. ul.checklist li>p:first-child>input[type="checkbox"]:first-child{width:1em;position:relative;top:1px}
  287. ul.inline{margin:0 auto .625em auto;margin-left:-1.375em;margin-right:0;padding:0;list-style:none;overflow:hidden}
  288. ul.inline>li{list-style:none;float:left;margin-left:1.375em;display:block}
  289. ul.inline>li>*{display:block}
  290. .unstyled dl dt{font-weight:400;font-style:normal}
  291. ol.arabic{list-style-type:decimal}
  292. ol.decimal{list-style-type:decimal-leading-zero}
  293. ol.loweralpha{list-style-type:lower-alpha}
  294. ol.upperalpha{list-style-type:upper-alpha}
  295. ol.lowerroman{list-style-type:lower-roman}
  296. ol.upperroman{list-style-type:upper-roman}
  297. ol.lowergreek{list-style-type:lower-greek}
  298. .hdlist>table,.colist>table{border:0;background:none}
  299. .hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none}
  300. td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em}
  301. td.hdlist1{font-weight:bold;padding-bottom:1.25em}
  302. .literalblock+.colist,.listingblock+.colist{margin-top:-.5em}
  303. .colist>table tr>td:first-of-type{padding:0 .75em;line-height:1}
  304. .colist>table tr>td:last-of-type{padding:.25em 0}
  305. .thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd}
  306. .imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0}
  307. .imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em}
  308. .imageblock>.title{margin-bottom:0}
  309. .imageblock.thumb,.imageblock.th{border-width:6px}
  310. .imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em}
  311. .image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0}
  312. .image.left{margin-right:.625em}
  313. .image.right{margin-left:.625em}
  314. a.image{text-decoration:none;display:inline-block}
  315. a.image object{pointer-events:none}
  316. sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super}
  317. sup.footnote a,sup.footnoteref a{text-decoration:none}
  318. sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline}
  319. #footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em}
  320. #footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em 0;border-width:1px 0 0 0}
  321. #footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;text-indent:-1.05em;margin-bottom:.2em}
  322. #footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none}
  323. #footnotes .footnote:last-of-type{margin-bottom:0}
  324. #content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0}
  325. .gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0}
  326. .gist .file-data>table td.line-data{width:99%}
  327. div.unbreakable{page-break-inside:avoid}
  328. .big{font-size:larger}
  329. .small{font-size:smaller}
  330. .underline{text-decoration:underline}
  331. .overline{text-decoration:overline}
  332. .line-through{text-decoration:line-through}
  333. .aqua{color:#00bfbf}
  334. .aqua-background{background-color:#00fafa}
  335. .black{color:#000}
  336. .black-background{background-color:#000}
  337. .blue{color:#0000bf}
  338. .blue-background{background-color:#0000fa}
  339. .fuchsia{color:#bf00bf}
  340. .fuchsia-background{background-color:#fa00fa}
  341. .gray{color:#606060}
  342. .gray-background{background-color:#7d7d7d}
  343. .green{color:#006000}
  344. .green-background{background-color:#007d00}
  345. .lime{color:#00bf00}
  346. .lime-background{background-color:#00fa00}
  347. .maroon{color:#600000}
  348. .maroon-background{background-color:#7d0000}
  349. .navy{color:#000060}
  350. .navy-background{background-color:#00007d}
  351. .olive{color:#606000}
  352. .olive-background{background-color:#7d7d00}
  353. .purple{color:#600060}
  354. .purple-background{background-color:#7d007d}
  355. .red{color:#bf0000}
  356. .red-background{background-color:#fa0000}
  357. .silver{color:#909090}
  358. .silver-background{background-color:#bcbcbc}
  359. .teal{color:#006060}
  360. .teal-background{background-color:#007d7d}
  361. .white{color:#bfbfbf}
  362. .white-background{background-color:#fafafa}
  363. .yellow{color:#bfbf00}
  364. .yellow-background{background-color:#fafa00}
  365. span.icon>.fa{cursor:default}
  366. .admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default}
  367. .admonitionblock td.icon .icon-note:before{content:"\f05a";color:#19407c}
  368. .admonitionblock td.icon .icon-tip:before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111}
  369. .admonitionblock td.icon .icon-warning:before{content:"\f071";color:#bf6900}
  370. .admonitionblock td.icon .icon-caution:before{content:"\f06d";color:#bf3400}
  371. .admonitionblock td.icon .icon-important:before{content:"\f06a";color:#bf0000}
  372. .conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold}
  373. .conum[data-value] *{color:#fff!important}
  374. .conum[data-value]+b{display:none}
  375. .conum[data-value]:after{content:attr(data-value)}
  376. pre .conum[data-value]{position:relative;top:-.125em}
  377. b.conum *{color:inherit!important}
  378. .conum:not([data-value]):empty{display:none}
  379. dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility}
  380. h1,h2,p,td.content,span.alt{letter-spacing:-.01em}
  381. p strong,td.content strong,div.footnote strong{letter-spacing:-.005em}
  382. p,blockquote,dt,td.content,span.alt{font-size:1.0625rem}
  383. p{margin-bottom:1.25rem}
  384. .sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em}
  385. .exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc}
  386. .print-only{display:none!important}
  387. @media print{@page{margin:1.25cm .75cm}
  388. *{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important}
  389. a{color:inherit!important;text-decoration:underline!important}
  390. a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important}
  391. a[href^="http:"]:not(.bare):after,a[href^="https:"]:not(.bare):after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em}
  392. abbr[title]:after{content:" (" attr(title) ")"}
  393. pre,blockquote,tr,img,object,svg{page-break-inside:avoid}
  394. thead{display:table-header-group}
  395. svg{max-width:100%}
  396. p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3}
  397. h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid}
  398. #toc,.sidebarblock,.exampleblock>.content{background:none!important}
  399. #toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important}
  400. .sect1{padding-bottom:0!important}
  401. .sect1+.sect1{border:0!important}
  402. #header>h1:first-child{margin-top:1.25rem}
  403. body.book #header{text-align:center}
  404. body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em 0}
  405. body.book #header .details{border:0!important;display:block;padding:0!important}
  406. body.book #header .details span:first-child{margin-left:0!important}
  407. body.book #header .details br{display:block}
  408. body.book #header .details br+span:before{content:none!important}
  409. body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important}
  410. body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always}
  411. .listingblock code[data-lang]:before{display:block}
  412. #footer{background:none!important;padding:0 .9375em}
  413. #footer-text{color:rgba(0,0,0,.6)!important;font-size:.9em}
  414. .hide-on-print{display:none!important}
  415. .print-only{display:block!important}
  416. .hide-for-print{display:none!important}
  417. .show-for-print{display:inherit!important}}
  418. </style>
  419. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
  420. <style>
  421. /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
  422. /*pre.CodeRay {background-color:#f7f7f8;}*/
  423. .CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
  424. .CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
  425. .CodeRay .line-numbers strong{color:rgba(0,0,0,.4)}
  426. table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
  427. table.CodeRay td{vertical-align: top;line-height:1.45}
  428. table.CodeRay td.line-numbers{text-align:right}
  429. table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
  430. table.CodeRay td.code{padding:0 0 0 .5em}
  431. table.CodeRay td.code>pre{padding:0}
  432. .CodeRay .debug{color:#fff !important;background:#000080 !important}
  433. .CodeRay .annotation{color:#007}
  434. .CodeRay .attribute-name{color:#000080}
  435. .CodeRay .attribute-value{color:#700}
  436. .CodeRay .binary{color:#509}
  437. .CodeRay .comment{color:#998;font-style:italic}
  438. .CodeRay .char{color:#04d}
  439. .CodeRay .char .content{color:#04d}
  440. .CodeRay .char .delimiter{color:#039}
  441. .CodeRay .class{color:#458;font-weight:bold}
  442. .CodeRay .complex{color:#a08}
  443. .CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
  444. .CodeRay .color{color:#099}
  445. .CodeRay .class-variable{color:#369}
  446. .CodeRay .decorator{color:#b0b}
  447. .CodeRay .definition{color:#099}
  448. .CodeRay .delimiter{color:#000}
  449. .CodeRay .doc{color:#970}
  450. .CodeRay .doctype{color:#34b}
  451. .CodeRay .doc-string{color:#d42}
  452. .CodeRay .escape{color:#666}
  453. .CodeRay .entity{color:#800}
  454. .CodeRay .error{color:#808}
  455. .CodeRay .exception{color:inherit}
  456. .CodeRay .filename{color:#099}
  457. .CodeRay .function{color:#900;font-weight:bold}
  458. .CodeRay .global-variable{color:#008080}
  459. .CodeRay .hex{color:#058}
  460. .CodeRay .integer,.CodeRay .float{color:#099}
  461. .CodeRay .include{color:#555}
  462. .CodeRay .inline{color:#000}
  463. .CodeRay .inline .inline{background:#ccc}
  464. .CodeRay .inline .inline .inline{background:#bbb}
  465. .CodeRay .inline .inline-delimiter{color:#d14}
  466. .CodeRay .inline-delimiter{color:#d14}
  467. .CodeRay .important{color:#555;font-weight:bold}
  468. .CodeRay .interpreted{color:#b2b}
  469. .CodeRay .instance-variable{color:#008080}
  470. .CodeRay .label{color:#970}
  471. .CodeRay .local-variable{color:#963}
  472. .CodeRay .octal{color:#40e}
  473. .CodeRay .predefined{color:#369}
  474. .CodeRay .preprocessor{color:#579}
  475. .CodeRay .pseudo-class{color:#555}
  476. .CodeRay .directive{font-weight:bold}
  477. .CodeRay .type{font-weight:bold}
  478. .CodeRay .predefined-type{color:inherit}
  479. .CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
  480. .CodeRay .key{color:#808}
  481. .CodeRay .key .delimiter{color:#606}
  482. .CodeRay .key .char{color:#80f}
  483. .CodeRay .value{color:#088}
  484. .CodeRay .regexp .delimiter{color:#808}
  485. .CodeRay .regexp .content{color:#808}
  486. .CodeRay .regexp .modifier{color:#808}
  487. .CodeRay .regexp .char{color:#d14}
  488. .CodeRay .regexp .function{color:#404;font-weight:bold}
  489. .CodeRay .string{color:#d20}
  490. .CodeRay .string .string .string{background:#ffd0d0}
  491. .CodeRay .string .content{color:#d14}
  492. .CodeRay .string .char{color:#d14}
  493. .CodeRay .string .delimiter{color:#d14}
  494. .CodeRay .shell{color:#d14}
  495. .CodeRay .shell .delimiter{color:#d14}
  496. .CodeRay .symbol{color:#990073}
  497. .CodeRay .symbol .content{color:#a60}
  498. .CodeRay .symbol .delimiter{color:#630}
  499. .CodeRay .tag{color:#008080}
  500. .CodeRay .tag-special{color:#d70}
  501. .CodeRay .variable{color:#036}
  502. .CodeRay .insert{background:#afa}
  503. .CodeRay .delete{background:#faa}
  504. .CodeRay .change{color:#aaf;background:#007}
  505. .CodeRay .head{color:#f8f;background:#505}
  506. .CodeRay .insert .insert{color:#080}
  507. .CodeRay .delete .delete{color:#800}
  508. .CodeRay .change .change{color:#66f}
  509. .CodeRay .head .head{color:#f4f}
  510. </style>
  511. </head>
  512. <body class="article toc2 toc-left">
  513. <div id="header">
  514. <h1>atomcore</h1>
  515. <div class="details">
  516. <span id="author" class="author"></span><br>
  517. <span id="revnumber">version ,</span>
  518. <span id="revdate">2016/03/17 20:48</span>
  519. </div>
  520. <div id="toc" class="toc2">
  521. <div id="toctitle">Table of Contents</div>
  522. <ul class="sectlevel1">
  523. <li><a href="#atomcore-introduction">AtomCore Introduction</a></li>
  524. <li><a href="#architecture-design">Architecture Design</a>
  525. <ul class="sectlevel2">
  526. <li><a href="#the-core-features">The core features:</a></li>
  527. <li><a href="#atomcore-concepts">AtomCore concepts</a></li>
  528. </ul>
  529. </li>
  530. <li><a href="#common-scenarios-detailed">Common scenarios Detailed</a>
  531. <ul class="sectlevel2">
  532. <li><a href="#game-related">Game related</a></li>
  533. <li><a href="#application-related">Application related</a></li>
  534. <li><a href="#packages">Packages</a></li>
  535. </ul>
  536. </li>
  537. <li><a href="#documentation">Documentation</a></li>
  538. <li><a href="#troubleshooting-gotchas-best-practices">Troubleshooting, gotchas &amp; Best practices</a></li>
  539. <li><a href="#contributions">Contributions</a></li>
  540. </ul>
  541. </div>
  542. </div>
  543. <div id="content">
  544. <div class="sect1">
  545. <h2 id="atomcore-introduction">AtomCore Introduction</h2>
  546. <div class="sectionbody">
  547. <div class="paragraph">
  548. <p>AtomCore is the main component of Atom framework.</p>
  549. </div>
  550. <div class="paragraph">
  551. <p>This is the detailed documentation of AtomCore module architecture, design decisions, implementations and real usecases, examples, resources.</p>
  552. </div>
  553. <div class="paragraph">
  554. <p>Source: <a href="https://code.google.com/p/atom-game-framework/source/browse/AtomCore/">https://code.google.com/p/atom-game-framework/source/browse/AtomCore/</a></p>
  555. </div>
  556. <div class="paragraph">
  557. <p>Javadoc:</p>
  558. </div>
  559. <div class="paragraph">
  560. <p>Issues:</p>
  561. </div>
  562. <div class="paragraph">
  563. <p>Quick links: <em>Read if you know ready know the basic</em></p>
  564. </div>
  565. <div class="paragraph">
  566. <p><a href="../../../jme3/advanced/atom_framework/atomcore/cycle.html">AtomCore Cycle</a></p>
  567. </div>
  568. <div class="paragraph">
  569. <p><a href="../../../jme3/advanced/atom_framework/design/patterns.html">AtomCore patterns</a></p>
  570. </div>
  571. <div class="paragraph">
  572. <p><a href="../../../jme3/advanced/atom_framework/atomcore/algorithms.html">AtomCore algorithms</a></p>
  573. </div>
  574. </div>
  575. </div>
  576. <div class="sect1">
  577. <h2 id="architecture-design">Architecture Design</h2>
  578. <div class="sectionbody">
  579. <div class="paragraph">
  580. <p>Atom philosophy is “Minimal, “Only one.</p>
  581. </div>
  582. <div class="paragraph">
  583. <p>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.</p>
  584. </div>
  585. <div class="paragraph">
  586. <p>As a developer, you may find it easy to adapt and extend the framework to suite your games and purpose.</p>
  587. </div>
  588. <div class="paragraph">
  589. <p>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.</p>
  590. </div>
  591. <div class="paragraph">
  592. <p>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…</p>
  593. </div>
  594. <div class="paragraph">
  595. <p>Beside of those common basis pairs, collections, graphs and other datastructure, executions, pattern and behaviours are also supported!</p>
  596. </div>
  597. <div class="paragraph">
  598. <p>The details of those techniques will be listed below.</p>
  599. </div>
  600. <div class="sect2">
  601. <h3 id="the-core-features">The core features:</h3>
  602. <div class="paragraph">
  603. <p>Features of AtomCore</p>
  604. </div>
  605. <div class="ulist">
  606. <ul>
  607. <li>
  608. <p>Cross game-genre elements: stage, cycle, entity, logic, trigger, event, config;</p>
  609. </li>
  610. <li>
  611. <p>Managers and management: Advanced assets manager, IOC, AOP, dependecy injection, factory, scripting, basic DB..;</p>
  612. </li>
  613. <li>
  614. <p>Common case: Common state, common scenerio, common UIs…</p>
  615. </li>
  616. </ul>
  617. </div>
  618. <div class="paragraph">
  619. <p>Below you will read about how each feature is implemented in AtomCore.</p>
  620. </div>
  621. <div class="sect3">
  622. <h4 id="cross-game-genre-elements">Cross game-genre elements</h4>
  623. <div class="paragraph">
  624. <p>From an abstraction level, a Game- a special kind of software (almost always):</p>
  625. </div>
  626. <div class="ulist">
  627. <ul>
  628. <li>
  629. <p>composed by Entities, and their Stage;</p>
  630. </li>
  631. <li>
  632. <p>where Actions happen in a Cycle, procedure Events;</p>
  633. </li>
  634. </ul>
  635. </div>
  636. <div class="paragraph">
  637. <p>A little bit more detailed, Gameplay is the way player play the Game, has:</p>
  638. </div>
  639. <div class="ulist">
  640. <ul>
  641. <li>
  642. <p>Logic:</p>
  643. <div class="ulist">
  644. <ul>
  645. <li>
  646. <p>Trigger: in which Conditions, active some appropriate Action, as primitive brick.</p>
  647. </li>
  648. <li>
  649. <p>Rule: the laws, restrictions form the game rule which player, entities obey.</p>
  650. </li>
  651. </ul>
  652. </div>
  653. </li>
  654. <li>
  655. <p>Routines: Situations/ Events/ Actions that happen in the game Cycle.</p>
  656. <div class="ulist">
  657. <ul>
  658. <li>
  659. <p>Story/Cinematic mode: When player just watch the game like a movie.</p>
  660. </li>
  661. <li>
  662. <p>Interactive mode: When player interact with the game world</p>
  663. </li>
  664. </ul>
  665. </div>
  666. </li>
  667. <li>
  668. <p>Control: The way player handle their entities</p>
  669. </li>
  670. <li>
  671. <p>League:</p>
  672. <div class="ulist">
  673. <ul>
  674. <li>
  675. <p>Player, Matchs, Groups and their infos &amp; activities</p>
  676. </li>
  677. <li>
  678. <p>Single: Infos, score, rewards stick to an individual</p>
  679. </li>
  680. <li>
  681. <p>Multi: The way players join, left, make friend and interactive and play together…</p>
  682. </li>
  683. </ul>
  684. </div>
  685. </li>
  686. <li>
  687. <p>Status: Way to pause/continue , save/load current game</p>
  688. </li>
  689. </ul>
  690. </div>
  691. <div class="paragraph">
  692. <p>The game “software should be published in specific enviroment called Context, it then has:</p>
  693. </div>
  694. <div class="ulist">
  695. <ul>
  696. <li>
  697. <p>Configurations : appropriate settings for specific enviroment, device.</p>
  698. </li>
  699. <li>
  700. <p>Data : appropriate size and format</p>
  701. </li>
  702. </ul>
  703. </div>
  704. <div class="sect4">
  705. <h5 id="around-bean">Around Bean</h5>
  706. <div class="paragraph">
  707. <p>In <a href="../../../jme3/advanced/atom_framework/atomcore/beans.html">AtomCore Bean</a> are leverage in a few ways:</p>
  708. </div>
  709. <div class="ulist">
  710. <ul>
  711. <li>
  712. <p>Modeling</p>
  713. </li>
  714. <li>
  715. <p>Generating</p>
  716. </li>
  717. <li>
  718. <p>Binding</p>
  719. </li>
  720. <li>
  721. <p>Mapping / Morphing</p>
  722. </li>
  723. <li>
  724. <p>Instropecting</p>
  725. </li>
  726. <li>
  727. <p>Managed</p>
  728. </li>
  729. </ul>
  730. </div>
  731. </div>
  732. <div class="sect4">
  733. <h5 id="attend-cycle">Attend Cycle</h5>
  734. <div class="paragraph">
  735. <p>In JME3 we almost see the things work like this, the “almighty” Cycle:</p>
  736. </div>
  737. <div class="paragraph">
  738. <p><a href="http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:update_loop">http://hub.jmonkeyengine.org/wiki/doku.php/jme3:advanced:update_loop</a></p>
  739. </div>
  740. <div class="olist arabic">
  741. <ol class="arabic">
  742. <li>
  743. <p>Input listeners respond to mouse clicks and keyboard presses – Input handling</p>
  744. </li>
  745. <li>
  746. <p>Update game state:</p>
  747. <div class="olist loweralpha">
  748. <ol class="loweralpha" type="a">
  749. <li>
  750. <p>Update overall game state – Execute Application States</p>
  751. <div class="olist lowerroman">
  752. <ol class="lowerroman" type="i">
  753. <li>
  754. <p>User code update – Execute simpleUpdate() method</p>
  755. </li>
  756. <li>
  757. <p>Logical update of entities – Execute Custom Controls</p>
  758. </li>
  759. </ol>
  760. </div>
  761. </li>
  762. </ol>
  763. </div>
  764. </li>
  765. <li>
  766. <p>Render audio and video</p>
  767. <div class="olist loweralpha">
  768. <ol class="loweralpha" type="a">
  769. <li>
  770. <p>Application States rendering.</p>
  771. </li>
  772. <li>
  773. <p>Scene rendering.</p>
  774. </li>
  775. <li>
  776. <p>User code rendering – Execute simpleRender() method.</p>
  777. </li>
  778. </ol>
  779. </div>
  780. </li>
  781. <li>
  782. <p>Repeat loop.</p>
  783. </li>
  784. </ol>
  785. </div>
  786. <div class="paragraph">
  787. <p>The reason this cycle exists is because of JME3 application tied strictly with monotholic processing method, and the main convict is OpenGL.</p>
  788. </div>
  789. <div class="paragraph">
  790. <p>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&#8217;s why a sotiphicated customable-expandable “cycle is the heart to Atom framework which made it a solid replacement of “old JME3 cycle.</p>
  791. </div>
  792. <div class="paragraph">
  793. <p>Read more details in AtomCore&#8217;s Cycle.</p>
  794. </div>
  795. <div class="paragraph">
  796. <p><a href="../../../jme3/advanced/atom_framework/atomcore.html">atomcore</a></p>
  797. </div>
  798. </div>
  799. <div class="sect4">
  800. <h5 id="as-core-of-a-whole-enterprise">As core of a whole Enterprise</h5>
  801. <div class="paragraph">
  802. <p>As a long term follower of Spring (one of Atom inspiration) :
  803. <a href="http://spring.io/">http://spring.io/</a> …
  804. <a href="http://en.wikipedia.org/wiki/Spring_framework">http://en.wikipedia.org/wiki/Spring_framework</a></p>
  805. </div>
  806. <div class="paragraph">
  807. <p>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.</p>
  808. </div>
  809. <div class="paragraph">
  810. <p><a href="../../../jme3/advanced/atom_framework/atomex.html">atomex</a></p>
  811. </div>
  812. </div>
  813. </div>
  814. </div>
  815. <div class="sect2">
  816. <h3 id="atomcore-concepts">AtomCore concepts</h3>
  817. <div class="literalblock">
  818. <div class="content">
  819. <pre> From the cross-genre games elements mentioned above, AtomCore introduce some concepts which latter implemented in classes in appropriate packages.</pre>
  820. </div>
  821. </div>
  822. <div class="sect4">
  823. <h5 id="entity">Entity</h5>
  824. </div>
  825. <div class="sect4">
  826. <h5 id="managers">Managers</h5>
  827. <div class="paragraph">
  828. <p>AtomCore introduce the concepts of Manager (then Helper, Worker, Actor later). What are they?</p>
  829. </div>
  830. <div class="paragraph">
  831. <p>Managers are useful objects (usually Singleton) to manage aspects of a game, such as Rendering, Sounds, World, Assets, Networks, Effects, etc…</p>
  832. </div>
  833. <div class="paragraph">
  834. <p>Managers are born to help developer manage/ monitor/ manipulate every conner/ moment/ objects in the game code base and run-time activites.</p>
  835. </div>
  836. <div class="paragraph">
  837. <p>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.</p>
  838. </div>
  839. <div class="paragraph">
  840. <p>To clean the mist of confusion about mixed of concepts a little bit, there are some practical wisdoms about Manager implementation:</p>
  841. </div>
  842. <div class="literalblock">
  843. <div class="content">
  844. <pre> Manager acts globally, handy: usually a Singleton, or really easy to reference in script
  845. Manager wrap underlying details in intuitive way
  846. Manager share common informations
  847. Manager executions are frequently : like in an default update cycle
  848. Manager have power over its children : its handle it children; in almost scenarios child has left its Manager's list come hollow (as null)</pre>
  849. </div>
  850. </div>
  851. <div class="paragraph">
  852. <p>Entity related - Managers can be considered as the other piece in constrast with Entity, as it manage entity existing and activities.</p>
  853. </div>
  854. <div class="paragraph">
  855. <p>Also note that Managers normally form a Tree, with Hierarchy or dependency as commonly seen in OOP.</p>
  856. </div>
  857. <div class="paragraph">
  858. <p>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.</p>
  859. </div>
  860. </div>
  861. <div class="sect4">
  862. <h5 id="actor">Actor</h5>
  863. </div>
  864. <div class="sect4">
  865. <h5 id="task-worker">Task &amp; Worker</h5>
  866. </div>
  867. <div class="sect4">
  868. <h5 id="helper">Helper</h5>
  869. </div>
  870. <div class="sect4">
  871. <h5 id="component-base-solution">Component base solution</h5>
  872. <div class="paragraph">
  873. <p>You can read about Component base solutions and architecture here:</p>
  874. </div>
  875. <div class="paragraph">
  876. <p>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.</p>
  877. </div>
  878. </div>
  879. <div class="sect3">
  880. <h4 id="common-implementations">Common implementations</h4>
  881. <div class="literalblock">
  882. <div class="content">
  883. <pre> 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.</pre>
  884. </div>
  885. </div>
  886. <div class="sect4">
  887. <h5 id="common-cycle">Common Cycle</h5>
  888. <div class="paragraph">
  889. <p>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!</p>
  890. </div>
  891. <div class="paragraph">
  892. <p>My basic form of game Cycle aka CommonCycle crafted to work well with AppState concept of JME3 and other existed Managers (StateManager, AssetManager, InputManager..).</p>
  893. </div>
  894. <div class="paragraph">
  895. <p>The Cycle consist 6 basis methods:</p>
  896. </div>
  897. <div class="olist arabic">
  898. <ol class="arabic">
  899. <li>
  900. <p>init : Lazy init and be injected with its dependencies declaretion</p>
  901. </li>
  902. <li>
  903. <p>load : Load assets or underlying data (later than its dependencies)</p>
  904. </li>
  905. <li>
  906. <p>config : reconfig if need, even in update</p>
  907. </li>
  908. <li>
  909. <p>start : trigger start a working routine of the object</p>
  910. </li>
  911. <li>
  912. <p>update</p>
  913. </li>
  914. <li>
  915. <p>end</p>
  916. </li>
  917. </ol>
  918. </div>
  919. <div class="paragraph">
  920. <p>why 6? Why cycle? The customizable version of cycle? Introduce new cycles, queues and stuffs. read <a href="../../../jme3/advanced/atom_framework/atomcore/cycle.html">cycle</a></p>
  921. </div>
  922. </div>
  923. </div>
  924. <div class="sect3">
  925. <h4 id="common-scenarios">Common scenarios</h4>
  926. <div class="paragraph">
  927. <p>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!</p>
  928. </div>
  929. <div class="ulist">
  930. <ul>
  931. <li>
  932. <p>Manage entities: add/remove/select</p>
  933. </li>
  934. <li>
  935. <p>Composable logic: with condition, trigger</p>
  936. </li>
  937. <li>
  938. <p>Event messaging system (network ready): as inner / outter communicate media with eventbus and non blocking network</p>
  939. </li>
  940. <li>
  941. <p>Provide user functions and controls: As State, Control, Actors</p>
  942. </li>
  943. <li>
  944. <p>Game status persistent: Save/ Load/ Replay</p>
  945. </li>
  946. <li>
  947. <p>Routines: Interactive / non interactive as Cycle change to InteractiveMode or CinematicMode. Handle Tasks, Actions in good concurent way (multi threading, actor..).</p>
  948. </li>
  949. <li>
  950. <p>Easy UI making: as common ui below</p>
  951. </li>
  952. </ul>
  953. </div>
  954. </div>
  955. </div>
  956. </div>
  957. </div>
  958. <div class="sect1">
  959. <h2 id="common-scenarios-detailed">Common scenarios Detailed</h2>
  960. <div class="sectionbody">
  961. <div class="sect2">
  962. <h3 id="game-related">Game related</h3>
  963. <div class="sect3">
  964. <h4 id="managed-entities">Managed entities</h4>
  965. <div class="paragraph">
  966. <p>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, …)</p>
  967. </div>
  968. <div class="paragraph">
  969. <p>Detail:</p>
  970. </div>
  971. </div>
  972. <div class="sect3">
  973. <h4 id="composable-logic">Composable logic</h4>
  974. <div class="paragraph">
  975. <p>In AtomCore version 0.1, i&#8217;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!</p>
  976. </div>
  977. <div class="paragraph">
  978. <p>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…</p>
  979. </div>
  980. <div class="paragraph">
  981. <p>In AtomCore 0.2, I made a change, consider big affect to the whole AtomCore I adapted to Guava&#8217;s Function and Predicate. What&#8217;s so intereting about Java&#8217;s functional flavours? It provides more ways to compose logic, also more consise, readable, resuable if done right… Read more about Predicate:
  982. <a href="http://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Predicates">http://code.google.com/p/guava-libraries/wiki/FunctionalExplained#Predicates</a>
  983. <a href="http://java.dzone.com/articles/google-guavas-predicates">http://java.dzone.com/articles/google-guavas-predicates</a></p>
  984. </div>
  985. <div class="paragraph">
  986. <p>Detail:</p>
  987. </div>
  988. </div>
  989. <div class="sect3">
  990. <h4 id="event-message-system">Event message system</h4>
  991. <div class="paragraph">
  992. <p>With eventbus</p>
  993. </div>
  994. <div class="paragraph">
  995. <p>non blocking network</p>
  996. </div>
  997. </div>
  998. <div class="sect3">
  999. <h4 id="common-state">Common state</h4>
  1000. <div class="paragraph">
  1001. <p>In turn, along with this pre defined cycle, some common states which ready to use</p>
  1002. </div>
  1003. <div class="ulist">
  1004. <ul>
  1005. <li>
  1006. <p>LoadState : load / watch</p>
  1007. </li>
  1008. <li>
  1009. <p>MenuState : select / option / ingame / exit</p>
  1010. </li>
  1011. <li>
  1012. <p>InGameState : pause/ stop</p>
  1013. </li>
  1014. </ul>
  1015. </div>
  1016. </div>
  1017. <div class="sect3">
  1018. <h4 id="common-routines">Common Routines</h4>
  1019. <div class="paragraph">
  1020. <p>Handle Tasks, Actions in good concurent way (multi threading, actor..).</p>
  1021. </div>
  1022. <div class="sect4">
  1023. <h5 id="common-controls">Common Controls</h5>
  1024. <div class="paragraph">
  1025. <p>EntityControl</p>
  1026. </div>
  1027. <div class="paragraph">
  1028. <p>SpatialEditorControl</p>
  1029. </div>
  1030. <div class="paragraph">
  1031. <p>AtomCharacterControl</p>
  1032. </div>
  1033. <div class="paragraph">
  1034. <p>AtomAnimationControl</p>
  1035. </div>
  1036. <div class="paragraph">
  1037. <p>IKControl</p>
  1038. </div>
  1039. </div>
  1040. </div>
  1041. <div class="sect3">
  1042. <h4 id="common-actors">Common Actors</h4>
  1043. </div>
  1044. <div class="sect3">
  1045. <h4 id="game-status-persistent">Game status persistent</h4>
  1046. <div class="sect4">
  1047. <h5 id="save">Save</h5>
  1048. </div>
  1049. <div class="sect4">
  1050. <h5 id="load">Load</h5>
  1051. </div>
  1052. <div class="sect4">
  1053. <h5 id="replay">Replay</h5>
  1054. </div>
  1055. </div>
  1056. <div class="sect3">
  1057. <h4 id="common-uis">Common UIs</h4>
  1058. <div class="paragraph">
  1059. <p>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.</p>
  1060. </div>
  1061. <div class="paragraph">
  1062. <p>Some common game UI as FlashScreen, MainMenu, Options, Lobby, Credit…</p>
  1063. </div>
  1064. <div class="paragraph">
  1065. <p>Advanced UI operation is on AtomGUI</p>
  1066. </div>
  1067. </div>
  1068. </div>
  1069. <div class="sect2">
  1070. <h3 id="application-related">Application related</h3>
  1071. <div class="sect3">
  1072. <h4 id="common-configs">Common Configs</h4>
  1073. </div>
  1074. <div class="sect3">
  1075. <h4 id="common-services">Common Services</h4>
  1076. </div>
  1077. </div>
  1078. <div class="sect2">
  1079. <h3 id="packages">Packages</h3>
  1080. <div class="sect3">
  1081. <h4 id="sg-atom-core">sg.atom.core</h4>
  1082. <div class="paragraph">
  1083. <p>Core elements of the framework.</p>
  1084. </div>
  1085. <div class="ulist">
  1086. <ul>
  1087. <li>
  1088. <p>annotations Annotations to setting up elements in java code. [Same in every packages!]</p>
  1089. </li>
  1090. <li>
  1091. <p>assets Facilities to import / export assets from JME3 pipeline</p>
  1092. </li>
  1093. <li>
  1094. <p>bean Facilities to use Java bean in Atom context with mapping and binding.</p>
  1095. </li>
  1096. <li>
  1097. <p>config Facilities to use Configs in Atom, with the help of Common Configuration</p>
  1098. </li>
  1099. <li>
  1100. <p>context Bridge concepts help to bring entities from one enviroment to others crossed platforms.</p>
  1101. </li>
  1102. <li>
  1103. <p>execution Facilities for execution, with help of Common lang and Guava</p>
  1104. </li>
  1105. <li>
  1106. <p>lifecycle Concepts for game (and real time application) cycle</p>
  1107. </li>
  1108. <li>
  1109. <p>monitor Facilities to monitor your game and application</p>
  1110. </li>
  1111. <li>
  1112. <p>timing Concepts &amp; Facilities for real time application</p>
  1113. </li>
  1114. </ul>
  1115. </div>
  1116. </div>
  1117. <div class="sect3">
  1118. <h4 id="sg-atom-entity">sg.atom.entity</h4>
  1119. <div class="paragraph">
  1120. <p>Concepts and Facilities to build up Game object. [Beta]</p>
  1121. </div>
  1122. </div>
  1123. <div class="sect3">
  1124. <h4 id="sg-atom-fx">sg.atom.fx</h4>
  1125. <div class="paragraph">
  1126. <p>Concepts and Facilities to create and manage animations and effects.</p>
  1127. </div>
  1128. <div class="ulist">
  1129. <ul>
  1130. <li>
  1131. <p>anim Concepts for animation</p>
  1132. </li>
  1133. <li>
  1134. <p>automatic Automatic driven for animation</p>
  1135. </li>
  1136. <li>
  1137. <p>constraint Other way to declare relationship between entities and activities</p>
  1138. </li>
  1139. <li>
  1140. <p>filters Additions to JME3 filters</p>
  1141. </li>
  1142. <li>
  1143. <p>functional Functional flavours for effects</p>
  1144. </li>
  1145. <li>
  1146. <p>particles Concepts to build bigger system from smaller part [Atom concepts]</p>
  1147. </li>
  1148. <li>
  1149. <p>sprite Concepts for cross dimensional elements</p>
  1150. </li>
  1151. <li>
  1152. <p>timeline Enhance of timming framework</p>
  1153. </li>
  1154. <li>
  1155. <p>transition Transition between stateful objects</p>
  1156. </li>
  1157. <li>
  1158. <p>tween Object interpolations.</p>
  1159. </li>
  1160. </ul>
  1161. </div>
  1162. </div>
  1163. <div class="sect3">
  1164. <h4 id="sg-atom-gameplay">sg.atom.gameplay</h4>
  1165. <div class="paragraph">
  1166. <p>Concepts and facilities for games (cross-genre)</p>
  1167. </div>
  1168. <div class="ulist">
  1169. <ul>
  1170. <li>
  1171. <p>action Concepts and interfaces for action in games</p>
  1172. </li>
  1173. <li>
  1174. <p>controls Additional to JME3 character controls</p>
  1175. </li>
  1176. <li>
  1177. <p>league Leagues group and tournament of players</p>
  1178. </li>
  1179. <li>
  1180. <p>managers Manager of leagues group and tournament of players</p>
  1181. </li>
  1182. <li>
  1183. <p>player Player and their data</p>
  1184. </li>
  1185. <li>
  1186. <p>replay To record the game activities</p>
  1187. </li>
  1188. <li>
  1189. <p>score To recored the game results</p>
  1190. </li>
  1191. </ul>
  1192. </div>
  1193. </div>
  1194. <div class="sect3">
  1195. <h4 id="sg-atom-logic">sg.atom.logic</h4>
  1196. <div class="paragraph">
  1197. <p>Basic block for building game from a programming language via formal system.</p>
  1198. </div>
  1199. </div>
  1200. <div class="sect3">
  1201. <h4 id="sg-atom-net">sg.atom.net</h4>
  1202. <div class="paragraph">
  1203. <p>Concepts and interfaces for connectivity and communication via networks</p>
  1204. </div>
  1205. </div>
  1206. <div class="sect3">
  1207. <h4 id="sg-atom-stage">sg.atom.stage</h4>
  1208. <div class="paragraph">
  1209. <p>Concepts and facilities for cinematography like games</p>
  1210. </div>
  1211. <div class="ulist">
  1212. <ul>
  1213. <li>
  1214. <p>actor Bridge from entities to actor framework</p>
  1215. </li>
  1216. <li>
  1217. <p>cine Sostiphicate cinematic framework for complex video games</p>
  1218. </li>
  1219. <li>
  1220. <p>helpers “Inplace controls which know about Stage. Bridge from JME3 Controls concepts</p>
  1221. </li>
  1222. <li>
  1223. <p>input Sostiphicate high level input system use for develop and test game</p>
  1224. </li>
  1225. <li>
  1226. <p>select Facilities for selecting (from input) an on screen spatial or entities</p>
  1227. </li>
  1228. <li>
  1229. <p>sound Additional facilities to JME3 sound system</p>
  1230. </li>
  1231. <li>
  1232. <p>sync Additional facilities to syncing between multi thread progress</p>
  1233. </li>
  1234. </ul>
  1235. </div>
  1236. </div>
  1237. <div class="sect3">
  1238. <h4 id="sg-atom-state">sg.atom.state</h4>
  1239. <div class="paragraph">
  1240. <p>Additional for JME3 app state (bridge between to systems) and some common states for a common games</p>
  1241. </div>
  1242. </div>
  1243. <div class="sect3">
  1244. <h4 id="sg-atom-ui">sg.atom.ui</h4>
  1245. <div class="paragraph">
  1246. <p>General <abbr title="Graphical User Interface">GUI</abbr> for user interaction and styling in hierachy (non-strict) elements</p>
  1247. </div>
  1248. </div>
  1249. <div class="sect3">
  1250. <h4 id="sg-atom-utils">sg.atom.utils</h4>
  1251. <div class="paragraph">
  1252. <p>Collections of userful utilities and datastructures, algorimths here and there.</p>
  1253. </div>
  1254. </div>
  1255. <div class="sect3">
  1256. <h4 id="sg-atom-world">sg.atom.world</h4>
  1257. <div class="paragraph">
  1258. <p>Concepts and interfaces to build and manage the game world and enviroment</p>
  1259. </div>
  1260. <div class="ulist">
  1261. <ul>
  1262. <li>
  1263. <p>gen Generate the world from data</p>
  1264. </li>
  1265. <li>
  1266. <p>geometry Maths for geometries</p>
  1267. </li>
  1268. <li>
  1269. <p>lod Level of detail framework provides a lot of methods to optimize scene and geometry.</p>
  1270. </li>
  1271. <li>
  1272. <p>material Additional to JME3 material system</p>
  1273. </li>
  1274. <li>
  1275. <p>physics Additional to JME3 physic system</p>
  1276. </li>
  1277. <li>
  1278. <p>rendering Additional to JME3 render system</p>
  1279. </li>
  1280. <li>
  1281. <p>terrain Additional to JME3 terrain system</p>
  1282. </li>
  1283. <li>
  1284. <p>visibility Additional to JME3 cull and partition system</p>
  1285. </li>
  1286. </ul>
  1287. </div>
  1288. </div>
  1289. </div>
  1290. </div>
  1291. </div>
  1292. <div class="sect1">
  1293. <h2 id="documentation">Documentation</h2>
  1294. <div class="sectionbody">
  1295. </div>
  1296. </div>
  1297. <div class="sect1">
  1298. <h2 id="troubleshooting-gotchas-best-practices">Troubleshooting, gotchas &amp; Best practices</h2>
  1299. <div class="sectionbody">
  1300. </div>
  1301. </div>
  1302. <div class="sect1">
  1303. <h2 id="contributions">Contributions</h2>
  1304. <div class="sectionbody">
  1305. </div>
  1306. </div>
  1307. </div>
  1308. <div id="footer">
  1309. <div id="footer-text">
  1310. Version <br>
  1311. Last updated 2016-06-05 15:58:32 UTC
  1312. </div>
  1313. </div>
  1314. </body>
  1315. </html>