[LD29] Eskimo Run Post-Mortem

Eskimo Run is my fourth entry to the Ludum Dare competition. The theme this time was “Beneath the Surface”, and the optional theme was “Pepsi Consultant”. I opted to go for the infinite runner type gameplay where your character is constantly running right and you have to jump to avoid obstacles (except with a finite number of hand crafted levels). The twist I incorporated into the game to follow the theme is that you are running on a surface of ice that you can dive through to then travel beneath the surface. While above water, you jump to avoid spikes and blocks, while underwater you dive to avoid spikes and fish. In order to follow the optional theme, I made the enemy chasing you the pepsi consultant! You have to make sure to move faster than him by avoiding obstacles, otherwise he catches up with you and sponsors your game jam!

Play the game | Ludum Dare

What went wrong:

Level design

Oh dear. I personally consider this the biggest flaw of this submission. Because of the poor level design, the levels just don’t feel like they flow well. Ideally, a good player should be able to run the entire map perfectly without any stoppages. In this case, I rushed through the level design, and the poor placements of tiles and spikes cause the flow of the game to feel lacking. You constantly get stopped and slowed down, which really detracts from the feel of the game. The other issue with level design is that I made the underwater section too difficult! The theme is almost ignored because it is almost always detrimental for you to go underwater. If I had a few extra hours to work on my levels instead of rushing through them, I think the game could be multiple times better.

Code efficiency

For the first time in all my game development projects, I ran into performance issues. This was mostly caused by the stitched together particle emission system, which constantly produces snow, ice and bubble particles. In the end, a lot of people had trouble running the game smoothly enough to play, and I ended up making a light version which does not use particle effects. In the future, I will try to use a game engine that incorporates opengl just so I don’t have to worry as much about performance.

Bugs

Unfortunately the physics for the spikes often produced a buggy feeling due to gravity not being handled properly. Sometimes, the game would think you are standing on spikes even though you are slightly elevated next to it. This greatly impacted the game as it made it feel incredibly unfair at times when you actually do make the jump but get slowed down anyway.

What went right:

Art art art

I dare say that this project is a massive improvement in terms of graphics. I like the pixel art for my character, the background, the clouds. the tiles and the fish. I find that all of them match well together to form a cute and polished looking game. I spent quite a lot of time drawing the sprites, and I feel that it really shows. I also spent a lot of time on some subtle particle effects like the snow, bubbles and ice shards when diving through the water. While trivial, along with the fish and clouds, they really help in making the world feel like it is actually alive.

Variety

Instead of spending all my time coding, I decided to put a bit more effort into making more assets like sprites and levels. This time, I managed to make a variety of sprites and three different levels. This made the progression a bit more fun and interesting than last time because you are introduced to new things every level.

Music

I DID IT! I ACTUALLY HAVE MUSIC THIS TIME. Ok, I kinda consider it cheating a bit, but I used a random music generator that I found online. Apparently that completely conforms to Ludum Dare rules, and I’ve seen quite a few people do it. While feeling cheaty, I think it was worth it. It didn’t take much time at all to implement into the game, and it really helped the atmosphere and variety to have this lively music playing in the background. Will definitely be doing this again in the future.

Theme

Although the level design didn’t really accommodate well for it, I felt that I had a fairly unique spin on the theme and endless runners in general. I really like the idea of having two channels to navigate through the level which you can switch on anytime. While you could technically complete the level only using one path, sometimes it was easier to go the other way. The use of the pepsi consultant was also a huge plus as a lot of people who understood who he is found it hilarious. For three out of four of my Ludum Dare games, I’ve used a strange twist like the pepsi consultant for the story context, and I think it adds a lot. Even with identical gameplay, a silly story can make the game feel more fun because you get a little more immersed and amused as you play. Hopefully I can keep thinking of gags revolving around the theme!

Conclusion:

I think this was probably my ‘best’ Ludum Dare entry if you look at it overall. While I found the gameplay more fun in The Naughty List, Eskimo Run simply had more content and polish. The art and music just made the game feel much more complete. Hopefully in my next game, I’ll be able to strike up a better balance, or perhaps just work faster so that I can get in all the features and assets I want!

[LD28] The Naughty List Post-Mortem

My third Ludum Dare entry The Naughty List! This time the theme was “You Only Get One”, and I decided to interpret this by making an archer where you only get one arrow.  The premise of the game is that you have been put on Santa’s naughty list, and he is fed up. He’s decided to send his hitmen elves after you, so you have to defend yourself against the waves of them. I am actually really pleased with this game. While it could be improved a lot as always, I think this is my best entry so far.

Play the game | Ludum Dare

What went wrong:

Failed entity system

Oh dear. The first twelve hours of development ended up getting COMPLETELY scrapped. I attempted to use this entity component system I made, but because I’d never really made a complete game with it before, I really struggled to get it implemented correctly. In the end I had to scrap it and go back to using the traditional inheritance way. This cost me a LOT of time, and I think the game would have turned out much better if I had used that time for something else. Oh well, I will continue looking into this entity component system to use in the future since it is interesting!

Bugs

Man was this game buggy. I struggled as hard as I could to implement the features I wanted and to get everything into a functional state. This means a lot of bugs and strange quirks. The physics was kind of horribly done, mostly caused by poor and cheap collision code. The way I did collision can sometimes cause trouble as it could make entities teleport on top of each other in specific circumstances. This is especially dangerous when you desperately need your arrow and it suddenly flies off somewhere difficult to get to. The good thing about the poor collision code though was it facilitated for some interesting mechanics which I’ll talk about later in the ‘What went right’ section.

Gameplay and asset variety

The entire game only consists of three identical levels with an increasing number of total enemies and their spawn rates. This meant that each level was the same as the last with just a few extra identical enemies each time. I would have loved to have made some different levels. blocks and enemies but as usual, time was the limiting factor. I really developed right to the last minute of submission hour. In the end, in terms of blocks only had the snow/ice block, the snow/ice background block, the sky block and the water blocks so the only level I had was fairly bland looking.

Music and sound

Like my previous game, I didn’t have time to add in any music or sound effects. This is something I would really like to work on for the next game. I have no experience with this whatsoever, so I’ll either have to learn to make them or use some random sound generator.

Difficulty

Because I had such limited assets, I had to find a way to artificially increase the difficulty of the game with each level. How did I do this? I simply raised the number of enemies that spawn at the same time, and raised the cap of how many can spawn. This caused level 3 to just be a large horde of bloodthirsty elves looking to shank you. While that sounds awesome, in the end it just didn’t work well with the only one arrow theme since the arrow would just get stuck in the middle of the horde with no way for you to retrieve it.

What went right:

Gameplay

Despite the large difficulty jump and lack of content, I actually found the game quite fun. I really liked the bow and arrow mechanics. To be honest, I was actually quite pleasantly surprised by the outcome of the game. The shooting and collecting your arrow while trying to kite the elves around actually worked together quite well.

Feel

While the movement was OK feeling, I REALLY loved the feel of firing the bow. The charging up mechanics and animations made the bow feel like it had some weight to it. I think this is a big factor of why I find the game to be a success to me.

Art

While I would have loved to have been able to make more assets, I am actually quite pleased with my art for the character and elves. I am primarily a programmer, so doing this character pixel art was quite a large step for me that took quite a lot of time. I particularly thought the player character looks cool and cute at the same time.

Theme

The theme just worked out so perfectly. I managed to fully incorporate “You only get one” into the gameplay by making there only be one arrow for the player to pick up. In the end I felt that the game really fully revolved around the theme rather than being hindered by it. If I had given the player more arrows, the game would have been completely different. For one, the player could just hide on a ledge while shooting the enemies one by one. Secondly, I would have had to make the enemies soak up a few arrows which would take a lot away from the feel of the shooting.

Humor

Since Christmas is this month, I thought I would use it for the setting of my game. I managed to come up with a pretty funny storyline revolving around Santa Claus and his elves being kind of evil. The whole ridiculousness of the situation kind of made it funnier and gave some context to the game rather than making it a mindless violence game.

Conclusion:

Overall, I am extremely pleased with the outcome of the game. I think everything came together very nicely to form a fun and complete game. I learnt quite a lot from this experience, and I think I can really improve for the next game jam. Firstly, I learnt that the entity component system I designed does not work. Secondly, I practiced my pixel art skills a lot and was quite pleased with the outcome. I really enjoyed this Ludum Dare, and am looking forward to the next one!

[LD27] Dissociation post-mortem

It is a few days after the competition now, so I’ve had some time to rest and reflect about my performance over the weekend. Although I am not entirely happy with the outcome of my game, I am very proud that I managed to string together a functioning game with an actual goal. I would have loved to have more time to implement all the features I wanted, but I guess every LDer runs into that issue.

javaw 2013-08-28 04-16-26-89

Play the gameLudum Dare

I managed to render my ridiculous timelapse video after having a lot of trouble. The biggest lesson I have learnt this weekend is not to record a time-lapse in fraps because 10 hours of footage is about 500 GB of data. Sadly, this meant I only managed to record about half of my work over the weekend, but it is symbolic enough none the less. I’ve compressed about 12 hours of footage into a few minutes, but I had to render multiple times so it really screwed up the video quality. Oh well, I have learnt from my mistake. In the future, I will use fraps to automatically take a screenshot every 10 seconds or so, and instead use the image files to compile the time-lapse.

What went wrong:

Time

I spent way too long fussing over how neat and reusable my code was, that in the end I was very short on time. I managed to program all these brilliant tools for making maps, characters, and weapons, but because of the lack in time, I couldn’t make the assets to actually use the tools. I ended up with only a few building variations, 3 characters, and 2 weapons. It really doesn’t take long to add variety to the game because of all the infrastructure I coded, but because I didn’t have time to make any art assets for them, the tools proved to be useless. I really should have just hard coded everything. That way I would have been able to focus more on the art, and actually make some sound effects and music. Next time, I will definitely try to manage my time better.

Theme

The theme was actually another reason I ran out of time. I decided to do a more ambitious project in hopes of using the theme in a more interesting and unique way. I originally planned for you to play as the good personality, trying to keep your other personality out of trouble by hiding weapons from him, or taking pills to try to suppress the amount of control he has over you. Unfortunately, I realised I was running short on time and had to change the rules so that you play the psychopathic personality that is obsessed with murder. In the end, the theme felt very tacked on, and not an essential part of the game even though the whole game was planned around it.

Art

Because of the lack in time, I really skimped out on the art. I didn’t have time to texture the buildings, floor and doors. And I had to design the characters as just emoticons so that it would be faster to make. I really want to focus on this more next time.

Music and sound

As I said before,  I didn’t have any time to make the music or sound due to the lack in time. To be honest, even if I did have a few hours, I’m not entirely certain I would have been able to make any. I have absolutely no experience in any sound software, and was very unprepared.

Mental stamina

On the first day, I should have gone to sleep much earlier. I spent a good amount of the day doing proper work, but I started to slow down near the end. I started day dreaming, getting distracted and making bad decisions due to being tired and having worked on the game for so long. I would have been much more productive if I went to bed a few hours earlier and woke a few hours earlier the next day.

What went right:

Code

I personally felt that I had done some very solid coding. The game is relatively bug free, works as intended, and has some very reusable classes. I spent too much time on coding properly, but that did mean it came out quite nicely. I might pull out some of the stuff made in here to keep for later as some basecode.

Blog posts

I think constantly forcing myself to step away from the coding to write a development log about my progress really helped me. It gave me a good break, and allowed me to take a step back and evaluate the choices I was making. This helped me slow down, think more about what I was going to do without just rushing into a decision that would have turned out badly.

Testing

I managed to get a few people to play the game and give me feedback. This helped me find a game breaking bug that I could not replicate on my own computer, but I managed to fix that. I got a lot of great suggestions, and I wish I had time to actually use them, but I didn’t even have enough time to fill in my own stuff.

General

In general, I thought development went well. I spent a total of about 25 hours of pure development (taking out breaks, etc), which is quite a lot in 48 hours. I also felt quite productive in that time, even though I might not have been producing the right things.

Conclusion:

Overall, while I wish the game could have come out so much better with all the features that I planned, I am still very pleased that I managed to make a functioning game. I think it can actually be quite fun once you understand all the rules and controls. The competition has definitely given me a kick of inspiration to continue with game development once again, so I hope to use this to be a bit more productive. My next project will likely be the October challenge, where you have to try to make at least $1 by making a game. I think completing a challenge like that will be absolutely crucial to moving up a level in terms of game development.

[LD27] Got some sleep, feel refreshed

I made a vital mistake yesterday. I decided to continue coding for a few hours after I got tired. In that time, I was coding badly, taking a long time, and was uninspired in general. I’ve gotten about 5 hours of rest now, got some breakfast and went back down to the pool for a swim and some sun. (Instant noodles because I am lazy)

IMG_2372

I feel completely refreshed now, and ready to get back to some grunt work. I have most of the coding infrastructure down, just a few things left to code now. The thing I am dreading most is the AI. I’ve never worked on any AI before, so I really have no idea where to start with this one. After all that, I still need to make all the actual content to put in. This includes designing the buildings for the map (should be easy since the map is procedural), making some menus (I’ll just throw something quick together), doing the art (oh shit), and make some sounds (OHH SHIT).

I am putting off the art and sound to the last bit because even without it, I want a playable game, rather than a pretty picture that does nothing. Ok. Enough procrastinating. Back to work!

[LD27] First working build

Spent most of the day coding here and there. Progress is going slower than I had hoped. I got stuck on way too many stupid things such as slashes going the wrong way, or capital letters working on some systems but not on others. After all that, I have a small prototype of what I had in mind. (All the squares are just placeholder graphics until I draw characters, etc) Download it here: https://dl.dropboxusercontent.com/u/31109981/Dissociation/Dissociation.jar Screen Shot 2013-08-25 at 2.37.07 AM While I am not moving as fast as I can, I am still fairly optimistic about making an interesting game. I feel like I spent way too much time trying to make my code pretty and flexible. Really I should have just been hardcoding the whole time trying to get it done. I guess the good thing about this is that I can add additional features without much hassle. So far, the game has the ability to create maps out of lots of different building designs. I just have to get round to designing lots of buildings. Not much in term of gameplay yet, you have control for 10 seconds, and then the AI takes over for 5 seconds making you run around like a headless chicken. I’ve added civilians and policemen, but they don’t do anything besides wander around for now. Simple movement, no path finding yet so they often get stuck inside the houses. IMG_2371 I had a lovely dinner (pepper crab!), and I would be lying if I said I haven’t had a few caffeinated beverages.

[LD27] Sun, food, exercise, and ideas

Being in Singapore, Ludum Dare starts at a perfect time for me (9 am). It’s nice to wake up, get ready and get working on the game right away. Once the theme was announced (10 seconds), I decided to grab some breakfast and head down to the pool for a relaxing brainstorming session.

Lying by the pool

I had a nice time swimming and lying in the sun, which really helped me relax. This helped me forget about any distractions, and let me just zone out to do some proper thinking. In about an hour and a half, I managed to make up my mind on what I wanted to do, and most of the specific details about gameplay. This is going to be an ambitious one.

The theme for this competition is “10 seconds”. I decided that whatever game I make, the main gameplay would revolve around something happening or changing every 10 seconds. After quite a bit of playing around with ideas, I finally decided upon a game where you play as a character with Multiple Personality Disorder/Dissociative Identity Disorder. Every 10 seconds, you lose control of your character, and the AI takes over control for a period of time. The goal of the AI is to kill as many people as possible, and wreak havoc in general. Your main goal would be to get your character to a mental institute before getting arrested/killed. There would be lot’s of civilians around, as well as policemen on patrol. In your 10 seconds, you have to try to get your character in a position where he will cause the least amount of chaos by keeping him away from things like knives and other people.

That is the general idea for the game in any case. I personally have not worked on a game with such a large scope before, and have never worked with any form of AI aside from path finding. I may not be able to complete this Ludum Dare, but I will definitely do my best to attempt it.

If I don’t end up finishing in time for the compo, or even the jam, it still seems like an interesting game to me. I will probably try to develop it further after. Maybe add in multiplayer so you take turns with a friend controlling the character. That is way ahead in the future though, for now, I need to get coding!

LD27 Day 1 - Lunch

Oh, and I have lunch all nice and prepared for when I get hungry. 🙂

If you want to read the text file I created while brainstorming, click here.

[LD27] This is where the magic happens

Ludum Dare 27 starts in 6 hours, so I’ve decided to do some preparations. I cleaned up my work area and get ready for some game development, but more importantly, this obligatory workspace post.

Custard Games Workshop

This is where the magic happens. Out of all that expensive hardware, I value my keyboard the highest. I absolutely love having a mechanical keyboard, the sound, the touch, everything!

It’s been a few months since my last game, which was LD26 ASTEROIDS! (the side-scroller). I’ve learnt a lot from that experience, and I hope to improve using that knowledge. 48 hours is not a lot of time, and I want to have as much of it as possible developing the game. I live in Singapore, so the competition ends for me on Monday morning 9 am. I decided to take the day off from work so that I can be developing to the last minute, and also cleared any plans for the weekend.

From the last Ludum Dare, I learnt is that mental stamina is absolutely vital. I cannot sustain developing for 48 hours straight, and I need to look after myself to keep my brain juices flowing efficiently. This means getting a decent amount of sleep, not overdoing on the caffeinated beverages, not just eating a shit load junk food, as well as getting some exercise to keep blood flowing. Hopefully the weather will be sunny, so I can spend time by my pool thinking and getting some sun.

Looking back at my last entry, I realised that if I want to score higher on theme, I should interpret the theme more literally to get the votes. Different people have different opinions on the interpretations, but it would be safer to follow the general consensus on the matter. Currently, the most likely theme seems to be “10 seconds”, but people are often surprised at what theme actually gets picked in the end. If it were picked, I think most people would go with a variety of mini games lasting 10 seconds each along the lines of McPixel and those kinds of games. I personally have no idea what kind of game I would make if that theme comes up, but that is half the fun!

I hope to do a lot better this time. My goal is to get the coding done quickly so I can focus more on adding some content and polish to the game. Good luck to everyone taking part!

I will hopefully do a timelapse style video showing the progress, but if I don’t manage, I will definitely be documenting the development on this site.

[LD26] ASTEROIDS! Ludum Dare results

Wanna try the game? Click here!

The results are in!

I am actually pretty happy with my results, coming in 416th place amongst a community of very talented individuals. Considering this is my first Ludum Dare, and the second game I’ve made, I think I did not bad at all. This, along with the comments I got on my game have definitely inspired me to make more games, and I will definitely try to take part next Ludum Dare.

Ratings

Coolness 62%
#100 Humor 3.40
#310 Fun 3.26
#416 Overall 3.30
#443 Graphics 3.19
#455 Mood 3.00
#537 Audio 2.74
#790 Theme 3.30
#1169 Innovation 2.17

My strongest category was humour. I am pleased with this because I did put in quite a bit of effort in writing the dialogue, and including funny easter eggs. Second was fun, which I am again very pleased with. Because my game is an action-arcade type game, it should focus on the game mechanics and being fun to play. I went with the decision of making the game short, but very difficult to play. I personally prefer this decision, but I’d bet that if I made it easier with more progression, I think I could have scored quite a lot higher in fun and overall. How well I did in graphics surprised me since it was just some quick programmer art thrown together. Innovation did extremely poor, but that is understandable since I didn’t really put any groundbreaking mechanics or anything into the game.

Something I am really disappointed with was how badly I did for theme. I personally thought that it followed the theme really well with minimalistic controls and gameplay. I guess people had more of an expectation for minimalistic graphics though, so I will definitely think about the theme more next time.

Overall, I am very pleased, and will use the experienced gained to try to do better next LD!

Wanna try the game? Click here!

[LD26] ASTEROIDS! (the side-scroller)

Download

My first Ludum Dare entry, and the second game I’ve ever made! I’ve decided to go for a game with very simple mechanics, but is difficult as hell to win. While most people chose to go for a minimalistic art style, I’ve decided to keep the controls (only up/w and down/s) and actual gameplay minimalistic instead. It seems extremely impossible initially, but after awhile you get the hang of it.

Gameplay:
You control a spaceship that you move up and down to avoid getting hit by asteroids. Minimalistic yes? You have 5 seconds of small numbers of asteroids, then 60 seconds of full on walls of asteroids before another 5 seconds of calm if you make it that far. If you make it through all that, you can beat the game in a mere 70 seconds. Trust me, it isn’t easy. I swore profusely while testing the game.

Story:
You are the first test rocket to escape earth’s gravitational field! Unfortunately, the snarky people who made the rocket never made any way for you to turn the thrusters off, forcing you to have to dodge your way through an asteroid field.

Code:
I wrote the game from scratch in Java, using knowledge from my previous game to help me. I followed similar code for things like the game loop, the sound loading and playing, and the resource management. Coding was done quite fast as I already knew how I should structure the engine, and I hard coded a lot of things to make the progress faster. I though this was a great decision in the end to avoid over optimisation as it really helped me pump out the code quicker and leave me more time for the other things.

Difficulties:
The most trouble I had in this project was deciding what game to make, then actually starting it. Once I actually made some progress and knew where I was going with it, I flew through it quickly. I am really proud that I managed to make it in the designated 48 hours.