Ludum Dare 29
Ludum Dare 28
Ludum Dare 26
Ludum Dare 25
Ludum Dare 24
Ludum Dare 23
Ludum Dare 22
Ludum Dare 21
Ludum Dare 20
About arkeus (twitter: @arkeus)
Software Development Engineer by day, Indie Game Developer by night. You can find my blog at http://iarke.us - I post regarding my projects... And stuff.
Archive for the ‘LD #20 – It’s Dangerous to go Alone! Take This!’ Category
With LD21 rapidly approaching, I wanted to do a Post-Post-Mortem of my LD20 entry, since in addition to improving the game to make it ready for wide release, I’ve been working on a sequel for the last 4 months. Links for those who don’t want to read:
Diamond Hollow on Kongregate (380,000+ plays): Diamond Hollow
Diamond Hollow II: Coming soon…
So let’s get to it!
In the beginning (approximate 7pm PST on the opening day of LD20), there were a couple of block games. These block games were well intentioned, but I could tell they weren’t going in the direction I wanted them to, so I quickly tossed them in the trash (the last one actually went into a filing folder somewhere to deal with at a later date).
My goal was to make something that players would find fun. Being the superficial dev I am, I quickly took to the past winners pages, and found that players like platformers. Great! So I immediately switched focus from block/puzzle game to platformer. I decided to go with a tower climbing theme, and this was born:
It was very generic; it was very simple. Now that I had the basics down in a way that I thought I could turn into something fun, I began drafting out what features I wanted in the game. Among these were:
- Randomly generated infinitely high level
- Quick paced movement and jumping
- Gun shooting with the mouse
- Enemies to kill
- Something to collect
- Upgrades to spend your collections on
It was looking good! It was at this point I needed to choose a theme. While it was a tower climbing game, I wanted to do something not tower related. My first thoughts were climbing a castle (but that would have just been a tower so I threw that out), and climbing up through the branches of two large trees on either side of you. However, my powers of art are extremely limited, so while I would have enjoyed a tree climbing theme, it would have looked pretty terrible and have taken too much time. However, dirt was something I knew I could do easily (fill brown, add noise filter, DONE) in photoshop, and the first thing that popped into my mind was a cave. So quickly I hopped to photoshop, and the pictures above immediately grew into:
Awesome! But then I hit the “collect” point. What can you collect in a cave? Rocks? Bats? Diamonds! It wasn’t the most elegant solution, but with the clock ticking, I hopped on it, and it wasn’t long until I had cute little diamonds sitting to collect. At this point I also added my first enemy, the slime:
Things were looking great now! I could jump up a cave, collect diamonds, and avoid cute little slimes that liked to wander back and forth (why? because they are slimes of course). However, in order to hook players I needed upgrades. Many people find upgrades cheap and hate them, but they are like crack in the world of casual flash gaming (and I, like many others, feel drawn to upgrade anything and everything). However, in preparing how I wanted to do upgrades, I started thinking of other aspects of games that hook me. The main one that came to me was Achievements. Achievements usually mean nothing, but they can make a game much more fun by giving you goals, and goals in games are always great. For example, killing goblins for hours can be boring, but when you’re doing it for a quest or achievement, you feel driven to do it, and you feel like it means something. If I’m going to have you climbing an endless cave, I might as well reward you as much as I can.
So I took to photoshop, and in a surprisingly short amount of time (according to my timelapse), I had a protype mostly complete:
This is what pushed me over and kicked my motivation into overdrive. As soon as I had this working I blogged it. There was just something about it that made me want to play the game myself, and it sounded like others liked it too.
I continued to work to polish the game, add a few more enemies (plants that shoot at you), and get the game in a generally fun state. However, sunday morning at about 4am I ran into a hurdle. I had never actually used FLStudio before, and after downloading the demo, I found I probably should have practiced. I started putting random beats together, and would constantly start new projects because every song I tried to make was like terrible terrible noise. I googled some tutorials, but found nothing all that great. After looking around for something to save me, I found some videos showing how to put together simple beats and use instruments. I put together a basic background beat, threw in an obnoxious sounding tune on top of it, and called it good (it still kills my ears when I hear it though). When trying to save it, I realized it would be good if I could save the actual project, so I attempted to buy the full version to save my “creation”. Unfortunately, it didn’t seem to like my credit card. I tried again. And again. Strange. The funny thing is, when I attempted to go for breakfast, my card was also declined. It wasn’t until Monday night that I learned that me trying to buy a strange program (FLStudio) on a strange website at a strange hour in the morning (5am) flagged the fraud check on my card, and they disabled it thinking I had it stolen. In the end it is for the best that I no longer have anything more of an mp3 for the “music” I made that morning.
After a nice 8 hours of sleep, adding sound effects went much easier thanks to as3sfxr. I got through that, balanced the game a bit, and ended up with pretty much a final product.
The last thing I needed was a name. I asked a couple of friends what they would call a game about collecting diamonds in a cave, and I got some absolutely terrible suggestions (that I’m happy I didn’t go with, because some were names of other games about caves they had played at one point but forget). Eventually, after using thesaurus.com for a bit, I settled on a simple “Diamond Hollow”. It wasn’t exciting, daring, or clever, but it got the job done.
And with that… It was complete! And before the deadline, even! Overly excited, I submitted it and took a sigh of relief.
The next day I woke up refreshed, pulled up the game and started to play. Immediately I realized my error. The game was not balanced at all. Knockback was frustrating, the game was hard in general, and some of the achievements were way overtuned. Fortunately, while it was too late to change for the contest, there was still a life that Diamond Hollow could take after the competition.
Wasting no time I immediately got to fixing things. The first thing was the music. It had to go. Without the restrictions of having to make it myself, I turned to music licensed under the creative commons, and found something upbeat and catchy. An instant huge improvement. I then started rebalancing things which turned out to be a much bigger feat than expected. Changing achievements to require less skill is easy, but when you make gameplay changes that affect how easy the game is overall, all of a sudden your rebalanced achievements need re-rebalancing. It was a headache, but it got done. I then adding more polish to the game, fixing things like spawning, diamond locations, just to make the game feel less “thrown together”.
My goto place for flash games is Kongregate, so that is where I settled on for a home for Diamond Hollow. I wasn’t expecting much, as this game was made in a very short amount of time (well under 48 hours, even if you count the improvements I made). I was thinking it would get a low to mediocre response, and it was going to be something I would just watch and see how it progressed so that I could learn from it, and use player feedback as a way to improve my game development skills for future projects. But it turned out very different.
As soon as I posted it, it got an “okay” rating, but I began getting tons of feedback. While I had intended to use the feedback for future improvement in general, it all felt like improvements that the game should have had in the first place. I began compiling the feedback, coming up with concrete things to change to address the issues, and got to work. Every couple days I would work on implementing the latest round of feedback, release a new version, and announce the changes. It turns out that players like it when a developer listens and implements their feedback, and the effect was incredible. My “meh” rating went up by quite a bit until it was a “pretty good” rating. My plays started growing quickly, I got featured on the front page, and soon enough I obtained badges for my game. At the time of writing, the game has over 380,000 plays on kongregate. This was really exciting!
Then the feedback changed into bigger things. People wanted to explore. People wanted bosses. People wanted an “ending”. At this point I had to start rethinking my actions. There were a lot of things I would have liked to put into Diamond Hollow if I had the time during the competition, and there were a lot of features that players think would improve the game a ton. However, these would require major rewrites of all the code, at which point I might as well just start over from scratch. And that is where Diamond Hollow II was born.
Like with Diamond Hollow, I began by drafting out the features I wanted. Given I had no time constraint, I was able to include a lot of things, but I also had to limit myself. Did I want to get myself into an overbudgeted project that I would never finish? That was something I wanted to avoid at all costs. Among the list of features, I had the following:
- An ending
- Multiple guns
- More achievements
- A story mode
- Varied graphical environments
- More enemies
With these goals down, I got to work. Rewriting the engine from scratch, I was able to greatly optimize it, allowing me to implement all the features I wanted, without it being slower than the original. However, I hit some major snags along the way in the form of content. Creating levels was taking quite a long time and it was starting to make me rethink having a story mode with hand crafted levels. Perhaps I could randomly generate the levels? Would players know the difference? In the end I stuck with it, and eventually managed to carve out the shell of a story mode. Then I began to fill it with enemies (new and old), and tons of improvements including new graphics, powerups, more upgrades, story text, and bosses.
Now that everything is over and done with, I thought I’d write a post mortem about what worked, what didn’t work, how I can improve for the future. Since this was my first time entering, I ran into a lot of small things that hindered my progress that could definitely be streamlined the next time around. However, I’m pretty satisfied with how things turned out, and I hope to enter again in the future.
What Went Well
Using AS3 backed by the Flixel library for the competition was an amazing choice. Because a lot of the basics were done for me, I was able to focus on writing an actual game, and not an engine followed by a game, during the competition.
Normally I’m hugely blocked by the art for games. It takes me a long time to make art, and it normally sucks. This time the art was very simple, so it didn’t take long to do, and I’m surprised with how it turned out (it’s from from GOOD, but it didn’t turn out terrible).
Making the upgrades menu was probably one of the most fun parts of the competition. I’m a web designer at heart, so being able to design a menu like this was a lot of fun. It also happened very fast, and I’m very happy with how it turned out.
The idea has been done many times before, taking elements from pretty typical games (tower climbing game, mouse aiming shooter, collect and upgrade). However, I feel the ideas fit together pretty well, and it turned out to be something that was kind of fun to test, at least. I’m also glad that I was able to pick something that was relatively simple so that it could be finished on time.
What didn’t go so well
This was the thing that bit me the most. I wasn’t entirely sure how I should prepare, what I should prepare, or where I should prepare it (since this is my first time entering). The biggest one was music, I didn’t have a program to make music downloaded, nor did I have any experience (more on this below). But also, about 2 minutes after the competition started I decided I wanted a timelapse of my screen. I simply downloaded chronolapse and started it without much thought. That could definitely have been improved.
The Sound And Music
As mentioned before I didn’t have anything to make music with when I started. I had declared some tools that I had heard of or at least touched in the past, but I should have taken time before the start to get to know them. Thankfully sfxr was incredibly simple to use, so that didn’t present an issue. But Musagi turned out to require way too much musical knowledge, a few other music tools I looked at weren’t really helpful in making music, and what I settled on (FL Studio) also gave me tons of problems. I had to spend an hour just reading tutorials to be able to make something, and when I did make something, it turned out absolutely terrible (I need to remember to replace my music before submitting to Kongregate). While even if I had prepared the music would still be terrible, I could have saved a couple hours trying to learn the tools.
Extensions to the Library
While Flixel was a great choice, normally I have a few extensions to the framework that I use in projects. I misinterpreted the rules (not part of the official library so I can’t use it since I didn’t write it during the competition), but it sounds like I could have (and should have) used those extensions. Also, I think there are some great extensions I could write to flixel that would have not only improved my game (more classes around dealing with menu buttons and such), but also could have given me new features (I really wanted cool particle effects, but using only Flixel’s functions would have taken too long and been too limiting). Having a particle library on top of Flixel is something I definitely will be using in the future for quick particle effects without wasting a ton of time.
I spent a lot of time on facebook, instant messenger, and IRC talking to people. Probably not the best choice given the time restraints. This is something where it’s unclear whether it helped or hindered me though. On one hand it took precious time away, but on the other hand it kept me sane and gave me a break from the programming.
Overall it was an enjoyable experience, even if I was very tired and worn down by the end (and didn’t have time to put in everything I would have liked). Working under pressure turned out to be a great motivator.
If you haven’t already, you can play and rate Diamond Hollow (or grab the source) at:
If you’d like to see the timelapse of my main monitor during the 48 hours, check out:
So I decided to timelapse about 30 seconds before the competition started, so I wasn’t really prepared to do anything cool. However, the video turned out okay for being pretty basic. The beginning is kind of boring because I was working in photoshop on another monitor, which is the most interesting parts. Still interesting to see how the game progressed. I also have timelapse caps of my webcam the entire time, still debating whether I should show that one, lol.
You can view the game here:
Well, I’m done. It was a long weekend, and I’m incredibly tired, but at least I can say I finished a game in 48 hours. Normally I go years without ever completing anything, so this feels good. And now I present to you, Diamond Hollow (submission coming very soon!):
I sincerely apologize in advance for the music in my game. Especially if you get it stuck in your head. It’s absolutely terrible, but I had to read a bunch of tutorials just to figure out how to work the program.
You can always listen to Rebecca Black to cleanse your ears though.
Everyone else seems to be posting their food… This is all I have going for me right now! Maybe I should leave the apartment and get something to eat. But that would be silly, right?
Yay, more progress. I’ve gotten the upgrade/stats screen through the first pass. I’ll probably change some of the stuff (the game progress part is not aligned very well right now), but now I can start actually implementing it in game. I’m excited. Almost at the half way mark!
So after a night of sleep, and some annoying interruptions, I’ve been back to work. I thought I’d update with some screens of the progress I’ve been making. I guess it’s a bit late to turn back now, so the likelihood of me scrapping this and starting over again is very low.
It started with no tiles, then simply creating the same set of tiles over and over, then creating from a set of 2 types, then a few more, then I added in an epilepsy background and alpha to test, and that was all last night. Then this morning I started by updating the graphics, and then by adding in slimes and diamonds.
Making great progress, but there is still so much more to do! Good thing there’s still another 30 hours or so left.
2.5 hours in and my second game prototype is scrapped. Except this one isn’t really scrapped, because I really like the idea. I just don’t think it would fit in well with a competition like this. Definitely going to work on it after the competition though.
Next idea is going to be a tower climbing. Might as well stick to the tried and true formula of entering a platformer.
Well, only an hour and a half in, and I’ve already scrapped my first idea. Decided that I don’t think I could come up with enough unique ideas for a puzzle game in a short period of time… Goodbye my blocks…
Next up… Something else with blocks. I’m afraid I’m going to spend the entire first 24 hours scrapping ideas partway through that I won’t get anything done.
My map editor is “complete”! I just wrote something that will take a small 20×15 image, and using the color of each pixel, create what I need. Right now I can only create red and blue blocks, but oh well. It’s much faster than writing my own map editor, I can just create levels in photoshop. (I’m using an idea from a previous project, but this time implemented directly in flash rather than PHP). If anyone is curious: http://pastebin.com/EQVU0Aga Very simple, but it will do for now.