The Forgotten Planet Game Music

The Forgotten Planet - Menu Music - By Josef Falkensköld ( )

Thursday, 15 December 2011

New Water Movement!

Hello Again!

I've just finished the new water movement for the game. The previous one was adapted to the old frame based code, and is now rewritten and working properly again.

I've played around a little with the network code as well, and changed a few things around and fixed so that the player and enemies can have up to 100 (0-99) different states instead of 10 (0-9). My Graphics Artist is creating great animations, and some of them had actions I had not thought of, which lead to adding more states for the enemies and the player.

And the real reason you stepped by, the YouTube video:

Until next blogpost!


Tuesday, 13 December 2011

Favorite Tiles & Far View scrolling implemented!


There has not been much progress in a couple of weeks, but now I'm back on track and have made some progress on different parts of the game.

First of all I added the "Far View" option to the parallax background scrolling, which means: Enable Far View, and all the backgrounds scroll slower. A friend of mine noticed that the backgrounds were scrolling to fast, compared to what they displayed, so I added this Feature to the Level Editor, and the Game.

Secondly, I added favorite tiles to the Level Editor as well. By right clicking on a tile in the "tile page" screen, the tile is added to the favorite list, which is accessible by clicking on the "favorite tiles" button in the main view. This speeds up level creation a bit.

You see the favorite tile box on the right side in the image below.

Until next blogpost!


Sunday, 27 November 2011

New Enemy Graphics!


This weekend I hosted DreamCode Winter 2011, where 11 inde game developers got together and we had tons of fun coding and showing our games to each other.

During this weekend I finished the Sound FX section in the world builder and also put some new graphics into the game. I have not received all animations for the enemies, but that will come soon :).

If you wonder why there's no "flashy" damage showing off on the main character, it's because there is no "take-damage" animation for the main player yet, so you'll see him aiming his gun in some direction instead

And the reason why you really stopped by, the youtube video:

Until next post!


Thursday, 10 November 2011

New Character + Multiplayer test


I was thinking about waiting until I had all the main character animations in place until making a new blogpost, but thought... It can't hurt to show him off a bit earlier.
There is two animations coming in soon: spin jump & running animation without shooting.

I'm currently working on fixing the the main character & other stuff running as it should in multiplayer. I have a few things to add, and also a couple of things to add timers to. Since switching from frame-based rendering to time-based rendering, I still have not tied up all the loose ends. But, what matters is that the project is going forward, and more things are being added and fixed with time!

One example of a loose end for example is that the enemy death animation is not displayed when the other player killed it. This is old network code not sending the right state. However, these things are quickly fixed!

And the real reason why you came here: The YouTube Video:

Until Next Post!


Thursday, 20 October 2011

Memory Leak fixes & Tech Demo 2 info


I've been coding on many different things for the game these last days, and while I'm testing different stuff I sometimes forget that things get "messy" and that memory leaks appear because of forgetting to free up allocated memory that no longer is in use. Anyway, to get to bottom of things I had to do some code cleanup, and then found the nasty little buggers that was crawling around the system every frame, allocating more memory.

I took me about an hour to get things sorted out and up and running without leaking memory.

I'm now working on adding "Unit/Entity Sound" for the world builder, so that my sound/musician, Josef Falkensköld, easily can add sounds to enemies/objects and other stuff in the game.

Adding sounds to units/entities will be very easy. First he selects which unit/entity to add sound to, then click the "SoundFX" button to bring up the interface for adding sounds. On the top there will be a row with buttons with sound descriptions on them: "Attack, die, jump, move" etc. He then clicks on one of them and a directory listing will come up where he can browse for the sound he wants to use, click on it, and  "wham", that sound is rigged. The sound effect he rigged, will play when that action triggers in the game.

When clicking on one of the sound buttons in the editor, for example attack, the assigned sound for attack will be played. The name of the selected sound will also be displayed on screen.

Tech Demo 2:

It takes time to write your own game editor / engine and get all things working as you want. The engine & editor has come a long way, and I'm now thinking about releasing "Tech Demo 2" in the near future. I'm not going to put up any date of when it will be released, but by following the blog, you can tell when it draws near.

The following will be included in Tech Demo 2:
  • 2 Player CO-OP, using the new working networkcode
  • Main character graphics
  • New main menu look
  • Enemy graphics (Crawler, Stomper, Floater, Creep)
  • Beautiful parallax scrolling background of the surface area
  • 15+ rooms to explore.
  • The first boss
  • The first "Surface Music" track by Falkensköld
  • Sound effects for the main character, enemies and other elements in the tech demo - by Falkensköld
Here's a preview of what the main character will look like!

 Until next blogpost!


Friday, 14 October 2011

Passage Blocker!

Hello again!

Today I decided to code the "passage blocker" that hinders the player from going back from a boss fight. It can also be used to block the player and push him to find a new way around in the game world.

The passage blocker can be triggered to self-destruct, once a boss on the same map is killed.

And the reason you really stopped by, the Youtube video:

Still lots of placeholder graphics, real graphics will come later.

See you next post!


Monday, 10 October 2011

Prallax Scrolling Backgrounds!

Hello again!

My graphic artist asked me if we were going to have parallax scrolling backgrounds in the game. This was before I made the 3.5 times speed increase of the game. Back then I thought: Let's try. But after the speed increase of the game engine, this became mandatory for me.

So after some good work in early mornings, in-between family quality time, and work I managed to put together the Parallax scrolling in two days!

The backgrounds are of course placeholder stuff until my graphic artist sends me the finished stuff!

And the real reason you came by: The YouTube Video

Until next post!


Thursday, 6 October 2011

Huge Performance Increase!


I noticed this morning that I had not set the "SDL_RLEACCEL" flag on the background surface. This stands for "run length encoding acceleration", and usually gives a good performance increase. However, in this case it was a HUGE difference.

Before the fix, the game was running in about 134-137 frames/second (on my computer). Now it runs with 475-520 frames / second, depending on how many tiles that has to be drawn on screen. More graphics on screen = less fps, naturally.

The game speed gained is about 3.5 - 3.7 faster!! Not bad at all :)

So remember to go over old code you've written sometimes and make sure things have been set up properly.

For the SDL interested ones, this is how you set it up:

Until next post!


Monday, 3 October 2011

Frame Based Rendering -> Time Based Rendering


I decided to take a break from the AI coding and focus on one of the things that has been on my TODO list for some time: Change the game from frame based rendering to time based rendering.

What is frame based rendering?

Frame based rendering works in the following way:

First you lock the game to how many frames / second it shall run in, say 60 FPS.
Then you let X number of frames pass before you do something.
This will limit to game to not run any faster than  60 frames / second, and some older computers might not be able to handle the game.

What is time based rendering?

You set timers for everything that needs updating. For example: Move enemy, Input from the user for moving the player, update gravity on objects etc.

The game is no longer needed to run at a locked speed (60 FPS). The game will run with as fast as you computer can handle. On todays computers the game will run in around 90-150 frames / sec.

Since everything is time based, things will run at the same speed even down to 30 frames / sec, and still look fluent on older PC's.


I'm now 99% done with the conversion to Time Based Rendering, I only have some minor things to tweak (set the right millisecond delay on things) and I'm done.

See you next post!


Thursday, 29 September 2011

Stomper AI


I've done some more AI coding, and finished the "Stomper AI" this morning.
This is the 7th AI I coded for the game. I'm thinking about having 10-15 AI, so only a couple of more to go :)

And, what you really came here for: the YouTube video:

As you clearly can see, the enemy is placeholder, the real graphics will come later. This is only to show you what the different AI patterns look like.

Until next post!


Tuesday, 27 September 2011

New AI: Suicide Floater

Hi Guys, and Ladies!

OK!, I'm back with a new enemy AI, the "Suicide Floater".

If the player comes close to the floater, it homes in on the player and attacks.
In the video, I've slowed down the enemy so you better can see what happens. You also get a view of the "Spiked balls" that uses an old AI that i wrote called "jump n run".

Here's the youtube video:

Notice :Most of the enemies are placeholders drawn real quick by me to have something to test with. The graphics will be replaced later. This is only to show you the different AI patterns that will be used in game.
Until next blogpost


Sunday, 25 September 2011

Lurker AI

Hi again!

As you've probably noticed, I'm writing the different enemy AI for the game. I started with what I thought would the hardest one to implement: "the crawler", and now I'm creating the other "easier" ones.

This morning I finished the "Lurker" AI. The ememy lies in wait for its prey, and once it walks under it, it strikes, falling down upon its victim.

As you can see, the graphics is placeholder and non-animated. I simply drew a quick sprite in GIMP and threw it in. The real graphics will come later. This video is only showing how the enemy AI works.

Here's the youtube video:

And, now it's time to go to work!

Until next blogpost!


Thursday, 22 September 2011

New Enemy AI System


I've coded away in-between all things going on (flu, work & daily family life), and I've now completed my new enemy AI system. The new system allows me to switch AI on enemies. This will greatly remove lots of extra coding for bosses, I will simply switch AI and let them do something else.

Also, I completed the 4th AI for the game now: The Crawler, which follows walls.

Here's the YouTube video to quench your thirst for more updates on this game

Until Next blogpost!


Wednesday, 24 August 2011

Sprite Rotater Program!

Hi Guys!

I was working on sprite rotations for the game, and thought: Let's see if there's something interesting on the internet.

I found an interesting program written by XenoWhirl called "RotSprite".
It produced the best rotated images I've seen so far. The only problem was: No Source Code!

He did describe a little of how the algorithm works:

To most of us, "the more detailed version" is a lot of "mumbo-jumbo" (Lots of extra calculations and math and.... stuff) so I decided to try a more simple aproach to it and see what results I could produce.

And Lo And Behold! I came up with something very similar with good results:

 YouTube Video:

As you all know! "Sharing is Caring!" Therefore I'm now releasing the Source Code & the Binaries for Linux & Windows of this algorithm and the program!

Updates will come with time, but for now you can give it a go!

You can download The sprite rotater with binary + Source on the menu to the right.

Until next blogpost!


Tuesday, 16 August 2011

New Sprite / Entity Importer!


Recently I've been working on the tool to create sprites within the Map Editor (will be renamed to world creator soon), and today I'm releasing a video showing you what it can do.

I have been clumsy naming the stuff "Unit", instead off "Entity", but done is done, and can be changed ;).

Earlier I had the sprites hard-coded for the game and had to write lots of lines of code just to add a new entity to the game (object, enemy etc). I decided to change this and wrote the Entity Importer. Now it only takes a few minutes to import a new entity to the game, set its properties, create its animations and place it in the game world.

And the reason you really stopped by: The YouTube Video:

Until next post!


Wednesday, 20 July 2011

New Tile Animation System!


Early on in the development I hardcoded a few tile animations, meaning that if I want to add one more, I had to do it in code, which would take 5-10 minutes / animation.

I therefore decided to create a tile animation system that was integrated with the map editor for the game.

The only limitation with the new system is that the tile animations have to be in one row in the .png image, but that's not really a problem.

The system can load in tiles that are stored with grid, or without grid in the .png file.

 Here's the YouTube Video:

Until next blogpost!


Friday, 15 July 2011

Item & Energy drops from enemies working!

Hello again!

This morning I finished the "Enemy Drop" system. When the player shoots an enemy it can drop either energy or an item.

Not really much more to say ^^.

And the YouTube Video:

Until next post!


Tuesday, 12 July 2011

Next Probe Feature Completed: Probe Drill

New Probe Feature: Probe Drill

Today I completed the next probe feature: Probe Drill. Well.... almost at least ;), got to throw in materials to "mine" for as well.  The probe drill mode will be used to mine materials (will be visible on walls) and to find hidden passages and secrets like i show in the YouTube video.

As you can see in the video, a new tile set is in the making. I will receive more tiles from the pixel artist I hired this week, so the videos will look better and better with each post ^^.

Next up is adding: Enemy drop & materials to drill for in the walls. (might add a few more things as well.)

And, the reason you really came by (as usual), the YouTube Video:

(note: The drilling has been modified after this movie was made, it now behaves more like a drill, and has a "resistance" feeling when drilling through the blocks, instead of cutting right through them).

Until Next post....


Monday, 27 June 2011

New Probe Feature: Projectile

Hello again!

I'm now focusing more on the forgotten planet and getting lots of things done.

The probe mode: "Protection", has been updated and the probe now rotates around the player in this mode, following the player.

I also coded the first Feature for the protection mode which is :Projectile.

The probe fires when the player fires.

Next up will be to program the next probe feature.

And the reason you really came here.... The youtube video:

Until next post!


Saturday, 25 June 2011

Pixel Artist Hired!


I have hired a pixel artist that will do tiles and enemies for the game!

You can check out some of his art here: Artist Portfolio

We are aiming to create graphics with similar quality to Metroid Fusion / Zero Mission.

Until next post!


Saturday, 18 June 2011

The Forgotten Planet - New Network Code!

New Network Code!

Hello everyone!

Sorry for not posting in a looong time. I've been busy with life: Family, Job, Friends and tons of fun stuff IRL.

The old network code was buggy and did not work properly so I decided to rewrite the whole thing. After cleaning up most of the code and changing how I did things It started to work In Linux! But! As usual... windows didn't like my network code... so I had to rewrite some stuff again! Took me a while and the result is slower loading between rooms for players, but at least now it works!
Players won't be to sad waiting about 3-4 sec while the room and unit data is sent from the other player when entering his room.

I also managed to speed up the enemy data between players, so enemy movement is much more smooth now.

And the reason you really came by:

The Youtube Video

Until Next Post!


Saturday, 30 April 2011

Gameplay up and running on the Android "mini-game" we're making.

Hello again!

Today I have gameplay up and running on our mini-game for Android (I want to give spoilers, but you'll have to wait until we release it soon(TM) ). There are a few more things to add to perfect the gameplay, but nevertheless, it's playable!

Next up after that is writing the highscore table and fix the "name input" for it.

And after that it's Alpha/Beta testing (should not take long) and we'll put it out on Android Market.


Tuesday, 19 April 2011

SDL Android Port Configure Menu removal when app starts.

Hello again!

While working on the game for Android I realized that the config menu that pops up when you boot the application is annoying since the user have to scroll down on the menu and press the "ok" button in order to get in-game.

I went in to the java code and disabled it.

Here's how you can do it too:

How to disable the startup config  menu:

1. Open up

Find these two lines and comment them just like I've done here



Save & close file.

2. Open up

Insert these two lines above the builder.setSingleChoiceItems section.


Now comment the whole builder section:

/*builder.setSingleChoiceItems(items.toArray(new CharSequence[0]), MainMenuLastSelected, new DialogInterface.OnClickListener()

    if( item == selected )

Find the ";" line just under the builderSingeChoiceItems section and comment it:


Save and close file.

3. (Optional) Open up and hardcode the values you want for the device like:

public static boolean AppUsesMouse = true;  //false;


Also remember that you can set these values in your AndroidAppSettings.cfg file.

I hardcoded the values too to be on the safe side, in case I forgot to add a value in the .cfg file.

Now your ready to build and run your application without the config menu.

Until next post!


Friday, 25 February 2011

Working on speeding up things on the Android.

Hello again!

Programming for the Android is really fun and a challenge!

At the moment we, (me and 2 other nice swedish guys) are making a mini game where I explore how I can get the best performance on Android 2.2. The game will be released on the android market once completed. (No spoilers available!).

For starters I have managed to get 160 objects moving on the screen and have between 40-45 fps. I will continue to explore how to speed things up.

Until next post!

Thursday, 10 February 2011

The Forgotten Planet Running on Android 2.2!

Hi Guys.

Today I managed to build The Forgotten Planet for Android 2.2.
All network code was removed in order to get the game up and running.

The first step has been made: The game runs, but very slow! The code is far from optimized for the android platform and I will now experiment and look for different solutions how I can get the game up to speed.

I'm having like 2-3 FPS in-game in this video:

Until next blog!


Monday, 7 February 2011

SDL 1.2 Running on my Android 2.2 Phone!

Hi Guys!

Lately I've discovered that you can run SDL games on your android phone!
So guess what I've been up to?....

Yes, you're right!, I've been trying to get SDL running on my Android phone, and today I finally got it working!

Porting The Forgotten Planet to the android phone will soon start, but there will only be single player on the phone, since SDL_net has not yet been ported to Android (as far as I know).

Here is a video of the first successful SDL compilation I've done for the android:

Many thanks to: Pelya who has ported SDL 1.2 & SDL 1.3 to Android.

Click -> Link to Peleya's SDL port

Until Next blog post


Thursday, 27 January 2011

Tech Demo Release!

Hello everyone!

Here's what you've been waiting for! The first "The Forgotten Planet Tech Demo".

I've been working on solving a stupid bug that only happens on the windows client (As usual windows sucks, and Linux rules when it comes to handling stuff you've coded). But since I've promised to relase a tech demo last week, and we're past that already, I've decided to relase the tech demo with the bug anyway.

The bug occurs when: Host walks in to the clients room for the third time in a row. BOOM, client dies. Anyhow you can still try out the four rooms, probe bombing and jumping on the probe in hover platform mode.

See if you can exploit the probe and fly on it! (Yes it's possible, but collisions are not proper then and you might fall outside the map :P. I left it in there for fun. (It's still something I'm working on which will be in-game later on).

Download Here: The Forgotten Planet Tech Demo

Both linux & windows executables are inside. You can also run the game with wine in linux (in case you don't know how to set up things).

I will now start to clean up and rewrite the network code to make sure this kind of problem won't occur again (as easily)

Until next blogpost!


Friday, 14 January 2011

Building the 4 Tech Demo rooms, then release!

Hi again!

Good news!

The ugly cockroach that was creeping around in the system has been exterminated!

Next up is designing the 4 Tech Demo rooms and do some extra bug testing to make sure things are ok. My good friend "valpskott" is going to design 2 of the rooms, and I'll be doing the other two.

The Tech Demo should be out sometime next week!

Until Next Blogpost with the Tech Demo Release!


Thursday, 13 January 2011

Fixing the last (known) bugs before release!

Hi again!

Just wanted to give you a small update and tell you that the last bugs are being squashed at the moment. There is one little tricky cockroach running around in the code and I think I've found him. I'm currently exterminating him with some debugging and should be ready to release the Tech Demo soon(TM)!

Until next blogpost!


Tuesday, 4 January 2011

Still working on it!

Hello again!

Sorry for yet another delay, I've been busy working and just happened to try out a new game (tip for game developers: Never do that!!) so as you might have figured out, i've been a little distracted lately.

Anyway,things have not been standing still. I fixed a few bugs both in the game engine and the Map Editor.

I'm now going to add a new feature to the map builder: "Room number." I'm changing the approach I have on sending room data between the players, and figured I wanted compare room numbers instead of a text string with the name of the map. This will also solve another bug i'm having in the code.

Enough talking, back to coding!