{"author_name":"FyberOptic","cat":"LD #29","comments":[],"epoch":1398955920,"likes":2,"metadata":{"p_key":"30074","p_author":"FyberOptic","p_authorkey":"36171","p_urlkey":"65541","p_title":"Gems of the Deep Post-Mortem","p_cat":"LD #29","p_event":"LD29","p_time":"1398955920","p_likes":"2","p_comments":"0","p_status":"UPD5","us_key":"36171","us_name":"FyberOptic","us_username":"fyberoptic","event_start":"1398384000","event_key":"22","event_name":"LD29"},"text":"<p>I already wrote a &#8220;the day after&#8221; kind of post regarding <a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-29\/?action=preview&amp;uid=36171\">Gems of the Deep<\/a>, but I noticed that\u00a0people were writing proper post-mortems about their games, and I thought that sounded like a good idea to address specific things. \u00a0 So let&#8217;s sum it up!<\/p>\n <p><strong>What Went Right<\/strong><\/p>\n <ul>\n <li>Dynamic cave generation. \u00a0This was the very first thing I started doing after the initial rendering of a tile grid worked. \u00a0 I didn&#8217;t want to be designing levels, and\u00a0it seemed like a waste to not use some of this procedural terrain experience I&#8217;ve gotten recently (even if that was for 3D). \u00a0The tile grid wasn&#8217;t\u00a0even initially as\u00a0big, but it had to grow to accommodate the cave generation until I was satisfied with how easily it might be\u00a0traversed by the player.<\/li>\n <li>The jetpack. \u00a0This came along pretty early in the game, even before jumping. \u00a0Tuning the gravity and thrust was one of the priorities, which I eventually thought felt pretty smooth. \u00a0But I still felt like it was kind of unnecessary to constantly be flying, especially since it meant constantly hearing thrust. \u00a0Jumping was added on Sunday, immediately after which I moved the jetpack onto the W key. \u00a0I didn&#8217;t like it; I felt like I was fumbling the controls a lot. \u00a0So while out for a break I thought of just\u00a0implementing\u00a0a double-jump technique to activate the jetpack instead, and that ended up working out great.<\/li>\n <li>Parallax scrolling. \u00a0It was never planned, it was just an idea to fill the empty\u00a0void of the background. \u00a0I liked the look, so I kept it, tweaking it along the way. \u00a0Initially it was using the exact same render as the main map, so when you destroyed terrain in the foreground it was affecting the background too and looking a bit odd. \u00a0So I ended up doing a separate pre-render of the world, then using that one for rendering the parallax layers. \u00a0 Probably would be even better if I flipped it, since at the starting area you can really tell that it&#8217;s the same cave. \u00a0But it&#8217;s fine once you start moving deeper. \u00a0It was apparently a hit with people reviewing the game!<\/li>\n <li>The artwork\/graphics. \u00a0And I&#8217;m not an artist! \u00a0Sometimes I luck out though by pushing pixels around, which happened with things like the main character and the bat. \u00a0Other stuff though, like the background tiles, went through\u00a0<strong>several<\/strong> iterations (some still in the texture atlas) before lucking out on something which\u00a0wasn&#8217;t bland, and which\u00a0I could use as a base to easily tile random tile types together with. \u00a0Rounded corners had already been implemented before that, which made this all even more time-consuming because I had to keep remaking those, too,\u00a0for\u00a0each\u00a0iteration\u00a0of tiles.<\/li>\n <li>Destructible environment. \u00a0This was another thing that wasn&#8217;t initially planned. \u00a0Shooting wasn&#8217;t even added until Sunday, and I added breaking blocks as a way to make the gun have a purpose in case I didn&#8217;t get enemies added in time. \u00a0A happy accident was when I realized that shooting gems made you collect them, because I had based the bullet on the main entity class. \u00a0The entity\u00a0class\u00a0itself had actually ended up primarily\u00a0being the player class as time had gone by. \u00a0The player could of course collect gems by touching them, so bullets suddenly had the same behavior. \u00a0 I left it, because\u00a0I thought it was fun to collect them that way.<\/li>\n <li>It&#8217;s fun. \u00a0Somehow I made something that I personally enjoy loading up and playing every so often, even after the contest. \u00a0I surprised even myself with that one.<\/li>\n <\/ul>\n <p>&nbsp;<\/p>\n <p><strong>What Went Not-So-Great\u00a0<\/strong><\/p>\n <ul>\n <li>Rounded edges. \u00a0Overall, this was a plus, avoiding\u00a0sharp blocky corners and giving it a slightly more polished look. \u00a0But it had quirks due to the hacky way part of it was implemented, which while this saved a ton of time, it bugged me and made me worry that people would think it looked sloppy. \u00a0The combination of shortcuts manifested itself most noticeably when there was a narrow row of diagonal blocks. \u00a0I&#8217;ve fixed most of this in a post-LD version, though, using some multi-texturing techniques to apply the rounded edges instead.<\/li>\n <li>There was no web app. \u00a0I mentioned this in the other post, but I kept getting Java security permission problems, and wasted a lot of time trying to sort this out. \u00a0I eventually decided that if my default Java permissions are going to give me this much trouble then I&#8217;m not going to bother aggravating other people with it too. \u00a0I cut my losses after wasting almost two hours signing and packing JARs.<\/li>\n <li>There&#8217;s no music. \u00a0I wanted something to help set the mood, but at the same time I realized that\u00a0if it had been bad or annoying\/repetitive music (which could very likely have been the case, coming from me) then it might have actually worsened the overall experience. \u00a0I did try a few \u00a0music-related web things for a bit, but I never got anything I was happy with. \u00a0The other big part of it was that I\u00a0honestly wasn&#8217;t even sure of the legality of using music from some of them. \u00a0Eventually I felt like I wasted enough time on it and went back to code. \u00a0Next time though I&#8217;ll be better prepared on that front; I&#8217;ll find a tool ahead of time.<\/li>\n <li>There&#8217;s no proper crosshair. \u00a0There&#8217;s a flashlight beam, which I felt turned out really well (despite spending too much time on it), but that doesn&#8217;t really help you aim. \u00a0I also didn&#8217;t grab the mouse cursor due to the lack of any kind of crosshair\/aimer system, which means it&#8217;s also possible to accidentally click outside the window, which is annoying.<\/li>\n <\/ul>\n <p>&nbsp;<\/p>\n <p><strong>What Went Wrong<\/strong><\/p>\n <ul>\n <li>There&#8217;s not enough gameplay. \u00a0Getting gems and shooting bats is fun, but it needed an end goal. \u00a0Even just a &#8220;you win&#8221; type of thing for getting all the gems (there&#8217;s exactly a hundred of them randomly\u00a0placed) would have been better than nothing. \u00a0There just wasn&#8217;t time, unfortunately.<\/li>\n <li>You can&#8217;t die. \u00a0I didn&#8217;t start working on bats until about an hour remaining, then health at\u00a0the\u00a0half-hour mark, which meant I not only had to make the code for it but also draw the heart (and I reiterate, I&#8217;m not an artist). \u00a0I wanted there to be some knockback from the bats, and some flicker during your moment of invincibility. \u00a0I wanted you to take damage if you hit your head too hard or fell too far. \u00a0I wanted to have earthquakes and have rocks fall. \u00a0Even something like stalactites\/stalagmites would have made it a bit more hazardous. \u00a0Health didn&#8217;t seem incredibly important early on, but in the end it turned out to be one of the most important things which didn&#8217;t get finished, so practically anything that revolved around the concept didn&#8217;t either.<\/li>\n <li>The wasted time. \u00a0Between all of the time spent sorting out the collision detection, dealing with the applet stuff, \u00a0redoing the map tile graphics several times, trying to come up with some music, etc, I could have probably accomplished many of the things the game needed. \u00a0I suppose most of that\u00a0was just part of the development process, but the applet part at least could have been avoided if I&#8217;d worked it out before the contest. \u00a0But I didn&#8217;t even know I was going to enter until practically the same day, so there wasn&#8217;t much I could have done anyway, I suppose.<\/li>\n <\/ul>\n <p>&nbsp;<\/p>\n <p>Overall it was an incredibly positive experience, one which I plan to participate in again. \u00a0Peoples&#8217; reactions have been really enjoyable to read, and making something you&#8217;re proud of\u00a0in such a short amount of time is pretty motivating. \u00a0And perhaps best of all,\u00a0I learned a few things in the process!<\/p>\n <p>To wrap this up, I thought I&#8217;d include one of the early screenshots:<\/p>\n <p><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/05\/ld29_1.png\"><img class=\"alignnone size-medium wp-image-358888\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/05\/ld29_1-300x236.png\" alt=\"ld29_1\" width=\"300\" height=\"236\" \/><\/a><\/p>","time":"May 1st, 2014 9:52 am","title":"Gems of the Deep Post-Mortem"}