Main Screenshot

GlassMiners

GlassMiners is a 2d tile based game that is focused on coop. You and your friends are trying to reach as far as possible into an abandoned mine shaft - but be careful: There's monsters around!

In this game, you're constantly fighting against the pressure of time - if you run out of light, you're doomed. The further you progress, the higher your rewards will be.

Gameplay

Players can interact with a trader Using a mirror to redirect the beam The player must move a flag to get a higher score.

The mine shaft you will be entering again and again is based on a grid. The shaft is procedurally generated, so you will always face new challenges. In the mine, you will find walls built from bedrock that will hinder your progress, resources such as crystals or coals, dangerous pools of lava and, of course, the monsters.

It is your job to work together with your team to try to get as far down the shaft as possible, as that will determine your score for the round. Your beam of light is your most precious companion though - failing to keep it going will doom your expedition.

To progress through the mine, you can craft mirrors from shards. These mirrors can be used to divert your beam of light along a better path - for example to kill monsters in your way. You will also need to find the most efficient route through the mine, as time acts as a constant pressure

This game is still very early in development, so any parts of the gameplay are suspect to change. If you're interested, you're welcome to play-test for us!

Technical Details

GlassMiners is written from scratch using OpenGL. This allows the tech to be specialized to exactly what the game needs, making it small, performant and robust. It is written in a version of the Jai language - still under development by Jonathan Blow. Since the official compiler hasn't yet been released to the public, we've created our own version of the language (lovingly referred to as "Lidl-Jai"). You can find more information about the compiler on Victor's Homepage. The language is aimed at maximizing development efficiency while making programming more enjoyable, leading to better software as a result.


The game does not use an engine, the codebase merges together engine-parts with the actual gameplay. This tight coupling reduces development time and ensures that the technology is robust and optimized for its needs. This ensures a fast workflow - starting at compile times, over to quick refactorings all the way to hot-loading content.


The client communicates with the server over a custom TCP protocol. The client then acts as a "frontend" to the world state that is simulated on the server. This ensures consistency across all connected clients. The client uses OpenGL to draw sprites on the screen. For efficiency, these sprites are packed into a few sprite atlases. It also supports playing sounds through the OS-dependent APIs.
If you're interested in more technical details, feel free to take a look at the code on GitHub.

Snippet of entity-related code Snippet of the build system