<<Previous Archive | Next Archive>>

Working on Vegetation

I'm currently working on improving the vegetation a bit in my game engine CopperCube. It looks better already and it can be moved by the wind, through a shader:

I was thinking about making this working exclusive for the grass in the terrain, but decided that a more generic approach would be better: Just click a checkbox on any material, and that thing will be moved by the wind. That way, also the leaves of trees can be moved too. Maybe also flags or similar. I still have to make this work well with the rest of the material system, so that it also works with lighting, fog, and other platforms like WebGL and Android, etc, but it is a nice start.

Fake STEAM Key Generator

Since I have put my game engine and my survival game on Steam, I am getting quite a lot of requests for free steam keys. Some of these requests are valid, made by nice youtubers and twitchers, but a lot of them are made by scammers, pretending to be a popular youtuber or similar but easy to make out to be an impostor, trying just to get a handful of free keys, in order to sell them. If you have a game on steam, you likely know what I mean.

So, how to get rid of those? Simply ignoring them doesn't seem to help. So I created a key generator, which generates fake steam keys (=just a random combination of letters and numbers) to send them:

Fake STEAM Key Generator

Create fake steam keys for sending to scammers asking for "review copies", for "giveaway", "their friends" and similar.

put (hidden) profanity into keys


I hope that when they sell them, and it turns out the key is invalid, they will get into trouble. What do you think? Good idea? I'm not sure. Feel free to use this generator or give me any feedback.

Fixing Disappearing Texture Alpha Details in MipMaps

If you ever programmed a 3D game, you probably came along this problem: You have a texture with alpha channel and lots of small details on them, which disappear when the object is far away or viewed at a sharp angle. This happens for example with foliage, trees, bushes, grass or chain-link fences. Here is an extreme example showing what I mean:

For most objects like the leaves in trees, this isn't a serious problem, most people won't even notice. But for important, fine grained stuff like wire mesh fence as above, this is certainly not wanted. There are some simple workarounds to this problem: What I did instead for my game was to compute the mip maps slightly different. Instead of calculating the weighted average of the alpha value of each sample as normally when computing the next mip map level, I also compute the maximum alpha value and select a value between the maximum and normal alpha value. And the result was looking a lot nicer:

The result could probably be adjusted a bit, but for me, it looks ok for now. There is no performance impact when rendering this and it is also not slower to generate the mipmaps at all.
For a very simple and badly filtered mipmap, I was originally calculating a pixel for the next level like this:
a /= 4;
r /= 4;
g /= 4;
b /= 4;
newColor.set(a, r, g, b);
(Where a, r, g, and b is the total sum for all 4 input samples)
But now I'm doing it this way:
const float refValue = 0.65f;
a = (int)( (amax*(1.0f - refValue)) + ((a / 4.0f) * refValue) );
r /= 4;
g /= 4;
b /= 4;
newColor.set(a, r, g, b);
(Where amax is the maximal value alpha had in all samples). refValue is a value which you can adjust to your texture (or even compute it for each texture, if you like), but I figured a value of 0.65 worked nicely for most input images, although it probably is not a perfect value in all cases.
Maybe I'll add this feature into my game engine as well, so that other people will profit from this as well in the future.

Getting used to Software Half-Assery

Please take a look at this short list of things which happened to me today: And the day hasn't ended yet.

As software developer, frustrating stuff like this has become the daily norm for me. The more complex stuff you have to do with software, the more stuff is breaking in hilarious ways. I may be getting old, but I feel software isn't doing anymore for me what it was supposed to do: Getting out of my way and make my life easier.

I'm not sure how to improve this mess which is how software works today. Maybe we should just get rid of the "wait for the next update" and "if it compiles - ship it" culture. Or maybe it's just time to die for me. I'm probably too old to make sense of all this.

Let's play's and my Confusion about them

I just found a "Let's Play" video of a youtuber named Petre who is finding out all the new features in my game.

I like how he is experiencing the game and the features:

This was exactly how I hoped people would play the game. But there are others of course, for example a few weeks ago I saw a youtuber standing in the landscape and commenting on how ugly the trees, the grass, the walls in the buildings, the sky and everything looks. After doing this for about 15 minutes, he was slowly dying of thirst because he didn't look for food or water, and just kept on talking about the uglyness of the game. When he finally died because of this, he declared that the game sucked because he died.

Not sure what to make of this. I improved the graphics since then a bit, but I'm still confused about all this.

RocketCake 1.3

I just uploaded version 1.3 of my free responsive website editor RocketCake. It includes some neat new features, like support for text shadows:

Which was interesting to implement. For example, the specification says that it doesn't give the exact way to implement this, but no pixel in the result image may not deviate by something like 5% from a certain specification. Ha. :)
Besides lots of other new stuff, I also rewrote the rendering algorithm so that website editing is now much, much faster if you are using many or big images. Previously, this was very slow on some systems.

Hope you like it!

New Year Sale, Happy New Year!

As every year, I offer a discount on some of my products for a few days. This year, there are 18 products on sale. Eighteen! Until a few days ago, I haven't realized that I have created that many products so far at all.

The sale page is a bit more structured than last year and I even made it responsive. But the probably more interesting part is that I give away all products for -50%, some even for -75%. That's quite a lot. But it's only for a few days.

Hopefully I am giving a few people a nice start into 2017 that way.
Happy new year!