{"assets":[],"author_link":"author\/kaiclavier\/","author_name":"KaiClavier","cat":"LD #35","categories":["LD #35"],"comments":[],"epoch":1461862320,"event":"LD35","likes":6,"metadata":{"p_key":"83594","p_author":"KaiClavier","p_authorkey":"0","p_urlkey":"294332","p_title":"SHAPE\u2606SHIFT: What I learned from Ludum Dare 35 is\u2026","p_cat":"LD #35","p_event":"LD35","p_time":"1461862320","p_likes":"6","p_comments":"0","p_status":"WAYBACK","us_key":null,"us_name":null,"us_username":null,"event_start":"1460678400","event_key":"33","event_name":"LD35"},"source_url":"2016\/04\/28\/shape%E2%98%86shift-what-i-learned-from-ludum-dare-35-is\/","text":"<p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-35\/?action=preview&amp;uid=39938\">Play\u00a0SHAPE\u2606SHIFT here!<\/a><\/p>\n<p><img alt=\"Screen Shot 2016-04-18 at 8.07.12 PM\" class=\"alignnone wp-image-561045\" height=\"295\" sizes=\"(max-width: 393px) 100vw, 393px\" src=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2016\/04\/Screen-Shot-2016-04-18-at-8.07.12-PM-300x225.png\" srcset=\"http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2016\/04\/Screen-Shot-2016-04-18-at-8.07.12-PM-300x225.png 300w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2016\/04\/Screen-Shot-2016-04-18-at-8.07.12-PM-768x576.png 768w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2016\/04\/Screen-Shot-2016-04-18-at-8.07.12-PM-550x412.png 550w, http:\/\/ludumdare.com\/compo\/wp-content\/uploads\/2016\/04\/Screen-Shot-2016-04-18-at-8.07.12-PM.png 854w\" width=\"393\"\/><\/p>\n<p>Ludum Dare 35 was a huge learning experience for me, so I thought I\u2019d write up a postmortem\u00a0or whatever!<\/p>\n<p>\u00a0<\/p>\n<p><strong>1. Making a puzzle-platformer for a game jam, and you<\/strong><\/p>\n<p>The first thing I did was write down a bunch of\u00a0ideas that came to mind with the theme, and settled on this one. I immediately came up with a few good ideas for puzzles I could do with the gimmick, but I wish I came up with more as the last puzzle in the game is embarrassingly easy! I had this big puzzle involving moving from the one side of the screen to the other planned out, but ran out of time and submitted it as-is.<\/p>\n<p>Using polymorphism for the blocks saved me a TON of time. The player and the blocks all inherit from the same class, and the \u201cfloaty thing\u201d object has a variable for which one it\u2019s currently controlling. I\u2019m very glad I happened to brush up on this before the jam.<\/p>\n<p>By the last day of the jam, I more or less had everything implemented coding-wise, and ran into a level design panic. Many things that I wrote down on paper didn\u2019t get put in the game, despite the code being there. One puzzle desperately needed a ceiling, another needed a door that closes behind you, a conveyer belt needed to be just a bit longer, a certain flagpole didn\u2019t have to be there. The \u201cunpossessable\u201d enemies also needed some kind of indicator on the overworld that they couldn\u2019t be possessed, besides not having a \u201ccore\u201d when you try to take control. All of these things I actually had written down, but just never got around to doing them!<\/p>\n<p>At first I thought that the solution to this would be coming up with 100% of the game within the first 8 hours and spending the rest of the jam making that game. I soon realized that this would make the game just feel\u2026 stale, and drew connections between this and the lesson on keyframing in \u201cThe Animator\u2019s Survival Kit\u201d. What I just described is similar to the \u201cpose-to-pose\u201d method of animating, drawing out each keyframe, and then adding inbetweens until it\u2019s smooth enough. This gets an animation done on time, but where\u2019s the fun in it? Another method of animating is the \u201cstraight-ahead\u201d method, which is the way that you would animate in a flipbook. The problem with this animation method is that it might not stay consistent throughout, so you might not end up with something nice at the end.\u00a0Finally, the \u201ccombination of pose-to-pose and straight ahead\u201d method is usually the best way to animate. You draw out your keyframes, then animate straight-ahead between them. You know what needs to go between these keyframes, but have the freedom to do them however you want.<\/p>\n<p>The same lesson can be applied to making jam games, just replace \u201ckeyframes\u201d with \u201cgame systems\u201d! That said, any method is fine for doing a game jam, just know what you\u2019re getting into with each one.\u00a0I mostly planned out my systems, but just wasn\u2019t very good at coming up with additional puzzles under pressure, tbh.<\/p>\n<p>\u00a0<\/p>\n<p><strong>2. Take 5 minutes to give yourself cheat codes<\/strong><\/p>\n<p>Honestly I must have lost hours to this. Every time I wanted to test out a later puzzle, I\u2019d have to manually drag the player character there, collecting the \u201cfloaty thing\u201d along the way. It would have taken me 5 minutes to write\u00a0code that disables collision, lets me fly, and increases my speed by 10. So\u2026 do this, especially if you\u2019re making a puzzle game where everything is in one scene!<\/p>\n<p>On this note, I soon after found a plugin for unity that keeps objects locked to the grid, without holding down command.\u00a0This would have saved me a lot of time if I had it. Editor cheat codes!<\/p>\n<p>\u00a0<\/p>\n<p><strong>3.\u00a0Polish is important, but\u00a0playability\u00a0is more important.<\/strong><\/p>\n<p>Some\u00a0polish can be needed to make a game playable, as I cover below when I talk about floaty controls. What\u00a0I\u2019m talking about here is that if you\u2019re running out of time and you still need levels designed and tested, mayyybe you shouldn\u2019t spend 2 hours trying to get particles working?<\/p>\n<p>I desperately wanted the player to have dust particles when they walked and landed, but ran into some problems with shuriken, Unity\u2019s particle system, that I\u2019ve never had before. I\u2019m not sure what caused it, but hopefully I can get that working in a post-jam version.<\/p>\n<p>This was my first time using Unity\u2019s surface effectors, and they\u2019re really weird!\u00a0I lost an hour or two trying to get those conveyor belts feeling good, and discovered it\u2019s \/kinda\/ impossible.<\/p>\n<p>\u00a0<\/p>\n<p><strong>4. What makes controls, \u201cfloaty\u201d?<\/strong><\/p>\n<p>This was something I spent a lot of time after the jam thinking about, and asked some friends for their opinions on this. (Thanks, <a href=\"https:\/\/twitter.com\/Managore\">Managore<\/a>!) It\u2019s sort of a weird topic, since even in the post-jam build I\u2019m working on right now, I \/still\/ haven\u2019t gotten the player feeling exactly like I want, but <strong>t<\/strong><strong>he problem seems to be more about horizontal movement, rather than vertical.<\/strong><\/p>\n<p>Increasing the gravity actually didn\u2019t do too much, just shortened the amount of time the player stays in the air. Having a jump last from 0.3s to 1s seems to be a good range, but in my game, the jump already lasted 0.8s!<\/p>\n<p>Faster acceleration and higher max speed so far seem to be the biggest contribution factor to removing that \u201cfloaty\u201d feeling. Acceleration especially helped, making the player come to a quick stop after walking made it feel much snappier. That said, I think giving the player \/less\/ control of their velocity midair might\u00a0also help! In Super Mario Bros, if you make a jump at full speed, then try to reverse that mid-air,\u00a0it\u2019s possible but takes a lot to do it! In my game you could just glide wherever, and it feels bad.<\/p>\n<p>Another big contributor are things that one might consider polish, but turned out to be essential for making a jump be more satisfying:<\/p>\n<p><strong>Jump cancelling.<\/strong>\u00a0At first, I had this implemented, but removed it due to a bug with the \u201cjump on enemy multiple times\u201d puzzle. After the jam, I was able to fix this in about 10 minutes, and it made the jumping feel much snappier.<\/p>\n<p><strong>Dust upon landing.\u00a0<\/strong>As I mentioned above, I just couldn\u2019t get shuriken working in time for the jam. But adding a small effect like this to a jump can make it feel way better! You want it to feel like the player slammed into the ground, not like they decided to stop falling for some reason.<\/p>\n<p><strong>Audio!\u00a0<\/strong>Adding walking sounds would have made the character feel more like they were really there, and absolutely not gliding. The player also had a jump sound, but no landing sound. This stacks with\u00a0what I\u00a0said with dust upon landing.<\/p>\n<p><strong>Different jump sprite for going up &amp; coming down.\u00a0<\/strong>This could have been as little\u00a0as moving the character\u2019s pupils, but it would have \u201csold\u201d the jump more if the player looked up while jumping up, and looked down only when falling.<\/p>\n<p><strong>Toss in some cheap sprite scaling.\u00a0<\/strong>I could go on even more about animation, but pretty much just look up \u201csquash &amp; stretch\u201d and \u201canticipation\u201d. (Those are just the first two principles of animation, but brushing up on all of them will be helpful!)\u00a0You can mess around with sprite scaling during jump animations, which can usually get the job done in selling a jump.<\/p>\n<p>\u00a0<\/p>\n<p><strong>5. Be nice to your artists<\/strong><\/p>\n<p>Without Rev, my game wouldn\u2019t look anything like it currently does, and I would have surely ran out of time. My main character was still just a hexagon at the start of day 3! I\u2019d like to take this time to promo him:<\/p>\n<p><a href=\"https:\/\/twitter.com\/IMPLODINGORACLE\">https:\/\/twitter.com\/IMPLODINGORACLE<\/a><\/p>\n<p><a href=\"https:\/\/twitter.com\/IMPLODINGORACLE\">https:\/\/twitter.com\/IMPLODINGORACLE<\/a><\/p>\n<p><a href=\"https:\/\/twitter.com\/IMPLODINGORACLE\">https:\/\/twitter.com\/IMPLODINGORACLE<\/a><\/p>\n<p>When you\u2019re getting assets from an artist, come up with a list of exactly what you need to be done, and what kind of feeling you\u2019re going for. And let them know early! And be nice to them!! Jeez!!! Also, the conveyor belt graphic in the game was still my temp-art, and we ran out of time to swap it out with something better.<\/p>\n<p>\u00a0<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>Making games is cool, you learn a lot!! Make sure to write down what you learn, so you can\u2026 learn from it.<\/p>\n<p>The game needed more\u00a0ways to explore the main mechanic, and better ways to introduce it to the player.<\/p>\n<p>I\u2019ll probably post an updated version of the game after judging. I\u2019ve already done some control tweaks, mechanics tweaks, fixed problems with puzzles, and worked on fixing\u00a0the\u00a0floatiness mentioned above. Updating that right now wouldn\u2019t be fair,\u00a0so I\u2019ll be waiting til after to consider posting that.<\/p>\n<p>Thanks for reading!<\/p>\n<p>\u00a0<\/p>\n<p><a href=\"http:\/\/ludumdare.com\/compo\/ludum-dare-35\/?action=preview&amp;uid=39938\">Play\u00a0SHAPE\u2606SHIFT here!<\/a><\/p>\n<p>Tags: <a href=\"http:\/\/ludumdare.com\/compo\/tag\/ld-35-postmortem\/\" rel=\"tag\">LD #35 PostMortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/post-mortem\/\" rel=\"tag\">post-mortem<\/a>, <a href=\"http:\/\/ludumdare.com\/compo\/tag\/postmortem\/\" rel=\"tag\">postmortem<\/a><\/p>","time":"April 28th, 2016 4:52 pm","title":"SHAPE\u2606SHIFT: What I learned from Ludum Dare 35 is\u2026","title_was_empty":false}