Land Ahoy! - post-mortem

Hey folks! I did not want to advertise my game too much during the last two weeks as I have had almost no time to play or rate other games, but now that the rating begathon is finally over I thought I would write a few words. This was my first game jam ever and I am fairly happy with the game that I managed to produce, Land Ahoy! https://ldjam.com/events/ludum-dare/38/land-ahoy

LandAhoy2.png

The original plan was to team up with a few other people and make something in Unity or GM2 or some other fancy tool people usually use for this kind of thing. However, as the date grew nearer people bailed out and I was suddenly left with a choice; make something on my own or skip this LD altogehter. As my wife had already arranged other plans for the weekend I dedided I would try to make something on my own.

I have spent a considerable amount of my free time during the last few years writing my own game engine, so I decided to use that instead of an off-the-shelf tool. As I was to be the only team member this time around there would be no need to teach the tech to other people. Instead I could just jump in and start developing. Here's how it went.

What went right

I decided very quickly on what to make

I woke up on Saturday morning and checked out the theme for the jam. Unfortunately "A Small World" was not among the themes I had hoped for. However, I decided not to think about it that much but instead make the first thing that came to my mind. Somehow I thought about Christopher Columbus and how people used to be afraid they would fall off the world if they sailed too far. The gameplay kind-of organically formed around that idea. My tip is to not think about the theme that much. Even if the idea of the game is stupid, a nice execution can save it. (Not saying my execution is all that nice, more on that later).

I played to my strengths

I am a programmer, not an artist nor a designer. Because of this I made the gameplay mechanics very simple (maybe too simple?) and the art very basic. Since I wrote the tech that is running the game I knew exactly what to avoid and what to include. Also, I recently made the terrain editor for the engine (screenshot of the level editor below) and I was excited to try that out in an actual game. Eat your own dog food and all that...

ld_editor.png

For the art I went with a very simplistic approach. Low-poly, fairly quick to model and texture. The animations are all code-driven (the movement of the ship, the movement of the waves, chimney smoke particles etc).

I had a lot of fun!

I know this is not something you just "decide to have". However, the whole point for me was to have fun and develop my game making skills and I feel I did both of those. It was especially fun to make the art assets for the game, as that is something I don't get to do in my day job.

I finished it.

I made a game and released it, and within less than 72 hours I might add. I made due with what I had and came up with, sometimes hacky, solutions when required.

One example of a hacky solution involves the green arrow pointing towards the goal. I wanted to have a nice light pillar rising up from the goal, clearly signalling where you need to go. However, I had no time to do that as it would have required a special shader so I ended up modeling a big green arrow instead.

After adding the arrow to the level and making it move up and down I realized it is not visible enough. However, my engine's material system is really bad (I am rewriting the renderer as we speak) and making a glowing material is not really supported. To add to that, the front side of the arrow was in shadow. One easy way would have been to rotate the sunlight 180 degrees around the up-axis. That did not really work because the sun on the skybox was on the other side and rotating the skybox means swapping out the individual images which is error prone and would have taken too long.

At this point I was really tired so I did not think of the fact that the camera is locked to a top-down view and you only see the sun in free camera mode. Anyway, I did the thing that required the least amount of work and added a spotlight to the scene that makes the front of the arrow light up.

light_hack.png

Tadaa! Nicely lit arrow. This is probably the worst possible way to make such an effect but I did not want to break anything at this point. It might be a small performance hit but who cares.

What went wrong

I completed the core loop too late

The core loop of Land Ahoy! goes something like this:

  1. Consider where you want to launch the ship
  2. Aim and launch
  3. See how and where the ship went
  4. If the ship went over the edge of the map -> game over
  5. If the ship reached the port on The New World -> you win!
  6. Repeat steps 1-5.

At the end of day 1 I had almost none of that working. That was a very bad thing as I could not really call what I had a "game". Because of this I made it my top priority to finish the core loop as one of the first things on day 2. However, the core loop of any game should be one of the first things you make, to see if the game turns out good. I did finish it, but there was literally no time to iterate on the mechanics and I had to cut a few features. The biggest reason for all this is that I spent so much time during the first day on the art assets. The end result is a relatively nice looking (well, probably my nicest looking) but gameplay-wise fairly shallow game.

I spent too much time on non-essential art assets

Did I really need to make those fences? Or those shipwrecks? No, no I did not...

I left too little time for level design

The original plan was to have one large level with many paths and objectives to complete. Once I realized doing that would fight against the "small world" theme, I changed my plan to have 3-4 smaller levels where you would progress from one level to the next. This is one of my biggest failures with the project: I spent a few hours coding the system that would allow me to easily add levels to the game and chain them together. However, I only had time to design the one level.

ld32_progress3.png

The level that ended up in the game was made during the third and last day of the jam. I made no changes to the code at that time, save for a bugfix or two, and the design process was not nearly as fun as when I made silly test levels to try out newly developed features. In the end, the level turned out OK but it is fairly uninspired and easy to complete. Many people have finished it in three launches. Has anyone done it in two?

I had to drop too many features

I planned to have other ships in the levels, friendly ships that you would simply bounce off, as well as pirates that would sink your ship. I planned to have sea monsters that would throw you towards the edge of the map. I even planned upgrades, eg. the targeting computer system (yes) that would allow you to see the effect of wind on your trajectory. I wanted to have more animations, eg. the ship would visually fall off the world instead of simply stopping, I wanted to have water particles fall off the world at the edges.

And I wanted to have audio. I feel a game like this really should have a nice soundscape to help build the mood. After some consideration during the third day (which was a normal work day for me btw) I came to the conclusion that I should rather have no audio than bad audio. I am really very bad at making sound effects myself so I have to go through the slow and painful process trying to find good ones on the internet that I can use. This time around there was no time for that. I feel the end product suffered a lot from this.

Conclusion

I am glad I took part in this Ludum Dare. The end result may not have been what it should have been, but I am glad I released it. You people have been wonderful in your response, so thank you for that! Most of you seem to think there is potential here, which makes me very happy.

Until next time!