The Well

thewell

Download: Custard Games: The Well

The Well is my first game I’ve ever finished making, and is about a boy who falls into a well and has to navigate his way through a dungeon to find his way out.

Development: 

As I only gave myself five days to complete this project, the game has turned out really short. I blogged my progress each day, if you are interested in learning more about the development, read my devlogs linked below.

Devlog – Day 1

Devlog – Day 2

Devlog – Day 3

Devlog – Day 4

In the end, the game did not turn out as long or complete as I would like it, so I will probably revisit the engine in a few weeks using a new set of assets and storyline. I hope to spend more time on game design and assets, so I hope it will turn out to be better made, and much more fun in general. I should also hope to document my progress better as I will have less time constraints.

 

Advertisements

The Well (Day 4 devlog)

Nearly done now! Today wasn’t as productive as it could have been, I spent way too much time looking around for royalty free songs and sound effects, and didn’t really come out with anything good. What I did accomplish today was adding some new textures such as the spikes, though I had to do it myself since the person who offered to help dropped out. I also added sounds into the game, and a menu screen to pop up before and after the game. I am quite happy with how the game has turned out, though I will have to do a lot of level design and art tomorrow to release this game in a reasonable state.

The way I did sounds was to have a central sound manager with a hashmap of all the sounds I need. When I want to play a sound like the player running, I set the player’s sound to the sound I want, and call this sound manager to play it in a loop. The other method I use for one time sounds such as the thud from falling or the sound effect when you die is to simple directly ask the sound manager to play the sound once.

the well menu screen

Starting splash screen

The spikes I did for today don’t really match the overall style of the game, however, I don’t really have time or skill to improve them at this point. From now, I need to focus my time into level development, and other high priority tasks such as the game over screen. I also did the art for my menu screen which isn’t amazing, but I am happy with it. I realise I won’t have a lot of time tomorrow, but it will be my absolute last chance to release this game within the next few weeks so I have to power through, and if it isn’t as complete as I would like it to be, then so be it. I am optimistic about it though, as I coded it quite flexibly, which means if I want to make a better game at a later time, I really only need to do the assets and level and not too much coding.

The challenge I faced today was using my time wisely. I spent far too long looking up sounds, and didn’t end up with many at all. I am not fully happy with the sounds I have right now, but I doubt I will have time to change it.

<script type=”text/javascript”><!–
google_ad_client = “ca-pub-1894060839349457”;
/* Custard Games */
google_ad_slot = “7004919420”;
google_ad_width = 300;
google_ad_height = 600;
//–>
</script>
<script type=”text/javascript”
src=”http://pagead2.googlesyndication.com/pagead/show_ads.js”></script&gt;

The Well (Day 3 devlog)

Progress! It is actually starting to come together to form a real game now on day 3. The main features added today were checkpoints, death, water, and some new art. Firstly I just wanted to mention that I now have somebody working with me on the project. Someone who read one of my posts about the game messaged me and asked if he could help me with the graphics. Since I am terrible at it, I’ve let him take over the sprite design front.

The Well - Starting game

Falling into the well

Now that I have art to use instead of my black and white placeholder images, the level actually looks like a proper level now. Not only does it look like a real game, but it is starting to have an objective to it. I added in blocks that can kill you now, so these will be things like spikes or lava, and if you touch them you are killed. Luckily, I also implemented checkpoints, so after dying you get respawned at your last selected checkpoint. The checkpoints come in the form of candles. If you walk up to a candle and press x, your character will light it and it will activate that checkpoint. The last thing I added was water, just because it was easy and added some variety to the level. When your character is in water, he is basically just slowed down, so he doesn’t move as fast or jump as high.

The Well - New checkpoint

Checkpoint candles on the right

Today felt really productive because of all the foundation code I had set up in the previous day. It is now easy for me to add all kinds of new blocks with their own functions to the game. I’ve also managed to get this system integrated with the map editor I am using so that none of the levels have to be hard coded, but can all come from file. This results in much more flexible development, and allows the artist to test his art without needing to edit the source code at all.

In order to let the artist and testers play the game, I had to export the game in a runnable jar. This proved to be more difficult than I initially thought because of the way files are handled. The way a jar gets images and files is different to the way I was using before which took me ages to figure out, but now I know better for future projects.

A challenge I had today is that I spent ages trying to figure out a bug I am having with my character’s jumping. For some reason there is a combination of keys you can press you give your character a larger jump than usual. This is something I will have to fix tomorrow as I haven’t entirely ironed out this problem. Tomorrow, I want to work on a menu interface and/or implementing sounds into the game.

The Well (Day 2 devlog)

Day 2 of development for The Well has just finished. I didn’t get as much done today as I would have liked, and am falling behind. If I really want to finish in these 5 days, I am going to have to really focus on it and not get too caught up prematurely optimising things or getting too ambitious. With that said, there was some good progress today in terms of art and coding.

Coding wise, I have set up some world physics for the player. Every game tick (every time the physics up dates), I apply a set acceleration downward on all non fixed physics objects to represent gravity. At the moment, this is just the player but it will automatically be applied to any other objects I put in the world such as mobs or a box. When the player presses up, it gives a larger acceleration in the opposite direction for a fixed amount of time before gravity causes it to slow down and fall again. The difficulty I had was trying to make sure the player can only go upwards for a certain amount of time, and then make sure that they are touching the ground before they could jump again. The good thing about having this system set up was that it made it easier for me to set when what animations need to be played. Since I had all this information of when the player was touching the ground, when he was jumping and when he was falling, I then was able to easily tell it to play the desired animation.

The Well - Falling screenshot

Character with animations and physics

The animation system that I’ve set up took me awhile to figure out, but I managed to get it to work in the end. The way I set it up in the end is that each entity sprite has a list of animations, and each of these animations are made up of animation frames and some other data. Each frame is given a duration to be played, and each animation has a timer that counts how long the animation has gone on for. When the duration of a frame runs out, it then tells the sprite to display the image of the next frame. I had some other variables such as whether the animation loops, or whether it ends with a fixed image. This was used for things like the falling animation where the character raises his arms, and they stay raised until he hits the ground.

The Well - Walking screenshot

Character walking with an animation

The progress I made with art today was that I managed to get some animations for the player drawn. Each animation is just made up of a few different images (about 2-4), and so today I managed to draw the animations for running, jumping and falling. I am getting more used to doing pixel art, so hopefully by the time I get to doing the textures I would be able to do them quickly as they should be much easier than animations.

Challenges I had today was all the bugs I kept getting every time I tried to add something new such as the animation system or the physics. I think I really need to think clearly about what I want to implement and how I am going to do it before just writing a bunch of code that I later have to go through, fix and clean up. At least I managed to do better today on not prematurely optimising code as the systems I had to make today were pretty specific to this type of game.

Although this project is small, making all these little bits of it are making me see the potential of what kind of game I could accomplish if I wanted to designate the time. After I finish this project, I may try to use what I’ve learnt to implement a more complex version of it with better physics and more modular code.

The Well (Day 1 devlog)

I’ve decided to try to make my first video game this week, and I’ve given myself the restriction of five days to complete this project. The usual thing to do is to have 48 hours like the Ludum Dare, but since this is my first game I don’t want to rush or lose any sleep over it. The goal is to make a short 2d platformer about a boy who falls into a well, and has to try to find his way out. The reasoning behind the well is so that the game takes place in a cave setting, meaning less art will be needed. Due to my lack of creativity, the game is named “The Well”. The engine will be done in from scratch in Java, as that’s what I have the most experience with. I tried to learn to use some libraries like Slick2d, but it took too much time, so I’ve decided to just stick to what I know.

The Well - Demo Level

First day progress

Today, I’ve managed to get some of the foundation code set up. So far, the game loads a map and tilesheet (text files) and places a character for the player. So far, the player can move around, and collide with the walls of the level while the camera follows him around. I’ve decided to have three layers, a background layer, a collision layer, and a foreground layer. The reason there are three separate layers is to make the map editing more flexible, as there doesn’t need to be code for each type of tile possible. Another benefit of having separate layers is that each tile doesn’t have to be completely square. The collision layer and the foreground layer can have transparency without leaving holes in the level.

Demo level screenshot

Testing level

So far in terms of art, I am just using placeholder black and white tiles to show the background and the walls, but these will be replaced with proper tiles once I am done with them. I’ve also drawn a main character, but it is still a rough draft. For this project, the coding will probably be done first, with the art, music and level design done after all the main mechanics are in place.

The biggest challenge today was trying to structure my code. I spent so much time worrying about how object oriented the code is, and trying to make the engine really flexible. I realise now that it was premature optimisation that really isn’t needed for such a small project, so from now I am going to try to code quicker and just get as much content as I can done. Tomorrow I want to try to get done the coding for animations, some tight movement for the character, and a menu and options interface.

I’ll be making a blog post and video each day showing my progress and explaining a bit of my thought process behind my decisions. Overall, I think this project will be really helpful in terms of learning as I’ll have to use so many skills in such a condensed time frame. I am mainly a programmer, so naturally the coding is the most important part of the project to me, however making the entire game myself will force me to broaden my creativity. I’ll have to do all the drawing and music myself, and since I have very little experience in this I could really learn a lot from it. Another thing is that I am a terrible writer, I have always been terrible at English, so forcing myself to make these blog posts will hopefully help me work on that.