3/03/2013

Thoughts on February and Slick2D

It's March! This means it's time for the monthly evaluation of the tools I used.

Slick2D

Slick2D is a great tool if you want to create games. It uses Java, which I am very familiar with, it's fast, it has tons of built in functionality which I could use and is easy to set up. One of the only downsides is the documentation. The website seems to have been moved recently, but the old one is still available. Then all of the sudden the new one went down for a while, which was irritating. I had little to no problems with the library itself though. Great stuff!

Happiness with Slick2D: 4/5.

My code

I tried to make my code general-purpose, so I could reuse it for future projects. Since this project was relatively simple, it complicated the progress. However, should I ever write another game using Slick2D, I do have a lot of code I can reuse.
The code was rather messy due to the reusability I wanted to implement. Another factor that complicated the code is the moddability: almost everything is loaded from file. This causes some methods to be full of Exception handling. However, the code is efficient and runs fine, and it's still very readable.

Happiness with my code: 3.5/5.

The art

I used pixelart created in GIMP for the game. I first went for an orthographic point of view, but due to time restrictions (damn February and its 28 days) I changed it to a top down game. The art is very stylized, but I think it looks pretty. Combined with a simple day-night cycle, I think I created a decent looking game. I'm pretty happy with the game icon too.

Happiness with the art: 3/5.

The result

While Invasion doesn't sport much content out of the box, it's very open to be modded. When I was younger, I used to create levels all the time for the games I owned. It makes me sad that modding support seems to have disappeared almost completely from the AAA games industry, so adding it to my game was something I was very glad to be able to do.
I think AudioCube was a better game in the end, but I'm still glad with Invasion.

Happiness with the result: 2.5/5.

Average happiness: 3.25/5.

That's it! I've been working on the next game since yesterday. It's written in HTML5, and since it's been a while that I've written HTML, CSS and JavaScript code, it's kind of fun to do it again. You can expect more blog posts than in February, and by the end of March, a fully open-source game playable in any modern webbrowser!

2/25/2013

Invasion released!

My second #1GAM game, Invasion, is finished and can be downloaded here.

There have been some changes to the modding aspect, but all of the information in the tutorial posted a few days ago is still correct. There are some added fields in some files, such as for adding music. I'm sure you modders will figure it out ;) if not, leave a comment or tweet.

I'm tired, so I'm going to end the blog post here. See you next time!

2/22/2013

Modding support for my February game

It's been a long time, and I've been hard at work for tons of real life stuff. I've also worked a bit on my February game.

I can tell you this much: it's a 2D top down reverse tower defense game, which currently has no name. What do I mean with reverse tower defense? Well, it's simple. Take the formula of a tower defense game, and reverse it! The towers have already been placed, and you, the righteous (or evil, that's yours to decide) invader must select units to send in and conquer the barbarian defenders.

But here's the cool thing: the game content was designed to be almost entirely moddable. While in its core, this game will always have the same kind of gameplay, you can edit a lot of stuff:

  • Add new units (scouts, tanks...) and unit sprites
  • Design new levels
  • Add new kinds of towers, which attack stronger or faster
  • etc.
Here's a small tutorial on how you will be able to mod the game.

Introduction

All of the game content is stored inside the /etc/-folder. There's a folder settings, which contains the game settings such as resolution, full screen mode, etcetera. Then there's the actual folders that are useful for modders: levels, sprites, towers and units. I will now discuss how to create levels, sprites, towers and units, in greater detail.

Levels

Levels in the game are created using a third party tile editor, called Tiled. You should google on how to create levels in this editor if you want to do that. There are tons of great tutorials out there and it makes no sense for me to try and rewrite them. Just make sure the tiles are 30x30 pixels. Let's say you've created a level myLevel.tmx with a tileset myTileset.png. You should put this level (.tmx file) inside the /etc/levels/ folder, and the tileset goes inside the /etc/levels/tilesets/ folder. Open this .tmx file using a text editor such as Notepad, Emacs or VIM, and make sure the <image source>-tag refers to tilesets/myTileset.png. Here's an example of that line using a 300x300 png tileset:
<image source="tilesets/myTileset.png" trans="f000ff" width="300" height="300"/>
The game engine needs to know where the path is the units can follow, and where the towers are placed. This is done by creating a text file in the /etc/levels/ folder, called myLevel.tpinf. Make sure this file has the correct extension (.tpinf), even on UNIX systems, and has the same name as your Tiled (.tmx) file.
Then, using your Tiled file, add each path tile (in the correct order, i.e. the order in which units are to move across the path) as follows:
p x y

Here's an example for a path from (0,0 to 2,1):
p 0 0
p 0 1
p 1 1
p 2 1
Then, add each tower tile as follows:
t x y name
Here's an example for an Arrow tower on the position 0,1:
t 0 1 Arrow
 The game engine will then create a path and spawn towers in the correct position.

This leads us to the next step in modding the game: adding new towers.

Towers

Towers are made by creating a new file in the /etc/towers/ folder. These files are properties files. Properties file, put simply, consist of key value pairs, seperated by an equals sign. Each tower should have the following properties: damage, speed, range and projSpeed. For example values, take this "Arrow" tower that I've made to test the game with:
damage=10
speed=250.0f
range=100.0f
projSpeed=10.0f
You can make new towers by editing these files or creating new ones. You can put new towers in a level by editing a level's .tpinf file as seen above.

Of course, towers shoot projectiles. These projectiles can be given sprites (of any dimension) by adding a file <TOWER_NAME>_proj.png to the same folder in which you put your tower.properties file. For the Arrow tower, this gives the following filename: Arrow_proj.png. The game will then automatically make the tower shoot projectiles with this sprite.

Units

Now that we know how to create towers and levels, what about units? Units are also created using properties files, but those are put in the /etc/units/ folder. Units have the following properties: health, damage, speed, sight and sprite. Sight is a value to determine how much the unit will move the fog of war (this will make more sense if you've played the game). Sprite is the name of an image file (without the extension) that is used to represent this unit. These sprites are .png files stored in /etc/sprites/. Here's an example unit:
health=100
damage=10
speed=1.5f
sight=200.0f
sprite=scout
This unit has a scout.png sprite in the /etc/sprites folder, deals 10 damage when it reaches the end of the path, has 100 health, a certain speed and sight.

2/02/2013

Thoughts on January and Unity3D

February is here! This means I am going to write a small blog post about my experience in January.

Unity3D

Unity3D really sped up the development process of AudioCube. Pretty much everything I needed to make the game was provided by the engine. This is ofcourse a great help. I would recommend Unity3D to anyone trying to get into game development who isn't very confident in his or her programming skills. You can do quite a bit without touching too much code.

However, the way the engine works was confusing me at times. I prefer to have full power over my code and since Unity3D uses a certain way of handling scripts, I often had to rethink the way I would program the game. This resulted in a folder of extremely messy code. Note to self: structure code more, especially in environments such as Unity3D.

Happiness with Unity3D: 4/5.

My code

As I said above, my code was pretty messy. Making small changes was sometimes disastrous to the rest of the game. I will need to pay more attention to a cleaner structure in the next few months.

Happiness with my code: 2/5.

The art

As someone who had pretty much no experience with 3D modeling or texturing, I was actually glad with the results. Using a combination of particle effects, simple textures and low-polygon models, I managed to create what I think is a believable, atmospheric environment.

Happiness with the art: 4/5.

The result

I think AudioCube is an enjoyable game. I haven't had a single negative review. The community helped shape the game. While there is still a lot of room for improvement and AudioCube is certainly not suited for a commercial release, I'm quite happy with how my first game turned out. I certainly hope the rest can live up to this, and I hope even more that my next games will be better.

Happiness with the result: 3.5/5.

Average happiness: 3.25/5.

Overall, I think AudioCube was a success. I can't wait to see what the next months of #1GAM will bring me and many others. See you later!

1/29/2013

AudioCube release

AudioCube is finally finished. You can find the download links below, but there are a couple of announcements first.

First of all, I have decided to remove AudioCube from IndieDB. If I were to add every game I made this year to that site, I would crowd it. It could be considered spam and I personally hate spam. There's way better material on there, and they deserve every bit of publicity they can get. In due time, I will make my own website on which you will be able to find all my games. In the meantime, this blog will (still) be the place where you can find all information.

I will be blogging about my thoughts on Unity somewhere early February, in case that interests anyone.

There will be less posts about the upcoming game early February, but more posts by the end of the month. The reason for this is that I would like to keep this one a secret for longer. A lot has changed in the development of AudioCube (such as the fact I didn't decide what it actually was about until near the end of development) and I'd like to do that behind the scenes for my next game. When it's close to completion, I will post more details about the game itself.
I might post some of the details on how I implement certain features though - in a 'semi-open source' mentality.

Finally, here are the download links to AudioCube, along with a small summary of what the game is all about.

AudioCube - my first game - is a game in which you need to use your ears. By listening closely, you will be able to find the musical cube. Your vision is impaired by the snow and fog in the mountains of Audoria - so you better hope you have a good pair of ears!
AudioCube is played from a first person perspective. You control your character using WASD/ZQSD/Arrow keys and look with the mouse. You can even sprint using SHIFT and jump using SPACE, or rebind these keys in the launcher menu.
The game mechanic is a new concept for most gamers and has recieved a lot of praise from external testers. If you want to see what the fuss is about, you should try it for yourself!
It's totally free and it's only a couple of MegaBytes. What do you have to lose?
 Download links:

1/28/2013

Tiniest blog post ever (RELEASE DATE)

The Mac and PC versions of AudioCube are going to be released on the 30th of January 2013. Due to a bug with the Linux version, it has been delayed indefinitly.

1/21/2013

AudioCube is almost finished

As I've implemented everything I wanted to implement, I can almost call AudioCube finished. All I need to do now is iron out the bugs a bit more and then I can release the final version. It's been a great experience - expect a blog post early february where I talk about what I liked and disliked during the development of AudioCube.

Just be patient a few more days and then you will be able to try out the full version of AudioCube, including Infinite mode!