Tue, 20 Feb 2018

Benchmarking the Discord Icon with SSDO

pre-alpha 1808 devlog


Finally my implementation and variation of SSDO is bug-free enough to be released into the wild.

SSDO is an approximation (as is so much in game development) to global illumination. It combines the better known SSAO - simulating ambient occlusion - with one level of bounce lights.

Just like the base SSAO algorithm it should not be noticeable by itself. It is supposed to be a subtle effect, but many games, even AAA titles, exaggerate the effect too much. Even worse: they often have AO where there should be none. This is a long solved problem, but it still shows up more often than it should.

Originally I wanted to include only a screenshot of a scene when the effect is active. But then it was hard to notice what it adds to the scene. Thus I have included this animation to allow an A/B-comparison, making its effect much more noticeable. (Even when presenting the animation’s frames side-by-side it was to hard to really appreciate the differences.)

Then there is the matter of the bounce lights, which are even more subtle where they look the way they should (while they are overwhelming where they should not..). If you look closely at the sign on top of the building you can notice how the orange reflects onto the sign, while a bit of the white reflects back onto the building’s roof.

I have added some new graphics settings for SSDO’s parameters to the options menu, so the effect can be adjusted to your liking.


Naming a game and designing a logo/icon for it are probably the hardest things to creating a game, aside from all the other hard things (= everything else). But I finally settled on an icon. It could still use some sprucing up; but just like the game, the icon is still pre-alpha. It says so right there!

pre-alpha, just like the game

Benchmark Results

Quite a while ago der_boris asked me for some output, results, just about anything at the end of running the benchmark to have something to compare with others or just stare at in awe. Well, der_boris, here you go!

Makes it quite clear where optimisation needs to happen...

All the timings collected during a run of the benchmark are now displayed in a few handy charts at the conclusion of a run. You can move your mouse over any of the segments to get the exact duration and a description of what this segment stands for anyway.

Now let me segue into another installation of my “Hey Apple!"-rants:

[Hey Apple, how about supporting gpuStartTime and gpuEndTime under macOS, not only iOS?!]

In other words: GPU timings are only available under Windows, since Metal does not support querying GPU timings under macOS.

TL;DR: Please keep running the benchmark once every new release, this way I can figure out where optimisation is needed.


These days it seems as if every game needs its own Discord server. So here you go: http://discord.gg/YF7Rkp5

Truth be told: I do use Discord as a tool in developing Margin Magnate for quite some time now. Every time feedback is sent from within the game it is forwarded to a restricted channel on the Discord server. This makes collecting and checking out feedback, even from mobile, very easy. But it also allows me to give access to this channel to the testers themselves, allowing for discussing feedback right there on the spot.

Coming Up…

You guess is as good as mine.

Enable Javascript to see comments