Generic placeholder image Laitida
Dim the Lights

Controls

  • Arrow keys - Moving the blob
  • X / Ctrl / Space - Shooting during the second phase
  • M - Toogle Music and/or SFX

Screenshots


...
...
...

Laitida

You were living peacefully in the Sunny Green Forest when the evil Master Fungi came to change everything.
Buried in an ancient mystic well, you will have to go deep into the abyss and find the force to defeat your enemy.

Behind the game

Laitida was made in the context of the One Game A Month. Thirty days are pretty short to make a complete and polished game. Since the rules of the 1GAM are flexible, I decided to take six weeks to be sure to finish the game properly.

I started with a small platformer prototype focused on a blob character resulting from my recent study of continuous collisions. Like in my previous project Falling, I was more interested by the descent aspect of the infinite jumper style. It's easy to climb up a tree, the hardest part is often the way down, because, you know, gravity and that kind of stuff.
After a few days of development, I got carried away by the narrative aspect I was thinking of in parallel. I wanted everything: a dual gameplay, a moving story, an immersive fantasy world. Classic Rookie mistake, especially when you have limited time.

I think this game was a formative experience. For the the first time I realized that game design isn't something you can improvise. I guess Laitida made me evolve from apprentice Developer to apprentice Game Developer, and I surely didn't press B.

The graphical background is highly inspired by a webgame I'm really fond of: Les Cavernes de Hammerfest. You should give it a try, this game is a masterpiece.

Inside the game

Programming

One of the major particularity of Laitida is that all graphics are made by code. All the elements are vectorial, drawn using the AS3 drawing API. Textures are generated with the .perlinNoise method of the BitmapData Class. The most interesting part would be the blob since it's real time animated.

Based on my study of continuous collisions, I get this blobby effect in a few simple steps:

  • I trapped some particles in a circle (checking collisions with the plane perpendicular to the normal when particles are in the radius area).
  • I applied an inverted gravity force which is influenced by the velocity of the blob.
  • I drawn the particles on a BitmapData instance, and then I applied a BlurFilter and the .threshold method to fuse the resulting meta-form (many thanks to Durss for teaching me this bitmap trick).

...

Creation steps of the real time animated blob

Regarding AI, flowers are just using attraction toward the blob position and repulsion from blob projectiles with an increasing factor proportional to the time spent in the shooting phase.
The mushroom boss is just following patterns, nothing particular.

Game Design

Right after the release of Laitida, I was sure to have a solid gameplay with minor flaws. But with time and players giving me feedback, I realized that the game had a lot of weaknesses.

A common mistake in both parts of the game is the lack of feedback regarding the goal of the player. In the first part, the shrinkage of the platforms is kind of a clue. But in the shooting part, there is no indication of the fact that the player is close to the end or not. Since death means a restart of the level, most of the players felt like this part was neverending and just quit before the end.

Another mistake was the difficulty of the game. There is no time for learning and it feels like a hard wall that is impossible to pass. One of the reasons of that mistake was that I playtested the game a lot, and I became used to it. It felt too easy and I didn't want an easy/boring game so I put a high difficulty level which could satisfy me.

I was convinced that tests were mainly to find bugs, but I was wrong. You need players to test your game in order to prevent this kind of mistakes.

Sound Design

In order to avoid the irritating repetition of a the bouncing sfx, I used the dynamic speed of play method that I used for car engines' sound in Crisis Car. Picking a random speed in a correct range allows a whole spectrum of bounce sfx with just one sound asset, giving the game richer sound effects.