{"author_name":"stuckie","cat":"LD #21","comments":[{"author_name":"johnfn","time":"August 23, 2011 3:28 pm","epoch":1314131280,"text":"Wow dude, that ending is incredibly painful. Since you did finish the game in 48 hours, you just didn&#8217;t think you had, maybe you could message the moderators about it?","spam":"N"},{"author_name":"","time":"August 24, 2011 12:40 am","epoch":1314164400,"text":"Nah it&#8217;s fine <img src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/simple-smile.png\" alt=\":)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><br \/>\n I didn&#8217;t quite have anything playable by the end of the 48 hours, but the 72 hours certainly had something ( and the SVN logs can be checked for this as the final commit was 02:50:17 +0100 .. ten minutes before the deadline in the UK! ) but it&#8217;s my own stupid fault for not checking my own stuff properly, anyway!","spam":"N"},{"author_name":"johnfredcee","time":"August 24, 2011 12:44 am","epoch":1314164640,"text":"Never mind, given this experience you should be able to knock the ball out of the park on the next LD!","spam":"N"}],"epoch":1314125100,"likes":0,"metadata":{"p_key":"63673","p_author":"stuckie","p_authorkey":"267","p_urlkey":"99458","p_title":"Thieving Fingers \u2013 Post Mortem","p_cat":"LD #21","p_event":"LD21","p_time":"1314125100","p_likes":"0","p_comments":"3","p_status":"UPD5","us_key":"267","us_name":"stuckie","us_username":"stuckie","event_start":"1313712000","event_key":"7","event_name":"LD21"},"text":"<p>&#8220;Hold on a minute&#8230; &#8221; I hear you cry, &#8220;that game wasn&#8217;t submitted!&#8221;<br \/>\n Indeed it wasn&#8217;t&#8230; for if I had not been chasing imaginary rendering bugs two hours before the Jam deadline, it would have been.<br \/>\n There&#8217;s logic in restarting your machine now and then&#8230;<\/p>\n <p>Anyway, the curious can still play it, as links and stuff will be provided at the end.<br \/>\n For now, sit back and listen, for I have quite a tale to tell&#8230;.<\/p>\n <p><span id=\"more-70746\"><\/span>\u00a0Deciding that being overly tired is bad and produces silly mistakes, I decided to sleep normal times on the Friday and woke up about 6am on the Saturday &#8211; three hours after the theme had been announced. Ironically, after going through the theme list before heading off, I actually quite liked the look of Escape and had inadvertently designed the game before going to sleep, so was rather surprised to see it when I woke up! As such, I dove right into code.<\/p>\n <p>Speaking of which, I brought along a bit of base code&#8230; the little bits of an engine I had been working on, complete with shiny new Resource Manager that I had just fixed the previous day.<br \/>\n Or so I thought.<br \/>\n Well.. actually, I had.. but I had not committed it to the repository, so when the bugs started appearing, I was none the wiser that the fixed Resource Management code wasn&#8217;t actually in until I noticed some parts were missing and went checking on my other machine.<br \/>\n I think in total, the Resources stuff was rewritten a good three or four times this weekend&#8230; so that&#8217;s black mark number one.<\/p>\n <p>Saturday went about as well as you could hope, considering the major bits of my framework were quite broken and needed rewriting&#8230; I managed to load up something though, and make a start on the framework for the game itself along with a SpriteFactory to take in a good old fashioned Sprite Sheet ( or Texture Atlas if you want ) and split it up into a bunch of meshes; so I got something on the screen at least and a bit of movement with the mouse.<\/p>\n <p>The game I was aiming to make harkens back to the 8bit days of flip-screen rooms with a larger scrolling area to run around in. Each room filled with traps and things to kill you. Your job, as a thief named &#8220;Fingers,&#8221; was to test the security of a Mansion on the owner&#8217;s behest. You had to steal the Star Diamond &#8211; a large and priceless artefact &#8211; while avoiding the security system. If you made it out, you got to keep the Diamond and anything else you might&#8217;ve pocketed on the way. They didn&#8217;t go into much detail on what would happen otherwise, but as you hadn&#8217;t failed a job yet, you didn&#8217;t put much thought into it&#8230; least you didn&#8217;t till you saw the spikes, crushers, spotlights and pressure pads that awaited you just as the main door slammed behind you.<\/p>\n <p>Here lies black mark number two. Due to the engine being very young, there&#8217;s no real data pipeline, so everything ended up hard coded into it. There&#8217;s also no bound scripting language as I had in my previous engine, so iterating room and trap logic was highly tedious&#8230; I reckon I probably could&#8217;ve bound Lua and still done a better game in the same amount of time. Assuming the other bugs hadn&#8217;t caught me that is!<\/p>\n <p>Sunday comes around and I pick up where I left off&#8230; some stuff on the screen, basic controls, and a camera that follows the player around.<br \/>\n I then began working out the logic for the rooms.. deciding that I&#8217;d have three floors, each with 7 or 8 rooms interlinked. Obviously having not learned from Derelict and Moons of Subterrane that planning out lots of content is always a bad idea! Black Mark Three!<br \/>\n The morning was spent again wrestling with the Resource system&#8230; and were it not for a feint glimmer of hope when the Room framework started to work nicely, and I was able to traverse the Mansion, I&#8217;d have given up here.<br \/>\n The afternoon rolls round, and I lay out a plan of action&#8230; detailing what was missing and what I drastically needed to do to try squeeze it into the Compo.<\/p>\n <ul>\n <li>Traps.. any traps.. just something to kill the player!<\/li>\n <li>Ability to push stuff around &#8211; particularly the titular Star Diamond we&#8217;re meant to be after.<\/li>\n <li>Puzzles would be nice to keep the player involved.. though this comes in with the Traps.<\/li>\n <li>Probably need to cut down the size of the Mansion.<\/li>\n <li>Game Over\/Completion State<\/li>\n <li>Keyboard Controls<\/li>\n <li>Fix this worrying frame rate issue that&#8217;s starting to appear&#8230;.<\/li>\n <\/ul>\n <p>By the Evening, I did have a couple of traps in, and some basic enough physics to detect collisions and push things around as needed. I had also drawn everything bar the Game Over and Completion graphics that I&#8217;d needed, as well as put in the Keyboard Controls making it much easier to deal with ( rather than dragging the character around with the mouse as I had, and still do if you want to try it! )<br \/>\n However, the frame rate was steadily plummeting for no apparent reason.. so all my efforts suddenly started to focus on that&#8230;but as the deadline for the Compo loomed, I decided to postpone it to the Jam.. and get some sleep as a fresh mind might spot something wrong quicker.<\/p>\n <p>Now, I hadn&#8217;t really planned on pushing it into the Jam originally, so I hadn&#8217;t much of a plan for Monday short of sleeping, and fixing another black mark &#8211; that the engine only currently works on Linux; there&#8217;s no support for Windows, Mac, or anything else ( apart from the Pandora&#8230; though I haven&#8217;t tested if the game runs on one.. I&#8217;d imagine it should though. ) There&#8217;s no Sound support either \u00a0&#8211; which is yet another black mark &#8211; and something I had planned on doing on Sunday. In fact, my plan was framework and engine bits on Saturday, content and extra bits on Sunday, quick port and sleep on Monday.<\/p>\n <p>Anyway, Monday was rather worthwhile actually, as I implemented about half a dozen trap types and started cleaning up the code a bit to try make room generation somewhat less painful. It was also clear that my resource management system, which I had designed to be simple, was utterly broken and was insanely complex if I wanted to keep track of anything. The fact I had to have a helper struct to find things through the Resources system says enough, I think. By the evening I was making great strides, and as long as I didn&#8217;t draw too much on the screen, the frame rate was bearable.. I had also tested it on my main desktop machine at this point and it ran full speed, so I was putting it down to my laptop being a bit old ( and being the same one I used in LD11! )<br \/>\n That said.. when it suddenly started chugging at single digit FPS&#8230; I dragged out gDEbugger and had a poke to optimize everything I could&#8230; I managed to get it up a bit to 10FPS, which was enough to finish four rooms, and stuff the Star Diamond in another room with a single lowly health pack to help you on your way back.<br \/>\n Oh yes&#8230; you had to push the Star Diamond back through the Mansion to escape with it.<br \/>\n Think yourself lucky that the version I&#8217;ve linked here only has five rooms, and only one of them is really going to cause you trouble, as that&#8217;s the main one you have to go through with the Star Diamond.<\/p>\n <p>An hour before the deadline, however&#8230; I gave up.<\/p>\n <p>I couldn&#8217;t get it running any faster&#8230; it just was not playable in it&#8217;s current state and I couldn&#8217;t fathom why&#8230; so I didn&#8217;t submit it.<br \/>\n I now regret this in hindsight, as this morning when I turned the laptop on, it ran in a frame without any hassle. I shall point out that during the weekend, the laptop was not reset once.. it ran constantly&#8230; so the only thing I can think of to have caused it was my graphics driver going a bit funky and getting itself into a state it couldn&#8217;t get out of until I restarted; as I had been checking for rogue processes to kill when the FPS originally started to fall and found nothing.<\/p>\n <p>Oh well.. it&#8217;s the experience which counts! but I could&#8217;ve been lucky 600!<\/p>\n <p>Should you want to play Thieving Fingers, you can do so from here: <a href=\"http:\/\/www.stuckiegamez.co.uk\/gamez\/ludumdare\/ld21\/\">http:\/\/www.stuckiegamez.co.uk\/gamez\/ludumdare\/ld21\/<\/a>\u00a0where a bunch of screenshots are also included.<br \/>\n It&#8217;s been compiled on 32bit Debian Lenny so should run on most things as the only dependency is OpenGL.. if not, the entire source is also available here: <a href=\"https:\/\/stuckieworld.net\/publicsvn\/ludumdare\/LD21\/\">https:\/\/stuckieworld.net\/publicsvn\/ludumdare\/LD21\/<\/a>\u00a0&#8230; just ignore that self-signed certificate \ud83d\ude09<br \/>\n There is an amusing oddity on 64bit machines though.. because I&#8217;m using floats to store delta time, and I optimized things a bit much.. the delta can alias to zero and you get a stutter. It took me a while to figure out what it was too as obviously sticking in printfs and suchlike is going to slow it down!.. but yes, the game runs so fast, it aliases a float&#8230; that&#8217;s optimization!<\/p>\n <p>Will I know better for next time? Perhaps&#8230; scary thing is though, I almost made it.. if I hadn&#8217;t been dealing with the resource system as much as I had, I&#8217;d likely have finished it in time for the Compo&#8230; and if I had reset even just each night.. I probably would&#8217;ve submitted for the Jam.<\/p>\n <p>Oh well&#8230; for now, it&#8217;ll sit in peace for a while, until I brave the courage to go back in and redo the resource system once more&#8230;<\/p>","time":"August 23rd, 2011 1:45 pm","title":"Thieving Fingers \u2013 Post Mortem"}