{"id":7261,"date":"2011-09-30T12:00:59","date_gmt":"2011-09-30T19:00:59","guid":{"rendered":"http:\/\/mozillalabs.com\/?p=7261"},"modified":"2011-09-30T12:00:59","modified_gmt":"2011-09-30T19:00:59","slug":"rescuefox-the-value-of-a-prototype","status":"publish","type":"post","link":"https:\/\/blog.mozilla.org\/labs\/2011\/09\/rescuefox-the-value-of-a-prototype\/","title":{"rendered":"RescueFox: The Value of a Prototype"},"content":{"rendered":"<p>Paladin is a Mozilla project to push 3D gaming on the Web.\u00a0 As a part of our efforts, we&#8217;re building a game engine called Gladius.\u00a0 We&#8217;ll blog proper introductions to both of these projects in the upcoming weeks.<\/p>\n<p>We&#8217;ve built RescueFox, a first prototype game, as a way to validate the Gladius game engine work we&#8217;re doing and find issues in the Gecko and Web platforms as well.\u00a0 Note that we do not intend this as a prototype for a larger-scale game.<\/p>\n<h2 id=\"magicdomid11\">Interstellar Travel<\/h2>\n<p>Don&#8217;t you hate it when you&#8217;re traveling at light speed, and your pet space fox escapes to an asteroid belt?<\/p>\n<p>I know it drives me nuts.\u00a0 Fortunately, you have an invisible fox detector to figure out where she is, and you can use a tractor beam that pulls you from asteroid to asteroid to the fox herself.\u00a0 And you&#8217;ve got about 90 seconds until she runs out of air.<\/p>\n<p>The game works in current versions of Firefox, and cursory testing suggests that works in Chrome on MacOS, albeit more slowly and without sound.<\/p>\n<div><a href=\"http:\/\/rescuefox.mozillalabs.com\/\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone size-full wp-image-7265\" src=\"http:\/\/blog.mozilla.org\/labs\/files\/2011\/09\/RescueFox-screenshot.jpg\" alt=\"\" width=\"615\" height=\"346\" srcset=\"https:\/\/blog.mozilla.org\/labs\/files\/2011\/09\/RescueFox-screenshot.jpg 615w, https:\/\/blog.mozilla.org\/labs\/files\/2011\/09\/RescueFox-screenshot-300x168.jpg 300w\" sizes=\"(max-width: 615px) 100vw, 615px\" \/><\/a><\/div>\n<p style=\"text-align: center\"><a href=\"http:\/\/rescuefox.mozillalabs.com\" target=\"_blank\">Play with RescueFox<\/a><\/p>\n<p>If you&#8217;re interested in learning more about RescueFox, Paladin, and Gladius, or in contacting us, have a look at the <a href=\"http:\/\/wiki.mozilla.org\/Paladin\" target=\"_blank\">(still-in-progress!) Paladin wiki page<\/a>.<\/p>\n<h2 id=\"magicdomid23\">The Value of the Prototype<\/h2>\n<p>RescueFox was developed to make sure that the Gladius gaming engine was really going to be suitable to build games against.\u00a0 CJ Cliffe started by doing lots of work initially directly against <a href=\"http:\/\/www.cubicvr.org\/\">CubicVR.js<\/a>, a great 3D engine that Gladius depends on.\u00a0 It&#8217;s the same 3D engine used to build the No Comply and Flight of the Navigator demos.\u00a0 Alan Kligman and Bobby Richter started porting chunks of it to the higher-level Gladius APIs, and I started working with some of the input APIs, the timer, and finding visual assets to use.<\/p>\n<p>This is where it started to get interesting.\u00a0 As we progressed, the game coding started to make clear to us that some of the factoring of the existing APIs was actually making the game more complex to build rather than easier.<\/p>\n<p>After more work, a super simple prototype engine that Bobby whipped up, and more discussion, we came to the conclusion that we needed to do some refactoring on Gladius.\u00a0 This was great, because it meant that we figured it out much sooner than we otherwise would have.<\/p>\n<p>We still needed a game prototype as a way to communicate more broadly the part of the Web gaming space we want our engine and the larger project to explore, so we mostly stuck with the lower-level APIs and did just enough work to make it basically playable.<\/p>\n<p>Note that we think we&#8217;ve learned most of what we can from RescueFox and don&#8217;t intend to drive it forward any further at this point (though that shouldn&#8217;t stop anyone who feels inclined to fork it).\u00a0 But we&#8217;ll be prototyping another microgame soon once the Gladius refactoring is a bit further along, and we&#8217;ll be very interested in having folks help out there&#8230;<\/p>\n<h2>Credits<\/h2>\n<p>RescueFox was very much a group effort.\u00a0 Thanks ever so much to&#8230;.<\/p>\n<ul>\n<li>James Burke (modularizing Gladius with <a href=\"http:\/\/requirejs.org\/\">require.js<\/a>)<\/li>\n<li>CJ Cliffe (game mechanics, design, coding, modeling, physics, and CubicVR.js)<\/li>\n<li>David Humphrey (design, Gladius sound API, music selection)<\/li>\n<li>Alan Kligman (game mechanics, design, coding, engine design)<\/li>\n<li>Dan Mosedale (coding, model selection, game mechanics, project mgmt)<\/li>\n<li>NASA (spacesuit model &amp; textures)<\/li>\n<li>Perfect Blind (background music: &#8220;Three Spires&#8221; and &#8220;Ethernion II&#8221;)<\/li>\n<li>Bobby Richter (game mechanics, design, modeling, coding, engine design)<\/li>\n<li>ro.me team (fox model and textures)<\/li>\n<li>Alon Zakai (physics &amp; <a href=\"https:\/\/github.com\/kripken\/ammo.js\">ammo.js<\/a>)<\/li>\n<\/ul>\n<p>Apologies to anyone we&#8217;ve inadvertently omitted!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Paladin is a Mozilla project to push 3D gaming on the Web.\u00a0 As a part of our efforts, we&#8217;re building a game engine called Gladius.\u00a0 We&#8217;ll blog proper introductions to both of these projects in the upcoming weeks. We&#8217;ve built &hellip; <a class=\"go\" href=\"https:\/\/blog.mozilla.org\/labs\/2011\/09\/rescuefox-the-value-of-a-prototype\/\">Continue reading<\/a><\/p>\n","protected":false},"author":336,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[19256,20250,254,19433],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts\/7261"}],"collection":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/users\/336"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/comments?post=7261"}],"version-history":[{"count":0,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/posts\/7261\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/media?parent=7261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/categories?post=7261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mozilla.org\/labs\/wp-json\/wp\/v2\/tags?post=7261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}