{"author_name":"jackrugile","cat":"LD #31","comments":[{"author_name":"Bogden","time":"December 14, 2014 3:42 am","epoch":1418546520,"text":"Did you use yeoman or anything to scaffold your app for LD, or did you just start building from scratch?","spam":"N"},{"author_name":"","time":"December 14, 2014 3:49 am","epoch":1418546940,"text":"@Bogden I didn&#8217;t use Yeoman, but didn&#8217;t start totally from scratch either. I had an old project that I stripped down to bare bones before the compo. It had hardly any code. Just had a game loop, state stub, entity stub, and various commonly used math and formatting functions (random ranges, AABB collision, adding commas to numbers, etc.). I used gulp for my build process.","spam":"N"},{"author_name":"Warboys","time":"December 14, 2014 9:07 am","epoch":1418566020,"text":"Great job on this game, I really enjoyed it.","spam":"N"}],"epoch":1418545920,"likes":18,"metadata":{"p_key":"21989","p_author":"jackrugile","p_authorkey":"26377","p_urlkey":"57353","p_title":"Avoid Rage \u2013 Post Mortem","p_cat":"LD #31","p_event":"LD31","p_time":"1418545920","p_likes":"18","p_comments":"3","p_status":"UPD5","us_key":"26377","us_name":"jackrugile","us_username":"jackrugile","event_start":"1417737600","event_key":"26","event_name":"LD31"},"text":"<p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=26377\"><img class=\"alignnone size-full wp-image-427101 aligncenter\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/12\/avoidrage4.gif\" alt=\"avoidrage4\" width=\"400\" height=\"400\" \/><\/a><\/p>\n <p style=\"text-align: center\">Avoid Rage is a minimal reflex game where you must avoid enemies coming at you from opposing tracks.\u00a0Control with arrow keys or WASD. M to mute.<\/p>\n <h2 style=\"text-align: center\"><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=26377\">Play Game<\/a><\/h2>\n <p>&nbsp;<\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p>This was my first submitting to\u00a0Ludum Dare. I tried and failed on two previous occasions. It felt so good just to complete something and make the deadline. That was my main goal when going into things, so I consider this a success.<\/p>\n <p>I stuck to my original goal\u00a0of keeping things simple and I didn&#8217;t stray from my initial idea the whole weekend. I wanted to explore so many different variations and routes, but I knew that would put me at risk for missing the deadline.<\/p>\n <h3>The Good<\/h3>\n <ul>\n <li><strong>Simple Premise<\/strong> &#8211; The game only required two lines of instructions: The goal, and the controls. You can jump right in and play.<\/li>\n <li><strong>Rendering<\/strong> &#8211; I used HTML\/CSS as the main renderer for this game, with all game logic written in JavaScript. I typically use canvas, but had experimented recently with animating via CSS properties for mini games. This worked out well because the animation was performant, I was able to code in a familiar setting (I am a front end developer full time), and I was able to make use of custom fonts without any headaches.<\/li>\n <\/ul>\n <p><span id=\"more-426661\"><\/span><\/p>\n <ul>\n <li><strong>Stat Tracking<\/strong> &#8211; I personally enjoy seeing some sort of status as I play the game and come back to it. Total moves, total deaths, and total active time played are all stored locally. This is of course in addition to your best score as well.<\/li>\n <li><strong>Track Highlighting<\/strong> &#8211; Any track that currently has an enemy on it lights up subtly. This was put in purely for aesthetic reasons, but it turns out some people were using it as a guide to help them avoid enemies. Had I considered this, I would light up the tracks brighter, and make the transition occur faster.<\/li>\n <li><strong>Music<\/strong> &#8211; I didn&#8217;t have much time to work on the music, so it is not full length. However, I feel like the music complements the gameplay style.<\/li>\n <\/ul>\n <h3>The Bad<\/h3>\n <ul>\n <li><strong>Too Simple<\/strong> &#8211; Despite the simple premise of the game going in <strong>The Good<\/strong> section, I think adding one more goal or mechanic would have benefited the game. Perhaps collecting items, or hovering over a highlighted square for bonus points would work.<\/li>\n <li><strong>Not Enough Juice<\/strong>\u00a0&#8211; Properties of games like <a href=\"http:\/\/superhexagon.com\/\">Super Hexagon<\/a>\u00a0were my inspiration for this game. They have such high excitement, polish, and a hectic nature to them that pumps up your adrenaline. My game ended up being a little more on the calm side. I would love to spice things up with a more dynamic background, screen shake, more interesting enemies, reaction to the beat of the music, etc.<\/li>\n <li><strong>Collision <\/strong>&#8211; I reduced the hit box size slightly on both the hero and enemies for fairness sake, however, this caused a few instances where collision tunneling was possible at the faster stages. I didn&#8217;t witness it much, but it was possible. I was just using very simple AABB testing, but next time I need to implement something better.<\/li>\n <li><strong>End of Game Flow<\/strong> &#8211; For quick\u00a0retrying, I made the game start playing immediately if you had died and subsequently pressed a movement key. This worked fine for trying to beat your best score, but I often am moving so frantically when I die that I immediately press another movement key, and the next round starts too quick after I die. The only problem here is that you cannot review your score for the previous round and see how it compared to the best. I should have\u00a0added a proper gameover animation, but still kept it quick.<\/li>\n <li><strong>Boring Difficulty Ramp<\/strong> &#8211; The difficulty ramps up linearly, with the game getting slightly harder every 4 seconds (this is marked by the color changing). This was a quick and easy method, but it is boring as hell. I think having something more dynamic would improve the game. Something such as having bursts of craziness that then cool down, or getting harder the more you move, or sending enemies in by pair or formation, instead of one by one.<\/li>\n <\/ul>\n <h3>The Future<\/h3>\n <p>I have a few ideas I&#8217;d like to tinker with\u00a0down the road. Perhaps\u00a0diagonal moving enemies, larger level grids (4\u00d74, 5\u00d75, etc.), touch controls, and of course, improvements for everything mentioned in <strong>The Bad <\/strong>section above.<\/p>\n <p>If you have a moment, <a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-31\/?action=preview&amp;uid=26377\">play the game,<\/a>\u00a0let me know your feedback, and\u00a0post your best score! Mine is currently 124 (as seen in the gif above).<\/p>\n <p>&nbsp;<\/p>\n <hr \/>\n <p>&nbsp;<\/p>\n <p><strong>Credits<br \/>\n <\/strong><em>Music: <a href=\"http:\/\/www.image-line.com\/flstudio\/\">Fruity Loops<\/a><\/em><br \/>\n <em>Sound Effects:\u00a0<a href=\"http:\/\/www.superflashbros.net\/as3sfxr\/\">as3sfxr<\/a><\/em><br \/>\n <em>JavaScript Helpers: <a href=\"http:\/\/goldfirestudios.com\/blog\/104\/howler.js-Modern-Web-Audio-Javascript-Library\">Howler.js<\/a> and <a href=\"http:\/\/modernizr.com\/\">Modernizr.js<\/a><br \/>\n Fonts: <a href=\"http:\/\/oswaldfont.com\/\">Oswald<\/a>,\u00a0<a href=\"http:\/\/www.fontsquirrel.com\/fonts\/droid-sans-mono\">Droid Sans Mono<\/a>, and <a href=\"http:\/\/www.entypo.com\/\">Entypo<\/a><\/em><\/p>\n \n <p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/minimal\/\" rel=\"tag\">minimal<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/reflex\/\" rel=\"tag\">reflex<\/a><\/p>","time":"December 14th, 2014 3:32 am","title":"Avoid Rage \u2013 Post Mortem"}