July update on my projects

It looks like this month I can spend some more time on coding and stuff for my games. Additionally, as my Raspberry Pi arrived last week, I have some extra motivation to make my pygame based games run on it.

Bottlecolonies running on the Raspberry Pi.

The latter is not as easy as I thought initially. With its rather limited hardware the Pi provides quite a challenge for my game Bottlecolonies to run in an acceptable speed. So I started profiling and optimizing my code which is quite an interesting experience so far.

For example, I was able to make blitting my number font three times faster by removing an unnecessary surface copy in every call. With that success I will continue to search for bottlenecks in my code to remove them. On a standard PC I wouldn’t even have noticed.

This is the hardware I’m talking about. Runs Linux.

There is a second project I haven’t forgotten yet, which makes most of the traffic on this blog. That is my Experimental Gameplay Project prototype “Infinite Floating Islands“. The prototype has been made in less than a week and was quite buggy but has over 100 downloads so far and I really like tha basic idea of it. (Just for comparison, Bottlecolonies’ postcompo versions, which are much more “finished”, have a cumulate download count of about 15)

I tried to remove the bugs of the prototype by heavy refactoring but haven’t gotten that far actually. So it looks like I have to start this again from scratch to make it stable and expand on the idea.

Still extremely buggy.

So that’s it for now. Expect some more regular updates on this blog about those projects.

Background Facts and Future Plans

In this post I want to give some background information about the Experimental Gameplay Project February entry “Infinite Floating Islands“. These will cover some of the unrealized ideas and features of the game and some technical background. Additionally I will sketch some possible future plans what to do with my proof of concept.

The basic idea

The idea to make a 1,5D sidescrolling game for the infinite game world theme came quite early. I thought more about technical limitations of an infinite game world than game mechanics in the first place, so a 1D approach where the player only can travel left and right seemed appropriate.

First mockup of the game.

I had a very clear idea how to implement storage of the world data to make a persistent game world. This was supposed to be procedural seed-based with an additional data structure for the actual state of the world. The sketch for the save looked like that:

global_seed
list_of_islands: (local_seed, id, global_x, local_x, y)

The coordinates should be saved for faster access in minimap creation. Every other attribute of the islands could be re-generated based on the seed with the island’s seed saved for faster processing. Unfortunately I didn’t manage to implement any saving of the world data within the week of the challenge.

Missing features

Aside from saving the world there were some other things I initially planned to implement during the development week. The most important one would have been some sort of local biomes so that the player would reach different areas while travelling. These areas would have a different randomized setting for the procedural world and island generation with alternating sets of sprites and background colours. I think this would have made the exploration way more interesting.

Additional missing features are more of a visual nature. One should have been an open cable car to travel, similar to the one on the mockup above.

Future features

Thinking about expanding the game idea I have some more features in mind to make this into a real game.

  • Dungeon exploration (one or more persistent dungeons/caves can be found on the island)
  • Warring NPC faction which the player can help or sabotage
  • Economy
  • Resources becoming more and more sparse the further the player travels
  • Skill-based RPG on the player’s character with three different win conditions for the game (master huckster, master archaeologist, master schemer)
  • No direct fighting

Reception of the prototype

At the time writing this there have been 55 downloads of the game archive. I didn’t get any direct feedback by now but this number is quite impressive for my personal context. For me personally this one week challenge was a great experience about how far I can come within these constraints. So I’m quite motivated to expand this game idea which brings me to the final part of this post.

Next steps

Admittedly the actual release of the game prototype is quite buggy. I plan to remove the bugs which mainly were caused by dirty coding under time pressure. Additionally I’d like to add distinct areas the player can reach while travelling. This improved version I would like to post to a broader audience for some feedback (TIGsource forums for example).

At least this bug is already sorted out.

Let’s see what will evolve from the Infinite Floating Islands.

Infinite Floating Islands

Note! This blog and content is now hosted and continued at
 blog.rustybotgames.net !

And it is finished!

After a week of regular evening game development, my entry for the experimental gameplay project’s February challenge is finished. You can download a windows executable here (Unzip and start ‘island.exe’):

Infinite Floating Islands

[Update:] Here you can find some background information and future plans for the game. [/Update]

This is rather a proof of concept than a real game, but I am quite happy with the basic concept. There is potential to make more out of it.

When algorithms fail

As you can see on the screenshot below, the first test in creating new islands on the fly caused the connector algorithm to fail hard. It’s to late today to investigate this problem any further. As my personal deadline for this one-week challenge is in 23 hrs and as I am going to sleep now, chances are rather bad to get this game finished as intended. Nevertheless, I will try to fix these issues tomorrow.

Code is getting messy

Made some progress today with implementing an animated player and movement to another island. As suggested by my wife, the player character is a monkey. The movement as shown in the screenshot is rather symbolic at the moment. My code is looking quite messy now and working as tired as I am actually doesn’t help. Probably tomorrow I will regret working on the game so tired. Next milestone is to enable on-the-fly creation of new floating islands.

The world is shaping up

Worked on visualising the gameworld today, which yesterday only existed as numbers. Also scrolling works now. The two screenshots show the starting point of a world with the first few generated islands. Making additional islands on the fly is not yet triggered but one of the next steps to come. Further steps to implement are a moving player to explore the world and some fancy description texts for the stuff one finds.

On the screenshots you can also find one of the two new npcs I made today as requested by my 2,5 years old daughter. This one is a robot and the other one (not on these screenshots) is supposed to look like a pirate.