Ludum Dare is always a thing that I’m looking forward to, and as always I joined the jam and started working. I will talk about the things I’ve done in chronological order (with time stamps).
I chose to jam solo, this means I made all assets and scripts alone.
The theme of the jam was: Ancient Technologies.
I choose the myth about Archimedes, who used mirrors to burn invading Roman boats. The player will control a tower that can shoot sun rays towards boats (by aiming the mouse and pressing the left mouse button). These boats will spawn by numbers increasing by the day and sail towards the center of the screen where your island is placed. The player is able to buy upgrades after each day to help him or her survive.
Design (48 hours left):
Mirrors are harder to make as a playeable character. If the mirrors are on the ground, it will be a hard time to shoot sun rays all across the island. I decided to mount the mirror on a tower top to give it more mobility.
Modelling (44 hours left):
I knew I needed atleast a tower, a standard boat, houses and an island.
For the boat I choose to make a trireme (greek ship) and to animate the peddles to make it less idle. The (now changed to) lens must be able to look at the position of the mouse press, so it needed to be skinned to a separate joint than the rest of the tower.
Basic Lens Scripting (43 hours left):
First I needed to program the raycast from tower position to mouse position. This was rather easy, but I also needed to make it visual. A ray mesh would be used, with a joint by the base and a joint by the end. The base joint would be linked to the lens tower and the end joint would be linked to mouse position when pressed. A little detail I added was making the ray invisble when not pressing, otherwise it would be confusing for the player when he or she isn’t pressing the mouse button.
Basic Enemy Scripting (40 hours left):
This was really the basic part of the enemy (no fancy stuff here).
Making the boats spawn in a pattern (the first pattern was an arrow shape) and let them sail towards the island. At first the boats didn’t stopped when they reached the island creating some funny moments.
Basic Interaction Scripting (38 hours left):
Whats a sun ray and a boat if it can’t interact with each other? Atleast it isn’t a game!
I needed to script the interaction (damage) the boats will have with the sun ray. This was rather simple and just a matter of variables decreasing. For the death state of the ship I choose to add a rigidbody and release an explosion force and instantiate a explosion particle on death. I choose to add a burning state for the boats. If you decreased their health bellow a certain point they would start to burn (like ants and a magnifying glass glass). When a boat is burning it will take a small amount of damage over time. This created a situation where the player can choose to set all boats in fire or take more time per boat to totally destroy them.
Sleep, eat and other things (30 hours left):
Scylla enemy (28 hours left):
I wanted to create another enemy. A boss enemy. I decided to take the Scylla and create a boss enemy from that. This was a homage to the game Age of Mythology, that I’ve played alot as little kid. The Scylla is bigger and stronger than the boats but won’t spawn as often.
Island health (27 hours left):
It would be weird if you can’t lose the game, wouldn’t it? The island needed health to be able to lose the game. The boats also needed to do damage once they are next to your island. The healthbar is visible on the top center of your game.
Multiple patterns and spawn points (23 hours left):
To make the game less predictable I made multiple spawn patterns for the boats.
There is the strong arrow, weak arrow, square, split, line and donut spawn pattern. I wanted to create the patterns purely by script. But with the time limit in mind I created them as pattern prefabs with the spawn prefabs within. These prefabs communicated between each other to determine the dificulty and number of spawning ships.
P.S. There’s a random bug in the game that makes all the boats in a pattern do a barrel role. I found it funny enough to keep it in the game, giving it a quirky effect.
Rest time (21 hours):
I took a nice walk with a friend of mine who was also jamming. Clearing the mind and discussing things in life.
Difficulty per day (19 hours left):
As said in the pattern creation, the patterns had a difficulty setting. This variable determined how many ships were spawned within the pattern and if a Scylla was able to spawn. I linked this variable to the Game Manager which changed the dificulty based on days the player survived.
Upgrades per day (17 hours left):
If the player only needed to destroy ships the same amount of boats the game would become very dull and boring. However by changing the amount of boats based on days the player survived, would make the game impossible after surviving for some days. And still a bit dull to be honoust. I decided to add upgrades to the game. I started with 8 slots but changed it to 4 after realising I hadn’t enough time to create 8 unique upgrades. The first upgrade was the lens upgrade, which increased your attack. The second upgrade was the shield. A sphere that grows and pushes back enemies. The third upgrade heals your island back to health. The fourth upgrade places mines as bellow.
Sleep, eat and other things (13 hours left):
Small details (7 hours left):
There are some little details that makes a jam game for me. If you only add the necessary thing you forget to have fun. And fun is one of the important parts of the jame. I added a wave particle. These are particles that spawn from the (big) shell and have a negative speed. This way they moved inwards.
Another thing I really wanted to add was the possibility to destroy your own buildings. It doesn’t serve any goal but it’s just a little detail that create more fun for the player. After making the houses explode able I discovered that it felt a bit empty. I decided to add a character UI that would comment on your action making you more conscious of what you are doing when you are destroying your own buildings.
Peasant talking (3 hours left):
After adding the peasant comment on destroying your own building I decided to add more comments when doing certain tasks. This way I could give instructions to the player or give them little hints or game “flavour”.
Small polishes (1.5 hours left):
A friend gave me some feedback on the text the peasant character said when destroying the buildings. He said it was a generic text and it needed more “randomness”. So I changed the text and made a little randomization between texts, giving the character mutliple lines he could say per action.
The game is now finished and is downloadable here.
The project started easy with the idea being the second idea I had. Normally it takes around 4 to 5 ideas before I’m convident enough that I will start working on it. The jam actually went very smooth, however I wanted to add more things. As mentioned before, I wanted to create more upgrades letting the player have more freedom in his or her tactics. More enemies were also on the additional to do list. I wanted to have more variety in the enemy waves but the deadline was comming to close to make them.
However, putting aside all the things I wanted to add.
It was surpising to see how fast the production went. Creating the core of the game went really smooth and fast. If I had decided to do the Ludum Dare Jam instead of the Ludum Dare Compo, I would have been able to add much more details like the talking peasant and I would even been able to add the additional enemies and upgrades.
The thing I’m most proud of is the simple but yet pleasing visual style. It’s rather simplistic but the right effects and lighting makes the style do what it needs to do.
To do the Compo instead of the Jam was a conscious choice. The Jam would keep me occupied untill Tuesday. Being back from vacation, I wanted to get back to work on Monday and don’t use the additional day the Jam gets in comperison of the Compo, and as mentioned in the basic info, I worked alone and created the game from scratch, therefore classifying as a Compo project.
Jam Rating: 4 out of 5.