index.html 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457
  1. <!DOCTYPE html>
  2. <html lang="en-us">
  3. <head>
  4. <title>jMonkeyEngine | Sgold interviews Daniel Perano</title>
  5. <meta name="viewport" content="width=device-width,minimum-scale=1">
  6. <meta name="description"
  7. content="jMonkeyEngine is a modern developer friendly game engine written primarily in Java. ">
  8. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
  9. <link rel="stylesheet" href="/css/style.css">
  10. <meta name="twitter:card" content="summary"/>
  11. <meta name="twitter:title" content="Sgold interviews Daniel Perano"/>
  12. <meta name="twitter:description" content="stephengold Thank you for agreeing to be interviewed.
  13. First question: Do you remember when you first encountered JMonkeyEngine?
  14. What was your first impression?
  15. danielperano I started learning jME back in the 3.0 days, as I recall,
  16. and I was impressed with the features it offered.
  17. The scene-graph control and appstate design made a lot of sense to me &mdash;"/>
  18. <meta property="og:title" content="Sgold interviews Daniel Perano" />
  19. <meta property="og:description" content="stephengold Thank you for agreeing to be interviewed.
  20. First question: Do you remember when you first encountered JMonkeyEngine?
  21. What was your first impression?
  22. danielperano I started learning jME back in the 3.0 days, as I recall,
  23. and I was impressed with the features it offered.
  24. The scene-graph control and appstate design made a lot of sense to me &mdash;" />
  25. <meta property="og:type" content="article" />
  26. <meta property="og:url" content="https://jmonkeyengine.org/blog/interview-danielp/" /><meta property="article:section" content="blog" />
  27. <meta property="article:published_time" content="2020-02-25T18:00:00+00:00" />
  28. <meta property="article:modified_time" content="2020-02-25T18:00:00+00:00" />
  29. <meta itemprop="name" content="Sgold interviews Daniel Perano">
  30. <meta itemprop="description" content="stephengold Thank you for agreeing to be interviewed.
  31. First question: Do you remember when you first encountered JMonkeyEngine?
  32. What was your first impression?
  33. danielperano I started learning jME back in the 3.0 days, as I recall,
  34. and I was impressed with the features it offered.
  35. The scene-graph control and appstate design made a lot of sense to me &mdash;"><meta itemprop="datePublished" content="2020-02-25T18:00:00+00:00" />
  36. <meta itemprop="dateModified" content="2020-02-25T18:00:00+00:00" />
  37. <meta itemprop="wordCount" content="1969">
  38. <meta itemprop="keywords" content="interview,blog,misc," />
  39. <script src="/js/old-browser.js"></script>
  40. <link rel="stylesheet" href="/css/old-browser.css">
  41. <script src="/highlight/highlight.pack.js"></script>
  42. <script
  43. src="//cdnjs.cloudflare.com/ajax/libs/highlightjs-line-numbers.js/2.8.0/highlightjs-line-numbers.min.js"></script>
  44. <link rel="stylesheet" href="/highlight/styles/railscasts.css">
  45. <script type="text/javascript">
  46. hljs.initHighlightingOnLoad();
  47. hljs.initLineNumbersOnLoad();
  48. </script>
  49. <script src="/js/utils.js"></script>
  50. <script src="/js/showcase.js"></script>
  51. <script type="module" src="/js/Main.js"></script>
  52. <script src="https://cdnjs.cloudflare.com/ajax/libs/later/1.2.0/later.min.js" integrity="sha512-4OyNDMl5KLKjS8F1ImVwUvmthM8HkXbR6vMafCmT5zBTd9I/sA3z3zM0JLBosHW6/3K2jq2RoBo/eTUNS2hOGA==" crossorigin="anonymous"></script>
  53. <script src="/js/maintenance/maintenance.js"></script>
  54. <link rel="stylesheet" href="/js/maintenance/maintenance.css">
  55. <script src="/js/christmas/Christmas.js"></script>
  56. <script>
  57. Christmas.init(
  58. "https://jmonkeyengine.org/js/christmas/",
  59. ["figure.githubUser img", 'img.avatar', "#showcase button"],
  60. [
  61. {
  62. type: "attribute",
  63. value: "src",
  64. transform:function(src){
  65. if(src.startsWith("/user_avatar/hub.jmonkeyengine.org/")) {
  66. return src.substring("/user_avatar/hub.jmonkeyengine.org/".length).split("/")[0];
  67. }
  68. return src;
  69. }
  70. },
  71. {
  72. type: "attribute",
  73. value: "title"
  74. },
  75. {
  76. type: "text"
  77. }
  78. ],
  79. ["header img.avatar"]
  80. );
  81. </script>
  82. </head>
  83. <body>
  84. <header> <nav class="responsiveWidth " id="topmenu">
  85. <div class="expandable">
  86. <a href="https://jmonkeyengine.org/" alt-href="https://jmonkeyengine.org/tags,https://jmonkeyengine.org/authors,https://jmonkeyengine.org/devlog,https://jmonkeyengine.org/blog,,https://jmonkeyengine.org/communitylog">
  87. <button class="genericCl responsiveIcon expandable ">
  88. <i class="fas fa-home"></i> <span>Home</span>
  89. </button>
  90. </a>
  91. <a href="https://jmonkeyengine.org/tags/showcase" alt-href="https://jmonkeyengine.org/showcase">
  92. <button class="genericCl responsiveIcon expandable ">
  93. <i class="fas fa-images"></i> <span>Showcase</span>
  94. </button>
  95. </a>
  96. <a href="https://hub.jmonkeyengine.org">
  97. <button class="genericCl responsiveIcon expandable ">
  98. <i class="fab fa-discourse"></i> <span>Discussions</span>
  99. </button>
  100. </a>
  101. <a href="https://library.jmonkeyengine.org" >
  102. <button class="genericCl responsiveIcon expandable ">
  103. <i class="fas fa-puzzle-piece"></i> <span>Library</span>
  104. </button>
  105. </a>
  106. <a href="https://jmonkeyengine.org/docs">
  107. <button class="genericCl responsiveIcon expandable ">
  108. <i class="fas fa-book"></i> <span>Docs</span>
  109. </button>
  110. </a>
  111. <a href="https://jmonkeyengine.org/license">
  112. <button class="genericCl responsiveIcon expandable toggleable toggledOffPortrait">
  113. <i class="fas fa-balance-scale-right"></i> <span>License</span>
  114. </button>
  115. </a>
  116. </div>
  117. <div class="toggleable toggledOffPortrait expandable">
  118. <a href="https://github.com/jMonkeyEngine/jmonkeyengine" rel='noopener noreferrer' target="_blank">
  119. <button class="icon toggleable toggledOffPortrait codeCl expandable " title="Github">
  120. <i class="fab fa-github-square"></i> <span>Github</span>
  121. </button>
  122. </a>
  123. <a href="https://twitter.com/jmonkeyengine" rel='noopener noreferrer' target="_blank">
  124. <button class="icon twitterCl toggleable toggledOffPortrait expandable " title="Follow on Twitter">
  125. <i class="fab fa-twitter"></i> <span>Twitter</span>
  126. </button>
  127. </a>
  128. <a href="https://www.youtube.com/channel/UC-Fs3R5Q6wW_XYspOXGZgPw" rel='noopener noreferrer'
  129. target="_blank">
  130. <button class="icon youtubeCl toggleable toggledOffPortrait expandable " title="Follow on Youtube">
  131. <i class="fab fa-youtube"></i> <span>Youtube</span>
  132. </button>
  133. </a>
  134. <a href="https://discord.gg/Rv8sfVu" rel='noopener noreferrer' target="_blank">
  135. <button class="icon discordCl toggleable toggledOffPortrait expandable " title="Discord">
  136. <i class="fab fa-discord"></i> <span>Discord</span>
  137. </button>
  138. </a>
  139. <a href="https://jmonkeyengine.org/donate" >
  140. <button class="icon donateCl toggleable toggledOffPortrait expandable " title="Donate">
  141. <i class="fas fa-donate"></i> <span>Donate!</span>
  142. </button>
  143. </a>
  144. </div>
  145. </nav>
  146. <script>
  147. !function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.stringSimilarity=e():t.stringSimilarity=e()}(self,(function(){return t={138:t=>{function e(t,e){if((t=t.replace(/\s+/g,""))===(e=e.replace(/\s+/g,"")))return 1;if(t.length<2||e.length<2)return 0;let r=new Map;for(let e=0;e<t.length-1;e++){const n=t.substring(e,e+2),o=r.has(n)?r.get(n)+1:1;r.set(n,o)}let n=0;for(let t=0;t<e.length-1;t++){const o=e.substring(t,t+2),s=r.has(o)?r.get(o):0;s>0&&(r.set(o,s-1),n++)}return 2*n/(t.length+e.length-2)}t.exports={compareTwoStrings:e,findBestMatch:function(t,r){if(!function(t,e){return"string"==typeof t&&!!Array.isArray(e)&&!!e.length&&!e.find((function(t){return"string"!=typeof t}))}(t,r))throw new Error("Bad arguments: First argument should be a string, second should be an array of strings");const n=[];let o=0;for(let s=0;s<r.length;s++){const i=r[s],f=e(t,i);n.push({target:i,rating:f}),f>n[o].rating&&(o=s)}return{ratings:n,bestMatch:n[o],bestMatchIndex:o}}}}},e={},function r(n){if(e[n])return e[n].exports;var o=e[n]={exports:{}};return t[n](o,o.exports,r),o.exports}(138);var t,e}));
  148. window.initJmeMenu=function () {
  149. const selectionClass= window.selectedTopMenuClass || "highlightedCl";
  150. const topmenu = document.querySelector('#topmenu');
  151. if (window.location.href.startsWith("http://localhost:1313")) {
  152. for (const a of topmenu.querySelectorAll("a")) {
  153. a.href = a.href.replace("https://jmonkeyengine.org", "http://localhost:1313");
  154. }
  155. }
  156. const likelyScore=[];
  157. for (const a of topmenu.querySelectorAll("a")) {
  158. const pageUrl=window.location.href.endsWith("/")?window.location.href.substring(0,window.location.href.length-1):window.location.href;
  159. const process = (linkUrls) => {
  160. if(!linkUrls)return;
  161. for(let linkUrl of linkUrls){
  162. if (linkUrl != null) {
  163. if (window.location.href.startsWith("http://localhost:1313")) {
  164. linkUrl = linkUrl.replace("https://jmonkeyengine.org", "http://localhost:1313");
  165. }
  166. if (linkUrl.endsWith("/")) {
  167. linkUrl = linkUrl.substring(0, linkUrl.length - 1);
  168. }
  169. const score = stringSimilarity.compareTwoStrings(linkUrl, pageUrl);
  170. likelyScore.push(
  171. {
  172. score: score,
  173. el: a.querySelector("button")
  174. }
  175. );
  176. }
  177. }
  178. }
  179. process([a.href]);
  180. process(a.getAttribute("alt-href")?a.getAttribute("alt-href").split(","):undefined);
  181. }
  182. likelyScore.sort((a, b) => b.score - a.score);
  183. likelyScore.forEach(el=>el.el.classList.remove(selectionClass));
  184. likelyScore[0].el.classList.add(selectionClass);
  185. };
  186. document.addEventListener('DOMContentLoaded', function(){
  187. window.initJmeMenu();
  188. });
  189. </script>
  190. <div id="siteTitle" class="list hlist responsiveWidth">
  191. <div id="logo">
  192. <a href="/">
  193. <img src="/images/jme-logo.png" />
  194. </a>
  195. <i class="toggleNavOnPortraitButton fas fa-bars" toggle="topmenu"></i>
  196. </div>
  197. <div id="contributionsBanner">
  198. <div> <i class="fas fa-donate"></i>
  199. Backed by:
  200. <a rel='noopener nofollow noreferrer' target="_blank" id="backerName">The Community</a>
  201. <a rel='noopener nofollow noreferrer' target="_blank"
  202. href="https://opencollective.com/jmonkeyengine#section-contributors"> and more...</a>
  203. </div>
  204. <div>
  205. <i class="fab fa-github-alt"></i>
  206. Contributed by:
  207. <a rel='noopener nofollow noreferrer' target="_blank" id="contributorName">The Community</a>
  208. <a rel='noopener nofollow noreferrer' target="_blank"
  209. href="https://github.com/jMonkeyEngine/jmonkeyengine/graphs/contributors">and more...</a>
  210. </div>
  211. </div>
  212. </div>
  213. </header>
  214. <main>
  215. <section id="showcase" mode="banner">
  216. <i id="playButton" class=" fas fa-play"></i>
  217. <div class="showcaseElement" style='display: block '>
  218. <div class="cover blur" style ="background-image: url('/images/showcase/skullstone/3.jpg'); " ></div>
  219. <div class="cover" style ="background-image: url('/images/showcase/skullstone/3.jpg'); " ></div>
  220. </div>
  221. <div class="showcaseElement" style='display: none '>
  222. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/15.jpg'); " ></div>
  223. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/15.jpg'); " ></div>
  224. </div>
  225. <div class="showcaseElement" style='display: none '>
  226. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/19.jpg'); " ></div>
  227. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/19.jpg'); " ></div>
  228. </div>
  229. <div class="showcaseElement" style='display: none '>
  230. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/12.jpg'); " ></div>
  231. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/12.jpg'); " ></div>
  232. </div>
  233. <div class="showcaseElement" style='display: none '>
  234. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/1.jpg'); " ></div>
  235. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/1.jpg'); " ></div>
  236. </div>
  237. <div class="showcaseElement" style='display: none '>
  238. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/10.jpg'); " ></div>
  239. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/10.jpg'); " ></div>
  240. </div>
  241. <iframe loading="lazy" class="showcaseElement cover youtubeVid" style='display: none '
  242. lazy="true" lazy-src ="https://www.youtube-nocookie.com/embed/AnqzGANkPG8" frameborder="0"
  243. allow="accelerometer; autoplay; encrypted-media; gyroscope; fullscreen"></iframe>
  244. <div class="showcaseElement" style='display: none '>
  245. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/8.jpg'); " ></div>
  246. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/8.jpg'); " ></div>
  247. </div>
  248. <div class="showcaseElement" style='display: none '>
  249. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/13.jpg'); " ></div>
  250. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/13.jpg'); " ></div>
  251. </div>
  252. <div class="showcaseElement" style='display: none '>
  253. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/2.jpg'); " ></div>
  254. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/2.jpg'); " ></div>
  255. </div>
  256. <div class="showcaseElement" style='display: none '>
  257. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/9.jpg'); " ></div>
  258. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/9.jpg'); " ></div>
  259. </div>
  260. <div class="showcaseElement" style='display: none '>
  261. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/7.jpg'); " ></div>
  262. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/7.jpg'); " ></div>
  263. </div>
  264. <div class="showcaseElement" style='display: none '>
  265. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/17.jpg'); " ></div>
  266. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/17.jpg'); " ></div>
  267. </div>
  268. <div class="showcaseElement" style='display: none '>
  269. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/14.jpg'); " ></div>
  270. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/14.jpg'); " ></div>
  271. </div>
  272. <div class="showcaseElement" style='display: none '>
  273. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/16.jpg'); " ></div>
  274. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/16.jpg'); " ></div>
  275. </div>
  276. <div class="showcaseElement" style='display: none '>
  277. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/11.jpg'); " ></div>
  278. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/11.jpg'); " ></div>
  279. </div>
  280. <div class="showcaseElement" style='display: none '>
  281. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/6.jpg'); " ></div>
  282. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/6.jpg'); " ></div>
  283. </div>
  284. <div class="showcaseElement" style='display: none '>
  285. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/18.jpg'); " ></div>
  286. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/18.jpg'); " ></div>
  287. </div>
  288. <div class="showcaseElement" style='display: none '>
  289. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/5.jpg'); " ></div>
  290. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/5.jpg'); " ></div>
  291. </div>
  292. <div class="showcaseElement" style='display: none '>
  293. <div class="cover blur" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/4.jpg'); " ></div>
  294. <div class="cover" lazy="true" lazy-style ="background-image: url('/images/showcase/skullstone/4.jpg'); " ></div>
  295. </div>
  296. <div class="responsiveWidth" id="engineDescription">
  297. jMonkeyEngine is a modern developer friendly game engine written primarily in Java.
  298. <br />
  299. Its minimalistic and code first approach makes it perfect for developers who want the support of a game engine
  300. while retaining full control over their code with the ability to extend and adapt the engine to their workflow.
  301. <br />
  302. <br />
  303. <br />
  304. <a href="/start/"><button id="startbtn" class="highlightedCl" ><i class="fas fa-rocket"></i> Get Started </button></a>
  305. <a href="/#features" title="overview"><button id="startbtn" class="highlightedCl"><i class="fas fa-question-circle" style="padding:0"></i></button></a>
  306. <br />
  307. <br />
  308. </div>
  309. <div class="responsiveWidth" >
  310. <div id="gameDescription" >
  311. <h2><i class="far fa-images" ></i> Skullstone powered by jMonkeyEngine</h2>
  312. Skullstone – a retro styled grid-based dungeon crawler RPG inspired by the good old titles such as Dungeon Master, Stonekeep, Eye of Beholder and many other classics.
  313. In a few words – a party of …
  314. <br />
  315. <a class="readMore" href="/showcase/skullstone/#showcase">See game page </a>
  316. </div>
  317. </div>
  318. </section>
  319. <br/>
  320. <section class="message list vlist">
  321. <div>
  322. <blockquote class="list vlist responsive">
  323. <span id="backerMessage">-</span>
  324. <i><a rel='noopener nofollow noreferrer' target="_blank" id="backerMessageName">-</a> </i>
  325. </blockquote>
  326. <a href="https://opencollective.com/jmonkeyengine">Become a
  327. backer and leave a message...</a>
  328. </div>
  329. </section>
  330. <br/>
  331. <a id="content"></a>
  332. <section class="full responsiveWidth">
  333. <article>
  334. <h1 >
  335. <i class="fas fa-paragraph useless"></i>
  336. <a href="/blog/interview-danielp/">Sgold interviews Daniel Perano</a></h1>
  337. <div class="content">
  338. <span>
  339. <p><figure class="githubUser inline " github-user="stephengold">
  340. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  341. <figcaption>
  342. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  343. stephengold
  344. </h2>
  345. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  346. <div>
  347. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  348. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  349. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  350. </div>
  351. </figcaption>
  352. </figure> <br>
  353. Thank you for agreeing to be interviewed.</p>
  354. <p>First question: Do you remember when you first encountered JMonkeyEngine?<br>
  355. What was your first impression?</p>
  356. <p><figure class="githubUser inline " github-user="danielperano">
  357. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  358. <figcaption>
  359. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  360. danielperano
  361. </h2>
  362. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  363. <div>
  364. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  365. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  366. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  367. </div>
  368. </figcaption>
  369. </figure> I started learning jME back in the 3.0 days, as I recall,<br>
  370. and I was impressed with the features it offered.<br>
  371. The scene-graph control and appstate design made a lot of sense to me &mdash;<br>
  372. at the time both were novel concepts.</p>
  373. <p>Not long after that, I adopted jME for a project called “OpenWorld.”</p>
  374. <p><figure class="githubUser inline " github-user="stephengold">
  375. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  376. <figcaption>
  377. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  378. stephengold
  379. </h2>
  380. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  381. <div>
  382. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  383. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  384. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  385. </div>
  386. </figcaption>
  387. </figure> <br>
  388. What sort of project was it?</p>
  389. <p><figure class="githubUser inline " github-user="danielperano">
  390. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  391. <figcaption>
  392. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  393. danielperano
  394. </h2>
  395. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  396. <div>
  397. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  398. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  399. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  400. </div>
  401. </figcaption>
  402. </figure> OpenWorld was the precursor to MyWorld &mdash;<br>
  403. a platform for real-time, 3-D social virtual worlds and MMO games.</p>
  404. <p><figure class="githubUser inline " github-user="stephengold">
  405. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  406. <figcaption>
  407. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  408. stephengold
  409. </h2>
  410. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  411. <div>
  412. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  413. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  414. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  415. </div>
  416. </figcaption>
  417. </figure> <br>
  418. What got you interested in social virtual worlds?</p>
  419. <p><figure class="githubUser inline " github-user="danielperano">
  420. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  421. <figcaption>
  422. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  423. danielperano
  424. </h2>
  425. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  426. <div>
  427. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  428. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  429. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  430. </div>
  431. </figcaption>
  432. </figure> I first heard of them from<br>
  433. a magazine article about Second Life, over a decade ago.<br>
  434. I was fascinated, and despite being underage<br>
  435. (accounts were restricted to users 18 and over), I created an account.</p>
  436. <p>Since I was underage my adventures there did not last long, but<br>
  437. I was hooked from the start.<br>
  438. It was like a game, but there were so many things to do and places to explore,<br>
  439. and the built-in creation system blew my mind.</p>
  440. <p>A couple years later, I discovered OpenSimulator,<br>
  441. an open-source server that’s compatible with Second Life clients (viewers).<br>
  442. Since then, I’ve been a member of various OpenSimulator virtual worlds (or grids, as they’re called).</p>
  443. <p>During my second year in OpenSimulator, I began to keenly notice<br>
  444. some limitations that OpenSimulator inherited from Second Life.<br>
  445. Compared to multi-player games, virtual worlds always felt slow and bloated,<br>
  446. and the architecture was fundamentally limiting.</p>
  447. <p>At that point I had the idea that grew into MyWorld:<br>
  448. apply multiplayer game technology to social virtual worlds.<br>
  449. Later on, I realized that a social virtual-world platform<br>
  450. could also be a powerful MMO gaming platform, and<br>
  451. since then I’ve worked towards the dual goal of supporting<br>
  452. social virtual worlds and MMO games as first-class citizens on MyWorld.</p>
  453. <p><figure class="githubUser inline " github-user="stephengold">
  454. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  455. <figcaption>
  456. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  457. stephengold
  458. </h2>
  459. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  460. <div>
  461. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  462. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  463. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  464. </div>
  465. </figcaption>
  466. </figure> <br>
  467. How many people are working on MyWorld?</p>
  468. <p><figure class="githubUser inline " github-user="danielperano">
  469. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  470. <figcaption>
  471. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  472. danielperano
  473. </h2>
  474. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  475. <div>
  476. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  477. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  478. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  479. </div>
  480. </figcaption>
  481. </figure> We have three people on the project.<br>
  482. Right now I’m the sole developer &mdash;<br>
  483. the other two handle business management,<br>
  484. social media, and aesthetics (art and design).</p>
  485. <p><figure class="githubUser inline " github-user="stephengold">
  486. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  487. <figcaption>
  488. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  489. stephengold
  490. </h2>
  491. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  492. <div>
  493. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  494. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  495. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  496. </div>
  497. </figcaption>
  498. </figure> <br>
  499. How is the project funded?</p>
  500. <p><figure class="githubUser inline " github-user="danielperano">
  501. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  502. <figcaption>
  503. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  504. danielperano
  505. </h2>
  506. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  507. <div>
  508. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  509. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  510. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  511. </div>
  512. </figcaption>
  513. </figure> We’re fully self-funded: no investor or venture-capital backing.<br>
  514. We see this as an advantage, for two reasons:</p>
  515. <ol>
  516. <li>We’re not beholden to shareholders,<br>
  517. so we’re free to make decisions that bring the best experience to our users.</li>
  518. <li>Our runway is infinitely long &mdash; we have no pressure to grow rapidly to avoid bankruptcy.<br>
  519. We can grow organically and sustainably.</li>
  520. </ol>
  521. <p><figure class="githubUser inline " github-user="stephengold">
  522. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  523. <figcaption>
  524. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  525. stephengold
  526. </h2>
  527. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  528. <div>
  529. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  530. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  531. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  532. </div>
  533. </figcaption>
  534. </figure> <br>
  535. When’s the next release of MyWorld due out?</p>
  536. <p><figure class="githubUser inline " github-user="danielperano">
  537. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  538. <figcaption>
  539. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  540. danielperano
  541. </h2>
  542. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  543. <div>
  544. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  545. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  546. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  547. </div>
  548. </figcaption>
  549. </figure> Our first alpha/preview release<br>
  550. will come out around the end of March of this year (2020).</p>
  551. <p><figure class="githubUser inline " github-user="stephengold">
  552. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  553. <figcaption>
  554. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  555. stephengold
  556. </h2>
  557. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  558. <div>
  559. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  560. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  561. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  562. </div>
  563. </figcaption>
  564. </figure> <br>
  565. What features will it provide?</p>
  566. <p><figure class="githubUser inline " github-user="danielperano">
  567. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  568. <figcaption>
  569. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  570. danielperano
  571. </h2>
  572. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  573. <div>
  574. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  575. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  576. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  577. </div>
  578. </figcaption>
  579. </figure> The feature set will depend on what we have time to finish.<br>
  580. Dynamic asset delivery/loading, the entity system, and scripting<br>
  581. are in pretty good shape,<br>
  582. but the user interface still needs work<br>
  583. and there are many small “detail features” that need attention.</p>
  584. <p><figure class="githubUser inline " github-user="stephengold">
  585. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  586. <figcaption>
  587. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  588. stephengold
  589. </h2>
  590. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  591. <div>
  592. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  593. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  594. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  595. </div>
  596. </figcaption>
  597. </figure> <br>
  598. In the long run, what will differentiate MyWorld from other virtual worlds?<br>
  599. Specifically, how would you compare it to Minecraft and Second Life?</p>
  600. <p><figure class="githubUser inline " github-user="danielperano">
  601. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  602. <figcaption>
  603. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  604. danielperano
  605. </h2>
  606. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  607. <div>
  608. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  609. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  610. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  611. </div>
  612. </figcaption>
  613. </figure> Unlike Minecraft, MyWorld is not a game itself &mdash;<br>
  614. it’s a platform that supports dynamic content creation and scripting,<br>
  615. and unlike games more generally, MyWorld provides first-class support<br>
  616. for uploading 3D models, textures, audio, etcetera<br>
  617. and distributing them to clients on an as-needed basis.<br>
  618. It also has a professional-grade scripting language you can use<br>
  619. to add custom behavior to your creations.</p>
  620. <p>Unlike current-generation virtual worlds,<br>
  621. MyWorld was designed from Day One to satisfy<br>
  622. the performance requirements of multiplayer action games.<br>
  623. This means that exploring a virtual world can have the same fast,<br>
  624. fluid feel as playing a well-designed multiplayer game.</p>
  625. <p>Another difference is that we support scripting on both client and server,<br>
  626. allowing scripted effects and latency-elimination techniques<br>
  627. that are impossible in current virtual worlds.</p>
  628. <p>In addition, our internal systems can be extended via plugins<br>
  629. that can integrate into the entity system and<br>
  630. host or call HTTP endpoints (for custom REST APIs, for example).<br>
  631. Plugins can even extend the core network protocol<br>
  632. with jME’s fast, intuitive, and efficient RMI implementation.</p>
  633. <p><figure class="githubUser inline " github-user="stephengold">
  634. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  635. <figcaption>
  636. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  637. stephengold
  638. </h2>
  639. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  640. <div>
  641. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  642. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  643. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  644. </div>
  645. </figcaption>
  646. </figure> <br>
  647. What’s the financial model? Will the client be freely downloadable?<br>
  648. Will there be paid subscriptions? Free-to-play accounts?</p>
  649. <p><figure class="githubUser inline " github-user="danielperano">
  650. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  651. <figcaption>
  652. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  653. danielperano
  654. </h2>
  655. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  656. <div>
  657. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  658. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  659. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  660. </div>
  661. </figcaption>
  662. </figure> Our vision for MyWorld has always been to release it open-source,<br>
  663. so the client will always be free to download and use, as will the core server.<br>
  664. We may eventually release some commercial plugins for professional use,<br>
  665. but these would be extensions to the core server,<br>
  666. not permanently built-in proprietary code.</p>
  667. <p>In a project like MyWorld,<br>
  668. there are many opportunities to provide value to users,<br>
  669. so there are many potential revenue streams.<br>
  670. Initially we’re looking at a revenue model similar to Second Life:<br>
  671. users can rent space in the virtual world to build homes,<br>
  672. businesses, workshops, etcetera.<br>
  673. We may also introduce a subscription model that offers<br>
  674. extra benefits to heavy users.</p>
  675. <p>We’re also investigating how we can monetize<br>
  676. by offering professional hosting and support services to game developers<br>
  677. and those interested in running MyWorld servers.</p>
  678. <p><figure class="githubUser inline " github-user="stephengold">
  679. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  680. <figcaption>
  681. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  682. stephengold
  683. </h2>
  684. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  685. <div>
  686. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  687. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  688. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  689. </div>
  690. </figcaption>
  691. </figure> <br>
  692. I’ve heard that Second Life has its own currency.<br>
  693. Do you have plans in that area?</p>
  694. <p><figure class="githubUser inline " github-user="danielperano">
  695. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  696. <figcaption>
  697. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  698. danielperano
  699. </h2>
  700. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  701. <div>
  702. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  703. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  704. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  705. </div>
  706. </figcaption>
  707. </figure> While MyWorld needs a virtual currency to effectively operate,<br>
  708. issuing one ourselves is not currently a viable choice for a couple of reasons:</p>
  709. <ol>
  710. <li>
  711. <p>Issuing in-house currency is a large financial liability &mdash;<br>
  712. there are many ways to destabilize an economy, virtual or otherwise,<br>
  713. that are largely or completely outside the control of the currency issuer,<br>
  714. which would present a risk both to us and our users.</p>
  715. </li>
  716. <li>
  717. <p>Governments have begun regulating virtual currencies,<br>
  718. making it expensive and difficult to issue them.</p>
  719. </li>
  720. </ol>
  721. <p>Fortunately, we’re not the only ones with this need<br>
  722. and there are several good virtual currency services,<br>
  723. some of which allow the same currency to be used across many games or virtual worlds.</p>
  724. <p>So yes, we will have a virtual currency,<br>
  725. but we’re not planning on issuing it ourselves.</p>
  726. <p><figure class="githubUser inline " github-user="stephengold">
  727. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  728. <figcaption>
  729. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  730. stephengold
  731. </h2>
  732. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  733. <div>
  734. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  735. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  736. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  737. </div>
  738. </figcaption>
  739. </figure> <br>
  740. You mentioned earlier that Second Life was age-restricted.<br>
  741. Will MyWorld have similar restrictions?</p>
  742. <p><figure class="githubUser inline " github-user="danielperano">
  743. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  744. <figcaption>
  745. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  746. danielperano
  747. </h2>
  748. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  749. <div>
  750. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  751. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  752. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  753. </div>
  754. </figcaption>
  755. </figure> Initially yes, unfortunately.<br>
  756. Allowing minors requires extra legal compliance<br>
  757. and stringent moderation of content and user interactions.</p>
  758. <p>I don’t see this as a notable limitation, especially early on.<br>
  759. Most of our initial user base will be developers and creators,<br>
  760. not general users,<br>
  761. so I expect the overwhelming majority of interest to be coming from adults.</p>
  762. <p>I want to allow minors to access at least some areas within MyWorld<br>
  763. as soon as it makes sense for us as an organization and community,<br>
  764. but for now we need to focus on the technical aspects.</p>
  765. <p><figure class="githubUser inline " github-user="stephengold">
  766. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  767. <figcaption>
  768. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  769. stephengold
  770. </h2>
  771. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  772. <div>
  773. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  774. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  775. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  776. </div>
  777. </figcaption>
  778. </figure> <br>
  779. Does MyWorld use JMonkeyEngine for the client, the server, or both?</p>
  780. <p><figure class="githubUser inline " github-user="danielperano">
  781. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  782. <figcaption>
  783. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  784. danielperano
  785. </h2>
  786. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  787. <div>
  788. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  789. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  790. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  791. </div>
  792. </figcaption>
  793. </figure> The client is a typical jME application &mdash;<br>
  794. AppStates tie MyWorld-specific libraries (such as our in-house entity system)<br>
  795. to other systems and the scene graph.</p>
  796. <p>The server uses jME’s network stack,<br>
  797. and we’re transitioning from jME’s physics to Minie, but that’s about all.<br>
  798. The server’s systems and heartbeat/event dispatch loop are all custom &mdash;<br>
  799. we don’t use jME’s application structure serverside.</p>
  800. <p><figure class="githubUser inline " github-user="stephengold">
  801. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  802. <figcaption>
  803. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  804. stephengold
  805. </h2>
  806. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  807. <div>
  808. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  809. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  810. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  811. </div>
  812. </figcaption>
  813. </figure> <br>
  814. What technologies does MyWorld use besides JMonkeyEngine?</p>
  815. <p><figure class="githubUser inline " github-user="danielperano">
  816. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  817. <figcaption>
  818. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  819. danielperano
  820. </h2>
  821. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  822. <div>
  823. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  824. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  825. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  826. </div>
  827. </figcaption>
  828. </figure> It uses JavaFX, Lemur, Chipmunk (our in-house scripting language),<br>
  829. Jetty (an embedded HTTP server), and CockroachDB (a distributed SQL database).</p>
  830. <p><figure class="githubUser inline " github-user="stephengold">
  831. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  832. <figcaption>
  833. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  834. stephengold
  835. </h2>
  836. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  837. <div>
  838. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  839. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  840. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  841. </div>
  842. </figcaption>
  843. </figure> <br>
  844. What prompted you to create Chipmunk?<br>
  845. What other scripting languages did you consider?</p>
  846. <p><figure class="githubUser inline " github-user="danielperano">
  847. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  848. <figcaption>
  849. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  850. danielperano
  851. </h2>
  852. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  853. <div>
  854. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  855. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  856. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  857. </div>
  858. </figcaption>
  859. </figure> Chipmunk was born out of necessity.</p>
  860. <p>Like Second Life,<br>
  861. MyWorld allows content creators to script anything they create.<br>
  862. Scripting can include physics, movement, particle/sound/animation effects,<br>
  863. HTTP calls, etcetera.</p>
  864. <p>The problems here are security and resource use.<br>
  865. Since anyone with creation privileges can upload scripts to a server<br>
  866. (and scripts can also run client side), sandboxing is a must.</p>
  867. <p>My first choice for scripting was Groovy.<br>
  868. It’s a powerful, well-known language with many features,<br>
  869. and the compiler supports AST transformations for customizing compiled code.<br>
  870. I spent a great deal of time pursuing this route,<br>
  871. but the shoe always pinched in the same spots: preemption and checkpointing.</p>
  872. <p>Preemption means that the script engine can stop a running script at any time.<br>
  873. This is necessary to ensure that misbehaving (or resource-intensive) scripts<br>
  874. don’t overuse CPU resources.<br>
  875. Preemption is also necessary for checkpointing:<br>
  876. freezing a script so it can be persisted to disk or sent to another server.</p>
  877. <p>Java was not designed for preemption.<br>
  878. Every mechanism I could think of to fit preemption support<br>
  879. into Java’s compiled bytecode came with substantial overhead and other nasty limitations.</p>
  880. <p>I also experimented with an assembly-like language for scripting,<br>
  881. but it was too difficult to read to be suitable for anything more than trivial scripts.</p>
  882. <p>I designed Chipmunk to fit a unique place in the language spectrum &mdash;<br>
  883. easy for a first-time programmer to pick up,<br>
  884. but powerful enough for an experienced developer to hit the ground running.<br>
  885. For example, classes declare state that’s shared between all instances<br>
  886. via the “shared” keyword,<br>
  887. which is semantically identical to Java’s “static” keyword,<br>
  888. but expresses the concept in terms that make intuitive sense<br>
  889. to inexperienced programmers.</p>
  890. <p>In terms of features, Chipmunk supports modules, classes, polymorphism,<br>
  891. first-class functions, anonymous (lambda) functions, exceptions,<br>
  892. and dynamic typing.</p>
  893. <p><figure class="githubUser inline " github-user="stephengold">
  894. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  895. <figcaption>
  896. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  897. stephengold
  898. </h2>
  899. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  900. <div>
  901. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  902. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  903. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  904. </div>
  905. </figcaption>
  906. </figure> <br>
  907. Chipmunk sounds like it might have many uses.</p>
  908. <p><figure class="githubUser inline " github-user="danielperano">
  909. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  910. <figcaption>
  911. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  912. danielperano
  913. </h2>
  914. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  915. <div>
  916. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  917. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  918. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  919. </div>
  920. </figcaption>
  921. </figure> I hope so! I’m looking forward to seeing what else it’s used for.</p>
  922. <p><figure class="githubUser inline " github-user="stephengold">
  923. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  924. <figcaption>
  925. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  926. stephengold
  927. </h2>
  928. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  929. <div>
  930. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  931. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  932. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  933. </div>
  934. </figcaption>
  935. </figure> <br>
  936. Is there any published documentation for it?<br>
  937. Is it open-source?</p>
  938. <p><figure class="githubUser inline " github-user="danielperano">
  939. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  940. <figcaption>
  941. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  942. danielperano
  943. </h2>
  944. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  945. <div>
  946. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  947. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  948. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  949. </div>
  950. </figcaption>
  951. </figure> Chipmunk is developed separately from MyWorld and will be released<br>
  952. open-source as soon as we’ve finalized the v1.0 language spec<br>
  953. and finished implementing the standard library.</p>
  954. <p>The main language features are functional, but it needs more attention<br>
  955. on things like string manipulation, collection operations, and libraries.</p>
  956. <p><figure class="githubUser inline " github-user="stephengold">
  957. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  958. <figcaption>
  959. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  960. stephengold
  961. </h2>
  962. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  963. <div>
  964. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  965. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  966. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  967. </div>
  968. </figcaption>
  969. </figure> <br>
  970. Part of the appeal of an open world, I think,<br>
  971. is having a place to exhibit digital creations.</p>
  972. <p>What skills/tools would someone need to create and upload a 3-D model?<br>
  973. Do you envision people using Blender 3D?</p>
  974. <p>What audio formats will MyWorld support?</p>
  975. <p><figure class="githubUser inline " github-user="danielperano">
  976. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  977. <figcaption>
  978. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  979. danielperano
  980. </h2>
  981. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  982. <div>
  983. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  984. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  985. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  986. </div>
  987. </figcaption>
  988. </figure> MyWorld is built around the assumption that users will create digital content.<br>
  989. One of the first things I wrote was the dynamic asset upload/download mechanism.</p>
  990. <p>Our initial creation pipeline is based around the GLTF format.<br>
  991. Thanks to jME’s GLTF importer, most modern GLTF files should import seamlessly.<br>
  992. Our primary interest in external tools is Blender 3D,<br>
  993. but anything that exports to GLTF should do fine.</p>
  994. <p>Later on, we plan to support in-world creation via constructive solid geometry<br>
  995. with procedural extensions, as a supplement to the GLTF pipeline.</p>
  996. <p>Any audio format supported by jME (OGG &amp; WAV in particular)<br>
  997. can be opened by the client for upload.<br>
  998. Streaming media can be in any format supported by JavaFX’s media framework.</p>
  999. <p><figure class="githubUser inline " github-user="stephengold">
  1000. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  1001. <figcaption>
  1002. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  1003. stephengold
  1004. </h2>
  1005. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  1006. <div>
  1007. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  1008. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  1009. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  1010. </div>
  1011. </figcaption>
  1012. </figure> <br>
  1013. If someone wants to develop games for MyWorld, where should they begin?<br>
  1014. Is there an e-mail list for announcements?<br>
  1015. A website they should monitor?<br>
  1016. A chatroom they should join?</p>
  1017. <p><figure class="githubUser inline " github-user="danielperano">
  1018. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  1019. <figcaption>
  1020. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  1021. danielperano
  1022. </h2>
  1023. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  1024. <div>
  1025. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  1026. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  1027. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  1028. </div>
  1029. </figcaption>
  1030. </figure> The best place to go is our <a href="https://discordapp.com/invite/WccnrWg">Discord server</a>.<br>
  1031. We have an active community there,<br>
  1032. and we often discuss planned or requested features.<br>
  1033. It’s also the first place we share development updates<br>
  1034. and news about the project.<br>
  1035. For anyone wishing to participate in the alpha-test release,<br>
  1036. this is the place to be.</p>
  1037. <p>Our <a href="https://www.facebook.com/MyWorld-LLC-228751528045088">Facebook</a><br>
  1038. and <a href="https://twitter.com/MyWorldLLC">Twitter</a> pages<br>
  1039. cover major news items and announcements,<br>
  1040. and liking/following us there helps us get the word out to more people!</p>
  1041. <p>For general project information, blog posts, and press releases,<br>
  1042. the <a href="https://myworldvw.com/">MyWorld website</a> is the place to go.<br>
  1043. We archive the notes from our monthly “MyWorld Meetup” sessions on the blog &mdash;<br>
  1044. these are a great resource for finding out details about the project.</p>
  1045. <p><figure class="githubUser inline " github-user="stephengold">
  1046. <img class="excludeSummary" src="https://avatars.githubusercontent.com/stephengold">
  1047. <figcaption>
  1048. <h2 ghresolve-bio="title" alt="stephengold" class="ghname" ghresolve-name="innerText">
  1049. stephengold
  1050. </h2>
  1051. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  1052. <div>
  1053. <a alt="github link" title="Github" href="https://github.com/stephengold" class="excludeSummary"><i class="fab fa-github"></i></a>
  1054. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  1055. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  1056. </div>
  1057. </figcaption>
  1058. </figure> <br>
  1059. I’ve run out of questions.<br>
  1060. Unless there’s something more you’d like to discuss, let’s wrap this up.</p>
  1061. <p>Thank you very much for your detailed answers<br>
  1062. and all the time and care you put into them.</p>
  1063. <p><figure class="githubUser inline " github-user="danielperano">
  1064. <img class="excludeSummary" src="https://avatars.githubusercontent.com/danielperano">
  1065. <figcaption>
  1066. <h2 ghresolve-bio="title" alt="danielperano" class="ghname" ghresolve-name="innerText">
  1067. danielperano
  1068. </h2>
  1069. <span ghresolve-bio="innerText" class="ghbio excludeSummary"></span>
  1070. <div>
  1071. <a alt="github link" title="Github" href="https://github.com/danielperano" class="excludeSummary"><i class="fab fa-github"></i></a>
  1072. <a alt="twitter link" title="Twitter" ghresolve-twitter_link="href" class="ghtwitter_link excludeSummary" href="" style="display:none"><i class="fab fa-twitter"></i></a>
  1073. <a alt="website link" title="Website" ghresolve-blog="href" class="ghblog excludeSummary" href="" style="display:none"><i class="fas fa-globe"></i></a>
  1074. </div>
  1075. </figcaption>
  1076. </figure> Thank you! I enjoyed the interview, and I’m looking forward to seeing how jME continues to grow and improve – there’s a lot of great talent behind this project!</p>
  1077. </span>
  1078. <nav>
  1079. <ul class="tags smaller">
  1080. <h3 class="tags">Tags</h3>
  1081. <li><a class="interview" href="/tags/interview"><i class="fas fa-hashtag"></i>interview</a></li>
  1082. <li><a class="blog" href="/tags/blog"><i class="fas fa-hashtag"></i>blog</a></li>
  1083. <li><a class="misc" href="/tags/misc"><i class="fas fa-hashtag"></i>misc</a></li>
  1084. </ul>
  1085. <ul class="authors smaller">
  1086. <h3 class="authors">Authors</h3>
  1087. <li><a class="stephengold" href="/authors/stephengold"><i class="fas fa-at"></i>stephengold</a></li>
  1088. </ul>
  1089. <ul class="postedDate smaller">
  1090. <h3 class="postedDate">Date</h3>
  1091. <li><time datetime="2020-02-25 18:00:00 &#43;0000 UTC"><i class="fas fa-calendar"></i>25 February 2020</time> </li>
  1092. </ul>
  1093. <ul class="share">
  1094. <h3 class="share">Share</h3>
  1095. <li>
  1096. <button><a href="https://twitter.com/share?ref_src=twsrc%5Etfw&text=stephengold%20Thank%20you%20for%20agreeing%20to%20be%20interviewed.%0aFirst%20question%3a%20Do%20you%20remember%20when%20you%20first%20encountered%20JMonkeyEngine%3f%0aWhat%20was%20your%20first%20%e2%80%a6 " >
  1097. <i class="fab fa-twitter-square"></i> Share on Twitter</a></button></li>
  1098. </ul>
  1099. </nav>
  1100. </div>
  1101. </article>
  1102. </section>
  1103. <section class="full responsiveWidth">
  1104. <article>
  1105. <h1 id="comments"><i class="useless fas fa-comments"></i> Comments</h1>
  1106. <div class="content" id='discourse-comments'></div>
  1107. <script type="text/javascript">
  1108. var eurl=window.location.href ;
  1109. eurl=eurl.split("#")[0];
  1110. eurl=eurl.split("?")[0];
  1111. eurl=eurl.trim();
  1112. if(eurl.endsWith("/index.html"))eurl=eurl.substring(0,eurl.length-"/index.html".length).trim();
  1113. if(eurl.charAt(eurl.length-1)=="/") eurl=eurl.substring(0,eurl.length-1);
  1114. if(eurl.startsWith("http://")) eurl="https://"+eurl.substring("http://".length);
  1115. if(eurl.endsWith("/communitylog/new-website")){
  1116. eurl+="/#content";
  1117. }
  1118. DiscourseEmbed = {
  1119. discourseUrl: 'https://hub.jmonkeyengine.org/',
  1120. discourseEmbedUrl: eurl
  1121. };
  1122. (function() {
  1123. var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
  1124. d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
  1125. (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  1126. })();
  1127. </script>
  1128. </article>
  1129. </section>
  1130. </main>
  1131. <footer>
  1132. © 2020 jMonkeyEngine.
  1133. All other trademarks, logos and featured content are property of their respective owners.
  1134. <br />
  1135. <a title="Github repo" rel='noopener nofollow noreferrer' target="_blank"
  1136. href="https://github.com/jMonkeyEngine/jmonkeyengine-website">
  1137. <i class="fab fa-github"></i> Source on Github
  1138. </a>
  1139. |
  1140. <a title="Report issue" rel='noopener nofollow noreferrer' target="_blank"
  1141. href="https://github.com/jMonkeyEngine/jmonkeyengine-website/issues">
  1142. <i class="fas fa-bug"></i> Report an issue
  1143. </a>
  1144. <br />
  1145. <br />
  1146. Website designed and developed by
  1147. <a href="https://github.com/riccardobl">Riccardo Balbo</a>
  1148. for the jMonkeyEngine's Community.
  1149. </footer>
  1150. <div id="poweredBy" >
  1151. <a rel='noopener nofollow noreferrer' target="_blank" href="https://www.macstadium.com/">
  1152. <img src="/images/macstadium-logo.png" />
  1153. </a>
  1154. <a rel='noopener nofollow noreferrer' target="_blank" href="https://www.java.com/">
  1155. <img src="/images/java-logo.png" />
  1156. </a>
  1157. <a rel='noopener nofollow noreferrer' target="_blank" href="https://opengl.org/">
  1158. <img src="/images/opengl-logo.png" />
  1159. </a>
  1160. </div>
  1161. </body>
  1162. </html>