Crystalline Bliss

About

Crystalline Bliss is a unique 3D puzzle game that unfolds across various voxel worlds. The game features two modes: peaceful and competitive. In peaceful mode, you place and clear crystals without any disturbances. In competitive mode, both bad and good events can be triggered by clearing crystals. The events can affect you and other players. These events can either assist in clearing your board or make it more challenging. Additionally, there's a special type of crystal that activates effects, altering the characteristics of the generated crystal sets. There are several of these effects; for instance, one might make your crystal set extremely small or large, another could randomly change some of the crystals to a different type, and another might transform your set into a different type altogether. The outcomes of these effects vary depending on their order.

I developed Crystalline Bliss mostly from scratch and released it on Steam. I created all the textures and music, while my sound designer friend, Tyler Quinn, handled the sound effects and served as the voice of the announcer.

The game employs the Divine Voxel Engine for texture and shader management. However, unlike typical implementations, the worlds are pre-generated, saved in a custom format that I devised. Levels are read in, decompressed, and each chunk's mesh buffer is sent to a thread for decompression before being forwarded to the main thread. The level buffers are stored in IndexedDB. This approach proved to be the fastest for level switching and storage for the time being.

One of the game's more complex challenges was developing AI for computer opponents. I offloaded their logic to a separate thread, as each AI must process extensive data to determine the optimal placement for the current crystal set. After identifying the best location, it calculates a path to that point and sends this path back to the main thread.

I also crafted my own multiplayer system using WebRTC, building a custom signaling server to connect players. Communication is streamlined through the use of array buffers via WebRTC's data channels. Multiplayer has not been officially released but is expected to launch soon.

Technology Used
  • TypeScript
  • Babylon.Js
  • Steam
  • Electron
  • NodeJs
  • WebPack

Screen Shots

No alt provided.
No alt provided.
No alt provided.
No alt provided.
No alt provided.
No alt provided.
No alt provided.
No alt provided.

Video