About ashen


Ludum Dare 28

ashen's Trophies

ashen's Archive

“Happiness (is) only real when shared.”

Posted by
Tuesday, January 7th, 2014 4:02 am

For the first time, after almost 15 years as a so called “grown-up software developer”, I have finally shared a game that I created with strangers.

I’ve always found it funny how game programming is seen as childish and quaint by so many “grown-up software developers”. For many years I was one of these people due mostly to peer pressure and the need for conformity, but I never truly believed it.

Combining real-time game programming skills (game loops, time-slicing, threading, AI) with the huge creativity required to generate game ideas, graphics, music, sound etc has got to be one of the hardest things to do in the entire world of software.

In my opinion, there are very few pastimes/careers other than game programming that provide the same test of your ability to switch continually from right-brain thinking to left-brain thinking for extended periods.

So everyone who has actually made a playable game (regardless of ratings) in this compo should be very, very proud!

It’s great that people have got some enjoyment from my game. But it’s the actual sharing of it and feedback that has given me real happiness.

Thanks Ludum Dare!

The amazing/crazy story behind the quote in the title.

Post mortem – Isles of Solara

Posted by
Wednesday, January 1st, 2014 6:57 am

Isles of Solara updated
Isles of Solara is an exploration / RTS style game where you use the fickle wind to sail around a uniquely generated world, fight off pirates and settle your people on a resource rich island.
NB: This is a shot of the updated, post compo version.

Play and rate the game here!

This was my first Ludum Dare 48 competition and I was actually surprised that I didn’t encounter any major problems. I had read a few survival guides before hand and gained some really good tips, the most important for me was to actually eat regularly and sleep.

I felt clear headed and full of energy on Sunday, thanks to the 7.5 hours of sleep. It is sometimes really tough to walk away from the PC and go to bed when you’re in the zone making things, but it I’ve found through hard experience that it is essential to have that break.

I did go late on Sunday night as the comp starts 1pm Saturday and finishes a 11am Monday local time. So Monday was a write off, but I got everything done during the night/early morning so it wasn’t too bad.

Dev platform

I’m happy with the choice of Java to make the game. The JAR creation process is really quite easy in Eclipse and most people seemed able to play the game ok. Most issues with Java seem to come back to the JRE version on your system (1.7 is required).


As usual (for me) the thing that I felt I wasted most time on was coming up with half decent graphics. After deciding on 2D tiles I initially spent too long working out how to avoid having to manually draw all possible 256 transitions for every tile type to every other type.

I eventually decided to bypass this altogether and create slightly over-sized irregular shaped tiles that then overlapped automatically when drawn. Each world tile had it’s own random id which the view used to sort and draw the visible tiles. This gave a good random appearance to tile edges and makes adding new tiles very easy. But sub one tile transitions, like beaches, are not really supported in this approach though (they need to be a whole tile).

Game states

The State machine pattern I used was an absolute life saver. I brought it in from one of my other projects and improved a bit it during the comp.

The reason it was so important is that it allowed me to immediately create the state classes that represent things like Main Menu State, Play Game State, Win State, Lose State.

Firstly, these states are placeholders that I can then focus on filling with actual functionality. Secondly, from a gameplay perspective, I knew that until the player could actually get to both the Win State and Lose State to the user, I didn’t have a playable game, just a demo.

For me this was very important. It made me constantly think “what does the player actually need to do to see the Win/Lose states?”. Getting towards the end of the comp and focusing on this, even at the expense of the many other things I could do, ensured that I didn’t get sidetracked and actually finished the game.

World generation and Wind creation.

Simplex noise is the improved version of Perlin noise that has been used in numerous games (and movies) over the years to create nature/random levels textures and other data. This made the world generation pretty straight forward using my custom Simplex noise library. Generated values above 0.5 are land tiles and below are sea. I spent some time tweaking the noise functions (just a few calls to generate the base noise) to create largish islands as well as plenty of tiny islands that would become rock hazards. Rather than come to a black border at the edge of the world I decided to use tiled noise so that you can sail “around the world” arriving back where you started eventually. I think this works quite well.

Simplex noise is more efficient than the older Perlin noise so I decided to also use it to create an ever changing air pressure grid using low octave noise (ie faster). The noise is cycled in the x and y coordinates to make the “air pressure” values change over time.

The wind at a certain location is then just a single vector that is the sum of 8 neighbouring air pressure values at a set distance (8 tiles) away. I’m really happy with this as it is essential to allowing other objects (such as ships) to use the wind vector to sail around the world. The 2D vector Dot product then allowed me to easily create the sailing with the wind / against the wind mechanic.

Simplex noise was a real time saver as it allowed me to skip the level creation process. However spending time tweaking the results is essential if you want to create levels / worlds that support half decent gameplay.


Things that I didn’t finish to my satisfaction:
– Pirate ship AI is very weak. They shoot at you when near but are brain dead when it comes to avoiding rocks and land. Need to add this urgently if I expand the game.
– More complex settler strategy where settlers have needs that they fulfill as required rather than the current random checking for nearby resources.
– Weather effects such as clouds, storms, rain that affect ship sailing.
– Ship repair and upgrades.
– More collectable items such as treasure and goods.
– No music. Was planning to use Autotracker or cGMusic but ran out of time.

Overall this was a really fun experience and the fact that some people have got some enjoyment even out of this incomplete game is makes it more than worthwhile. I’m adding some small improvements to the game in the updated version (available from the main game page). If I get more inspiration I might even turn this into a real game down the track a bit.

Thanks for reading.


Isles of Solara – Updated version

Posted by
Saturday, December 21st, 2013 10:51 pm

I’ve created an updated version of my LD28 game containing a number of suggestions from people who left comments.

Download the updated version here.

Isles of Solara updated

The main additions are:

  • Your ship is automatically repaired when you are anchored near your settlement flag (if the settlement has wood).
  • Coral that damages your ship like rocks.
  • Keyboard shortcuts, shown next to the button.
  • A cannon reload meter.
  • A bit more game balancing (still not perfect though).
  • Clouds (cosmetic at this stage).
  • Mountains and hills (cosmetic at this stage).
  • Some graphical improvements.
  • Others I’ve probably forgotten.

This is just to say thanks for the good comments people have made on the game. I may still create a fuller game based on this as I find it fun too.

Oh yes, use the original LD version and not this if you intend to rate the game.


Isles of Solara – Timelapse

Posted by
Wednesday, December 18th, 2013 7:00 am

Isles of Solara is a little RTS / exploration style game with quite unique controls that I made for this LD48. Try it out here!

Isles of Solara

This is the timelapse of my entire time working on it. It actually adds up to about 30 hours which can be seen from the clock at the far right. The other 18 hours I was having a break, sleeping and eating.

The video is very widescreen as I was capturing two monitors, so you may need to zoom out to see the clock and my comments (No music, sorry).

It’s probably of most interest only to me, but at least everyone can see my setup in action and the time and effort involved.


Posted by
Sunday, December 15th, 2013 8:02 pm

My first entry for the 48 hour competition is now done.

Isles of Solara let’s you sail around a uniquely generated world of islands powered only by the wind. Of course you have cannons to shoot the annoying pirates and their lairs. Once you find a nice place to stay, settle your people here and help them grow by collecting resources until they create a town of 100 people.

Protecting your settlement

I’m generally happy with what I got done in 2 days. I didn’t get time to play test the settlement part properly so it may be too easy/hard or too based on luck. It’s fun watching the little guys run around though. The in game help is flaky due to timing issues but it should give some useful tips at least.

Play and rate the game here.

Second progress update

Posted by
Saturday, December 14th, 2013 11:18 pm

With 19 hours to go I’m getting tired but still quite positive about everything.

Heres a screenshot showing opposition AI and combat:

Progress 2

Need to finish off gameplay, add sounds and music and really tidy up the UI.

After almost 5 hours.

Posted by
Saturday, December 14th, 2013 12:11 am

After spending the first hour thinking, acutally not at the computer I’ve reached my first goal, get something on the screen that I can control.

I’m making a 2d exploring type game where you control a ship and have to decide which single island your settlers would have the best chance of surviving on. Once you deploy them on the island you need to then aid them in survival by finding resources on other islands until they get to a target goal population and you win.

Here’s a in progress screenshot:

First progress screenshot.

Lot’s more to do, not too far behind where I wanted to be. It’s been fun so far but it’s still just 6pm where I am so not tired yet.

Time to do it.

Posted by
Sunday, December 8th, 2013 6:06 am

I’m going to try Ludum Dare (compo) for the first time.

Goal 1: Finish an actual game, not an engine or technical demo.

Goal 2: Make it fun.

Goal 3: Learn something.

My setup:

  • Code: Java / Eclipse.
  • Graphics: PSP7, PSP8, Aseprite, Inkscape.
  • Sound: Bfxr, Musagi, Sunvox, Audacity, Autotracker.

I’ll also use some basic java code libraries I’ve made for other hobby projects. These include a state system, sound, simplex noise and ui classes.

I’m new to Java game programming so I’ve been looking at Notch’s code for Prelude of the Chambered and Breaking the Tower.  So I’ll be creating a similar fixed time-step game loop and graphics/bitmap classes but only as a starting point.  The game I make on top of that will be entirely my own.

[cache: storing page]