Ludum Dare 36
The Theme is:
Ancient Technology

LD36 has ended!
Well done to everyone who took part.
1912 Amazing Games!

About DDRKirby(ISQ) (twitter: @ddrkirbyisq)

I'm DDRKirby(ISQ). I do lots of cool stuff! Check out my main website here:
http://ddrkirby.com/

Entries

 
Ludum Dare 36
 
Ludum Dare 35
 
Ludum Dare 34
 
Ludum Dare 33
 
Ludum Dare 32
 
Ludum Dare 31
 
Ludum Dare 29
 
Ludum Dare 28
 
Ludum Dare 27
 
Ludum Dare 26
 
Ludum Dare 26 Warmup
 
Ludum Dare 25
 
Ludum Dare 25 Warmup
 
Ludum Dare 23
 
Ludum Dare 23 Warmup
 
Ludum Dare 22

DDRKirby(ISQ)'s Trophies

Jupi's Jam Favorites
Awarded by Jupiter_Hadley
on December 1, 2015
Audio - 2nd Place - LD29
Awarded by r2d2upgrade
on May 20, 2014
Theme - 2nd Place - LD29
Awarded by r2d2upgrade
on May 20, 2014
Fun - 3rd Place - LD29
Awarded by r2d2upgrade
on May 20, 2014
Overall - 2nd Place - LD29
Awarded by r2d2upgrade
on May 20, 2014
SonnyBone's Official 'RAD GAME' Award
Awarded by SonnyBone
on December 19, 2013

DDRKirby(ISQ)'s Archive

Just what I needed

Posted by (twitter: @ddrkirbyisq)
Monday, August 29th, 2016 3:33 pm

Screenshot 2016-08-29 13.32.27

Excellent.

Still Alive

Posted by (twitter: @ddrkirbyisq)
Monday, August 29th, 2016 4:27 am

We’re still alive!  T-minus roughly 15.5 hours and we’re calling it a night to get some essential ~6-7 hours of sleep before the final push.  Things are now in overdrive and I’m leaving my computer on overnight with a million browser tabs open (a bunch of which are pages on freesound.org), 5 different DAW instances open (some to songs, some to sound effect projects), as well as Unity, Monodevelop, etc etc.  Yeah, it’s crunch time and we do whatever we need to to get stuff done at this point.

We scrapped our entire project late on Saturday night so we essentially made all of the game today, working on a “48hr jam” timeline.  Astoundingly, we’re somehow now in good shape the major pieces are all coming together now.  I still have to really work out the gameplay balance, progression, and one or two other mechanics, which is slightly worrisome, but we have good plans for tomorrow morning to take care of all of that, hopefully efficiently.  In addition I’ve already done or started a good chunk of the work that usually goes on on Monday at the 11th hour — stuff like menus, copy protection, making the intro, tweaking all of the sound effects, and all that stuff.

I’d love to post screenshots and WIP devlogs but there ain’t no time for that now!  Congratulations to all you compoers who finished the 48hr race, and for everyone else in the jam, hang in there!

zzzzzzzzz

Wheeeee

Posted by (twitter: @ddrkirbyisq)
Sunday, August 28th, 2016 12:24 am

It’s 28 hours in and after banging our heads for too long we are scrapping everything we worked on to start on a completely different game.  Wooooooooo @_@

DDRKirby(ISQ) and Kat are in!

Posted by (twitter: @ddrkirbyisq)
Thursday, August 25th, 2016 2:36 pm

DDRKirby(ISQ) here, happily reporting that together with my partner-in-crime  Kat (who will again be handling art and animation), we are IN for LD36!

This is my 13th time entering Ludum Dare, and our 6th time teaming up together.  Last time for LD35 we ended up making Nyamo’s Adventure, a cute 2D metroidvania-style platformer which ended up taking 8th place overall!

This time we’ll be leveraging some starter code — specifically, the Harmonic Unity utility framework that I’ve been working on for Unity3D.  It’s filled with a bunch of stubs and todos and only some of the functionality is there right now so I would certainly not recommend anybody else use it, but hopefully it’ll be growing into something more stable and fleshed out that will be able to provide people with an open-source solution to a lot of common boilerplate problems that arise when doing standard 2D game dev with Unity — just little things dealing with audio, screen fading, input handling, etc.  I’m particularly happy with the platformer physics code, which allows you to actually have sensible 2d platforming physics (e.g. collision handling, no inertia, it “just works” like you’d expect from something like SMW), and even has custom collision handling code that allows you to do more flexible things like make one-way platforms and pushable blocks!  How many other non-physics-based platformer frameworks allow you to push a set of 3 blocks together, out of the box? =P

Anyways, aside from that, we’ll be making use of:

  • Unity3D, coding in C# (this worked great last time so I’m looking forward to working with it again)
  • FL Studio for music
  • LabChirp for additional sfx as needed
  • Tiled and Tiled2Unity, if we need tilemap support
  • GAF along with swf flash files, if Kat decides to animate in flash (new!)
  • Paint Tool SAI, if she decides to do traditional animation instead

GAF is new tech that we might be trying out, for importing flash animations into Unity.  It really depends on how we decide to do the art, but flash can certainly be more convenient for certain types of animations, and after some experimentation I think we can get GAF to do what we want in terms of importing into Unity and controlling playback as needed.  It makes me a bit nervous trying to use something that isn’t battle-tested and proven, but I guess there’s usually always at least one thing in a project that’s like that.

My goals this time are really…just to “have a good weekend”.  There is actually one thing that I want to achieve with our game itself and that is to let Kat take the reins in terms of the direction we take things, which I think will be a great changeup, but aside from that I’m really just hoping that I’m healthy and happy as I work on our game.  It really sucks to be stressed or losing motivation (or worse, sick) as you try and jam out something, so I’m just hoping that everything goes well on that front.  Past that, I’m also looking forward to stocking up on groceries and food so that we can treat ourselves well during the weekend :)

Lastly, I’m also hoping to use this opportunity to take ratings off of my mind and really just make whatever the heck we want to make, without any outside pressures or anything like that.  There have been LDs in which I have been a little more conservative with my planning and execution because I want to cater towards a mass audience, but this time I’m open to everything!

Good luck everyone!  Be sure to get some good rest tonight, make sure to stock up on supplies, and be sure that all of your tech and tools are in place!  I’ve still got some more prep work to do myself — need to set up a unity project, create a bitbucket repo, add in my frameworks and libraries, apply the right settings, etc…

Some things to think about

Posted by (twitter: @ddrkirbyisq)
Monday, July 25th, 2016 5:31 am

Hi there!  My name is DDRKirby(ISQ) — I’ve been participating in Ludum Dare enthusiastically for the past 5 years, having submitted 12 games to both the compo and jam events.  6 of these entries have placed in the top 10 overall (not just trying to boast — this will be relevant in a later part of this post).

As many of you know already, there has been a bit of a situation regarding the upcoming August LD event.  A poll was made, with the end result being the planning of an August LD event on the current LD website without using LD’s categorical 5-star rating system.  As you might expect, this also triggered some community backlash.

I am not affiliated with Ludum Dare officially and am in no position to make demands on how the August LD event should or should not be run.  However, I wanted to provide a personal viewpoint on some of these issues.

My goal in writing this post is two-fold:

  1. To highlight some of the major disadvantages and problems with LD’s rating system.
  2. To offer some suggestions for how we can best help the no-ratings August LD event to succeed.

Please note that I am NOT attempting to convince anyone that Ludum Dare should not have a rating system.  I think that most people understand that having a scoring system can be extremely useful and valuable.  However, I think it’s important that everyone also understand the potential issues and problems involved with the current rating system and why many of us would prefer to have an August LD without it.  Let’s get right into it:

 

Winning Ludum Dare is a Big Deal

One of the things I really like about Ludum Dare is the fact that there are no monetary prizes.  As the rules page puts it, “Your prize is your product.” (and to a lesser extent, the feedback that you receive on your game as well)  This is supposed to help foster a low pressure, non-competitive environment where people can simply focus on making cool games, which is great!

However, one thing I’d like to make clear is that winning Ludum Dare is a Big Deal.  Being highlighted as one of the winners, especially in the Overall category, guarantees you and your game a TON of exposure, not only to fellow Ludum Dare entrants, but also by gaming portals, indie game sites, YouTube videos, twitch streams, and more.

When Ripple Runner won 2nd place overall in LD29, I got a huge spike in followers and network traffic.  Not only did several gaming news sites feature it in articles, but web portals started outright STEALING my swf file and hosting it themselves to profit via ad revenue.*  A Korean stream video of my game later went viral, hitting over 80,000 views.

I sell my game soundtracks on my bandcamp site.  Despite having a minimum price of $0, sales from the Ripple Runner soundtrack earned me $200 in profit after LD results were announced because of the wide attention garnered from my 2nd place ranking and would go on to earn me over $350 in total in the following months.

In other words, placing 2nd in Ludum Dare had MONETARY implications for me, almost as if I had received a $200 cash prize — and this is for a pay-what-you-want album!  I can only imagine that things would have been even bigger if I had come in 1st place, or if I had charged $5 minimum per album sale.

I would love it if Ludum Dare were not about winning and losing, but the fact is that the benefits gained from placing highly are very real and from this point on I have always felt mental pressures in the back of my mind to do my best to score highly as a result.

This unfortunately provides a large incentive for cheating the system.

 

Ways to Cheat the System

PoV has already outlined in his post that there has been evidence of cheating within LD, including:

  • A user that created multiple accounts just to give their game 5 star ratings.
  • Games that have more votes than downloads (i.e. people rated them without even playing).
  • Users that voted for many entries in an extremely short period of time (again, indicating fake “throwaway” votes that were made without playing the actual game).

These things are not unique to Ludum Dare.  This post from GameJolt outlines some additional ways in which people have tried to cheat around the rating system in their own game jam.  Remember, these are community game jams without monetary prizes.

  • An individual who hacked into/used multiple Facebook accounts to sign up and make it appear as though different people were rating their game.
  • People giving their own entries many “4-star” ratings to avoid arousing suspicion from giving themselves 5-star ratings.
  • Around 60 entries were found to have cheated by either starting early, or by using disallowed 3rd-party assets.

If I were 100% serious about winning a Ludum Dare compo and was prepared to cheat the system in order to do so, I would probably leverage some or all of the following additional strategies:

  • Enlist one or more artists to draw artwork and animation for the entire game, but still submit it to the compo event.
  • Use tilesets, background animations, and menu systems made completely ahead of time.
  • Subvert the time limit — when submission hour ends, submit a broken link to the game, but keep working for another 48 hours.  When I’m done, upload an incredibly polished game and claim to “fix the broken link”.
  • Create many user accounts using different IP addresses.  Submit random scrappy game projects under those accounts to avoid being flagged as fake accounts.  Using these accounts I could upvote myself, then be on the lookout to downvote other people’s games that seem popular.  Other randomized votes could be applied to avoid easy detection.

Some of these methods would be very difficult, if not impossible, to track using the current LD rating system.  Of course, any of them would constitute blatant cheating and disregard for the rules and as such I would never do any of them.  But the point I’m trying to make is that there is both incentive and capability for cheating here.  In addition, you wouldn’t even have to do very much of it: For Ludum Dare 28, our Jam entry missed hitting 1st place by a mere 0.02 points (4.39 vs 4.41).  As few as THREE fake 5-star ratings would have changed the outcome.

There are a multitude of ways in which the system could possibly be augmented and improved in order to prevent, mitigate, or detect the effects of cheating.  Again, the gamejolt jam post illustrates one example of what this looks like (note that it involves coordinated efforts as well as manual intervention).  However, it is IMHO unrealistic to expect any of these changes to be implemented for the upcoming August LD.**  How this should be dealt with in the future is outside the scope of this post.  I merely wanted to illustrate the potential problems that exist in the current system.

 

Ratings Can Cause Frustration For Jammers

So far the cheating issues I’ve described perhaps only matter significantly for top-ranking games, where there is a lot of potential recognition and attention on the line.  But for anyone, having your LD game judged on a quantitative — yet extremely subjective — numeric scale can be frustrating in other ways as well.  This post and this post highlight some of these frustrations, including the following:

  • Numerical ratings encourage direct competition with and comparison to other games.  Instead of supporting each other, we can become frustrated when “bad” games score higher than ours and are incentivized to rate other games more harshly.
  • Focusing on quantitative scoring results in a larger emphasis on evaluating a game as great or poor based on a set of numbers rather than providing constructive feedback on what could be improved.  (What’s more important, a few well-written reviews or a single aggregate number?)
  • Some users have complained that taking a straight average of scores means that games with less ratings tend to have better chances at scoring particularly highly due to how variance works.
  • “Celebrity” competitors sometimes*** being able to leverage their past success and popularity to earn higher scores (probably without even meaning to).
  • “Gimmick” entries being voted consistently higher in certain aspects (e.g. rhythm games or audio-centric games regularly voted #1 for Audio).
  • Wide voter preferences for certain stylistic choices (e.g. pixel art, chiptunes).
  • Ratings that just don’t make sense or indicate that users to not understand how to rate games properly (e.g. Games with NO MUSIC OR SOUND receiving audio ratings between 1.5-2 stars).
  • Ratings that are based off of the post-compo version of a game, not the 48 or 72 hour compo version (you can tell by reading their feedback comments).
  • Cheating too easy (as described above in the previous section).

I am NOT trying to say that these factors are pervasive and that our rating system is inherently terrible.  These are just some potential disadvantages that I think people should be aware of and paying attention to.

Personally, I believe that the pros of a rating system can well outweigh the cons if handled properly.  However, I’m also interested and hopeful to see what a Ludum Dare without ratings will be like, if only as a test.  If it fails horrifically, we’ll know to never do it again in the future, but I’m hoping that we can prevent that and instead make this August LD a success by focusing on qualitative feedback and community interaction instead numerical ratings.

This is where you come in.

 

How You Can Help – Leave Detailed Comment Feedback

One of the main benefits of the categorical rating system is that it can provide you with a detailed breakdown of what areas you did well in and what areas you need to improve on.  This is extremely useful, but could we do the same thing by using comments?

Here’s an example of a comment that I would give in a typical Ludum Dare, alongside 1-5 star ratings for each category:

Cool game, and nice job on your first LD!  I especially liked the animation of the main character. Next time try to add some sounds!

For our August LD, we will not be using the categorical rating system.  Therefore, I will be using the following categorical comment template to provide more detailed feedback:

Innovation: This was not too much different from a standard platformer here, but I didn’t really mind.
Fun: The game was pretty fun at the beginning, but got a bit repetitive, especially the water level which I think involved too many difficult jumps.  Maybe adding another powerup would keep the game interesting all the way through?
Theme: The main character was a goat!  This definitely fits.
Graphics: I really liked the animation of the main character. The background for the fire level was a bit too distracting, though.
Audio: The music was a bit repetitive, but catchy. You should try to make some sound effects next time, with a tool like sfxr, bfxr, or Labchirp — it only takes a few minutes and goes a long way towards making your game feel more complete!
Humor: N/A
Mood: I really liked how each level had a different theme.  I think it worked very well to establish a mood.  As I mentioned, sound effects would really help out here!
Overall: This was honestly one of the better games that I’ve played so far this LD.  It was a little buggy and could definitely still use some work, but I would love to see you work on a post-compo version.  Feel free to leave me a comment on my game’s page if you do!

Congratulations on finishing your first Ludum Dare!  I’d really appreciate it if you could take the time to leave some feedback on my game in return.  You can find it at […].

IMHO, this type of detailed feedback is infinitely more valuable than a simple numeric rating.  I would highly encourage others to provide comment feedback in a similar style.

 

How You Can Help – Comment Back

Several people have expressed concern about the ability to receive enough feedback and comments on their games due to the lack of ratings and rankings as voting incentives.****

You’ll notice that at the end of my example comment I requested the game’s author to provide me with feedback in return.  This sort of “I’ll rate yours if you rate mine” trade has been a great way to get additional feedback in past LD events, independent of the “coolness” system.

For this Ludum Dare I will be making it a point to return the favor by playing and giving feedback to anyone who leaves feedback for my game.  It would be great if others could do the same.

In addition, we should continue to leverage the compo site itself to help out jammers in need of additional comments.  Don’t have enough feedback?  Post some interesting screenshots of your game and ask for comments.  Not sure what games you should play?  Make a post inviting people to comment with links to their games.  Let’s all help each other out! :)

 

How You Can Help – Curate Outstanding Entries

Another benefit of the rating system is the ability to select the cream of the crop based on the ratings accumulated through the voting period.  The best of the best should absolutely be selected and called out so that we can all see what truly amazing games can come out of a single weekend.

For the August LD, we won’t have any sorted ranking lists from which to select these entries from.  Therefore, the onus falls on us, the jammers, to informally curate the top entries.

Some LD jammers have already been doing this in the past by posting lists of their favorite entries, or even creating video compilations or twitch streams of notable entries.  This is great, and I would encourage more jammers to start making these sorts of posts, and/or upvoting other posts if you particularly liked a game or two.  I have personally never made a “My personal favorites of LDxx” post on this site before, but I plan to for LD36.  This is your chance to shine the spotlight on whoever you think deserves it most.

 

 

 

I know that this August LD has been on shaky footing and I understand that unfortunately, not everyone will be entirely happy with its outcome.  I really hope that the community can come together and give it their all despite that.  If we put in a little extra effort, we can definitely ensure that Ludum Dare 36 will be a great success.

(It would be awesome if some of these recommendations could be highlighted in a keynote or an announcement if people agree that they are good ideas.  However, I must emphasize that they are only my personal suggestions and again, I am in no position to tell other people how they should or shouldn’t handle LD.)

Thank you so much for reading.  See you all in a month, and I’m looking forward to playing (and commenting on) your entries! 😀

=====

Addendum: Regarding Other Options for the August Ludum Dare
There are a myriad of ideas and suggestions that have been proposed to change or improve LD’s systems, or different methods in which the upcoming August LD should be run.  Some of these ideas are really interesting, but I don’t think this is the time or place to discuss most of them as compo is already happening next month and it will be difficult to enact any meaningful changes at this point due to extenuating circumstances.  I’m personally happy with any decision regarding this, but chose to focus on the reasoning behind the current state of things as well as the ways in which we can make the most of it.
That said, I would like to specifically address the idea of preserving the categorial 5-star rating and scoring system, but not displaying an actual sorted “top 100” ranking of entries.  This idea seemed great to me at first until I realized that anyone could probably just scrape the LD database and generate the top 100 list themselves.  We already have people who are well-versed in scraping LD stats for this type of information — I don’t think obscuring the sorting order is necessarily the best way of solving this issue.
If we were interested in achieving something similar, I’d be curious to see what LD might be like if your game’s rating was sent to you =privately= (as in, not displayed publicly anywhere), as that avoids some of the issues involved with cheating and competition while still providing a numeric score for your own personal use.  But again, that’s not something that I can say is possible or even advisable.

=====

*I’ve since added rudimentary copy protection to my games to avoid similar incidents.

**If I am proven wrong by a community effort, that’s great!  However, such efforts are not something I am involved in nor are they the topic of this post.

***Yes, not always, I’m aware.

****Although I personally feel the opposite, since I have often left little or no written feedback on a game at all because I felt like my 5-star rating encapsulated my vote.

Last 20 minutes!

Posted by (twitter: @ddrkirbyisq)
Monday, May 9th, 2016 7:41 pm

Your LAST CHANCE to rate and review Nyamo’s Adventure!

nyamos-adventure

Some things people have been saying about the game already:

“Absolutely my favorite game I’ve played this jam. Near perfection.

“This should be a top 10 overall game in my opinion, if not the number 1 winner.”

“Every once in a while an entry like this pops up. An entry that is just a joy to play and makes me wonder how this was even possible to make within the time limit.”

“I have nothing to say, this is too perfect to be commented.”

Silly bug fixed with Nyamo’s Adventure

Posted by (twitter: @ddrkirbyisq)
Saturday, May 7th, 2016 11:19 pm

D’oh!  I did the unthinkable — I made the Post-Compo version of Nyamo’s Adventure WORSE than the compo version by leaving in a debug flag that has you start with ALL abilities unlocked (instead of none).  Needless to say, this defeats the entire purpose of a 2D metroidvania exploration game *facepalm*

The bug has now been fixed, so I encourage you to replay and re-rate Nyamo’s Adventure if you played the buggy version where you start with all abilities.

I’ve also added automatic saving of game data, so if you navigate away or close your browser window, you should still be able to start again with the same number of collectibles and powerups.

Only two days remain…any additional ratings are greatly appreciated!

nyamos-adventure

Click here to play and rate Nyamo’s Adventure.

Nyamo’s Adventure In-Depth Post-Mortem

Posted by (twitter: @ddrkirbyisq)
Thursday, May 5th, 2016 1:31 am

There’s still time!  Play and rate Nyamo’s Adventure now!

screenshot1

Nyamo’s Adventure is our Jam entry for LD35 — made by yours truly in association with my trusty artist Kat.  It’s a 2D “Metroidvania”-style platformer game with shapeshifting abilities, multiple worlds to explore, and collectibles scattered about!  We’re releasing it as part of our “Cocoa Moss” collection of games.

Overall, Nyamo’s Adventure was a blast to make!  This is perhaps our most solid LD showing to date as a team, and it’s really awesome thinking about how far we’ve come since we made Match Girl way back in LD28.  Match Girl was a solid game itself, and was very well-received (2nd place overall!), but just the sheer amount of content and different things that we were able to create this time around for Nyamo’s Adventure is really impressive in comparison.

I had 4 “goals” (ish) this time around for LD, and they were:

  1. Successfully use Unity
  2. Have fun
  3. Finish on time
  4. Make some awesome music :)

I’m happy to report that we managed to hit all four of those pretty well!  #2 was a little rough at times (more on that later) but overall things were great!

screenshot3

As always, let’s go over what went well and what didn’t go so well.

What went well:

Unity

Wow!  Color me impressed — Unity really overperformed as a dev environment and editor tool.  Now, I’ve used Unity in the past, so I’m well-familiar with both what it’s capable of as well as the little tricks of the trade that you pick up along the way as you work with the quirks of the engine, but I think I still underestimated just how much it allowed me to do when compared with my standard suite of tools (HaxePunk).  As much as I’d like to be a hipster and jump on the bandwagon, I can’t really argue with what it allowed me to achieve this LD.  Having the visual editor around for both editing and debugging was truly invaluable and saved precious precious iteration cycle time when I was trying to design levels, get mechanics working, etc.  Here’s the entirety of world 3 in Unity’s scene view, for instance:

Screenshot 2016-05-04 21.37.02

Being able to put the levels, UI, etc. together like this made things so much easier!

 

Level design and Tiled2Unity

Nyamo’s Adventure is a huuuge game compared to some of my other ones.  5 different worlds, each with a bunch of different screens, and the different rooms all fit together in a cohesive way.  I spent a LOT of time on level design — easily more than I actually spent on coding, which was quite surprising at first.  Although I’ve had some experience with platformer level design from the work I did for Match Girl, I had never quite exercised my designer mind like this before.  I made sure to read up on some Metroidvania design articles as I was first starting out (which proved helpful), and made sure to really plan out the first few screens of the game in a specific way to introduce the different concepts (moving, jumping, collectibles, the final temple door).  I’m actually really happy with how the level design ended up panning out, and how I was able to properly execute the Metroidvania feel.  Of course, it’s very simplistic and if you really look at it the different worlds are very similar in terms of how they lead you down a linear path to an ability and then use that ability to shortcut back to the beginning.  But I think it still works just fine, and designing the rooms themselves was also great thanks to Tiled being a wonderful tool:

Screenshot 2016-05-04 21.38.05

One of the first things I did after we decided on our game concept was to figure out how to integrate Tiled with Unity (something I hadn’t done before).  Luckily, Tiled2Unity exists, and was very straightforward to set up.  Besides a few snafus with our tilesets changing mid-design (was annoying to resolve but was certainly doable), it was pretty straightfoward and just worked pretty much the way I needed it to.  Awesome!

 

Animations, tilesets, and world design

Can we take a moment to appreciate how beautiful the art is in this game?

Screenshot 2016-04-18 19.06.17

Would you believe me if I told you that this is the first time Kat has worked on tilesets? (besides the single set from Match Girl, which doesn’t even count)  She really did an amazing job with everything, and it was awesome getting to pull the tiles that she drew into Tiled and using them to build out the different worlds, each with their own palette and feel.

 

Music

The soundtrack took around ~5 hours in total to write.  It was a blast!  Nothing really new here — just standard jamming out like usual.  Everything was pretty straightforward, with the notable exception of the Temple theme which was basically my attempt to make something ambient and atmospheric in as little time as possible (11 minutes).  It’s kind of uninspired, BUT at the same time, I think it’s nice that it sounds totally different than the rest of the soundtrack because it helps to communicate the fact that it’s a special area.

It’s worth noting that I didn’t put much focus this time on reusing a shared motif throughout the entire soundtrack — there’s hints of it, but nothing you would really notice unless you’re really looking out for it.

Something I realized as I was making this soundtrack was that giving yourself a jumping off point in terms of atmosphere, tempo, or feel really helps in getting things started.  I think I started each composition with a very small idea of how I wanted to differentiate it from the others and that helped me get things started.  For example, for Autumn Colors I knew that the first world was going to be the “hub” of the adventure and was also going to be an outdoor world, so I wanted something that felt more “open” as well as relaxed.  Musically, that translated to a slower tempo, with a laid-back drum beat, and using chords similar to major 7ths.  For Take to the Skies, the spring world, I knew it was going to be the first “stage” that you explored after the hub, so I wanted it to contrast with the outdoor hub music, and also wanted it to be more upbeat and driving as you’re now getting into the “meat” of the game.  Musically, this meant a faster tempo, with more complex breakbeat-type drums.  I also knew that the world was going to have an “underwater” palette, so I used some specific instruments to evoke that feeling.  (Compare it to Song of the Sea from Melody Muncher to see what I mean)  Anyways, the point is that having that starting point allowed me to lay out the tempo and maybe even a drum loop right away, which really worked to get things started (often the hardest part about writing a song).

Soundtrack can be downloaded at https://ddrkirbyisq.bandcamp.com/album/nyamos-adventure-original-soundtrack.

 

 

Spikes, knives, and other level elements

I almost feel like this one was luck because of how well it ended up coming together…

So, when I was first thinking of the design of the different worlds, I knew I wanted them to look different, and each feature a slightly different focus on the different abilities that you unlock as you go through the game.  For example, the puddle world (the dark one with spiders) was specifically constructed to be more closed-off and cave-like because there would be many places to make use of the puddle ability and it made sense to have tighter corridors.

However, there were no plans initially to have a different “gimmick” in each level.  That one just sort of happened through development, and I’m glad it did!  The disappearing megaman-style blocks (the first thing that I came up with), the spiders, and the knives really did well to differentiate each area and made the level design more interesting than just having different tilesets that were functionally equivalent.  I’m especially happy with how the spiders and the knives ended up interacting with the abilities that you find in the respective worlds — in world 3 you’re forced to use the puddle ability to avoid spiders that you can’t get past otherwise, and in world 4 you have to use the balloon ability to get past these long rows of knives shown in the screenshot below:

Screenshot 2016-05-04 22.21.15

Funny story about the spikes at the bottom of the pits you have to jump over — for a long time through development I was planning for them to be water or some kind of liquid, as you can see in A Kitty Dream and The Valley Rule (both wonderful references for this type of game, by the way).  But throughout development we never got around to putting in the graphics for the water (I had already coded an element that triggers death and a respawn when you touch it), and more importantly, I had no idea how we were going to animate it.  In the end we ended up coming up with the idea of using spikes instead and it was a simple, elegant, clearcut solution to the problem that I’m glad we stumbled upon.

 

What didn’t go so well:

2D platformer collision detection

Ugh.  I had done a warmup project with Unity to play around with their new 2D features (much improved since the last time I had used them) and to write myself some starter code (for doing basic things like playing sounds, fading the screen, etc.).  During that I had done some extremely basic testing to make sure that I could test “collision” (as in, detect when two objects touch/collide and do something), but for some reason I didn’t actually bother checking to see whether I could easily implement actual 2D platformer physics.  You know, moving and stopping flush to obstacles, jumping and landing on the ground, etc.  I have my own set of functions that I used to do all of this in HaxePunk (they are very scrappy but WORK very well at what they need to do), but I didn’t have any of that set up in Unity.

So, for the first couple of hours of development I was busy trying to wrestle Unity’s engine to get it to do what I wanted it to do…I already knew coming in that the Character Controller / etc stuff was probably NOT what I wanted, yet I also wanted to be able to hook into the built-in collision detection / etc. and leverage that.  I did NOT want to have to implement all this stuff from scratch, as that would just be ridiculous.  Fortunately I was able to jury-rig together something which worked very nicely, essentially just doing a handful of raycasts on a rectangle as described here.  That was pretty much the only major technical hurdle I ran into over the course of the project, but I wish that I had prepared for it earlier.  On the plus side, I now get to start building out my set of utility scripts, functions, and prefabs for Unity games, just as I did for HaxePunk, so hopefully this won’t be a problem in the future.

 

Stress

Ugh!  I was not in great mental or emotional shape through the weekend and there were some points when I was really not feeling too positive about the project, and in general worried that it just wouldn’t come together.  This wasn’t necessarily due to us being in bad shape, and more just due to me being tired and stressed out due to other RL things (was trying to pack for moving out of my apartment, not enough sleep, etc.)  Sometimes this just happens — unlucky that LD happened to coincide with a weekend when I wasn’t fully up to snuff mentally.  I also had some congestion in the eustachian tube of my left ear which can be really aggravating when it comes to mixing music.  Luckily it all ended up being fine in the en and we made it okay…phew!  Was really glad when we finally hit the submit button (and went out for a nice hearty dinner).

screenshot2

Sound design

Kind of a minor point here, but this project taught me that although my music skills are really on point, my sound design skills are not.  It was actually pretty difficult for me to come up with good sounds for Nyamo’s movement/etc. and I ended up having to redo some of them.  The collectible sound also ended up getting changed in the post-compo version to something that didn’t clash as much with the background music.  Labchirp is nice but sometimes you have sounds that are just tricky to figure out.  It’s something I need to be conscious of and try to research a bit more.

Unused graphical elements

Kat had some other graphics (like additional background and foreground elements) that she drew up that never ended up making it into the final product.  I really didn’t have any time to put them in at the time because I was busy scrambling to finish all of the different rooms, but even afterwards for the post-compo version they ended up not really fitting in and looking a bit out of place.  You can see in the post-compo version that there are more leaf decorations in the puddle world, but that’s the extent of how they worked out.  So, not the end of the world, but we probably could have designed some other way of adding some graphical accents to the levels.  I think we wouldn’t have had this issue so much if we had been working more slowly (i.e. not in a 72-hour game jam) and had time to step back and see what the overall look and feel was going to be like.

screenshot4

That’s about all I have to say about Nyamo’s Adventure!  It was an awesome experience to make, and I hope you all enjoy it as much as we did! :)

DDRKirby(ISQ) and Kat are In!

Posted by (twitter: @ddrkirbyisq)
Wednesday, April 13th, 2016 9:20 pm

Hey fellow LDjammers!  I’m happy to report that DDRKirby(ISQ) and Kat Jia are IN for LD35!

Long time vet here…this is my =12th= time doing LD already!  Last time around we made a cute collection of two-button minigames called Grow Your Love, which took 3rd place for audio, 13th place in Fun, and 13th place Overall!

Tools this time around:

  • Unity (C#), targeting WebGL +  desktop
  • FL Studio for music + sounds
  • LabChirp for additional sfx generation

Not sure what Kat will use for art yet as it depends on what style she ends up going with.

You’ll notice a big difference this time — I’m abandoning my trusty HaxePunk framework and hopping on the Unity bandwagon!  Now don’t get me wrong, HaxePunk is great, I like writing Haxe code, and being able to deploy to a Flash target is probably one of the best ways you can go for an LD game (besides maybe HTML5).  I like a lot of HaxePunk’s sensibilities, and working with a framework that is designed first and foremost for 2D sprite rendering makes me feel good inside.  But…as I work on more projects I’m sometimes wishing for some additional features, like per-sprite shaders, which HaxePunk unfortunately can’t do (yet?).

Unity has actually made a bunch of notable improvements in the 2D realm (I remember back when their 2D system was still very immature) and based on the warmup project I did together with Kat last week it’s looking like we’re all set to run with it for the jam.  I’ve actually worked quite a bit with Unity in the past and actually love coding in C#, even more than I do in Haxe, so that’s a plus.  Losing the ability to compile to a flash target does sort of hurt, but hopefully WebGL can at least try and substitute for that — I guess Flash is sort of finicky anyways…

I think overall the biggest thing we’ll be gaining is being able to lay out things using the Editor.  I think over these past years I’ve been underestimating how useful it actually is to structure your game elements and UI visually and immediately without having to go through a compile-run cycle each time.  With certain game types this doesn’t really matter as much but with Kat on board I’ve got more artistic resources to draw upon so I predict that it’ll be quite useful.  We’re also interested in doing our next game using Unity so this LD will be a good test of the waters.  I’m pretty hopeful from what I’ve seen so far!

 

Hopes and dreams for this time around are pretty simple:

  • Successfully use Unity
  • Have fun
  • Finish on time
  • Make some awesome music :)

Yep, that’s it!  No fancy goals this time around or anything =D

 

Good luck to everyone else who’s joining us this year — now is your best chance to stock up on groceries, snacks, and other supplies, and be sure to REST WELL!  You’re gonna need it :)

Grow Your Love Postmortem

Posted by (twitter: @ddrkirbyisq)
Thursday, January 14th, 2016 2:00 am

It’s postmortem time!

Grow Your Love

If you haven’t yet played Grow Your Love, you can do so here:
http://ludumdare.com/compo/ludum-dare-34/?action=preview&uid=7285

You can also download the official soundtrack here:
https://ddrkirbyisq.bandcamp.com/album/grow-your-love-original-soundtrack

This was my first time doing a jam entry with my trusty partner-in-crime Kat Jia since waayyy back in Ludum Dare 28 when we made Match Girl (and took 2nd place!).  That was two years ago, and since then, the number of jam entries has more than doubled, going from 780 to 1,638.  Wow!

This time around, we managed to take 3rd place in Audio, 13th place in Fun, and 13th place Overall.  Not bad at all! 😀

My personal goals going into the project were:

  • Don’t make another rhythm game
  • Work on pixel art together
  • Have fun!
  • (Maybe) treat iOS and Android porting as first-class

Humorously enough, I actually did very poorly on most of these. xD  While I didn’t REALLY make another rhythm game, one of our seven minigames was a simple dance game (haha).  Kat ended up doing 90% of the art as I had no time at all to work on any of the graphics…I drew the shooting stars and some of the UI elements like the arrows in the kniting minigame, but that was it =X.  And iOS and Android porting, pfffttt, come on, we both saw it coming from a mile away that that would get dropped.

Fortunately, the most important goal of having fun was a huge success; this game was definitely very enjoyable to make!

As always, let’s see what went well and what didn’t go so well.

Dancing

What went well

Concept, mood, feel, and overall vision

Probably the most common comment we got about our game was that it was really cute and adorable, which was great!  When we set out to decide what kind of game we were going to make, we weren’t trying to make something that was super innovative or challenging or anything — we really just wanted to make something fun and cute; something that would fit in with our Cocoa Moss label.  We had a really good and light-hearted energy bouncing ideas back and forth for the different parts of the game, and I think it reflects in the overall end product.  Kat did an especially great job with the dancing animations, and I tried to write out the Letter and Texting dialogue in a way to match the same style as well.  It all ended up coming together very well, and I think the game is much more about enjoying a cute story than about the actual scoring of the minigames itself, which is perfect!

 

Making smart code architecture decisions

Having SEVEN different minigames to make meant that code reuse was at a premium, and I found myself super-grateful to myself that I had enough foresight to plan well for it.  There was no way I would have finished all seven games in time if I had to create entirely separate logic for each of them.  Sharing most of the common logic for the tutorial demos, starting and ending the game, etc. saved me heaps of time and even though there were lots of hacks and messiness throughout the codebase (as always), it ended up working out really well.

 

Slamming out music faster than ever before

Holy crap.  I know I’m known in some circles for my speed-composing abilities, but I even outdid myself this time by writing the entire 10-song soundtrack in less than 5 hours total. O_O  FL Studio saves your project working times automatically; here was the breakdown of how long I spent on each track:

Lovers’ Rave: 32 minutes
Watch Carefully: 15 minutes
Hope You’re Not Asleep: 34 minutes
Stargazing: 20 minutes
Love Sprout: 3 minutes
Grow Your Love: 1 hour 6 minutes
Wiggly: 31 minutes
Our Love Has Grown: 46 minutes
From Me to You: 17 minutes
Rainbows of Yarn: 20 minutes

Total: 4 hours 44 minutes

Aside from the title theme I basically wrote each song in 20-30 minutes, which was kind of insane.  Of course, these were shorter songs, so it makes sense that I was able to churn them out at a faster pace, but I was surprised at how well I was able to work under pressure here while still remaining creative, especially given that some of the songs are not of my usual style.  I was under MASSIVE time pressure as I started doing the bulk of the soundtrack work, so I really had no choice but to do it quickly.  Ironically, this might have =helped= my creativity by giving me no choice but to go with my first gut instinct.  I’m especially happy with “Wiggly”, which was ridiculously fun to write.

You can read more of my comments on the individual songs in the in-game jukebox if you’d like — there are some interesting notes in there since a lot of the songs were repurposed from what they were originally intended for.  To be honest, neither me nor Kat were planning for the mood of the game to play out exactly how it did; it sort of evolved as things went.  I had to rethink how I was doing the music to reflect the shift in mood that ended up happening, but luckily I didn’t have any wasted work as a result.  I do have to say that the full hour I spent on the main Grow Your Love theme was well worth it; it’s now my favorite track of the entire soundtrack and I think it really gives a lovely first impression.  You’ll notice that I centered all of the songs around a shared motif — it’s a great technique I’ve used over and over again that really brings cohesion to a soundtrack. :)

Stargazing

What didn’t go so well

People not getting the menu controls

Sadness.  Perhaps I was going too deep with the “two button controls” theme, but I thought that in order to really be complete the menu of the game should use two button controls as well.  Of course, it’s hard to make menu controls using only two buttons, so I looked to DiveKick for how they did it and figured that I would do the same thing.  Apparently it wasn’t obvious to most people as they just gave the screen a blank stare and wondered why pressing left or right separately didn’t do anything, so in the post-compo version I made it painfully obvious by putting big flashing indicators on the screen and highlighting the text, press LEFT + RIGHT TOGETHER.  Sigh.  It’s always the little things that you assume that bite you in the foot later on…

 

Not testing on the release platform until later on

This one was a smaller point, but for most of development I was testing on Haxe’s Neko VM instead of actually testing the Flash compile.  This was fine, except halfway through development when I tried the flash build and ran into a crisis.  You see, most of the graphics in the game are upscaled by 4x, so I had set the camera zoom at 4.  But the text was way too big at 4x, so I had the text sized 50% smaller, so overall the text would be upscaled by 2x.  Setting the text scales to 50% worked fine in neko and everything was perfectly happy.  Well, as it turns out, in Flash with the buffer rendering flow, you actually can’t draw pixels with a size less than the current camera zoom, so instead of the text being nice and crispy at a 50% scale compared to everything else it was actually just unreadable.  Oops.  Luckily I was able to jury-rig a fix by hacking at the haxepunk code, so that was a major crisis averted.  The hack was pretty ugly — I set the camera zoom to 2 instead of 4 and then edited the image class so that every image in the game would be scaled up by 2, etc — but hey, you gotta do what you gotta do.  Managed to dodge the bullet on that one, phew!

 

Balance and scoring

Ugh, this is probably my number one regret with the game.  The scoring formulas and balancing of the minigames is pretty terrible and I really didn’t test them very much.  In particular the dance game seems to get people a lot — like rhythm tengoku/rhythm heaven, it’s grading you not only on whether you memorize the sequence correctly, but how on-beat you are.  Of course, I had no time to make sure the lag calibration was spot-on, so it’s not perfect at all. =(  In the compo version, some players also misunderstood the goal of the Letter writing game (do it as fast as possible), and players also tried to figure out which word made grammatical sense in the Texting minigame, instead of realizing that you just needed to tap on the YELLOW highlighted word.  In the post-compo version I tried to be much more explicit with the directions for those games, and made the tutorial overlay display across the entire screen because people were probably skipping the text due to being distracted.  Some people also got confused with the Stargazing game in the compo version by pointing to where the star was going rather than which side the star was on.  In the post-compo version I solved this issue by getting rid of the stars that start on one side and travel towards the opposite side, to make it more obvious.  We also made some tweaks to the dance minigame during development to make it more clear.  Clarity in instruction is always super hard to get right, I guess…

Initially I had planned on rebalancing the game and even adding an “Expert Mode” where each minigame gets harder (e.g. harder rhythms for dancing, longer letter and text, more arrows for knitting), but in the end I realized that Grow Your Love really isn’t =about= the challenge and the scoring anyways, so it’s not that important to have Expert Mode or anything like that.

Not enough time (as always)

Some of the issues with balance and scoring were a direct result of me having almost zero time to properly test and play through the game, as I was still working on core features like the main menu.

Several things accounted for the time pressure:

  • Making seven separate minigames just takes a lot of work, period.
  • There was a nontrivial amount of work put into making a horizontally-scrolling menu workable; I couldn’t just copy the vertical menus that I usually put into all of my other games.
  • Certain aspects such as Free Play mode ended up not being that important to the overall experience but still took time to implement and get right.
  • Did I mention making seven different games?

Overall there was just a LOT of stuff to get done; not only did I have the 7 games to program, but there was the menu, jukebox, liner notes in the jukebox, free play mode, scoring algorithms, the intro scene, record saving, tutorials, tutorial skipping, and don’t forget the ending scene!  This was probably the most hours I ever worked for an LD, and I felt =exhausted= afterwards, jeez!  Even after submission, I was still finding stupid bugs that I needed to patch up (at this point I still  hadn’t ever had time to actually play through the entire game).  I don’t know if there was really anything that could have been done about this, aside from maybe not worrying about Free Play mode…perhaps we could have gone down to 5 minigames, but I really think 7 is a good number and that we like all of the ones that managed to make it in.  Honestly I think we just did the best that we could have! =P

 

All in all, Grow Your Love was great fun to make and I hope you guys enjoyed playing through it as well.  As always, we learned a lot, and in the future we probably won’t try doing a warioware-style collection of minigames again.  I know that it worked well this time around, but it was just too much work!  It also caused an issue in that it took a long while before we had a single one of the minigames completely finished, as we were sort of working towards a lot of them at the same time.  One of these days, I’d like to have a LD where I actually finish the work for the main game EARLY instead of scrambling at the last minute!  (Melody Muncher was sort of close…).

 

Thanks for playing and reading about our game! :)

Rate Grow Your Love Today!

Posted by (twitter: @ddrkirbyisq)
Sunday, January 3rd, 2016 5:41 pm

There’s still time!  Play and rate Grow Your Love today!

1

It’s a cute collection of two-button minigames about a couple’s growing love.  Featuring music by yours truly!

234Screenshot 2015-12-14 18.50.43

Here’s what some other people have to say about Grow Your Love:

“Absolutely lovely!”
— DragonXVI

“This game was brilliant in many ways. The exact example for what I hope to play when I play LD-games. I absolutely have no minor thing to say about this. Very well done. My love has grown <3”
— CrownCity

“Sooo cute <3”
— GhostBomb

The soundtrack for the game is also now available for free download!

Click here for the Grow Your Love Original Soundtrack.

Post-mortem will be coming up once results are in.  Thanks for everyone who has played our game already, and good luck to everyone! 😀

DDRKirby(ISQ) is in!

Posted by (twitter: @ddrkirbyisq)
Thursday, December 10th, 2015 2:02 pm

Hey guys!  DDRKirby(ISQ) here, reporting that I’m in for LD34!  I’ll be entering the Jam this time, together with my artist/partner-in-crime who previously helped me with Hyper Furball and Match Girl back for LD27 and LD28.  Shameless plug time — we recently released a cute virtual pet app for iOS/Android and web, you can see it here!

This’ll be my =11th= time doing Ludum Dare…wow!  Last time around I ended up making a really fun rhythm game called Melody Muncher, which ended up nabbing 1st place in audio and 6th place overall.  It was a blast to make and the post-compo version is probably the most polished and fully-featured game I’ve made thus far!

Tools for this time around:

  • Haxe, via HaxePunk (OpenFL/Lime/etc), mainly targeting Flash
  • FlashDevelop as main IDE, Sublime Text for if I need to develop on my laptop for some reason
  • FL Studio for music and sounds
  • LabChirp, for additional sfx generation
  • Aseprite, for pixel art (new!)

I’ve been trying out Aseprite for another side project of mine lately and it’s been great so far!  Definitely beats laying images out in a spritesheet manually using GIMP =P  I’ll be using it with my mouse but my artist friend prefers to work with a tablet.

I’ll be ripping starter code from my previous projects (initialization, etc.) but nothing really significant.

Let’s set out some hopes and goals for this time around, shall we?

Don’t make another rhythm game

Well, this should be fairly easy to accomplish, I hope! =P  I’ve already made 3 of these (Ripple Runner, Melody Muncher, Rhythm Gunner), one of which was done for last time’s LD, so this time around we should do something different, or at least, if it’s going to be a game involving music, it should do so in a way that’s substantially different than just hitting things to the beat.

Work on pixel art together

We’ve never actually done pixel art together before, in fact my artist hasn’t really had much experience with pixeling, so it should be a new experience to try and adopt a pixel art style for this project.  She also has work on Sunday and Monday and thus won’t be able to contribute through the full 72 hours, so I’ll most likely have to pitch in as well, meaning it’ll be important that we’re both on the same page in terms of visual style and such.

In terms of style, I think I’m hoping to keep things relatively simple, maybe use a really small Game Boy-ish resolution (160×144), and try to keep our palettes pretty limited if possible.  We might not go all the way to limiting ourselves to 4 color palettes or anything, but simple is definitely good.  We might be aiming to emulate the style of the (original) Cave Story sprites, with no outlines and a relatively “soft” shading style, but we’ll see!

Have fun!

A bit of an odd goal, but you know, I think I’ve spent the last 10 Ludum Dares trying to really work on my game dev skills and really attempting to make great games that I’m happy with.  With games like Ripple Runner, Melody Muncher, and Match Girl, I think I’m actually really satisfied with how far I’ve come.  And that means I think it’s actually time to loosen up a little and worry a little less about results and what comes out of it all.  Even if we get mediocre ratings because of it, I think experimentation is a good thing now, as long as we have a good time doing it.

(Maybe) treat iOS and Android porting as first-class

Since releasing our first mobile app I think it might be nice if we could continue to release more games for mobile platforms, and now that I’ve figured out the little hoops that you have to jump through in order to get it all working (there are always little hoops), it shouldn’t actually be too hard.  So it might be nice to not only develop with that in mind, but actually go ahead and do the ACTUAL work for the mobile ports, especially in terms of UI work, etc.  At the same time, LD is always an event where you just don’t. have. enough. time. for. anything. so I get the feeling that this will be one of the first things on the chopping block when push comes to shove.  You know how it goes.

Good luck to everyone else entering LD!  Make sure you are all ready with your dev environment (no last-minute headaches and surprises!), stock up on food and snacks, and most importantly, get a good night’s sleep tonight!  You’re gonna need it :)

Melody Muncher Developer Commentary/Playthrough

Posted by (twitter: @ddrkirbyisq)
Sunday, September 13th, 2015 8:42 pm

Hey all!  I’ve made a developer playthrough + commentary video, playing through Normal mode and Expert mode of my game, Melody Muncher!

You get to watch me full combo a bunch of the normal mode songs while explaining some things that went into the development of the game, then you get to watch me do OK on most of the expert mode songs, and struggle through the last two.  Enjoy!

Melody Muncher Post-Mortem

Posted by (twitter: @ddrkirbyisq)
Saturday, September 12th, 2015 11:15 pm

Hi there!  DDRKirby(ISQ) here with my =10th= LD entry (wow!), Melody Muncher!

2

Link to play and rate: http://ludumdare.com/compo/ludum-dare-33/?action=preview&uid=7285

This one was a blast to make, and I ended up working for 2 weeks to make the Post Compo version (out now!), adding a new mechanic, animated backgrounds for each level, more songs, 3 separate difficulties, and more!

When the theme was announced this time as “You Are the Monster” I was actually quite disappointed, just due to the fact that it was so similar to “You Are the Villain”!  I mean come on guys, really?  But now that I think of it, You Are the Villain was EIGHT LDs ago, so I guess I can’t fault people too much for it.  I wonder if anyone decided to redo the same game concept that they did for LD25?  It would be an interesting challenge, just to see how far your game jam skills have come over the past years…

Anyways, despite my initial dislike for the theme, my idea and game came together really smoothly this time; I can’t even remember running into any hiccups at all!  As always, let’s go over what went well and what didn’t go well.

 

What went well:

Avoiding other commitments during LD weekend
Almost every other LD I’ve done, I’ve had =something= else to attend to over the course of the jam, usually on Friday night.  Usually I tell myself that it’s fine and that I can just try to brainstorm in my head while that happens, but to be honest, that never quite works out and it’s basically like I start off behind by 4 hours already.  This time I decided that I really was just going to dedicate the whole weekend to LD and besides some driving here and there and dealing with meals (gotta eat!), I was just heads down working the whole time, which was GREAT!  An exhausting weekend, for sure, but I don’t think there’s any way around that.  For Sunday, after breakfast and running a quick errand in the morning, I pretty much worked straight through the entire day until the deadline…I stopped twice for the bathroom, once for refilling water, and once for a massive yawn/stretch…that’s it.  Hahaha, you other LDers will know what I’m talking about…Sunday is usually that day when it’s like “omg I have 5 hours left and I still have to add in 2 more enemy types, also my game has no menu, title, or tutorial and I haven’t tested the difficulty at all AHHHHHH”.

3

Game concept and execution
As mentioned earlier, everything came together really smoothly for Melody Muncher, without a hitch, really!  I spent Friday night doing my usual brainstorming routine, and considered plenty of other possibilities, but the idea of having the piranha plant munching guys as a rhythm game occurred to me pretty early on, and it clearly had the most potential while also playing to my strengths, so I went for it.  Huge success!

Level data layout
One of the reasons I was able to cram in six (!) full songs to the 48hr version of Melody Muncher was because I made sure the levels were really easy to program in.  Unfortunately this was NOT the case for my previous game of this genre, Ripple Runner.

Here’s what a level definition looks like in Ripple Runner:

// Section 1
addPlatform(startTime + -10.0 / bps, startTime + 36.0 / bps, -40, timingWindow, level);
addPlatform(startTime + -10.0 / bps, startTime + 36.0 / bps, 40, timingWindow, level);
addPlatform(startTime + 37.0 / bps, startTime + 44.0 / bps, -40, timingWindow, level);
addPlatform(startTime + 37.0 / bps, startTime + 44.0 / bps, 40, timingWindow, level);
addPlatform(startTime + 45.0 / bps, startTime + 52.0 / bps, -40, timingWindow, level);
addPlatform(startTime + 45.0 / bps, startTime + 52.0 / bps, 40, timingWindow, level);
addPlatform(startTime + 53.0 / bps, startTime + 60.0 / bps, -40, timingWindow, level);
addPlatform(startTime + 53.0 / bps, startTime + 60.0 / bps, 40, timingWindow, level);
addPlatform(startTime + 61.0 / bps, startTime + 62.0 / bps, -45, timingWindow, level);
addPlatform(startTime + 61.0 / bps, startTime + 62.0 / bps, 45, timingWindow, level);
addPlatform(startTime + 63.0 / bps, startTime + 80.0 / bps, -40, timingWindow, level, true);
addPlatform(startTime + 63.0 / bps, startTime + 80.0 / bps, 40, timingWindow, level, true);
GameWorld.world().add(new Checkpoint(startTime + 64.0 / bps, -40));
...
// Section 2
 addPlatform(startTime + 80.0 / bps, startTime + 100.0 / bps, -40, timingWindow, level);
 addPlatform(startTime + 80.0 / bps, startTime + 108.0 / bps, 40, timingWindow, level);
 addPlatform(startTime + 108.0 / bps, startTime + 116.0 / bps, -40, timingWindow, level);
 addPlatform(startTime + 116.0 / bps, startTime + 120.0 / bps, 40, timingWindow, level);
 addPlatform(startTime + 120.0 / bps, startTime + 124.0 / bps, -40, timingWindow, level);
 addPlatform(startTime + 124.0 / bps, startTime + 126.0 / bps, 40, timingWindow, level);
 addPlatform(startTime + 126.0 / bps, startTime + 128.0 / bps, -40, timingWindow, level, true);
...
...
...

And so on and so forth.  And that’s only the =first half= of the EASIEST level.  Yuck!  Unfortunately I was super duper hacky while coding up Ripple Runner so the way that I constructed the levels was actually just by placing each platform individually.  This involved tons of hacks, especially trying to deal with assymmetrical timing windows which varied according to which kind of obstacle you were using (spikes, rippling, jumping), and a bug that prevented me from creating single platforms that were too long….etc etc.

Thankfully I didn’t repeat the same mistake this time.  Here’s what a level looks like in Melody Muncher:

result.SfxName = "sfx/level3";
 result.BeatDivision = 2;
 result.BeatPixelLength = 80;
 result.Left = 
 "........ ........ ........ ........" +
"1.....1. 1....... 1....... 1...1..." + "1....... 1....... 1.....2. 1...1..." +
 "1.1..... 1...1.1. 1....... ........" + "1...1.1. 1.1..... 1....... ........" +
 "1.1..... 1...1.1. 1.1.2.1. ........" + "1...1.1. 1.1..... ........ 1.1.2.1." +
 "1....... 1....... 1.....1. 1...1..." + "1.....2. 1....... 1....... 1...1..." +
"........";
 result.Right =
 "........ ........ ........ ........" +
"1....... 1....... 1.....1. 1...1..." + "1.....2. 1....... 1....... 1...1..." +
 "1...1.1. 1.1..... 1....... ........" + "1.1..... 1...1.1. 1....... ........" +
 "1...1.1. 1.1..... ........ 1.1.2.1." + "1.1..... 1...1.1. 1.1.2.1. ........" +
 "1.....1. 1....... 1....... 1...1..." + "1....... 1....... 1.....2. 1...1..." +
"........";

Much better!  Here I’m using “1” to indicate a green enemy, “2” for a red enemy, and “3” for blue enemies (which don’t appear in this particular level).  I ended up using “[” and “]” to denote the yellow centipede enemies in the post-compo version.  The periods just indicate points where there are no enemies, and spaces get automatically ignored.  It’s still perhaps not 100% ideal as I still had to build up separate strings for the left and right sides of the screen, but overall inputting notes for songs went pretty quickly.

Coding it the Right Way
So, again, for Ripple Runner I used a bunch of stupid hacky coding, and as a result, even though your X position in Ripple Runner is locked to the position of the song (good!), your jump height and y position is not (bad!)–it’s actually just normal platformer gravity.  This led to some pretty clumsy manual hacking about to get the gravity to be correct for each level (it needs to be adjusted for each BPM setting!), and in general just led to sad times within the code.  The end result still ended up just fine, but…

When it came to program Melody Muncher, I had learned my lesson, so I made sure to do everything right.  The position of all of the enemies is dictated solely by the position of the music, and there are NO collision boxes or movement physics or anything!  Each enemy knows what beat it should be hit on, and the enemies on either side are kept in an Array, sorted by order of arrival.  When you press left or right, we run through the first part of the Array looking for enemies whose beat is within the defined timing window–no collisions or any other nonsense needed!  Very clean, very sensible, and the code was much better and simpler as a result.

4

Post-Compo Version
This might not technically count as something that “went well for LD”, but this was the most fun I’ve ever had working on a Post-Compo version of a game I’ve made.  Probably because of the above two factors, and also because I knew I had something with a lot of potential.  Making new songs and mechanics was a blast, and even though it took a lot of work to add all of the new features in the Post-Compo version, I’m super happy with how it turned out, and I believe this is my most polished game ever as a result.

 

What didn’t go so well:

Input Delay and Lag Calibration
Okay…so this was mostly a stupid mistake.  So one of the mechanics in the game is that after a few levels, enemies can come at you simultaneously from both sides, so you have to press Left and Right at the same time to do a split munch.  Simple enough, right?

Well, on the coding side, I implemented this by having a separate animation — one where Ms. Melody has two heads that are each attacking.  (As it turns out, while working on the Post-Compo version I had to redo this and just implement each head separately to allow for the yellow long centipede enemies to work)  I then also decided that because people probably weren’t always going to hit left and right at exactly the same time, what I would do is this:

When you first hit left or right, the plant transitions into a “getting ready to attack” state (with a different animation frame) and waits for a frame or two, during which you have the opportunity to input the other direction.  Once the frame or two is up, the attack actually happens.  So this was good because even if you hit left on frame #1 and right on frame #2, you still get the split munch on both sides.

The problem is that by doing this, I essentially delayed every input (as well as the resulting “munch” sound) by something like 17 or 33ms.  Now, that may not seem like much, but in a rhythm game where your actions need to be really tightly synced, you can really notice, and people did.  Add that to the fact that my default lag calibration for Flash builds was slightly off (I had to shift it by maybe ~50ms compared to native builds) and people definitely felt that their inputs were delayed.  Now, part of this was that I simply didn’t have enough time to program in a robust and user-friendly lag calibration setting (it’s much better in the post-compo version!), but most of this was just my own fault for adding additional input delay unnecessarily.

The good news is that the post-compo version fixes this entirely, and if you compare the two the post-compo version should feel MUCH better.

Missing was too punishing
In the original 48hr version of the game, if you try to attack when no enemy is on the corresponding side, Ms. Melody does this ugly faceplant animation which leaves you stunned for a half beat or so.  This was designed intentionally as a means of punishing you for trying to attack when there was no enemy, as well as to eliminate the cheesy strategy of just trying to munch on both sides on every single eighth-note beat.  If you didn’t have the recovery animation, you’d just be able to do that and get a perfect score, which was obviously no good.  I had been trying to think of various ways to solve that issue, and after trying it, this seemed like a clean solution, as well as making it very unrewarding to miss notes, which is what I wanted — it should feel good when you hit enemies, and bad when you miss enemies.

Well, the problem is that players don’t like feeling bad.  One of the complaints that I got was that the recovery time for missing was too long and it led to people feeling like the game was “unfair” (ugh, loaded term).  Now, if you’re used to rhythm games, you probably didn’t mind this as much, but if you’re not a rhythm gamer, what happens is that you miss one enemy, then because of that your input for the second enemy doesn’t register (since you’re still in recovery), which throws you off and then you end up missing again ……, in the end that’s a situation that just doesn’t really feel good.  So lesson learned — reward your players for succeeding, but don’t punish them for failing.

The solution in the post-compo version was to eliminate the recovery delay and just add in a proper scoring system that adds points to your score based on your current chain, a la Guitar Hero.  Now I no longer need the recovery delay because if you try to use the strategy where you attack both sides on every eighth note, you’ll keep on breaking your chain over and over again, leading to a poor score.  Problem solved!  But unfortunately, I just didn’t have time to get the more fancy scoring system and everything done in the 48hr version.

No Shovel Knight
Okay, so this wasn’t really that big of a deal, but when I was drawing up the graphic for the red enemies I knew I wanted it to be something big, beefy, and blocky, so I went with an armored knight.  Since it was a knight, I decided to give it a sword.  I even referenced some Shovel Knight images as I was drawing it up….but for SOME reason I missed the golden opportunity to just have my Red Knights carry shovels and be “shovel knights”.  Which would have made perfect sense (they’re trying to dig up Ms. Melody), AND would have been a great callout to a great game.  Biggest missed opportunity everrrrrr =(

48 Hours!!!!
Alright, I guess this isn’t really something that “went wrong”, but it still amazes me every time how quickly the 48 hours goes by, despite you wanting to cram in more and more features.  “If only I had 1 extra hour!!!”  This was apparent this time around as well; the submitted version of my 48hr entry was missing some key components that I really really wanted to get in, but I just. did. not. have. enough. time.

Specifically, better lag calibration was one item high-up on the wishlist that I didn’t end up getting to squeeze in until later.  It wouldn’t have taken long, either!

And, changing backgrounds was another real big item.  I had a hue shifting effect that I used in Ripple Runner which worked fabulously, and I really wanted to do the same thing in Melody Muncher, because without it the backgrounds feel very static, especially when the music is very energetic and has these big builds and climaxes.  Of course, it turns out that because I’m now working in Haxe and Haxepunk, I can’t just use punk.fx (flashpunk) to do an easy hue shift; in fact I still don’t know of any good way to do hue shifting in Haxe/Haxepunk without digging into low-level RGB code yourself. =(  The silver lining on that cloud is that because I wasn’t able to do easy hue shifting, I ended up making much more intricate and involved animated background effects for the post-compo version, so it all works out. :)

1

 

And that wraps up another post-mortem!  Results will be in very soon–good luck to everybody and remember, the real prizes are your games, not your ratings!  Be sure to take your scores with some salt; sometimes you get scores that don’t quite make that much sense.

Thanks for taking the time to read about Melody Muncher!  Hope you enjoyed it as much as I did! :)

Rate Melody Muncher today!

Posted by (twitter: @ddrkirbyisq)
Saturday, September 12th, 2015 10:01 pm

There’s still time!  Rate and play Melody Muncher today!

Then download the full 23-track soundtrack here!

1 2

This is probably the most polished game I’ve made thus far!  But you don’t have to take my word for it.  Here’s some comments I’ve gotten so far:

Best game ever played on any LD. And the music.. THE MUSIC!!!!
–m43c0

wow. Gives me a “One Finger Death Punch” meets “Rhythm Heaven” vibe and I’m very much into it. The music is exceptionally high quality, the corresponding enemy arrangements are enjoyable to play, the amount of levels is surprisingly large, and the overall level of detail and polish here is spectacular. Incredibly well done.
–NickMakesGames

Six stars for audio, this is amazing for 48 hours! Downloaded the soundtrack.
–walsh9

Brilliant. Definitely belongs in that class of games made by clearly skilled people able to bring a game to within shooting distance of “a real game” in a very short space of time. Terrific.
–OldPeculier

Playing this game made me smile big.
–euske

I love you
–miotatsu

Melody Muncher POST COMPO VERSION WOO!

Posted by (twitter: @ddrkirbyisq)
Monday, September 7th, 2015 2:45 pm

After two weeks of hard work, I’m proud to present the post compo version of my chiptune rhythm game, Melody Muncher Deluxe!

Link: http://ludumdare.com/compo/ludum-dare-33/?action=preview&uid=7285

Please please please try it, especially if you were experiencing input lag issues with the 48hr version, as that should all be fixed now!

I’ve implemented a slew of extra features, including better timing code, animated backgrounds for every level, configuration options, high score saving and loading, a new scoring system, particle effects, more stages (and more music!), a brand new mechanic, and of course, EXPERT MODE!

I’ll let these pretty screenshots speak for themselves:

 

1Underwater stage

 

2Pretty backgrounds.  Also, a new enemy type — hold notes!

 

4One of the hardest songs in the game on expert mode.  You have been warned.

 

3Particle effects!

 

5Full soundtrack – TWENTY THREE (23) SONGS!

By the way, all 23 songs are included in the new extended soundtrack.

Download the extended soundtrack here!

I’ll be writing up a full post-mortem on Melody Muncher sometime soon, so look out for that, too!

[cache: storing page]