Post news RSS Celaria - simple shadows and freeplay mode

Simple vertex-bashed shadows and freeplay mode (a lot of pictures + video. :D)

Posted by on

Shadows are a very important visual clue for the eyes in order to help determine the depth of the scene and positioning of objects relative to each other. Celaria itself didn't had those. At the beginning due to technical limitations and later (with the introduction of shaders in GM: Studio) due to lack of knowledge.

That's one of the reasons why the map-geometry does have this grid-like texture. It helps to determine the placement (rotation,position,scale) and distance relative to the player.


Without this grid-styled-texture it would be hard to determine

how the individual blocks are placed in the scene.

I also added a fade-effect from the top to the bottom of blocks. This helps to distinquish individual blocks even more. Especially at bigger distances where textures (due to thexture filtering) fade out. Vertex-based lighting (coloring different sides of blocks in different shades depending on the sun-position) is also implemented.

But yeah, having shadows would be very nice. I experimented with shadow-mapping multiple times but after numerous times trying to implement it i realized that it wasn't feasable. Both in terms of visual fidelity and performance.

Shadowmapping is a pixel-based shadowing technique, so the precision depends on the shadowmap resolution. And in addition to that the precisision is also an issue. I wanted shadows to be displayed even at far renderdistances. Especially with the current artstyle, having shadows fade-out at a distance would be very noticeable. (Also the implementation of Shadow-mapping in GM: Studio wasn't really great in terms of performance.)

I then stumbled upon a technique where 3D models are projected onto the floor relative to the sun-position. While this technique doesn't support shadow-casing on map-geometry itself, it is at least better than nothing. It helps to give the maps more visual variety. And the best part is that the performance impact is much smaller compared to Shadow-mapping.

As those vertex-based shadows are pretty much only projected geometry, they also don't loose precision over distance and they also don't have any pixelization-artifacts.

shadow distance

3D geometry projected onto the floor. Looks good even at further distances.

(Floor reflectivity was decreased in order to show this more clearly)

shadows precision

As you can see, the spaces between those tightly placed blocks are also present in the shadow on the floor.

So yeah, it isn't the most advanced technique, but it is very easy to implement, doesn't suffer from artifacts or precision errors and is very performance friendly. In combination with simple vertex-based lighting it does produce really nice results.

Another thing i added is the possibility to play on the maps without a timer which is displayed on the HUD. The game should encourage the player to explore the maps and optimize the paths they take to the goal, but doing that while a timer runs on the bottom of the screen is a bit irritating.


Selecting "none" in the menu allows you to run around the map without an active timer.


Exploring maps may reveal pathways which weren't obvious before.

I added also hidden "gems" throughout the maps which can be collected. Each map has currently around 5-8 of those. It is mostly for people who like exploring parkour-friendly enviroments and finish a game to 100%. (Getting all of them on a map will also reward you with a gem-symbol.) But i'm thinking about adding hidden maps or hidden content which will be unlocked after you find all of them.


Collect them all!

You can of course watch my Video-update on youtube which shows you the shadowing technique and the freeplaymode (+ the fadout-animation of those hidden items) in motion.

The open-alpha is also on the way. I'm finishing some minor stuff and trying to polish it as good as i can before the release. I can safetly say that it will be released this August.

This was a bit more extensive post. (never really did that before...)

I hope you enjoyed reading this update. I plan on making those posts more extensively and explain more (with more screenshots) alongside to the youtube video.

See you in the next update. :)


Game dev, also known as "hack tell you snap".

Reply Good karma Bad karma+1 vote

Looks very interesting!
Maybe you should try a "cheap" method like having sides more darker than others to distinguish the geometry better. Like in original Wolfenstein3d game.

Keep the good work.!

Reply Good karma Bad karma0 votes
DevLewa Author

That is already the case. (Forgot to mention that.) I'm using simple vertex-based lighting to give the sides of the blocks different shades depending on the sun-position.

Reply Good karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.