Combining lighting methods

I'm currently in the process of finalizing the support for shadow map rendering into the CopperCube Game Engine. For game engine users, this will work as easy as everything else in CopperCube: Just check a checkbox, and voilą: You now have nice dynamic shadows in your scene. It will even be possible to combine this with the existing other lighting modes:

On the image above, you can see two concrete blocks. The left has the new dynamic shadow mapping mode enabled, the right one has static precalculated light mapping enabled. Both have advantages and disadvantages: Shadow maps are dynamic but don't run fast on old hardware, and need some parameter tweaking in most scenes in order to look nice everywhere. Light maps are static, but are blazingly fast and usually always look quite nice. So with the next free update, you will be able to choose which lighting method you want to use.

The Craziness that de.Wikipedia has become

I've been creating and editing Wikipedia articles casually since one and a half decade. I guess I created a few dozen, and edited a few hundreds. But today, I decided to stop doing this on de.Wikipedia, the german version.

The reason for this is that unlike en.Wikipedia, de.Wikipiedia is becoming crazier and crazier. Admins are going mad there and restricting edits and deleting submissions where they can. This has been the case for years (I remember ridiculous discussions on Wikipedia around the Irrlicht Engine article even about a dozen years ago), but during the last months, I think it has become even more ridiculous.

For example, I extended a hopelessly out-of-date technical article one month ago with quite a lot of stuff. Problem: After a change of an article, it needs to get sighted on de.Wikipedia in order to become public. In order to prevent vandalism and incorrect data. (This feature isn't active on the english Wikipedia, BTW.) Probably because the topic is a bit specific, and there are probably not many people knowning much about it, this article hasn't been sighted now for a month, and my update isn't visible still. Which is not only unacceptable, but ridiculous.

There is even a statistics page for this: The average sigthing time for a page is currently 17 days! Somebody is clearly out of his mind.

So in an attempt to verify all changes, or make sure that everything is correct, de.Wikipedia is accomplishing the exact opposite: Authors get frustrated, articles are getting out of date quickly, and updates are prevented.

So that's it for me. Good bye de.Wikipedia. I know I'm not the only one. de.Wikipedia has a problem with Autorenschwund since a few years. But it doesn't seem to get better by introducing new rules. I'll keep my changes now on en.Wikipedia, although it is a pity: I only do minor changes there since english isn't my native language.

RocketCake 1.5 released

I just uploaded RocketCake 1.5, the free responsive website designer. It now includes a built-in password protection system, so that you can enable password/login on your websites with just a few clicks easily.

There is also now a quick way to reload all images, tons of new templates, improved slide shows, better web editing, and more. See the changelog for details. It really has become quite a mature product now, and I'm surprised at how many people are using it.

But no need to rest, it's probably time for a new CopperCube release. :)

Postcollapse 1.09

I've now uploaded the 1.09 update of PostCollapse to Steam, the one with realtime shadows support. I've also created an updated trailer:

Also, it is very motivating that the game is apparently not so crappy anymore:

Shadows, shadows, shadows

Boy, adding support for shadows into an existing multi-platform 3D engine with tons of features isn't exactly easy. But I think I've now nailed it down. To make it work with a real-world example, I implemented this into the PostCollapse game. And - altough they are very simple shadows without any fancy features to make it run on as many systems as possible - it looks pretty nice! See this comparison for example:

Also, since that game has a lot of moving vegetation, you see shadows on walls of buildings quite a lot:

Going to update the Steam version with this feature in the next weeks. Adds a lot to the atmosphere, I guess. Merging this into the CopperCube Game engine should now be a piece of cake. But let's see.

Stolen Resident Evil Asset

A user just sent me this cool free 3D prefab for CopperCube:

stolen resident evil castle model

Pretty cool, right? But obviously, that's an asset stolen from the Resident Evil game. Not sure what the motivation for sending this in could be. Malice? Ignorance? Simply not knowing it any better? Not sure.

Struggling with mail support

I once blogged about the steadily degrading quality of support requests I get. Years ago, they would be like
I now tried to get this work myself for days, maybe you could help me with this?
And now they are usually
This is shit, WTF, give me a refund now!
But sometimes I also get requests with long, long confusing texts, where I am struggling to understand what the problem is and what the user actually wants from me. They usually also don't mention which software this is about (I'm developing quite a few products) and in not rare cases, the mail is marked as "important". I just received one of these again, where the text is barely readable, full of typing errors, half sentences and full of accusations. I'm not sure what to make of these. So I tried to answer it with this:
I'm not sure if I understood you correctly. Did you maybe write this text in another language and let it translate by a machine? If so, just write it in your language, I know quite a lot of foreign languages, it is easier to read then. (Followed by a list of guesses I made about the problem and software he may have, with potential solutions)
Because that's the only explanation I have for mails like these. But let's see, maybe there is another, better explanation. Now I'm waiting for the answer.

PostCollapse 1.08

I just uploaded PostCollapse 1.08 to Steam. This update includes the changes with the new 3D tree models. The game is far from being good loocking, but I think it is much better now. I also stumbled upon an older screenshot from the game, which of these do you think is the new version? :D

I also added a way for the game to detect crashes and to ask the user if he wants to reset the settings to defaults once this was detected. I'll be working on shadows now, since this also will be the D3D prototype for the next CopperCube game engine update.

Working on Trees

Last weekend, I tried to improve the trees in PostCollapse. The current ones are procedurally generated and ugly, which made sense when the game still was written in Javascript and WebGL, in order to keep down the amount of data needed to be downloaded from the server. But since it is now a C++ written Windows game, it makes sense to replace them with proper trees. My result looks like this so far:

There is still room for improvements, but I like it so far. Unfortunately, the game will now run a bit slower, since the trees now also have about 4 times the amount of polygons to draw, but maybe I can squeeze out a few more frames from other parts of the game.

Fast WebGL Shadowmaps for Big Scenes

Creating fast realtime 3D scenes with shadows in WebGL isn't that easy: Implementing shadow maps is surprisingly simple, but making them work for big, dynamic and complex scenes is a bit harder.

I made the first step into that direction by adding a simple cascade shadow map renderer to CopperLicht, the open source WebGL JavaScript library. The implementation is focused on speed: The shadows won't look that nice, but they are robust for the full scene and a (relatively) high framerate is kept.
Try it out yourself:

(Click into the image. Move with cursor keys and run by holding shift)

You can also Run this fullscreen in a new tab.

The just released version 1.13 of CopperLicht now includes this feature, you just need to set

scene.ShadowMappingEnabled = true;

...and it will work. You might want to tweak some of the shadow parameters like ShadowMapBias and ShadowMapCameraViewDetailFactor to make them look more nicely for your scene.

If you look closer in the demo, you'll notice that shadows in the distance won't have very high details, but shadows close to the camera have. That's because I've used a cascade shadow map approach with just two levels of shadow maps: One for the shadows close to the camera, and one for the ones in the distance. You can adjust how the shadows are drawn, like which resolution they'll have and what 'close' means. If your scene is a smaller one, then the shadows will have more details as well.

It's the first time I've been using shadow maps anywhere in my code, so I guess I'll find a lot of places where to optmize this still a bit for speed, but for now, it's quite ok, I think. I'll port this feature to other platforms too in the near future and make it available in the CopperCube game engine as well then.