A small videogame post.

I’ve spent some time exploring the feasibility of maybe making a game. Because of my constant issues with my wrist and shoulder I thought it might be easier for me to tell the story I want to tell in this format.

However, as with everything I can already feel that I’m getting carried away once again, and in the end it would end up even more difficult. (Though still easier on my wrist.)

It would also be easier to collaborate on a game than it would be on a comic imo.

I started experimenting with the Godot engine and I can already say that I like it more than Gamemaker or Unity etc. It had proper 2D isometric support right out of the box which is my favorite 2D projection. (Though Unity recently surpassed Godot with it’s own 2D isometric tilemaps with height support for individual tiles.)
2D on the whole doesn’t feel like an afterthought in Godot like it does in Unity.

Then I experimented a bit with lighting and thought: “What if I made a 2D pixel art game with realistic lighting?” Now this is where the whole thing goes off the rails. Basically, to get realistic lighting with proper shadows you need 3D information and so I ended up looking at the 3D part of the Godot engine. Turns out pixel art is actually harder this way than more high res art would be, because ensuring one pixel equals one pixel with all that floating point math can get tricky. Especially with an isometric projection.

I made a cow which is casting a realistic shadow, but so far nothing special. A 2D sprite can cast such a shadow, as long as it is lit from the front.
However, here’s the cow being lit from the side and still casting a realistic shadow.

Looking good so far, but I achieved this by putting an invisible 3D mesh behind the sprite, if lit from different angles it would often cast shadows on the sprite itself, ruining the illusion. Then I tried putting it in the same spot as the sprite, this time with front face culling enabled, but since the mesh is not fully convex it creates a lot of artifacts.

This is how it looks in the editor. The Mesh was quickly made with blender.

I’m not very good at programming but the ultimate solution is probably to generate these meshes automatically from depth maps, then project the sprites and normals onto them with a shader, using world space, or screen space (not sure which) instead of tangent space. But I don’t know shaders at all so…

As you can see, my perfectionism is getting the better of me yet again. A regular old 2D game with less complex lighting would probably be good enough.

But it’s hard for me to resist this temptation, of trying to make things look even better.
And this is an issue I’m also facing with my comics.

11 comments