{"assets":[{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/1_idoab_ocmu_postmortem_ss-550x343.png","local":"\/data\/posts\/2013\/05\/cee10b7e6b884f5254df6c365712ad71.png"},{"original":"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/2_idoab_ocmu_postmortem_ss-550x343.png","local":"\/data\/posts\/2013\/05\/b065dff3fc39624985f728ad1cdb4816.png"}],"author_link":"author\/ocmu\/","author_name":"ocmu","cat":"LD #26","categories":["LD #26"],"comments":[],"epoch":1367768880,"event":"LD26","likes":5,"metadata":{"p_key":"78873","p_author":"ocmu","p_authorkey":"0","p_urlkey":"287883","p_title":"I Dream of a Beam \u2013 Postmortem","p_cat":"LD #26","p_event":"LD26","p_time":"1367768880","p_likes":"5","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1366934400","event_key":"16","event_name":"LD26"},"source_url":"2013\/05\/05\/i-dream-of-a-beam-postmortem\/","text":"<p>This was my first Ludum Dare, and I was thrilled to not only finish my game, but actually kind of like it a lot! <img alt=\":)\" class=\"wp-smiley\" src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/simple-smile.png\" style=\"height: 1em; max-height: 1em;\"\/> First things first, big thanks to everyone involved in hosting and running LD, thanks to everyone reviewing games, and a big thanks and congratulations to everyone (all 2437 of you) who finished a game!<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256719\" style=\"width: 560px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=20933\"><img alt=\"Screenshot \" class=\"size-large wp-image-256719\" height=\"343\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2013\/05\/cee10b7e6b884f5254df6c365712ad71.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/1_idoab_ocmu_postmortem_ss-300x187.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/1_idoab_ocmu_postmortem_ss-550x343.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/1_idoab_ocmu_postmortem_ss.png 800w\" width=\"550\"\/><\/a><p class=\"wp-caption-text\">I Dream of a Beam ScreenShot<\/p><\/div>\n<p>\u00a0<\/p>\n<p><strong>Minimal Design<\/strong><\/p>\n<p>I spent about three hours Friday night watching videos of other games. I had come up with several game ideas for most of the top themes from the early rounds of voting, but I distinctly remember thinking there was no way \u201cminimalism\u201d would win\u2026 Shows how much I know. \u00a0I ended up coming up with an idea for a simple shooter with no actual shooting; just a bunch of things that can be cleared with horizontal and vertical lines so that you can position yourself to maximize the number of things cleared with each shot while \u2018minimizing\u2019 the number of shots you need to take. I think this idea came through cleanly and it allowed me to finish the main player mechanics quickly and add more depth by adding different types of enemies. Finally, the theme let me save a lot of time on art by using solid colored rectangles for everything.<\/p>\n<p><strong>Audio \u2013 A Risk Rewarded<\/strong><\/p>\n<p>Things were going smoothly on Saturday, I had player movement, particle explosions, basic enemy types and some simple sounds all done. Then, after dinner, I had this mental conversation:<\/p>\n<blockquote><p><span style=\"color: #808080\">Idealist Me: \u201cThis game would be a lot better with dynamic music and sound effects that sync with the music!\u201d<\/span><\/p>\n<p><span style=\"color: #808080\">Realist Me: \u201cI\u2019ve never done that\u2026 How am I supposed to do that..\u201d<\/span><\/p>\n<p><span style=\"color: #808080\">Actual Me: \u201cOh well, no time to think about it, time to get it done!\u201d<\/span><\/p><\/blockquote>\n<p>So, over the next 5 hours, I programmed an audio controller that counts the time to play sounds on beat, made some music on iNudge and recorded it track by track, had the controller randomly add and remove tracks during gameplay, then finally sent all audio effects through the controller to sync them with the music. I also got to bust out some math \/ music theory to figure out the frequency ratio \u00a0needed to scale the sound effects by 5ths for more dynamic sound.<\/p>\n<p>Somehow, it all worked, and was really awesome. The music isn\u2019t all that good, but it\u2019s passable and syncing the effects with it is a great subtle effect. I have been getting a lot of positive feedback on the sound, and I think it really adds a great extra dimension to the game.<\/p>\n<p><strong>Finish Early, then Polish!<\/strong><\/p>\n<p>This was the approach I took to making the game. After the audio controller was finished late Saturday night (and I got some sleep), I had a basically playable game. I spent the early part of Sunday throwing in a scoring system, then adding as much polish as I could. First was XBox controller support. I think these types of game are better with a controller, and Slick has the option, so why not? Then I added a simple menu, controls screen, and credits screen. These don\u2019t take that much time, but it makes the finished product look much better. Finally, when all of that was done, I worked on making the game more fun by adding more enemy types. I had horizontal, vertical, and diagonal movers, and,\u00a0realistically, they should never kill you. So, I added the orange following enemies and added a little bit of random behavior in them so they wouldn\u2019t just stack on top of each other. Then the light blue enemies\u2026 They were supposed to be sinusoidal, but they\u2019re also at a random diagonal, so they are actually pretty hard to follow (for me at least). Finally, I added a system to spawn enemies at the end of every 4 musical measures (to sync with the music) and I was out of time!<\/p>\n<p>\u00a0<\/p>\n<p>\u00a0<\/p>\n<div class=\"wp-caption aligncenter\" id=\"attachment_256720\" style=\"width: 560px\"><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=20933\"><img alt=\"Screenshot 2\" class=\"size-large wp-image-256720\" height=\"343\" sizes=\"(max-width: 550px) 100vw, 550px\" src=\"\/data\/posts\/2013\/05\/b065dff3fc39624985f728ad1cdb4816.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/2_idoab_ocmu_postmortem_ss-300x187.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/2_idoab_ocmu_postmortem_ss-550x343.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2013\/05\/2_idoab_ocmu_postmortem_ss.png 800w\" width=\"550\"\/><\/a><p class=\"wp-caption-text\">Uh Oh<\/p><\/div>\n<p>\u00a0<\/p>\n<p><strong>Room for Improvement<\/strong><\/p>\n<p>First, I had sketches for at least four additional types of enemies that did not make it into the game. Oh well.<\/p>\n<p>I have also received some feedback about the player stopping movement while shooting. This was actually not a bug <img alt=\":)\" class=\"wp-smiley\" src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/simple-smile.png\" style=\"height: 1em; max-height: 1em;\"\/> , but a conscious decision. Before I made that change, you could stay alive forever by constantly moving around and spamming shots. You can probably still do that, but this makes it a little harder at least, and I think it looks nicer.<\/p>\n<p>Sometimes the enemies spawn on top of you. There, I said it. OK, well, I did write in a system to make them not spawn on you, but they can still spawn VERY close to you and moving in your direction, so that could be better. I had plans to have a spawning animation so that you can see where they\u2019ll be and plan ahead, but I didn\u2019t have time for that.<\/p>\n<p><strong>Right Tool for the Job?<\/strong><\/p>\n<p>The other major complaint that I have received is that sometimes the game doesn\u2019t run! Which is bad!!! Particularly, it seems like it doesn\u2019t work at all on OS\/X and the applet does not work on Linux (the executable JAR works on Linux, though). I chose Java and Slick largely because I like the idea of code and compile once to get full cross platform support. I want to make it easy for people to play my games. However, something apparently went wrong with bundling and linking OS natives, and I haven\u2019t been able to figure out the problem yet. (I haven\u2019t tried all that hard, sorry).<\/p>\n<p>So, I think I need to switch languages \/ engine. Right now the plan is javascript and html5. That way compatibility is up to the user and their browser. I am tentatively set on using melonJS, does anyone have other options I should consider?<\/p>\n<p><strong>Submission<\/strong><\/p>\n<p>Thanks for reading! You can play and rate \u201cI Dream of a Beam\u201d here:<\/p>\n<p><a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=20933\">http:\/\/www.ludumdare.com\/compo\/ludum-dare-26\/?action=preview&amp;uid=20933<\/a><\/p>","time":"May 5th, 2013 3:48 pm","title":"I Dream of a Beam \u2013 Postmortem","title_was_empty":false}