Dungeon 2.0 Post-mortem

January 2nd, 2017 12:51 am

First, a gif to describe my game to the unacquainted:

D2_header

This is my seventh time doing Ludum Dare, and probably my most successful. This time around, I was hard set on making an RPG – and Dungeon 2.0 was the result. This post will chronicle the epic journey I took to make this game – featuring remastered gifs! (the ones I made during the compo were not very good – so I’ve decided to replace them with better-made ones. They won’t be entirely accurate to how the game was at that stage – if you want to see the original gifs, I will link the blog posts that are relevant to that point in the game).

Preparation

Before Ludum Dare, as always, I was working on making my “game library,” Alfredo. It gets its name from the very first “game library” I built for Ludum Dare – spaghetti – whose name comes from the tendency of my code during Ludum Dare to be an absolute mess. (I put game library in quotes because it isn’t much of a library, but that’s what I’ve always called it, so…)

I have been using Unity in my game dev class recently, and despite the fact that I’m really bad at getting stuff done in Unity, I really do like the idea of a component system. As such, I decided to implement a component system in my game library. Sadly, I decided that it would be too hard to simply edit my game library – so I wrote it from the ground up. This is the fourth time I’ve written a game library for Ludum Dare from the ground up.

This meant, of course, that I would be editing my game library while I was working on my Ludum Dare project. This did, of course, happen.

It also meant that my game library lacked a whole lot of features – including any sort of polygon or even circular collisions, and also more basic things like mouse input. (I could have implemented mouse input during the jam if I had wanted to, but it turned out that I didn’t need it.)

My library, however, was much improved. The best improvement it saw this Ludum Dare was in terms of rendering – my pixel art has always had some small rendering issues because I’m not very smart in how I implement upscaling. This time, each image was upscaled individually, before it was rotated, so the pixel art looks so much better than in some of my previous games.

Theme

As I mentioned in my I’m in post, I have a strange way of predicting what theme is going to be chosen. See, almost every theme voting round, there is some theme that I kind of don’t like, but I say “whatever” and vote for it anyways. In Ludum Dare 36, this theme was “Ancient Technology” – the winning theme! This time, the theme that was like this was “Control the environment, not the characters” so I said I predicted it was going to win.

I was so very wrong.

I never even expected “One Room” to win, especially after Ludum Dare 31 – my first Ludum Dare – where the theme was “Entire Game on One Screen” and almost nobody liked it. It was surprising to see such a similar theme this time.

Strangely enough, there is one other similarity between this Ludum Dare and my first Ludum Dare – I was hard set on what kind of game I wanted to make before the theme was even announced. That went terribly in my first Ludum Dare, and it went great this time. :)

Because of my determination to make an RPG, going with the theme was easy – I just decided to make an RPG that would take place in one room. This is where the original vision of my game came in – although the final product is actually quite different.

See, I wanted to make a fast-paced arcade RPG game, which is in fact what my final product is. But the original idea was a constantly changing arena – obstacles and death traps pop up and disappear, and enemies spawn in and fall from the ceiling and come from the floor, and you have to somehow ward off death for as long as possible. The only thing that made it into my final game was the monsters.

First Steps

When the theme was announced, I was watching The Walking Dead, so I didn’t get started on work until an hour after the compo began. I was really hyped up for this compo, and I thought that it would be a really great idea to try to draw more detailed pixel art, like all those cool jammers I see making all the great pixel art. At this point, I began drawing a background.

Six hours later, I finally finished said background. It isn’t even that detailed!

D2-BG

I expressed my disgust with my incredible lack of speed in pixel-art-creation, and then set to working on the character.

It turns out that I am really bad at drawing people, despite the fact that I have had a human character in two other games. Part of the problem was that I have never really drawn a four-directional character before, and the other problem was that I’m not very good at pixel art.

I couldn’t seem to get the face right, so at one point I thought that maybe I should just not even have a face on the character – maybe I can make that look good!

D2_char_orig_big

…Well, it doesn’t even fit with the background, so…

I decided I would just have to suffer through the process of creating a non-terrible human character. I did so.

D2_char_glasses_big

However, there was still something… off… about the glasses. Eventually I fixed that, and created the character that is actually in the game.

D2_char_final

Hooray! I’ve done pixel art that isn’t horrible!

I made the character move, and gave him arrows to shoot. I made a post about this and explained that the bow was invisible, and then I basically went to bed.

The First Day

I was pretty happy with all the great stuff I had been able to accomplish, so I was pumped for Saturday. I set my alarm to wake me up at 9:00 but it didn’t work for some reason so I got up at 11. It was time to implement some enemies.

I had always wanted to make slimes, so that’s what I set about doing. I got some basic slimes going:

D2_slimes_new

They had random movement and a simple jumping script. It was a bit of a pain to make the jump look good in all four directions, but I managed to do so somehow. I was particularly proud of the healthbars, because, you know, I’ve never done healthbars before, and that was quite fun to do.

And I made it so that standing by the lava at the edge of the screen would drain both the player’s health and the enemies’ health.

I changed the slime graphic because it seemed kind of messy, and I also created a new type of slime with arrows sticking out of them, which would drop arrows. That seemed like a good idea.

Because the slimes by themselves were not particularly interesting, I decided that another enemy was necessary. What sort of enemy would be fun to do? How about a skeleton!

D2_skeletons_new

If you look at my original post, you’ll see that I had also come up with the concept of a “mini-boss” at the time I had posted it. I’m not entirely sure what the chronology is, but I know around this time period I came up with a few important things:

  • Item drops: arrows and enemy-related materials
  • Mini-bosses: enemies with extra-health and more drops
  • Skills: magic attacks and arrow attacks; the default attack becomes a magic bolt that can be fired whenever

Originally, I meant for enemies to drop arrows and one specific crafting material – and then specialized arrows could be created by applying that enemy-related crafting material to an arrow. Then I made the arrow-slimes, which were meant to drop arrows that were already slimed – and then I basically gave up on the crafting system. This timeline explains sort of why the abilities in my game are as they are. Here’s what the skeleton mini-boss looks like (drops and all):

D2_skelboss_new

After the skeleton mini-boss is killed, the player can pick up and wear its crown. :)

After the skeleton and skeleton mini-boss were implemented, I started working on something very fun: particle effects. The earliest ones were very simple, just enemies exploding:

D2_entities

but by the end of the day there were particle effects for critical hits, to announce mini-bosses, to show health gain / loss, and for the impact of player bullets.

That’s not all that I had implemented by the end of the day.

First up: the skill tree. I had the basics of an experience-based skill system and an ammo system. Essentially, I decided to repurpose enemy drops into experience points – so the only way to gain experience is to collect enemy drops (e.g. slime or bones). Your experience bar has multiple colors, for the multiple types of enemies you can kill. By the end of the day I had 6 of the eventually 8 skills implemented – in the magic category there was the basic bolt, a lightning attack that pierced enemies, and a nova attack, and in the arrow category there were basic arrows, arrows that hypnotized enemies into fighting for you (these arrows were are still are very hard to use due to a lot of restrictions placed on them) and arrows that do extra damage (these were later changed into arrows that moved more quickly). Each arrow skill required its own individual type of ammo.

I also had implemented the snail enemy type, which fired rockets. The snails could be hypnotized into fighting for you, where they would then attack other enemies with their rockets. It was pretty cool.

I gave both snails and skeletons knockback, because otherwise they were very very dangerous – but I did not give slimes knockback, and I think this was actually a really good decision. Slimes are not necessarily a threat because they do not actively seek you out (they merely move randomly) but this gave them the potential to do damage if you got surrounded.

At the end of the day, my game looked like this:

D2_endofday_new

I was pretty darn happy with it, although I still had to implement the snail mini-boss, and two of the abilities (those that are locked in the above gif).

The Second Day

The second day was not quite as thrilling as the first day. There were quite a few things I did that day, but I’m not entirely sure of the chronology, so I’ll just list them off.

Snail Mini-Boss

I implemented the mini-boss for the snail. I wasn’t entirely sure what I should make it look like – but then I thought it would be funny if I made it a sort of meta-reference-inside-joke.

D2_bosssnail

Do you get it? It’s a reference to the original character design – which, of course, until now, nobody could have possibly known about.

Ice bolt, Fire arrows

I implemented the two missing skills: ice bolts, which freeze enemies, and fire arrows, which do even more damage than normal arrows, but travel slower, and deliver their damage over a short period of time. Here’s a demo of both:

D2_newatk

Ice bolts are really effective against snails, because they prevent them from shooting. Fire is also effective against snails, because they are normally aligned with you (it’s part of their AI), so it’s not very easy to miss snails with fire arrows, although it’s somewhat easy to miss skeletons.

I really like the fire particle effects for some reason. :)

Music and SFX

I also made the music and SFX on the second day. Normally I make these things around midnight on Saturday, so this was kind of weird for me – it felt out of place, and maybe that’s why they’re not quite as good as they usually are (although, my audio already isn’t that great…)

As always, I made my music with Beepbox.

The first music track I made was not quite good enough:

It was too slow, and now that I’ve listened to it a couple times, I also find that the intro is waaay too repetitive and dragged out.

My second track is the one that made it into the game, because I didn’t think I would be able to make anything much better:

This music is also pretty repetitive, but it happens to work out quite well. It’s clearly not perfect – and I really really hate the one harmony that’s repeating in the background throughout the whole track, but when playing the game, it works.

For sound effects I used BFXR, and they worked out fine, I think – although I have got quite a lot of criticism in the fact that they continuously play when enemies / the player is getting hurt by lava, which is really annoying and hurts ears.

Level System

As I’ve mentioned before, I was working on a level system. On Sunday, I finished it up and made it work quite well. Essentially, whenever the player gets a full experience bar, the game is paused and they are asked to pick a skill to level up. Leveling up skills will unlock the next skill in that “tree” if there is one – the two “trees” are magic (skills 1-4) and bow (skills 5-8). Skills are switched between with numbers 1-8 on the keyboard, or N and M to cycle between them.

Enemy Waves

I also implemented enemy waves. Essentially, the first three waves are hard-wired to introduce the slimes, then skeletons, then the slime boss, then snails, then the skeleton boss, and finally the snail boss. It’s also possible to randomly get a second slime boss before the skeleton boss. The rest of the waves are merely built to be random with increasing difficulty. Basically, they start out with low spawn rates, slowly increase the spawn rates, spawn 1-3 mini-bosses, and then decrease the spawn rates. They seem to work out pretty well.

The Menu

Well, sort of. The menu I made is really awful, and the help menu is even more awful. I think the most minor improvement that would greatly improve my game is changing the help menu to use a key to change slides – this would allow people to get through it much faster, understand the game better, and have more fun.

Submitting

Normally I have problems with submitting my game, but not this time. That was pretty great. :)

Feedback

Feedback, is, of course, a very important part of the whole competition. This is the first time I’ve gotten 100 coolness, and 51 ratings on my game (at the time of writing). That’s not bad – I’m sure I won’t win any awards, but I have gotten some very useful feedback that I never would have even thought of.

Of course, I’ve only gotten 30 comments with feedback (not including Jupiter_Hadley or myself), and of those 30, I’ve only gotten a few with new ideas. But a lot of them did give me some interesting statistics on how difficult my game was, among other things.

I will list some of the more interesting parts of the feedback I received at the end of this – but because that’s mostly talking to myself, I will first do the classical “what went well” and “what went wrong” lists.

What went well

  • A lot of people told me that my game was fun. This is feedback that I haven’t really gotten before, and I think that’s because this game is actually fun. I know that I have fun while playing it, unlike some of my older games, which aren’t entirely fun.
  • People liked the graphics. This is honestly a bit of a surprise. I think that the well-lit character / enemy models clash a lot with the unlit and “more detailed” background.
  • Multiple people commented on how fun it was to push enemies into the lava. This is something that I never even considered being very doable – mostly because the enemies come in from the side, which prevents vertical combat from being as effective.
  • The skill system went very well for some people – I got multiple comments stating that it was a good addition to the game.

What went wrong

  • The biggest problem reported to me was in terms of audio. A lot of people dislike the way that hit noises are present while enemies are near the lava, because they get hurt every tick, meaning that noises happen as fast as possible.
  • The controls were not necessarily great. Some people found that being restricted to only one axis of motion at a time was a problem, while others found that aiming being tied to player movement was a problem.
  • Lag. Some people had lag issues. I know where quite a bit of this comes from – it’s actually astonishing that my game can run on anybody’s computer, because it’s doing O(n) operations with huge lists almost every tick, sometimes.
  • Too many features. This is a big one. Although the skill system was a good addition if you could understand it, it was really hard to figure out what eight different skills do. A very interesting problem that somebody reported to me was that it’s hard to know which skill to level up, because only their numbers are shown during the level-up screen – not their icons. I never even thought about that, because I knew so well which skill was tied to which number while playtesting, that I sort of designed the UI without even thinking that other people wouldn’t.

That’s basically the most common feedback that I got. However, there is something very interesting about the feedback I got regarding difficulty:

When I was making my game, I spent a ton of time at the end nerfing the lightning weapon, because I was sure everybody would pour all their points into it and one-shot everybody, and that wasn’t very difficult or fun. Basically, I thought my game was really easy – all it takes is spamming the space bar and putting all skill points in a single skill. That works for almost any skill but lightning, I think.

So, basically, I was expecting the feedback I got to look something like this:

D2_expectations_2

While in actuality, the feedback I got looks like this:

D2_reality_2

This was completely unexpected. Similarly, everybody I’ve shown my game to that I know personally tells me that it’s pretty difficult.

I’m not entirely sure why this is. I know that some of the people I’ve shown the game to personally didn’t get that it was possible to put all skill points in a single skill, but even after that knowledge, some of them still couldn’t do too well. I honestly don’t think that while play-testing the game my strategy got any more complicated than “spam the spacebar,” so I’m not sure why other people don’t develop that strategy. Overall it’s very interesting, and I would like to make the difficulty more real in a post-compo version – i.e. make it so that the determination between winners and losers is more than just who figures out how to spam the spacebar.

Finally, I suppose I should say how I would rate my game, had I seen it somewhere else in the competition. Certainly there will be some bias in this, but keep in mind that although I try to be a harsh grader, I do very rarely give out lower than three stars, because almost everything does seem “mediocre” to me.

I always rate all the categories before overall first, and then overall, so that’s how I will do this.

I would give 3 stars for innovation, as that’s the score I give other games of this type. Surely they are all somewhat innovative, but there’s nothing really brilliant about any of them – so they get 3 stars.

I would give 5 stars for fun. I honestly do have a lot of fun while playing this game, and I always rate in terms of how much fun I have. My game actually makes me want to play again, which to me is basically deserving of 5 stars.

I would give 4 stars for theme. Technically it all fits in the theme, but it isn’t anything special. (This is how I generally rate these sorts of games).

I would give 4 stars for graphics. Although I do happen to like the graphics, I still think they clash somewhat, as I mentioned above.

I would give 3 stars for audio. The audio is good overall (at least when I’m playing the game), but the hit sounds in the lava are simply too annoying for me to give more than 3 stars.

I would give no rating for humor, as my game doesn’t really have any humor. I’m not exactly sure why I leave that category open.

I would give 4 stars for mood. It works, it feels good, but – again – the graphics clash quite a bit.

Overall, I would give 4 stars. It’s not terrible, but there’s quite a few flaws. I basically determine overall on how good of an experience I have, and when I play my game it’s a 4-star experience.

What’s next?

I would like to port this game to Android at somepoint, but I’ve said that about some of my previous games and it’s never happened.

If I do work on a post-compo version, I will try to make it more like my original vision for the game. At the very least, here are the changes I envision:

  • Implement a larger room with scrolling.
  • Change weapon fire to use mouse to aim and clicking to shoot; make it so that spamming button is not necessary for high fire rate.
  • Major changes to skill tree to make it easier to understand and use, and harder to use in an unbalanced fashion. This includes locking skills until higher levels. Potentially includes a class system.
  • Either replace hit sound with generic fire sound near lava, or make it so that lava does more damage every few ticks rather than a little damage every tick.
  • More enemy types.
  • Enemies fall in from ceiling instead of coming in from side.

That is quite a few changes, but if all that worked out I would like to make it even more like I originally envisioned – that would include traps and obstacles that would periodically activate and deactivate and an end-of-round merchant (probably robotic, as, after all, you are meant to be trapped) where items could be bought and sold – including necessary inventory system and maybe weapons system.

Want to play it?

Here you go!

 


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]