{"author_name":"AlbertoSM","cat":"LD #30","comments":[],"epoch":1409596740,"likes":3,"metadata":{"p_key":"26306","p_author":"AlbertoSM","p_authorkey":"18201","p_urlkey":"61733","p_title":"confLINKted \u2013 LD30 Postmortem","p_cat":"LD #30","p_event":"LD30","p_time":"1409596740","p_likes":"3","p_comments":"0","p_status":"UPD5","us_key":"18201","us_name":"AlbertoSM","us_username":"albertosm","event_start":"1408665600","event_key":"24","event_name":"LD30"},"text":"<\/p>\n <\/p>\n <\/p>\n <p style=\"color: #2c3e50;text-align: center\"><a href=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/09\/ld30title.png\"><img class=\"wp-image-390779 size-large\" src=\"http:\/\/www.ludumdare.com\/compo\/wp-content\/uploads\/2014\/09\/ld30title-550x275.png\" alt=\"ld30title\" width=\"550\" height=\"275\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/09\/ld30title-300x150.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/09\/ld30title-550x275.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2014\/09\/ld30title.png 639w\" sizes=\"(max-width: 550px) 100vw, 550px\" \/><\/a><\/p>\n <p style=\"color: #2c3e50;text-align: center\">The theme,\u00a0<strong style=\"font-style: inherit\">Connected Worlds<\/strong>.<br \/>\n The duration, 72 hours.<br \/>\n The intensity, overflowing!<\/p>\n <p>Developing confLINKted was a thrill ride, both for things that went really well and things that should&#8217;ve worked but\u00a0slapped me in the face.<\/p>\n <p>[<a href=\"http:\/\/www.ludumdare.com\/compo\/ludum-dare-30\/?action=preview&amp;uid=18201\"><strong>Try and rate the game HERE<\/strong><\/a>! I always rate all of my rater&#8217;s games :)]<\/p>\n <p>Have you ever seen a 2D character moving in a rave-like dance?<br \/>\n Prepare for the worst, after the jump!<br \/>\n <span id=\"more-390771\"><\/span><\/p>\n <p><span style=\"text-decoration: underline\"><span style=\"text-decoration: underline\"><strong style=\"font-style: inherit\">Brainstorming: 15% Brain, 85% Storm<\/strong><\/span><\/span><\/p>\n <p style=\"color: #2c3e50\"><img class=\"alignright wp-image-139 \" src=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/ld30_prep.jpg\" alt=\"ld30_prep\" width=\"237\" height=\"422\" \/>For the 30th edition of\u00a0<strong style=\"font-style: inherit\">Ludum Dare<\/strong>, I was thinking of making a little survivor game, like I did with my LD26 entry,\u00a0<a style=\"font-weight: inherit;font-style: inherit\" href=\"albertosm.com\/works\/MinimalShifting\"><strong style=\"font-style: inherit\">Minimal Shifting<\/strong><\/a>.<\/p>\n <p style=\"color: #2c3e50\">But\u00a0that game used 2D movement with a somewhat overhead perspective \u00e0 la Zelda ALTTP, so, in order to avoid repetition, I went with a 2D\u00a0platformer approach.<\/p>\n <p style=\"color: #2c3e50\">My idea was pretty solid &#8220;<em style=\"font-weight: inherit\">on paper<\/em>&#8220;, having planned the main mechanics and figured out some obstacles to add. My mind was overflowing with ideas when I remember about my experience on 2D platformers in Unity, which was\u00a0<strong style=\"font-style: inherit\">none<\/strong>.<\/p>\n <p style=\"color: #2c3e50\">Since\u00a0I already established that this was a\u00a0<strong style=\"font-style: inherit\">Jam Entry,<\/strong>\u00a0I dug around for some simple 2D platformer system for Unity, and I found one by\u00a0Prime31,\u00a0<a style=\"font-weight: inherit;font-style: inherit\" href=\"https:\/\/github.com\/prime31\/CharacterController2D\">available for free in their GitHub<\/a>.<\/p>\n <p style=\"color: #2c3e50\">That system, while solid in practice, made me realize another flaw in the plan: I had\u00a0<strong style=\"font-style: inherit\">Unity 4.3<\/strong>, and most 2D things in Unity only run in 4.5 with the Sprite class.<\/p>\n <p style=\"color: #2c3e50\">So then I thought to myself: &#8220;<em style=\"font-weight: inherit\">So, Alberto, you want to make a 2D platformer when you don&#8217;t have the specific\u00a0tools you need to make them?<\/em>&#8220;. I felt\u00a0like somebody was sarcastically slow clapping in my brain&#8230;<\/p>\n <p style=\"color: #2c3e50\">So, roughly\u00a045 minutes after that, I got Unity 4.5 and installed it. Got to test P31&#8217;s system and everything was great. They used the\u00a0sprite\u00a0from the main character in Spelunky so I had to get some sprites. Time to go to OpenGameArt!<\/p>\n <p style=\"color: #2c3e50\"><img class=\"alignleft\" src=\"http:\/\/media.tumblr.com\/ae795ae1c0011404f86fb27ed28e416a\/tumblr_inline_mr99l4Dral1qz4rgp.gif\" alt=\"\" width=\"108\" height=\"108\" \/><\/p>\n <p style=\"color: #2c3e50\"><a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/opengameart.org\/content\/basic-character-graphics-%E2%80%94-various-shapes-and-sizes\"><strong style=\"font-style: inherit\">This character sheet<\/strong><\/a>\u00a0was probably my life saver, since I don&#8217;t consider myself an artist at all&#8230; So I started to use them for both characters and they turned out great (as long as they were not animated&#8230;).<\/p>\n <p style=\"color: #2c3e50\">\n <p style=\"color: #2c3e50\">\n <p><span style=\"text-decoration: underline\"><span style=\"text-decoration: underline\"><strong style=\"font-style: inherit\">Adventures with Unity2D<span>\u2122<\/span><\/strong><\/span><\/span><\/p>\n <p style=\"color: #2c3e50\">Aside from the inexperience on making 2D platformers in Unity, I also hadn&#8217;t tried Unity2D by itself since I was still using 4.2.<br \/>\n The change from 3D to 2D wasn&#8217;t that much of an issue, since most components (BoxColliders, Renderers, etc) translated well in 2D, keeping the most common features intact.<\/p>\n <p style=\"color: #2c3e50\">Obstacle needed to vanish as soon as they get out of the screen limits, so I arranged them to destroy themselves as soon as they collide with\u00a0<strong style=\"font-style: inherit\">Obstacle Blockers<\/strong>\u00a0located outside of the screen. The issue that emerged was that those blockers\u00a0will only work with other GameObjects with both BoxColliders and RigidBodys, but those RigidBodys would depend on their mass to move, and no matter how much of mass they had, they would be pushed by the obstacles little by little, so they would eventually fall, the obstacles wouldn&#8217;t get generated, and the game would be going on with no challenge at all.<\/p>\n <p style=\"color: #2c3e50\"><a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/ld30esquema.png\"><img class=\"size-full wp-image-148 aligncenter\" src=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/ld30esquema.png\" alt=\"ld30esquema\" width=\"577\" height=\"455\" \/><\/a><\/p>\n <p style=\"color: #2c3e50\">I was lucky to catch this potentially game breaking little bug, but I didn&#8217;t even reach the surface of what I had to handle next.<\/p>\n <p><span style=\"text-decoration: underline\"><span style=\"text-decoration: underline\"><strong style=\"font-style: inherit\">To rave or not to rave: Platformer physics and animations<\/strong><\/span><\/span><\/p>\n <p style=\"color: #2c3e50\">As previously mentioned, I was using Prime31&#8217;s platformer system for the game. Luckily for me, this system allowed me to manage collisions by using hitpoints like I did before on Flash, so that was an advantage. I implemented the system on my game scene to the letter without regarding the animations, since they were to be dealt with when the main game would be properly tested. So, when I get to the animations, this happens:<\/p>\n <p style=\"color: #2c3e50\"><a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/ld30rave.gif\"><img class=\"size-full wp-image-150 aligncenter\" src=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/ld30rave.gif\" alt=\"ld30rave\" width=\"360\" height=\"240\" \/><\/a><\/p>\n <p style=\"color: #2c3e50\"><img class=\"aligncenter\" src=\"http:\/\/i.imgur.com\/KYAm8gQ.gif\" alt=\"\" width=\"256\" height=\"169\" \/>The perplexity of the situation was palpable. I mean, how the fuck was this happening? Animation glitch? Some physics voodoo?<\/p>\n <p style=\"color: #2c3e50\"><a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-01-at-20.49.15.png\"><img class=\" wp-image-153 aligncenter\" src=\"http:\/\/albertosm.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-01-at-20.49.15.png\" alt=\"Screen Shot 2014-09-01 at 20.49.15\" width=\"448\" height=\"170\" \/><\/a>Well, yeah. Apparently the BoxCollider2D uses 4 points on each side to determine what specific collisions are we receiving. I think I found\u00a0a bug where the player&#8217;s BoxCollider2D would be standing on one frame, and\u00a0since the physics are dependent on a call from the Update() and the current Time.deltaTime, any hint of desyncronization would confuse the collider system and make it think we are actually falling, sending that message to the animation system. We are actually falling constantly, but when we are standing the velocity is\u00a0almost zero so\u00a0we need to specify that to the animation\u00a0system so it doesn&#8217;t improvise a 2D rave. This velocity tweak saved me hours of theorizing about the nature of the problem, but it didn&#8217;t come easily.<\/p>\n <p><span style=\"text-decoration: underline\"><span style=\"text-decoration: underline\"><strong style=\"font-style: inherit\">Finishing touches<\/strong><\/span><\/span><\/p>\n <p style=\"color: #2c3e50\">Being a fan of Soundcloud artists myself, I totally wanted to have some really talented composer to provide the theme for confLINKted! After the chaotic platformer implementation, I had to deal with the audio features\u00a0on the last 6\u00a0hours of the compo, so all I could do was reach some composers whose work I already picked as a possible theme song. Unfortunately, none of them replied in time for me to put any of their songs in the game, so I went with\u00a0<a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/opengameart.org\/content\/a-journey-awaits\">&#8220;A Journey Awaits&#8221; by lemon42<\/a>. Even though it wasn&#8217;t exactly what I had in mind, I like how the song is not just some cheap chiptune loop and periodically\u00a0progresses, inviting the players to survive longer so they can enjoy more of the song.<\/p>\n <p style=\"color: #2c3e50\">The menus are done with NGUI and iTween, and even though NGUI already has a tweener class ready to use, it&#8217;s aeons away from the versatility that iTween has. Totally recommended! <img src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/simple-smile.png\" alt=\":)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/p>\n <p style=\"color: #2c3e50\">\n <p><span style=\"text-decoration: underline\"><span style=\"text-decoration: underline\"><strong style=\"font-style: inherit\">TL;DR, the summary<\/strong><\/span><\/span><\/p>\n <p style=\"color: #2c3e50\">Like any other project, confLINKted gave me headaches and reliefs. I&#8217;ll try to compress all the experience in the inevitable&#8230;<\/p>\n <p style=\"color: #2c3e50\"><span style=\"text-decoration: underline\">WHAT WENT RIGHT:<\/span><\/p>\n <ul style=\"color: #2c3e50\">\n <li style=\"font-weight: inherit;font-style: inherit\">Unity&#8217;s accessible 2D engine and the things I quickly picked up from it.<\/li>\n <li style=\"font-weight: inherit;font-style: inherit\">The fact that I could\u00a0design the game in a really short span of time.<\/li>\n <li style=\"font-weight: inherit;font-style: inherit\">That almost every idea I had in mind was implemented.<\/li>\n <\/ul>\n <p style=\"color: #2c3e50\"><span style=\"text-decoration: underline\">WHAT WENT WRONG:<\/span><\/p>\n <ul style=\"color: #2c3e50\">\n <li style=\"font-weight: inherit;font-style: inherit\">Relying on a platforming engine I hadn&#8217;t even tried yet.<\/li>\n <li style=\"font-weight: inherit;font-style: inherit\">I went out a couple of times during the jam. That is why there are no more varied obstacles <img src=\"http:\/\/ludumdare.com\/compo\/wp-includes\/images\/smilies\/frownie.png\" alt=\":(\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/><\/li>\n <li style=\"font-weight: inherit;font-style: inherit\">The character animations are not entirely correct, and my velocity tweak could&#8217;ve been better.<\/li>\n <\/ul>\n <p style=\"color: #2c3e50\">All in all, I&#8217;m super proud of my new game. It already has\u00a0<a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/albertosm.com\/works\/conflinkted\/\"><strong style=\"font-style: inherit\">a page in my portfolio<\/strong><\/a>\u00a0(like everyone is doing, duh), and it got mentioned in the spanish gaming site\u00a0<a style=\"font-weight: inherit;font-style: inherit\" href=\"http:\/\/www.anaitgames.com\/articulos\/ludum-dare-30-seleccion\"><strong style=\"font-style: inherit\">AnaitGames<\/strong><\/a>\u00a0(well, they were looking for their reader&#8217;s LD entries, but let me live the dream!). The best thing is that I still got ideas flowing about this game, so I&#8217;ll try to expand it as much as I can!<\/p>","time":"September 1st, 2014 1:39 pm","title":"confLINKted \u2013 LD30 Postmortem"}