<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-4280043429616475300</id><updated>2009-10-19T02:39:13.747-05:00</updated><title type='text'>Josh Forde - Independent Game Developer</title><subtitle type='html'>Game developer Josh Forde's official blog.  News about his games and previews of upcoming titles are posted here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.joshforde.com/blog/atom.xml'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/index.php'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default?start-index=26&amp;max-results=25'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-836277204335371196</id><published>2009-10-19T02:39:00.000-05:00</published><updated>2009-10-19T02:39:00.970-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stealth Prankster 2'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><title type='text'>Resuming work on SP2.. little by little</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;As may have become apparent by my lack of updates, I've lately been very strained for time since the fall semester began a month and a half ago.&lt;br/&gt;&lt;br/&gt;The unfortunate effect of this is that I've had to stall work on &lt;b&gt;Stealth Prankster 2&lt;/b&gt;.  Game development is something that lives in my free time, and as my free time arrives in smaller and smaller doses, I find myself unable to work on games like Stealth Prankster 2 as much as I'd like to.&lt;br/&gt;&lt;br/&gt;This weekend, I found a chance to work on the game a bit.  The level editor is what I'm currently focused on, and the core of it is nearly complete now.  I say the "core" of the level editor is nearly complete, because the whole editor itself is a living application and will be receiving updates as new features are added to the game engine.&lt;br/&gt;&lt;br/&gt;I'll soon also be starting a full design document for the game.  When I started working on the game, I made a big (and all-too-common) mistake: I didn't really plan anything out.  I had a hazy idea in my head of what the game should be, but, to this day, I still have a lot of design to do on paper before the game can really start to take form.  This includes the creative side (storyline, characters, visual direction) as well as the technical side (gameplay mechanics, GUI, cutscenes).&lt;br/&gt;&lt;br/&gt;Here's a quick screenshot of the current state of the level editor:&lt;br/&gt;&lt;br/&gt;&lt;a target='_blank' href='http://img196.imageshack.us/img196/9938/leveleditor.png'&gt;&lt;img border='0' title='Screenshot' alt='Screenshot' src='http://img17.imageshack.us/img17/3999/leveleditorth.png'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;This reminds me of a little detail you might be interested to hear: I'm changing the game's camera perspective to an overhead view instead of a third-person view.  The view will look something like the view in Metal Gear Solid 1 (a game from which the Stealth Prankster series takes great inspiration, by the way).  It'll look a bit like you see in the level editor screenshot above, except from more of a zoomed-in level.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=00e56739-e7a4-84b7-a81c-3b2b44516b0b' alt='' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-836277204335371196?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/836277204335371196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=836277204335371196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/836277204335371196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/836277204335371196'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/10/resuming-work-on-sp2-little-by-little.html' title='Resuming work on SP2.. little by little'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-9043413894221962124</id><published>2009-07-29T07:07:00.001-05:00</published><updated>2009-07-29T07:10:16.131-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stealth Prankster 2'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><title type='text'>A quick update on SP2's recent progress</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;It's been a while since I've posted, so I thought it wise to let you all know I haven't stopped posting.  I've just been keeping everything a bit quiet until I have something big to show, like a polished screenshot.  &lt;b&gt;Stealth Prankster 2&lt;/b&gt; is still in development, of course, and it's continuously progressing.&lt;br /&gt;&lt;br /&gt;Here's an idea of what I've been up to lately.  Since about the time of my last post, I've written a level editor from the ground up, and the level editor is mostly complete-- that is, until I add more features to the game itself, at which point I'll need to update the level editor accordingly.  My current goal is to program a scriptable object class; that is, code that represents an in-game object which can be scripted to perform a number of tasks.  These in-game objects can be something like an object that you pick up in a level as part of a mission objective, or they can be invisible "waypoints" such as the goal/exit of a level.  Once these scriptable objects are possible, I should be able to start designing real levels (at last..).&lt;br /&gt;&lt;br /&gt;A very talented 3D artist/modeler recently joined the project, and I'm very excited to show you guys what he's been up to-- it's really amazing stuff.  However, I'm going to wait until that official "announcement"/"press release" before showing any of the game's finalized artwork.  You know, coincidentally, the way I came in contact with this artist was through this very blog-- he posted a comment on one of my blog posts a few months ago, expressing interest in the project.  Perhaps blogging is a good means of networking...&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=81bad7a1-0c45-81dd-835a-6ed224275bff" alt="" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-9043413894221962124?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/9043413894221962124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=9043413894221962124' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/9043413894221962124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/9043413894221962124'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/07/quick-update-on-sp2-recent-progress.html' title='A quick update on SP2&amp;#39;s recent progress'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-9012088408873593408</id><published>2009-07-07T00:30:00.001-05:00</published><updated>2009-07-07T02:44:28.128-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Stealth Prankster'/><category scheme='http://www.blogger.com/atom/ns#' term='Stealth Prankster 2'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><title type='text'>Implementation of A* pathfinding = success!</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I'm working again on &lt;b&gt;Stealth Prankster 2&lt;/b&gt;.  I haven't prepared an official announcement for it yet (complete with storyline, characters, features, screenshots..), because I'm waiting until the game's a bit further along.  But here's a glimpse into its recent development.&lt;br /&gt;&lt;br /&gt;Throughout the past ~24 hours, I've implemented A* (pronounced "A-star"), which is a pathfinding algorithm.  If there's a "best" pathfinding algorithm out there, A* is probably it.  This was the first time I implemented it in any game project, and it probably won't be the last time.  Fellow game programmers out there who want to learn about it should check out Patrick Lester's &lt;a href="http://www.gamedev.net/reference/programming/features/astar/" target="_blank"&gt;A* Pathfinding for Beginners&lt;/a&gt; tutorial, hosted on GameDev.net.&lt;br /&gt;&lt;br /&gt;My goal here, in this third-person 3D game, was to allow an enemy object to chase after the player object in the shortest path possible while avoiding the level's walls and other obstacles.&lt;br /&gt;&lt;br /&gt;The first thing I needed to do was to write code to automatically generate a 2D grid representing the game's level, which is a 3D mesh modeled in 3ds Max.  For each coordinate on the grid, one piece of information was needed: is this point solid, i.e., is there a wall/obstacle at this point?  Generating this was fairly easy and didn't take much time at all.  I actually wrote the majority of that particular code with pen and paper during a car ride.&lt;br /&gt;&lt;br /&gt;At that point, I just needed a function (which would utilize other functions that I'd also need to write) which would ask for a starting coordinate as well as an ending coordinate and would return a list of coordinates for the enemy to travel to in order to reach the player successfully.  It took some time to write all that code (perhaps a couple of hours), and it seemed to generally be working, but the greatest challenge was still yet to come...&lt;br /&gt;&lt;br /&gt;The majority of the time I spent on it was debugging: although the algorithm worked in &lt;i&gt;most&lt;/i&gt; executions, there were, oddly, occasions upon which my code would search the entire grid and find no possible path.  In the debugging process, I even went so far as to incorporate Allegro into my project for the sake of generating a 2D image representation of the pathfinding process (I didn't use Irrlicht for that because, as a beginner to Irrlicht, I don't know how to do that and wasn't sure if it was even entirely possible, since Irrlicht is primarily a 3D engine).&lt;br /&gt;&lt;br /&gt;Here's an upload of one such output:&lt;br /&gt;&lt;a href="http://img198.imageshack.us/img198/9601/pathoutput.png" target="_blank"&gt;&lt;img src="http://img198.imageshack.us/img198/9601/pathoutput.th.png" style="max-width: 800px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After several hours of debugging, I finally found the root of the problem.  A simple "break" statement which shouldn't have existed was stopping the code from exploring certain squares.  Experienced A* programmers might be able to see that in the above screenshot (for reference, green circle=start, yellow circle=finish, red square=wall, purple slash=closed node, orange slash=open node).&lt;br /&gt;&lt;br /&gt;That was fixed, but alas, one more problem existed which needed be fixed: in cases where the player was on a "wall" node (i.e., cases where the player's &lt;i&gt;closest&lt;/i&gt; node was a wall), the enemy couldn't find a path to him because the pathfinding code refused to explore wall nodes.  Solving this was very simple.  For anyone who might be struggling from the same situation at some point in the future, there are two possible solutions here: 1. When deciding which node to use as the end/goal node (the player's "closest" node), consider only nodes which aren't walls, or 2. When the pathfinding algorithm is considering whether to add a node to the "open" list (this includes a check to see whether the node is a wall), you can add an exception that the node should be added if it is the finish/goal node, even if it is a wall node.&lt;br /&gt;&lt;br /&gt;Between all that, there was still one step left (I took care of this step somewhere halfway through, because it's nearly impossible to test the pathfinding algorithm in real-time unless this has been taken care of).  I'm talking about multithreading.  It's important to have a function which (inside of a while(true) loop, but with some Sleep() time at the end of the loop) updates each enemy's path, and then execute that function inside a separate "thread" (this is a programming term-- look it up if you're using this article as a pseudo-tutorial, particularly the Windows C++ functions CreateThread() and RemoveThread()).  In my case, my function only updated enemies' paths who were presently chasing the player (the enemies don't chase until the player has first crossed their fields of vision).  This has also been my first multithreading experience (as it's been my first time writing sophisticated AI code), so there was quite a bit to learn overall in this experience.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-9012088408873593408?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/9012088408873593408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=9012088408873593408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/9012088408873593408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/9012088408873593408'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/07/implementation-of-pathfinding-success.html' title='Implementation of A* pathfinding = success!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-2670174566477093887</id><published>2009-06-19T21:30:00.001-05:00</published><updated>2009-06-19T21:30:14.782-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='random discussion'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><title type='text'>Next on the agenda...</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Now that &lt;a href='http://www.joshforde.com/blog/2009/06/super-orbulite-world-has-been-released.html'&gt;Super Orbulite World has been released&lt;/a&gt;, I know some of you out there are going to be wondering what my next plan is: am I going to start a new game, finish an existing one, or...?&lt;br/&gt;&lt;br/&gt;There's a 50/50 chance that the next game I release will be &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt;, but I'm not going to resume work on it just yet.  For now, my plan is to wait until the next semester starts (September 2009, just a few months from now) before I continue working on it (the other 50% chance stems from the possibility that I might complete another project, probably a smaller one, before then).  In a bit, I'll tell you what my plan is until then, but first, let me clarify a few details on ROTDE.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Details on ROTDE&lt;/b&gt;&lt;br/&gt;A lot has changed since I first announced ROTDE, so now is a good time to clarify my current vision for the project.  You'll remember me announcing it as a unique action RPG, with a clever sort of arcade-style battle system (a bit similar to &lt;i&gt;Space Invaders&lt;/i&gt;).  That's changed; I haven't begun programming the battle system just yet, but it's looking like the game will have a traditional RPG battle system instead.  The reason for the change is simple: although I like the idea I had before, and the idea is very unique to the RPG genre, I don't think it'll be possible (or at least it looks like a gamble) to create a challenging and entertaining experience from the idea.. at least not without some major tweaks to the original idea.  The battle system will be more traditional as a result, but I hope to mix things up a bit by drawing a few ideas from the battle systems of both &lt;i&gt;Chrono Cross&lt;/i&gt; and &lt;i&gt;Final Fantasy VIII&lt;/i&gt;, two games which rank very high on my favorites list... :)  Perhaps the system will have physical attacks similar to those of Chrono Cross, alongside something similar to Final Fantasy VIII's junction system.  I don't want it to sound like I'm ripping off those games, because that's not my intention, but those two games introduced very spectacular systems that I haven't seen in any other game since.&lt;br/&gt;&lt;br/&gt;The storyline of ROTDE is going back to its original roots, despite my previous announcement (which I'm now recalling) that I was going to scrap the storyline (and the game's title) in favor of a new one.  After some time to contemplate, I've decided I can still rework the original storyline into excellence.  This means changing the ending I had planned, along with a few major plot details.  The premise will still be the same: you're the prince Ryuga whose nation was conquered by an evil empire at a young age, and you go on a quest to slay the emperor and reclaim your rightful throne, but many of the plot twists I had planned will be revised and/or scrapped.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;My plans for now&lt;/b&gt;&lt;br/&gt;For the next few months before I return to work on ROTDE, I'm working on two things:&lt;br/&gt;&lt;ul&gt;&lt;li&gt;A secret project which may or may not come to be, depending on technical limitations... something near and dear to many of you.  That's all I can say for now.&lt;/li&gt;&lt;li&gt;Learning 3D game development skills.  I'm going to be spending most of my would-be programming time on learning the Irrlicht engine (a free 3D engine) and Autodesk 3ds Max (3D modeling software, formerly known as 3D Studio Max).&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;P.S... I have a job!&lt;/b&gt;&lt;br/&gt;I've recently been hired as a sort of online teacher, writing lessons on MySQL for a website called &lt;a href='http://www.nethercode.com/' target='_blank'&gt;Nethercode&lt;/a&gt;.  If any of you are trying to learn MySQL, check it out. :)  Most of the MySQL lessons are written by me, and a few were written by another dude before me.  The website also has lessons on many other game development categories, such as PHP, C++, Blender, etc.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-2670174566477093887?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/2670174566477093887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=2670174566477093887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2670174566477093887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2670174566477093887'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/06/next-on-agenda.html' title='Next on the agenda...'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-2565502733363443127</id><published>2009-06-11T14:15:00.001-05:00</published><updated>2009-06-11T14:15:27.462-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='game releases'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Super Orbulite World has been released!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a target='_blank' href='http://img268.imageshack.us/img268/8044/screen1a.png'&gt;&lt;img border='0' src='http://img268.imageshack.us/img268/8044/screen1a.th.png'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;I found myself so caught up in the hubbub surrounding the release of &lt;b&gt;Super Orbulite World&lt;/b&gt; last night that I forgot to even post about it here.. heh.&lt;br/&gt;&lt;br/&gt;You can download the game on the &lt;a href='http://www.seedsoftime.net/sow/index.php' target='_blank'&gt;official Super Orbulite World website&lt;/a&gt;.  You can also upload and download custom levels there.  I'm looking forward to seeing the creative levels that people come up with. :)&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-2565502733363443127?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/2565502733363443127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=2565502733363443127' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2565502733363443127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2565502733363443127'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/06/super-orbulite-world-has-been-released.html' title='Super Orbulite World has been released!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-7777032226636434840</id><published>2009-06-05T06:31:00.001-05:00</published><updated>2009-06-05T08:59:26.482-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>High score system programming is complete</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://img269.imageshack.us/img269/8397/highscores.png' target='_blank'&gt;&lt;img border='0' src='http://img269.imageshack.us/img269/8397/highscores.th.png'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;The programming for the high score system in &lt;b&gt;Super Orbulite World&lt;/b&gt; is complete.&lt;br/&gt;&lt;br/&gt;What's especially sweet about the high score system is that I went the extra mile and included support for custom levels.  So, in addition to the one, main high score list for the main game itself, each custom level has its own high score list as well (with the #1 slot of each level being shown in the custom level browser for extra convenience).  Trading levels with friends online and off is going to be even more fun now that you can declare yourself the champion of a popular custom level.&lt;br/&gt;&lt;br/&gt;But there's more!  I even programmed in functionality such that the high score system's custom level support even supports linked levels (i.e., series of levels).  As you may already know, you can create a series of levels that all link together, such that when you complete Level A, it'll take you to Level B, and so on.  Now, the high score shown for a particular level series is the score for the entire series, not for just one level.&lt;br/&gt;&lt;br/&gt;Note that these high scores are all &lt;i&gt;offline&lt;/i&gt; on your own PC.  There's no online, global high score list.  You may ask "why not?"  That would be a cool idea, but the problem would be that it'd be very possible to submit fake scores, and so it wouldn't serve much use.  With the offline system, it's still possible to modify your own high score list if you know what you're doing, but since the scores are stored in binary files (rather than in plain text files), I doubt many players will go through the trouble just to impress their nearby friends and family.&lt;br/&gt;&lt;br/&gt;Here's a list of things in the game which give or take away points:&lt;br/&gt;+1 point per coin collected&lt;br/&gt;+1 point for jumping on an enemy&lt;br/&gt;+5 points for killing an enemy&lt;br/&gt;+Time bonus: 1 point for every 2 seconds remaining when you finish a level&lt;br/&gt;-25% of your score when you die&lt;br/&gt;&lt;br/&gt;It seems fairly balanced to me, but we'll see what the beta testers think later tonight.  By balance, I mean that I don't want the highest scores of every level to be determined by just one factor: either running through a level as fast as you can without bothering to fight enemies, or taking your time to defeat every last enemy, or whatever else.  Instead, my goal is that the best possible scores will usually be attained through the strategy of "run through the level as fast as you can, collecting any coin in your path, defeating enemies who are close to your path without straying too far to catch them (as that'll result in too much of a time bonus loss and won't be worth it), except to make a point to fight enemies with low HP because then it's worth the time bonus loss."  ...what a long sentence!  But, to sum things up, the player should be strategizing in real-time about whether a particular enemy or coin is worth losing a few seconds' worth of time bonus.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-7777032226636434840?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/7777032226636434840/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=7777032226636434840' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7777032226636434840'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7777032226636434840'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/06/high-score-system-programming-is.html' title='High score system programming is complete'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-4594347992990217615</id><published>2009-06-05T02:33:00.000-05:00</published><updated>2009-06-05T02:33:00.125-05:00</updated><title type='text'>SOW beta test party tonight at 9PM central</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Super Orbulite World&lt;/b&gt; should be finished in a few days, but I'm giving you all a chance to test it out a little early and pitch any last-minute bug reports or suggestions.&lt;br/&gt;The beta test party will take place in the chatroom on my &lt;a href='http://www.joshforde.com/forums/'&gt;forums&lt;/a&gt; (you'll need to register on the forums).  I hope to see a few of you there!&lt;br/&gt;&lt;br/&gt;Again, the official release of the game should be sometime this weekend.  I'm working on the high score system right now.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-4594347992990217615?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/4594347992990217615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=4594347992990217615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4594347992990217615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4594347992990217615'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/06/sow-beta-test-party-tonight-at-9pm.html' title='SOW beta test party tonight at 9PM central'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-1458907435213155733</id><published>2009-06-02T05:26:00.002-05:00</published><updated>2009-06-27T23:14:18.355-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='random discussion'/><title type='text'>On the benefits of gaming</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;For this post, I'll be taking a break from my usual game development updates and discussing a topic I find interesting: the benefits (primarily the educational ones) of gaming.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;In my first semester of college, a little over a year ago, I took a college writing course; in this course, I was assigned a paper and chose to write about a topic I think many of you would be interested in, as am I: "the benefits of video games on society" (note that this is &lt;b&gt;NOT&lt;/b&gt; that paper).  Since then, I've become to notice more and more the skills that can be learned via gaming, and I've also noticed a trend: maybe it's just me, but it seems that kids who play games end up smarter than those who don't; gaming in general appears to be an excellent mental workout.&lt;br /&gt;&lt;br /&gt;Today, as games geared toward personal development like &lt;i&gt;Brain Age&lt;/i&gt; and &lt;i&gt;Wii Fit&lt;/i&gt; become bestsellers, it seems the world is starting to appreciate the benefits that can be attained from regular gaming.  Instead of going into detail on the obvious benefits of titles such as those, I'll instead be describing the benefits that can be attained with more traditional, core gaming genres, starting with my favorite.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;RPG's&lt;/b&gt;&lt;br /&gt;There are three main skills I believe RPG's to develop most in the player: reading, math, and creativity.  When I one day reach fatherhood, I look forward to teaching my kids to play the Final Fantasy series and knowing that they'll become more intelligent as a result.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Reading&lt;/u&gt;: Children (say, ages 6 to 12) will benefit the most from the reading exercises found within an RPG, as RPG's don't tend to require particularly high reading levels.  But for the rest of us, we can benefit from playing an RPG in much the same ways we can benefit from reading a novel.  Most non-gamers don't realize that the amount of dialogue in a typical RPG can be equal to the text of a paperback novel.  For example, let's compare the &lt;a href="http://db.gamefaqs.com/console/psx/file/final_fantasy_viii_script.txt" target="_blank"&gt;dialogue script of Final Fantasy VIII&lt;/a&gt; with the entire text of H. G. Wells's &lt;a href="http://www.gutenberg.org/files/36/36.txt" target="_blank"&gt;The War of the Worlds&lt;/a&gt;.  FFVIII's script's filesize (312 KB) weighs in a bit less than that of &lt;i&gt;The War of the Worlds&lt;/i&gt; (357 KB)-- fairly close.  The filesizes being so close, the difference in the amount of text is small.  And according to &lt;a href="http://www.amazon.com/War-Worlds-Tor-Classics/dp/0812505158" target="_blank"&gt;Amazon&lt;/a&gt;, a paperback copy of &lt;i&gt;The War of the Worlds&lt;/i&gt; measures 224 pages.  From that, we can gauge that a paperback containing all the dialogue of &lt;i&gt;Final Fantasy VIII&lt;/i&gt; would measure a little over 200 pages if it were published as a paperback novel.  Granted, that's not the length of a Tom Clancy novel, but it's something.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Math:&lt;/u&gt; No doubt, playing an RPG means frequent number-crunching.  In a battle, your mind is constantly processing questions like "If my character's HP is 177/212, and a Potion heals 50 HP, how much goes to waste?" and "Fira deals about 325 damage to each target; enemy A is at 250 HP, enemy B is at 400 HP, and enemy C is at 50 HP-- will this finish everyone, or should I cast a more powerful spell like Firaga instead?"  These micro-equations aren't Calculus, so it may at first seem easy to shrug these off as unimportant, but, if the research of neuroscientist &lt;a href="http://en.wikipedia.org/wiki/Ryuta_Kawashima" target="_blank"&gt;Dr. Ryuta Kawashima&lt;/a&gt; (of &lt;a href="http://en.wikipedia.org/wiki/Brain_Age:_Train_Your_Brain_in_Minutes_a_Day%21" target="_blank"&gt;Brain Age&lt;/a&gt; fame) is to be believed, solving simple addition, subtraction, and multiplication problems rapidly is a very beneficial mental exercise.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Creativity:&lt;/u&gt; Few will dispute that reading broadens creativity.  I'd like to go further and state that all forms of storytelling broaden creativity.  In designing games, I sometimes find myself parched for ideas; I find&lt;br /&gt;that this is much less a problem the more entertainment I digest: watching a thrilling movie with a well-conceived plot can provide inspiration and spark new ideas (and I'm not referring to plagiarism), as can playing a great game.  I believe that RPG's, often being story-driven, are particularly grand in this regard.  More often than not, RPG's lead the market in terms of creative, complex storylines.  Exploring a unique world from a &lt;i&gt;Final Fantasy &lt;/i&gt;title can be a great exercise for your imagination.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Platformers and the all-encompassing Action genre&lt;br /&gt;&lt;/b&gt;Platformers (that is, games like Super Mario Bros. and &lt;a href="http://www.seedsoftime.net/sow/" target="_blank"&gt;Super Orbulite World&lt;/a&gt;) require the player to bridge a strong connection between eyes, mind, and fingers.  Data is constantly being transmitted from your eyes (what you see on the screen) to your brain (to process the information and devise a plan) to your fingers (to press the right buttons at the right time to carry out that plan).  Of course, this is called hand-eye coordination.  In platformers and in many games dubbed "action" titles (like Super Smash TV), you, as the player, are often navigating a single player object around the screen while avoiding other objects while you pursue your goal, whether that goal be destroying a boss, clearing the area of enemies, or simply reaching the end of the level.  One false move and your Life count decrements.  Hand-eye coordination receives a great benefit here, and we can wager that your reflexes are improved as well.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Real-time strategy games&lt;/b&gt;&lt;br /&gt;The real-time strategy genre is something of a modern evolution of Chess.  You need to carefully devise strategies while always anticipating your enemy's next move.  The ante is upped by the fact that this is all happening in real-time, forcing you to accelerate your thought processes.  To complicate things, micromanagement-centered games like &lt;i&gt;Starcraft&lt;/i&gt; and &lt;i&gt;Warcraft III&lt;/i&gt; give you the task of managing more than just an army: you're balancing the economy, technology, and military of your team.  If that's not an exercise in analytical thinking, I don't know what is!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Educational games&lt;/b&gt;&lt;br /&gt;Sometimes referred to as "edutainment," let's not forget that there's an entire genre dedicated to teaching the player.  Most aren't incredibly fun, granted, but I have to say that I do enjoy the classic Super Nintendo titles &lt;i&gt;Mario is Missing&lt;/i&gt; and its sequel &lt;i&gt;Mario's Time Machine&lt;/i&gt;, each of which offer the player more than a few history lessons&lt;i&gt;.&lt;/i&gt;  Check them out sometime.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;It seems RPG's offer the greatest mental exercises here, but maybe I'm biased.  Either way, all games benefit the player in some way or another in addition to the greatest benefit of all: entertainment.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-1458907435213155733?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/1458907435213155733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=1458907435213155733' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/1458907435213155733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/1458907435213155733'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/06/on-benefits-of-gaming.html' title='On the benefits of gaming'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-3403878045039476917</id><published>2009-05-31T03:35:00.001-05:00</published><updated>2009-05-31T03:35:32.766-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Demo mode?  Yes please!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Check out this screenshot from the title screen of &lt;b&gt;Super Orbulite World&lt;/b&gt;:&lt;br/&gt;&lt;br/&gt;&lt;a target='_blank' href='http://img269.imageshack.us/img269/6494/titleb.png'&gt;&lt;img border='0' src='http://img269.imageshack.us/img269/6494/titleb.th.png'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It's not done yet, of course (I still need to add text saying "Press Enter to start" and whatnot), but what's important to note is that the gameplay you see in the background is &lt;i&gt;not a mere screenshot&lt;/i&gt;.  It's actual gameplay!  The game plays itself while you're on the title screen.&lt;br/&gt;&lt;br/&gt;We game developers call that a "demo mode."  The game plays itself, demonstrating the gameplay.  This can be done via two ways: pre-recorded play, or having AI (artificial intelligence) play the game.  In this case, the gameplay is pre-recorded-- not as a video file, but as a series of input commands.&lt;br/&gt;&lt;br/&gt;The idea isn't new by any means.  You all should remember this example very well:&lt;br/&gt;&lt;img src='http://i40.tinypic.com/5wf0b9.jpg' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;As a side note, the game should be complete in a week or two.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-3403878045039476917?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/3403878045039476917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=3403878045039476917' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/3403878045039476917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/3403878045039476917'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/demo-mode-yes-please.html' title='Demo mode?  Yes please!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-4048509215895621045</id><published>2009-05-30T04:01:00.001-05:00</published><updated>2009-05-30T04:01:18.702-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Major bug fixed in SOW!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Super Orbulite World&lt;/b&gt;'s infamous and very notorious "get hurt by the enemy monster even though you jumped on him" bug has been fixed!&lt;br/&gt;&lt;br/&gt;This was by far the worst bug in the game, and it made the first boss nearly impossible unless you wrapped your strategy around avoiding that bug.. heh!  As a result of the fix, the first boss is now very, very easy, but I suppose that's alright since he's only the &lt;i&gt;first&lt;/i&gt; boss.  Consider him an intro to bossfighting. :)&lt;br/&gt;&lt;br/&gt;As a side note, the bug was surprisingly easy to fix.  Now, there are only about three other known bugs to squash, and all of them are quite minor.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-4048509215895621045?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/4048509215895621045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=4048509215895621045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4048509215895621045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4048509215895621045'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/major-bug-fixed-in-sow.html' title='Major bug fixed in SOW!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-7653507782273542907</id><published>2009-05-28T05:39:00.001-05:00</published><updated>2009-05-29T05:14:18.308-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ultimate tower defense'/><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Cutscenes in SOW</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a target="_blank" href="http://img43.imageshack.us/img43/2057/speechbubbles.png"&gt;&lt;img src="http://img43.imageshack.us/img43/2057/speechbubbles.th.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Super Orbulite World&lt;/b&gt; is finally getting cutscenes!&lt;br /&gt;&lt;br /&gt;Those of you who have tested early builds of the game can surely attest that the game, to this point, has been nothing but straight gameplay (with the exception of a couple of splash screens).  There's no title screen, no apparent storyline, no credits-- you pretty much jump right into the game as soon as you boot it up.  Now, that's all about to change.&lt;br /&gt;&lt;br /&gt;I've just written a speech bubble generator to use in the cutscenes, partly recycling code from the tooltip generator in &lt;b&gt;Ultimate Tower Defense&lt;/b&gt;.  Basically, I can tell the program what the text should say, how wide it should be, and optionally a few other small visual tweaks, and the game will create one.  Pretty cool!  The unique thing here is, and this is the first time I've written code to do this (though it would be a common situation), I don't have to separate the text into lines-- it'll do it automatically based on how wide each word is, squeezing in the maximum number of words possible without going over the edge of the speech bubble.  Traditionally, I've always skipped over that, and when writing messages, I've separated them manually into lines- a waste of time, really.  That's actually how RPG Maker 2000 does it as well, forcing the designer to make sure each line doesn't run over the edge.  The new way is much more convenient.  I'll have to see if I can implement something similar into the dialogue box system in &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt; later...&lt;br /&gt;&lt;br /&gt;So, my next goal will be designing and programming all the cutscenes of the game, as well as drawing any extra artwork needed in them.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-7653507782273542907?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/7653507782273542907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=7653507782273542907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7653507782273542907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7653507782273542907'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/cutscenes-in-sow.html' title='Cutscenes in SOW'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-413164095872382961</id><published>2009-05-27T00:28:00.002-05:00</published><updated>2009-05-27T00:29:58.867-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>My (short) to-do list for Super Orbulite World</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;b&gt;Super Orbulite World &lt;/b&gt;is almost complete.  Yes, &lt;b&gt;almost complete&lt;/b&gt;. :)  A handful of bugs remain to be fixed, but, as far as having all the content complete, I'm well on my way to finishing the game.  I've finished the final boss (aside from his music), and only a few things remain.&lt;br /&gt;&lt;br /&gt;Here's what's left:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cutscenes (plus any artwork to accompany them)&lt;/li&gt;&lt;li&gt;determining the time limits of each level&lt;br /&gt;&lt;/li&gt;&lt;li&gt;title screen&lt;/li&gt;&lt;li&gt;custom level loader&lt;/li&gt;&lt;li&gt;music for the final boss battle (all other music is finally complete!)&lt;/li&gt;&lt;li&gt;various sound effects&lt;/li&gt;&lt;li&gt;credits (shouldn't take long.. heh!)&lt;/li&gt;&lt;li&gt;bug fixes (aghhh..)&lt;/li&gt;&lt;li&gt;packaging it all up and releasing it to the world!&lt;/li&gt;&lt;li&gt;level editing SDK (a set of tutorials to help players create their own levels; I may release this after the game's been released)&lt;/li&gt;&lt;li&gt;any other random tasks I may have overlooked...&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-413164095872382961?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/413164095872382961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=413164095872382961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/413164095872382961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/413164095872382961'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/my-short-to-do-list-for-super-orbulite.html' title='My (short) to-do list for Super Orbulite World'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-5615010009150299630</id><published>2009-05-23T03:47:00.001-05:00</published><updated>2009-05-23T03:47:11.608-05:00</updated><title type='text'>SOW trailer #2</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div class='youtube-video'&gt;&lt;object width='425' height='344'&gt;&lt;param value='http://www.youtube.com/v/r-G2Zmr5Yk4&amp;amp;hl=en&amp;amp;fs=1' name='movie'&gt; &lt;/param&gt;&lt;param value='true' name='allowFullScreen'&gt; &lt;/param&gt;&lt;param value='always' name='allowscriptaccess'&gt; &lt;/param&gt;&lt;embed width='425' height='344' allowfullscreen='true' allowscriptaccess='always' type='application/x-shockwave-flash' src='http://www.youtube.com/v/r-G2Zmr5Yk4&amp;amp;hl=en&amp;amp;fs=1'&gt; &lt;/embed&gt;&lt;br/&gt;&lt;br/&gt;The resolution is very low, unfortunately, but this should give you a good overview of the game.&lt;br/&gt; &lt;/object&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-5615010009150299630?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/5615010009150299630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=5615010009150299630' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/5615010009150299630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/5615010009150299630'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/sow-trailer-2.html' title='SOW trailer #2'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-179496248993901263</id><published>2009-05-19T02:25:00.001-05:00</published><updated>2009-05-19T02:25:47.337-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>A little preview of the final boss of Super Orbulite World...</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a target='_blank' href='http://img79.imageshack.us/img79/1844/screend.png'&gt;&lt;img border='0' src='http://img79.imageshack.us/img79/1844/screend.th.png'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Still a work in progress.&lt;br/&gt;&lt;br/&gt;You can see here that the Realmkeeper is visually similar to his &lt;i&gt;Seeds of Time Online &lt;/i&gt;appearance.  This is because his sprite is just a modified version of that very image, but is enhanced quite a bit.  You can see a side-by-side comparison below:&lt;br/&gt;&lt;br/&gt;&lt;img title='SoTO version' alt='SoTO version' src='http://img507.imageshack.us/img507/2645/realmkeeper.png'/&gt;&lt;img title='SOW version' alt='SOW version' src='http://img507.imageshack.us/img507/1672/realmkeeperf.png'/&gt;&lt;br/&gt;&lt;br/&gt;At this point. the Realmkeeper's animation/artwork is mostly complete.  I still need to animate his "blob" (legs) and perhaps some facial expressions, such as glowing eyes during an attack, but the bulk of the work (drawing the body animation) is complete.&lt;br/&gt;&lt;br/&gt;I'm also planning to add a moon to the background, and if all goes well, it will glow in synchronization with the Realmkeeper's eyes when the Realmkeeper attacks.  Speaking of the background, I only realized when I was creating the starry background shown above that I'd already had a "scrolling" feature programmed for the background and had never used it.. heh!  But I suppose that the only level where that feature would really make sense would be on this one, anyway.  It all works out.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-179496248993901263?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/179496248993901263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=179496248993901263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/179496248993901263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/179496248993901263'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/little-preview-of-final-boss-of-super.html' title='A little preview of the final boss of Super Orbulite World...'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-7219590742930655484</id><published>2009-05-15T22:59:00.001-05:00</published><updated>2009-05-15T22:59:28.676-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='alpha tests'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Closed alpha test for Super Orbulite World is starting</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;I'm opening Super Orbulite World up to some alpha testing.&lt;br/&gt;You'll need to &lt;a href='http://www.joshforde.com/forums/viewtopic.php?f=18&amp;amp;p=782#p782' target='_blank'&gt;sign up&lt;/a&gt; on my forums if you want to participate.&lt;br/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-7219590742930655484?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/7219590742930655484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=7219590742930655484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7219590742930655484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7219590742930655484'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/closed-alpha-test-for-super-orbulite.html' title='Closed alpha test for Super Orbulite World is starting'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-4615335052326113550</id><published>2009-05-08T16:32:00.001-05:00</published><updated>2009-05-08T16:32:31.596-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><title type='text'>Super Orbulite World website is now up</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Check it out here:&lt;br/&gt;&lt;a href='http://www.seedsoftime.net/sow/' target='_blank'&gt;http://www.seedsoftime.net/sow/&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;For now, I've also set the main &lt;a href='http://www.seedsoftime.net/' target='_blank'&gt;seedsoftime.net&lt;/a&gt; page to redirect there.  This will be the case until I launch the new Seeds of Time website, which could be a while from now.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=b0512c7a-902a-8189-a189-d957dbc879c2' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-4615335052326113550?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/4615335052326113550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=4615335052326113550' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4615335052326113550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4615335052326113550'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/super-orbulite-world-website-is-now-up.html' title='Super Orbulite World website is now up'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-5756873735175470</id><published>2009-05-05T17:31:00.001-05:00</published><updated>2009-05-05T17:31:53.345-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>More Super Orbu-progress</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;img src='http://img24.imageshack.us/img24/4337/sow.png' style='max-width: 800px;'/&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Super Orbulite World&lt;/b&gt; strides closer to completion on a daily basis.&lt;br/&gt;&lt;br/&gt;Lately, I've been working on a few specific areas of the game...:&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Level design&lt;/b&gt;&lt;br/&gt;All levels are now designed, minus the addition of some easter egg(s), decorations (grass/flowers/clouds), and other touch-ups.  That's six levels total (it's a short, but challenging and enjoyable game).  This count does not include the three bosses, of which one is still in the works...&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Bosses&lt;/b&gt;&lt;br/&gt;I've begun artwork for the final boss, the dreaded &lt;b&gt;Realmkeeper&lt;/b&gt; that many of you will remember from &lt;i&gt;Seeds of Time Online&lt;/i&gt; (SoTO).  For the uninitiated, this boss is a true terror.  The top half of the monster is a skeleton (I haven't worked out his entire backstory yet, but it's safe to assume that he was once a &lt;b&gt;Blizzeton&lt;/b&gt;, which is a skeleton monster who casts ice magic (and who makes no appearance in Super Orbulite World but exists in Seeds of Time Online).  Instead of legs, the Realmkeeper has some sort of grey, ooze-y blob junk.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Bug fixes&lt;/b&gt;&lt;br/&gt;Bugs have been fixed!  Well, one anyway.  It was a fairly major bug, so it's good to see it fixed.  With some help from the &lt;a href='http://www.allegro.cc/forums/thread/600155/809858#target' target='_blank'&gt;Allegro community&lt;/a&gt;, I've fixed that nasty bug where the game would temporarily run at an insane speed for a few seconds after a level had been loaded (or, when fading in/out was turned out, after any sort of fade-in/out occurred, such as when you lost a life).&lt;br/&gt;&lt;br/&gt;There's still one major bug I'd like to get cleaned up before release, though it looks like a great challenge.  Any of you who played the &lt;a href='http://www.joshforde.com/blog/2008/10/super-orbulite-world-pre-release-demo.html' target='_blank'&gt;pre-release demo&lt;/a&gt; (no longer available) should remember it.  This is the bug where, if you jump on an enemy who is moving at too great a vertical speed, you will take damage rather than deal damage.  This mostly only affects Bootworms and, especially, the first boss.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Sound effects&lt;/b&gt;&lt;br/&gt;In the past week, I've recorded and implemented a bunch of sound effects for the game, and more are on the way.  Some are silly, such as the "NOICE!!" I recorded for picking up a power-up.  I'm also doing some voiceovers in a sense, such as for the Demon Minion's laugh and whatnot.  Sound recording and editing is done with &lt;a href='http://audacity.sourceforge.net/' target='_blank'&gt;Audacity&lt;/a&gt;, a free, open-source sound editing application that I highly recommend (it has one of the cleanest, most intuitive GUI's I've ever used in an application).&lt;br/&gt;&lt;br/&gt;&lt;b&gt;To-do: Music&lt;/b&gt;&lt;br/&gt;Some levels still don't have their own, unique music.  Eek!&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Polish&lt;/b&gt;&lt;br/&gt;Though the game is nearly complete, I'm planning to take some extra time to add a bit more polish to the game (not Polish the language; polish is a term game developers use for making a game "all pretty" so that it gives you a fuzzy feeling inside).  I think I'm going to re-compose some of the existing music to change the mood/atmosphere of those levels- I'd particularly like to give the two Birth Island levels a funky, &lt;i&gt;Toe Jam &amp;amp; Earl&lt;/i&gt;-style soundtrack to accompany the odd humor that goes with seeing hopping Bootworms and swashbuckling Bladeguins.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Challenging level pack&lt;/b&gt;&lt;br/&gt;One of my plans has long been to include a set of ~10 challenging, extra levels with the game.  These levels won't need to follow any real theme (as do the official levels) and can be played as a means for players to challenge themselves further and to demonstrate their skill.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Custom-level SDK&lt;/b&gt;&lt;br/&gt;As mentioned at the end of my last blog post, I'm going to distribute a small SDK (software development kit) for players who want to create their own levels.  This will include either a copy of or a link to &lt;a href='http://www.tilemap.co.uk/mappy.php' target='_blank'&gt;Mappy&lt;/a&gt; (the level editor I used to design the levels), at least one sample level template [with a noob-friendly tileset] off which to base custom levels (to create a custom level, you would create a copy of that template level and modify it), and a set of tutorials.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;P.S.&lt;/b&gt;&lt;br/&gt;Check out Super Orbulite World on &lt;a href='http://www.greatgamesexperiment.com/game/superorbuliteworld/' target='_blank'&gt;GreatGamesExperiment&lt;/a&gt;.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=a99f913f-c90b-8019-a614-0fb0bf7156d5' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-5756873735175470?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/5756873735175470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=5756873735175470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/5756873735175470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/5756873735175470'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/more-super-orbu-progress.html' title='More Super Orbu-progress'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-2866758144661462942</id><published>2009-05-01T15:58:00.001-05:00</published><updated>2009-05-01T15:58:46.201-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Seeds of Time'/><category scheme='http://www.blogger.com/atom/ns#' term='random discussion'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='platformer'/><title type='text'>Super Orbulite World is back!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='left'&gt;&lt;a href='http://img213.imageshack.us/img213/3550/screenshotsdr.png' target='_blank'&gt;&lt;img src='http://img516.imageshack.us/img516/7677/screenshotthumb.png' style='max-width: 800px; float: none;'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;You almost have to wonder why I never got around to finishing &lt;b&gt;Super Orbulite World&lt;/b&gt;.&lt;br/&gt;&lt;br/&gt;If you haven't heard of the game yet, it's a small 2D platformer I'll be releasing as freeware.  It's unique in that it has RPG elements: your character levels up, increasing your attack damage and your HP (the amount of damage you can receive before dying).  The game is a part of the &lt;b&gt;Seeds of Time&lt;/b&gt; universe and is based largely upon the first two islands of Seeds of Time Online.&lt;br/&gt;&lt;br/&gt;I started the project last summer, at the end of June 2008 I believe, and worked on it at such a pace that it had been nearly complete after a month: four of six levels complete, and two of three boss battles complete-- not to mention the extensive programming that made the aforementioned possible.  But then it lay dormant for nearly a year; I had lost interest in the project.&lt;br/&gt;&lt;br/&gt;Now is the time, I've decided, to complete the project.&lt;br/&gt;&lt;br/&gt;As of now, one of the two remaining levels is complete, and the other is well on its way.&lt;br/&gt;&lt;br/&gt;Thinking back, I think I now know why I lost interest in the project last year.  With the first four levels, each had a unique innovation to it: in my mind, each level was better (or at least quite different in some way or another) than the level preceding it.  Specifically: the first level is a simple intro to the game, the second level is the first "real" level, the third level introduces a variety of unique traps and two very cleverly-placed hidden power-ups (the others have power-ups, but these locations I'm particularly proud of), and the fourth level is unique in that it is entirely a "falling" stage (the level is vertical, rather than horizontal, and proceeds from top to bottom).  But the problem was that, once I reached development for the last two levels, I was out of ideas and wasn't inspired to craft any particularly new features to surprise players further.  And as far as a theme goes, the last two levels are set on Atlantis Island, and I didn't have much to set it apart from the first two levels' Birth Island, making the process seem further that I was just creating levels for the sake of creating levels, rather than using the opportunity to create a new, exciting experience.&lt;br/&gt;&lt;br/&gt;Thankfully, I've now been inspired with a few ideas to liven up the Atlantis Island levels.  Granted, they're not quite as innovative as the levels preceding them, but there are a few interesting ideas at play here, particularly in the final level.&lt;br/&gt;&lt;br/&gt;As for the final boss, the &lt;b&gt;Realmkeeper&lt;/b&gt;, I'm still tossing ideas around on the specific mechanics.  We'll see...&lt;br/&gt;&lt;br/&gt;Oh yeah, I also plan to release a sort of SDK (software development kit) to help players create their own levels for the game.  Yup, you heard correctly- you can create your own levels. :)&lt;br/&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=ce0bf7ce-b86e-8c52-a7e1-f10987880ed1' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-2866758144661462942?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/2866758144661462942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=2866758144661462942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2866758144661462942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/2866758144661462942'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/05/super-orbulite-world-is-back.html' title='Super Orbulite World is back!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-7122704700979952051</id><published>2009-04-14T10:05:00.001-05:00</published><updated>2009-04-14T10:05:17.638-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Changing direction with ROTDE: new title, new storyline to be unveiled...</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;b&gt;Storyline&lt;/b&gt;&lt;br/&gt;I had written up a large chunk of the storyline for &lt;b&gt;Rage of the Dragon Emperor &lt;/b&gt;(soon to be &lt;i&gt;&lt;u&gt;&lt;b&gt;renamed&lt;/b&gt;&lt;/u&gt;&lt;/i&gt;), when I decided I just wasn't feeling it anymore, and it was time to turn the story around, into a new, more exciting direction.&lt;br/&gt;&lt;br/&gt;The storyline, when the game was known as ROTDE, was decent, but just not as captivating, interesting, and adventurous as I'd hoped.  With that said, I will, before long, be unveiling a glimpse at the new storyline, new characters, etc.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Team structure&lt;/b&gt;&lt;br/&gt;This game is now fully a joint effort between me and my friend/future roommate Ryan Esch.  I will continue programming, and we will both be working on design.&lt;br/&gt;&lt;br/&gt;We'll be working this week on the project and hope to make some substantial progress throughout the week.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=6b36a877-522f-80d4-a081-6bb463212add' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-7122704700979952051?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/7122704700979952051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=7122704700979952051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7122704700979952051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/7122704700979952051'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/04/changing-direction-with-rotde-new-title.html' title='Changing direction with ROTDE: new title, new storyline to be unveiled...'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-4256617335696558884</id><published>2009-03-21T22:25:00.001-05:00</published><updated>2009-03-21T22:29:48.746-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Super Orbulite World'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='composing music'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>More updates on ROTDE: fading, sound/music</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img7.imageshack.us/img7/9566/4f2fb9776d08f396abb6000.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 128px; height: 128px;" src="http://img7.imageshack.us/img7/9566/4f2fb9776d08f396abb6000.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Before delving far into the battle system (which is largely still in planning stages) in &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt;, I decided I needed some fade-in and fade-out effects to make the transition from "world" to "battle" states more polished.  This is now done, and, along with it, I've given the scripting engine a host of controls for fading effects as well, which should prove &lt;b&gt;very &lt;/b&gt;useful in cutscenes.&lt;br /&gt;&lt;br /&gt;I've created some more sound effects and music as well.  The music is actually a piece I composed for &lt;b&gt;Super Orbulite World&lt;/b&gt; sometime last summer, which needed some amplification from a useful sound-editing application called &lt;a href="http://audacity.sourceforge.net/" target="_blank"&gt;Audacity&lt;/a&gt;.  A couple of sound effects exist now, including one which I actually recorded last summer and have come to apply some tweaking in, again, Audacity.  Trivia: that sound is just a simple "knock-knock" sound which I'm using in the intro scene (and possibly in other parts of the game as well).&lt;br /&gt;&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=2667c2a3-3567-429a-86ea-817c24d27f06" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-4256617335696558884?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/4256617335696558884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=4256617335696558884' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4256617335696558884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4256617335696558884'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/more-updates-on-rotde-fading-soundmusic.html' title='More updates on ROTDE: fading, sound/music'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-8113348465251363225</id><published>2009-03-20T06:11:00.001-05:00</published><updated>2009-03-20T06:11:25.945-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Next up: the battle system</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;My next goal in &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt;'s development will be battle system, and it's going to require some serious planning before I delve into the code itself.&lt;br/&gt;&lt;br/&gt;The game will feature a very unique battle system, taking place on a &lt;i&gt;Space Invaders&lt;/i&gt;-style board, with the enemies at the top of the screen and the player at the bottom, each restricted to horizontal movement (and probably some limited vertical movement).  With the space bar, the player can send a Physical Attack shooting toward the enemies in the form of a sword.  Likewise, the enemies will shoot attacks down toward the player every few seconds.&lt;br/&gt;&lt;br/&gt;Adding more variety to the mix, the player will also be able to cast spells with several hotkeys (likely the number pad).  Offensive Spells will be similar to Physical Attacks, but may behave differently, such as shooting several projectiles at once instead of just one.  Healing Spells of some sort will exist too, of course.&lt;br/&gt;&lt;br/&gt;Most interestingly though, you'll also be able to summon creatures to assist you in battle.  I'm still considering specific ideas for this, but, for now, it's looking like there will be two types of summons: summons which have one effect (such as a powerful attack) and then leave immediately, and summons who stay near you, moving and occasionally attacking.&lt;br/&gt;&lt;br/&gt;That brings me to another concept of the battle system: party members.  When a secondary character joins your party, you won't control him/her directly.  Instead, the AI will have it will fight alongside you, attacking in ways similar to your own and maybe even healing you.  It may or may not be possible to assign specific AI scripts to party members.. we'll see...&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=11c35e96-e320-44be-a0d8-28db25ac5b53' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-8113348465251363225?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/8113348465251363225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=8113348465251363225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/8113348465251363225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/8113348465251363225'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/next-up-battle-system.html' title='Next up: the battle system'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-561627725651132658</id><published>2009-03-19T21:43:00.001-05:00</published><updated>2009-03-19T21:43:13.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='random discussion'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Playing sound effects and music in Java</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;Wow, who knew it would be so hard to write a few simple audio-playback functions in Java?: playSound(), playMusic(), stopMusic().&lt;br/&gt;&lt;br/&gt;The problem is that Java either has poor audio playback support or just likes to overcomplicate things.  In order to play Ogg Vorbis (*.ogg) files in &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt;, I had to track down a decoder for the Ogg files (&lt;a href='http://www.jcraft.com/jorbis/' target='_blank'&gt;JOrbis&lt;/a&gt;).  Then, it turns out that JOrbis is overly complicated, when a few simple play() and stop() methods would have worked just fine for my purposes (and for the purposes of most game developers, I imagine).&lt;br/&gt;&lt;br/&gt;Thankfully, someone has written a &lt;a href='http://www.cokeandcode.com/node/625' target='_blank'&gt;wrapper&lt;/a&gt; for JOrbis.  You're still required to download JOrbis separately and place it into your source folders as well, but once all that's said and done, the wrapper (EasyOgg) makes loading and playing Ogg files a breeze.&lt;br/&gt;&lt;br/&gt;Similarly, AnyExample.com has posted a &lt;a href='http://www.anyexample.com/programming/java/java_play_wav_sound_file.xml' target='_blank'&gt;wrapper class for playing WAV files&lt;/a&gt; which literally turns loading+playing a WAV file a one-line process.  Note that I only needed to make use of the first class shown there, so the second class may be optional for you as well.&lt;br/&gt;&lt;br/&gt;Big props go out to these guys for making this should-be-simple-but-isn't task a thousand times easier.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=744037ac-76a7-448f-b7f3-aa35928c387c' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-561627725651132658?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/561627725651132658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=561627725651132658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/561627725651132658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/561627725651132658'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/playing-sound-effects-and-music-in-java.html' title='Playing sound effects and music in Java'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-480936962450057215</id><published>2009-03-18T03:26:00.002-05:00</published><updated>2009-03-18T03:27:32.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='composing music'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Music composed: Emperor's Theme (ROTDE)</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I've just composed the &lt;b&gt;Emperor's Theme &lt;/b&gt;music for &lt;b&gt;Rage of the Dragon Emperor&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;It's a relatively simple piece which took somewhere in the vicinity of half an hour to compose from start to finish.  For those curious, this was composed within a music composing application called &lt;span style="font-weight: bold;"&gt;Finale 2008&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;You can download it here: &lt;a href="http://www.joshforde.com/archive/emperors_theme.mp3"&gt;mirror #1&lt;/a&gt; or &lt;a href="http://rapidshare.com/files/210605916/emperors_theme.mp3"&gt;mirror #2&lt;/a&gt;.&lt;br /&gt;&lt;div class="zemanta-pixie"&gt;&lt;img src="http://img.zemanta.com/pixy.gif?x-id=ef192969-d3b1-4734-98f2-b3a932db7135" class="zemanta-pixie-img" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-480936962450057215?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/480936962450057215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=480936962450057215' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/480936962450057215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/480936962450057215'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/music-composed-emperor-theme-rotde.html' title='Music composed: Emperor&amp;#39;s Theme (ROTDE)'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-4627519479540027494</id><published>2009-03-17T05:49:00.001-05:00</published><updated>2009-03-17T05:49:28.569-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ultimate tower defense'/><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>ROTDE's scripting engine now has "if" statements!</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;a href='http://img25.imageshack.us/img25/1103/ifstatements.png' target='_blank'&gt;&lt;img src='http://img25.imageshack.us/img25/1103/ifstatements.th.png' style='max-width: 800px;'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href='http://img27.imageshack.us/img27/6353/ifstatements2.png' target='_blank'&gt;&lt;img src='http://img27.imageshack.us/img27/6353/ifstatements2.th.png' style='max-width: 800px;'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Another step in developing a scripting engine/language for &lt;b&gt;Rage of the Dragon Emperor &lt;/b&gt;is now complete.&lt;br/&gt;&lt;br/&gt;This isn't my first time writing a basic scripting engine, but it is the first time I've had to write support for "if" statements.  &lt;b&gt;Ultimate Tower Defense&lt;/b&gt;'s scripting language was basic enough (and non-dynamic, as it was only used for non-dynamic cutscenes) that it didn't need any "if" statements.&lt;br/&gt;&lt;br/&gt;For you non-programmers out there, this basically just means that different events (particularly those relating to talking to NPC's) can occur depending on the player's progress in the game.  So, an NPC may say one thing if you've slayed a particular boss or another thing if you haven't gotten that far yet.  An NPC could also allow you access to a particular dungeon only if your level is at least 10 and you have a special item in your inventory.&lt;br/&gt;&lt;br/&gt;Now, all that's left to do in this scripting engine are the probable eventual inclusion of "else" statements and the task of adding more and more functions for the scripting engine to call.&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=4f579ce7-f977-488d-a52c-6034a8c6a624' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-4627519479540027494?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/4627519479540027494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=4627519479540027494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4627519479540027494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/4627519479540027494'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/rotde-scripting-engine-now-has.html' title='ROTDE&amp;#39;s scripting engine now has &amp;quot;if&amp;quot; statements!'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4280043429616475300.post-362044005763574027</id><published>2009-03-14T06:31:00.002-05:00</published><updated>2009-03-14T06:33:12.506-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Action RPG'/><category scheme='http://www.blogger.com/atom/ns#' term='Rage of the Dragon Emperor'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='upcoming games'/><category scheme='http://www.blogger.com/atom/ns#' term='RPG'/><title type='text'>Scripting engine in ROTDE</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;&lt;div align='right'&gt;&lt;div align='left'&gt;Another progress update on my latest project:&lt;br/&gt;&lt;b&gt;&lt;br/&gt;Rage of the Dragon Emperor&lt;/b&gt; is an RPG, and as such, it requires a scripting engine/language to coordinate NPC events.&lt;br/&gt;This is my current task.&lt;br/&gt;&lt;br/&gt;&lt;/div&gt;&lt;div align='left'&gt;&lt;a href='http://img26.imageshack.us/img26/302/screen1fhr.png' target='_blank'&gt;&lt;img src='http://img26.imageshack.us/img26/302/screen1fhr.th.png' border='0' style='max-width: 800px;'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;/div&gt;&lt;div align='left'&gt;&lt;a href='http://img17.imageshack.us/img17/7977/screen2n.png' target='_blank'&gt;&lt;img src='http://img17.imageshack.us/img17/7977/screen2n.th.png' border='0' style='max-width: 800px;'/&gt;&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;It's going very well, as you can see by the above screenshots: the scripting engine is operational.  There are two specific functions which can be defined in an NPC's script: onLoad() and onActivate().  As you might imagine, onLoad() is called when the map is loaded (if the NPC is on that map, of course).  onActivate() is called when the player "activates" (talks to) the NPC.&lt;br/&gt;&lt;br/&gt;Inside of those functions, the script-writer can execute various predefined functions, such as setCurrentMessage(), which displays a message to the screen, and delay(), which pauses the script before moving to the next line (useful mainly in cutscenes).&lt;br/&gt;&lt;br/&gt;The task at hand now is for me to define more of these "predefined functions."  After that, I will need to do something a bit more challenging: evaluate "if" statements!&lt;br/&gt;&lt;/div&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class='zemanta-pixie'&gt;&lt;img src='http://img.zemanta.com/pixy.gif?x-id=35c78534-06f1-4346-b6c3-08be25a764f5' class='zemanta-pixie-img'/&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4280043429616475300-362044005763574027?l=www.joshforde.com%2Fblog%2Findex.php'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/362044005763574027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=4280043429616475300&amp;postID=362044005763574027' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/362044005763574027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4280043429616475300/posts/default/362044005763574027'/><link rel='alternate' type='text/html' href='http://www.joshforde.com/blog/2009/03/scripting-engine-in-rotde.html' title='Scripting engine in ROTDE'/><author><name>Josh Forde</name><uri>http://www.blogger.com/profile/10227652595957978216</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='13174002187061611036'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>