{"id":88,"date":"2018-03-05T18:00:22","date_gmt":"2018-03-06T00:00:22","guid":{"rendered":"http:\/\/www.chroniclesoftright.com\/blog\/?p=88"},"modified":"2018-03-05T12:33:14","modified_gmt":"2018-03-05T18:33:14","slug":"progress-report-2018-03-06","status":"publish","type":"post","link":"https:\/\/www.chroniclesoftright.com\/blog\/2018\/03\/05\/progress-report-2018-03-06\/","title":{"rendered":"Progress report, 2018.03.06"},"content":{"rendered":"<p>So far the rewrite in <a href=\"http:\/\/threejs.org\" target=\"_blank\" rel=\"noopener\">THREE.js<\/a> is going fairly smoothly.\u00a0 I have a very simple random terrain generator and a character model that loads.\u00a0 A simple follow camera follows the character around and the character stays on top of the ground thanks to a <a href=\"https:\/\/threejs.org\/docs\/#api\/core\/Raycaster\" target=\"_blank\" rel=\"noopener\">raycaster<\/a>.\u00a0 The Penrith Farmhouse is also loaded and you can walk around (and through) it.\u00a0 I also have fog set up so that anything past a certain distance just fades into the distance as you walk around.\u00a0 This is most of what I had set up in the <a href=\"http:\/\/babylonjs.com\" target=\"_blank\" rel=\"noopener\">BabylonJS<\/a> implementation, but without as much content in the world and without collision detection (other than the ground).<\/p>\n<p>Some things I&#8217;m excited about:<\/p>\n<ul>\n<li>Performance is still good at this point, even on my very low end testing PC.\u00a0 If I shrink the display down to 800 x 600 I can get 60 FPS.\u00a0 This is good news because I would really like the low end hardware requirements for the game to be very low.<\/li>\n<li>Lighting is going to be fun in THREE.js.\u00a0 I didn&#8217;t play around with the lighting much in BabylonJS but I can totally see individual lamp posts actually casting light, and maybe even using shadows for players with beefier hardware.<\/li>\n<li>No twitching.\u00a0 One of the things that really bothered me about the built-in collision detection system in BabylonJS is that right from the start it made my scenes very jumpy.\u00a0 For instance, just walking around on the terrain made the camera jittery.\u00a0 It wasn&#8217;t a huge deal and it was probably something I was doing wrong anyway, but it made the game feel manic and made me nervous that it happened so easily when using that engine.<\/li>\n<\/ul>\n<p>At this point I need to address the first drawback of using THREE.js as a game engine which is there are no native scene creation utilities.\u00a0 I can&#8217;t just model a whole scene in <a href=\"http:\/\/blender.org\" target=\"_blank\" rel=\"noopener\">Blender<\/a> then import it like I can with BabylonJS.\u00a0 Honestly, though, even if I could I don&#8217;t think that&#8217;s a great process.\u00a0 If this is going to be a real game, it needs a real scene editor so that I can see the changes I want to make as they appear in the engine, not in another piece of software.\u00a0 That being said I will still make heavy use of Blender to create assets for Lyridia, I just need a tool to import those assets into a scene and move, rotate, and scale them in a way that is efficient for THREE.js.<\/p>\n<p>So that will be my project for the next several days, or possibly a few weeks.\u00a0 I&#8217;ll need the ability to load and save terrains with height map images, import and position, rotate, and scale assets, and save scene files.\u00a0 If I can get all that working then I&#8217;ll start looking at some more advanced options like tweaking materials, adding lights, etc., etc., etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>So far the rewrite in THREE.js is going fairly smoothly.\u00a0 I have a very simple random terrain generator and a character model that loads.\u00a0 A simple follow camera follows the character around and the character stays on top of the ground thanks to a raycaster.\u00a0 The Penrith Farmhouse is also loaded and you can walk&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-88","post","type-post","status-publish","format-standard","hentry","category-planning-and-development"],"_links":{"self":[{"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/posts\/88","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/comments?post=88"}],"version-history":[{"count":3,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions"}],"predecessor-version":[{"id":91,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/posts\/88\/revisions\/91"}],"wp:attachment":[{"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/media?parent=88"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/categories?post=88"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.chroniclesoftright.com\/blog\/wp-json\/wp\/v2\/tags?post=88"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}