Perliner was started in Global Game Jam 2014 by one person. It won an award in one of the categories and is being continued ever since.

It's still in prototyping stage. It's an Role Playing Game in a Voxel world allowing realtime world manipulation. So fortifications, pits, destruction and digging.

But what will the game be about? I'm thinking of a story. Dungeon crawling. Castle construction. Minions. Battles. It's still not decided yet.

  • View media
  • View media
  • View media
  • View media
  • View media
  • View media

Do you remember the boring dungeon? I've worked on that. But before that, there was some major voxel engine development.

Voxel thoughts

Working on a voxel engine gives you a lot of hindrances in terms of memory and performance. Having a lot of voxels requires megabytes of memory and a lot of clever processing to handle millions of cubes efficiently and display them in real time.

But there are also perks. With voxel engines it is easier to create objects procedurally. You can build procedural environments that look nice. Well, voxel are like particles. They just don't move much. It's easier to interact with environment. AI elements. Easier to create art. Less textures, so smaller downloads. And probably more.

Handling huge voxel spaces requires a lot of preprocessing. Many things are precalculated, the most important being the 3D triangle meshes. Most of you probably know that, Minecraft (or Infiniminer before it) didn't draw voxel with many cubes. Meshes were constructed only with cube faces that were visible (i.e. next to air), sometimes batching neighboring faces together - instead of 2 squares, 1 rectangle. This way you could reach reasonable frame rates.

New dungeon, bleeding and terrain modification

This optimization has it's downsides. As building meshes takes time, it is done only for groups of voxel (called chunks) and only when they are visible. Chunks outside of view frustrum and far away are de-meshed to save memory, and meshed again when they get back sufficiently close. While inside the view frustrum, they are not changed and so only rendered, which is faster. Unless you dig a hole in the chunk.

My recent work considered this aspect - dynamic changes in the voxel space. But before that, let's talk about lighting.

Voxel lighting

Lighting is important. If it is all black and white, or candy-colored, or something else, it creates mood. Sometimes the more constraint the colors are, the more interesting the mood. But that's for another time. For me, lighting is not only a way of adding mood or realism. It's about creating feelings.

When I think about voxel rendering, there are to types - one, that tries to hide voxels in a realistic rendering and smoothing, and another, which is proud of voxel heritage and creates a blocky feeling. For me it's like LEGO. I loved it as a child and creating this style visualisation creates a feeling of a child playing with his toys on a table. Things are small and under control. For that, you need decent lighting. When I mean decent, I mean Global Illumination.

In Minecraft you don't have much of a lighting. Sure, you have sun or torches, and although it serves it's purpose, it's nothing like illumination technics. In Perliner until know, I've used obscurance. For each vertex in a cube (there are 8;-) I have calculated among 3 adjecent cubes number of ones that are solid. For a cube it meant 3*8 checks.

It turned out it didn't do correct lighting for vertical faces, as you can see on the picture below.

New illumination lighting replaces obscurance

Then I realised I needed to do it properly - each side needed to have individual lighting. I've corrected it with 3*4*6 checks (6 faces with 4 vertex with 3 checks). It looked correct, but it was always grayscale (I didn't consider color of blocks). What's more it didn't consider lights that I planned for the game. I prepared separate methods for applying lights from nearby sources. I called this method obscurance based.

New illumination lighting replaces obscurance

And than it struck me - I needed correct shading and correct lighting. Maybe I can combine the two. For each air voxel I hold information about illumination (RGB), and for each of 6*4 vertices of a cube I sum illumination of 4 adjecent cubes. If a cube is occupied by a solid material, I take black for now - later color of material will be considered.

New illumination lighting replaces obscurance

It's not Global Illumination, but with color lights and proper illumination propagation who knows...;-).

New illumination lighting replaces obscurance

Dynamic changes in voxel space

I've mentioned earlier - changing voxel space is expensive.

New dungeon, bleeding and terrain modification

Changing even one voxel requires recalculation of lighting and mesh for a whole chunk, and potentially for neighbor chunks too. It's a spike in amount of calculations. It's a jitter in fps.

New dungeon, bleeding and terrain modification

First I've implemented update of color information. Currently I use it also for bleeding, leaving blood marks on the floor or anywhere. Brrr... ;-). The code is able to update only the color information in modified segments of a mesh, without touching the geometry. It is pretty fast for small area changes in color - character bleeding all over has no visible influence on fps.

New dungeon, bleeding and terrain modification

Then I've worked on changes in geometry. The game will heavily depend on those - digging pits and building fortifications, and dynamic destruction. It's unfortunately slower, requiring rebuilding of a whole chunk, when even a single voxel is changed, but it's there and it doesn't spoil the game by it's performance. Placing a voxel or digging causes a short hickup. It is noticable, but barely.

New dungeon, bleeding and terrain modification

New dungeon, bleeding and terrain modification

New dungeon

Last but not least - new dungeon is there, as you could see on other images. More diverse. Different material. Greenish stains.

New dungeon, bleeding and terrain modification


It was a lot of internal changes in the engine. And there are still more changes to come - color info for solid cubes and better chunk management. Plus multithreading. But still, game runs on my Samsung Galaxy S2 with 55fps (with no Unity's dynamic shadows).

New dungeon, bleeding and terrain modification

And sorry for that long piece of news. Kind-of felt like sharing:).

Perliner: refactoring and some fun

Perliner: refactoring and some fun

1 year ago News 0 comments

A week has passed. I have started refactoring the code. But it was not just that. Characters, FX and dungeon. Thankfully :).

New camera control in Perliner, plus a question!

New camera control in Perliner, plus a question!

1 year ago News 0 comments

In recent days beside some great skiing I managed to squeeze in some Perliner activities about which I would like to tell you. A quick updated version...

Perliner in CHIP magazine

Perliner in CHIP magazine

1 year ago News 1 comment

It turns out, CHIP magazine is interested in posting our games. We got a chance to update the games beforehand, so few days later the Perliner has a newer...

Perliner GGJ demo

Perliner GGJ demo

1 year ago News 0 comments

Perliner is an entry for Global Game Jam '2014. You can play it the GGJ version on the GGJ site.

Perliner with new camera controls

Perliner with new camera controls

1 year ago Full Version 2 comments

New features: - new camera controls, - small level changes.

Perliner, version for CHIP

Perliner, version for CHIP

1 year ago Full Version 2 comments

Perliner, Windows version, prepared for CHIP magazine.

Post comment Comments
Guest Nov 27 2014 says:

This comment is currently awaiting admin approval, join now to view.

Bwiotook Feb 24 2014 says:

Your work is very good :D

+1 vote     reply to comment
Chemec Creator
Chemec Feb 24 2014 replied:

Thanks :)

+1 vote   reply to comment
TheNaturePanda Feb 19 2014 says:

Hey guys which software did you use for the art
i am voxel artist but i dont know good art software for it

+1 vote     reply to comment
Chemec Creator
Chemec Feb 19 2014 replied:

Hi! Everything is currently procedurally generated, trees, houses, stones or bushes. Even characters.
I'm also searching for some good art software - I have seen Probuilder, it seems quite OK but it's not free. I have seen others but they are not that good. I am considering writing my own in Unity or going for Probuilder. I'll go for the former only if I need the editor in the game (and I don't know yet).
Thanks for the question :). You are doing some fun project and want to share?

+1 vote   reply to comment
Blaise200333 Feb 8 2014 says:

This game looks neat!

+2 votes     reply to comment
JFreakXD Feb 7 2014 says:

cool! cant wait for next update!

+2 votes     reply to comment
Chemec Creator
Chemec Feb 9 2014 replied:

Working on it :)

+2 votes   reply to comment
Chemec Creator
Chemec Feb 7 2014 says:

Actually, I have Intel 965 Express on my old Thinkpad X61T and I have on average 20-30 fps, and 60+ without shadows. HD3000 is a lot faster (20x according to some benchmarks). On my Geforce 8800GT desktop I got something like 400+ :).

+1 vote   reply to comment
Post a comment

You are not logged in, your comment will be anonymous unless you join the community. Or sign in with your social account:

Windows, Mac, Web, Mobile, iPhone, iPad, Android
Send Message
Release date
Game watch
Start tracking
Role Playing

Latest tweets from @chemec

Mar 13 2014

Working on Voxel Editor. It doesn't leak anymore. Yea! :-)

Mar 6 2014

Been doodling some doodles for Perliner characters.

Feb 23 2014

New article on my approach to voxel engine lighting and dynamic modifications:

Feb 22 2014

I've worked on dynamic changes in Perliner! Blood plus constructing blocks implemented and work pretty quick.

Feb 21 2014

New dungeon generation and new illumination-based lighting replaces old obscurance. More details soon.

Feb 20 2014

Perliner update: FX, characters, refactoring.

Feb 17 2014

Perliner code is a mess. Refactoring... And some fun :). Some update sooon!

Feb 11 2014

New release of Perliner, can be downloaded on IndieDB. Plus a question.

Feb 10 2014

Introducing game named Perliner - my entry in GGJ 2014. Now available on

Sep 21 2009

Właśnie dopieszczam serwis społecznościowy - ciężka praca, wierzcie mi

Embed Buttons
Link to Perliner by selecting a button and using the embed code provided more...
Last Update
1 year ago
31 members