Out Of Insight

Jam: Siberian Game Jam at October 5, 2019 / Ludum Dare 45

Theme: „Start with nothing”.

Game page on the itch.io ← play in the browser (desktop with the keyboard only)

What do you mean?..
What do you mean?..

The void. The darkness. Can't remember anything. But I must, because the void is unbearable. Do it, do it! Something is sparkling at the edge of the consciousness. Must grab it, gather it, gather the meaning, the memory, the color. Have to remember. What happened? No, first things first. Now need to gather myself, to get the insight. Need to gather the right color.

The player controls a colorless, shapeless being flying through the passages of the subconscious gathering a color shards. To get to the next level the player have to mix colors into the needed one and to avoid walls and obstacles. Control is keyboard only, touch devices are not supported, sorry.

The Development Process

At this jam Scoba, a skilled VFX programmer, has joined our team. At the other hand, Meven and Nika were very busy and could not attend the event. We decided to take a risk and create a 3D game. Nobody of us done that before (and yes, life teaches us nothing).

Once, several weeks before the jam, Dina found this thing over the internet. It's a puzzle: all you need is to mix base colors and get the target one. We thought that this color mixing mechanics is interesting. After several days of discussions we combined it with a horizontal scroll-shooter mechanics (later the „shooter” component was eliminated). So, the concept was born: fly, gather needed colors, avoid unneeded ones, avoid obstacles, get to the next level, repeat.

Ivy was our only artist on this jam, that's why we invited Oksana to join the team, and we planned to look for 3D modellers on the jam. Arthur and Anhel did not agree on the game engine to use, and Arthur joined another team for this jam (they created a cool game about wending machine fighting other wending machines).

That was easy to fit the concept into the theme. Dina wrote a heartbreaking story about a man who fell into a coma, lost all of himself and now trying to gather himself back and to get back to the real world from the deeps of his subconscious.

Brainstorming before the start of the work (photo by Marina Utka)
Brainstorming before the start of the work (photo by Marina Utka)

Sophia and Oda were looking for a team to join, and we sat them at our table. Then we started. At the beginning the process was pretty hard: many of the present team members have met a hour ago and known nothing about each other. Fortunately, Oksana as a most experienced artist quickly took the leadership and started to coordinate artists' work. As an art lead, she sketched, painted, gave tasks and helped to other artists.

Our pretty artists (photo by Alice Pisareva)
Our pretty artists (photo by Alice Pisareva)

Anhel and Scoba were dealing with the code. Scoba was writing shaders, making lighting and 3D-effects, and the other shader magic. Anhel, as usual, was making a game logic with GDScript. There were no signs of an accident.

Scoba and the prototype (photo by Marina Utka)
Scoba and the prototype (photo by Marina Utka)

The prototype was ready pretty quickly. The character was flying controlled by the keyaboard, gathered the color bubbles, and died touching the obstacles. Main things are done, we thought. All that left is to mix gathered colors, set the mixed color to the character, and compare mixed color with the target one. Anhel was thinking: „All right, it's 2019. There must be a well-known color mixing algorithm on the internet. I'll just read and quickly implement it, and it's done. There can't be any difficulties.”

The. Big. Mistake.

There is no such alhorithm. All right, there is, and more than one, but all that algorithms has a limited scope. Neither additive nor subtractive algorithms suited our task. See, we needed something that works like „green + yellow = blue, red + blue = violet, etc”. So-called natural mixing. Like with real-life paints. Anhel found that there is the only perfect solution. It's called „the Kubelka-Munk theory”. It is used by the Krita and the last versions of Adobe Photoshop. It's complex. It's origins lays in the theory of spectroscopy and it explains the physical model of light reflection and refraction. If you're interested, here is a whitepaper on the application of this theory to the color mixing problem.

Certainly we needed a simpler solution. We abandoned this idea and started to experiment with limited algorithms and models. No one can trick the math and the physics, and results often was not as good as we wanted. Finally we stopped at the RYB color model (Red-Yellow-Blue) and additive color synthesis. It's not perfect either, but it gave us „green + blue = yellow” stuff.

We waste a huge amount of time on that color mixing investigations. But there was another problem. A color difference. The game calculates a trivial Cartesian distance between two points in the color cube. But human vision is non-linear. For example, two shades of green can be quite far away from each other, but looks very similar for the human eye, and two very close (in terms of the distance in the color cube) shades of blue are clearly distinguishable. Take a look at this wiki article. But we already were running out if time, so this mechanism was left as-is. It leads to strange behavior sometimes, when you can bet that you already got needed color, but the game says „Nope, it's only 70% match”. But… Whatever, that will do.

The time was over, and some goodies were not included into the game, like the storyline and cut scenes. Level generation itself is messy, camera movement is rough. Nevertheless, the game is pretty atmospheric and playable.

Want to see the art from missing cut scenes? Here it is! This pictures were made by Oksana Rar.

Our hero in the coma
Our hero in the coma

Victory! The hero woke up!
Victory! The hero woke up!

This one is for the bad ending
This one is for the bad ending

The Moral

Summary

We've got a lot of fun. We met very good people, performed tons of interesting experiments, and now we know our mistakes. We liked this jam and our unfinished game.

Photo by Marina Utka
Photo by Marina Utka

Photo by Marina Utka
Photo by Marina Utka

Photo by Marina Utka
Photo by Marina Utka

Photo by Marina Utka
Photo by Marina Utka

Photo by Anna Larchenko
Photo by Anna Larchenko

The Team

Dina Griko
game design, management, narrative, sound design
Oksana Rar
graphics, art lead
Anastasiya „Oda” Kuptsova
3D modelling
Evelina „Ivy” Mayer
graphics
Sophia Egorova
graphics
Anatoly „Anhel” Griko
game logic programming
Antoine „Scoba” Anger
VFX programming, 3D programming
Dmitry „Blazze Di” Aldagarov
music, sound effects, sound design

Technical Information