Pages

Oy Canada! Part #1,387

So CanuckCare© is superior to our own (soon-to-be-replaced) system? By one metric, at least, sure:

"Canada does guarantee its citizens ... access to a Web site to check on wait times for surgeries."

Well, that's helpful!

Of course here, we have no need for such a site, since we don't really have wait times for necessary surgery. Ooops.

As noted health policy wonk David Hogberg notes, "Ms. Gorsuch in fact had her surgery canceled twice and was waiting for her third one went she suffered a fatal heart attack ...On the upside, she’s no longer on the waiting list."

Now that's comforting!

It seems that the key difference between CanuckCare© and ObamaCare© is that the former is a reality, and the the latter is merely a probability.

Feel better now?

Summer Resort Mogul


Summer Resort Mogul places the power to create a world-class getaway in your hands! Start small with a couple of bungalows and a restaurant, and then add movie theaters, dance clubs, swimming pools and more to entertain your guests. Once money starts rolling in, make smart decisions with regard to workers and supplies, upgrade the buildings you own to make them even more profitable, and do a little marketing, and before you know it, your resort will be second to none! Just keep one eye on your competition, as he's got his eye on your resort.

Leviathan Azazel sneak peek.

Azazel will be the last of five in the series of VR5 frame Leviathan.

Azazel and subtlety are two words seldom used together. There is nothing subtle about this Leviathan. It wields one of the largest projectile weapons mounted on any Leviathan and a whirling blade of destruction. This is the King Tiger of Leviathans

Just to recap, here are the five VR5 frame Leviathans in the series.



 I hope to start limited production of the Leviathan Mortis some time in December, with the crusader soon after and the remaining three in this series to follow ASAP.

Avenue Flo: Special Delivery


The DinerTown family is growing! Join Flo and the cast in Avenue Flo: Special Delivery, the sequel to the quirkiest Adventure game ever. Vicky’s due date is fast approaching…and so is the baby shower extravaganza Quinn is planning. Run across town with Flo, collecting missing items for the DinerTown characters in need, in order to save the town’s highly anticipated celebration and become a hero!


Season Match 3 Curse of the Witch Crow


Enter a magical fairy-tale world and overcome the evil Crow Witch! After the Crow Witch captures the Months, the world may never see a New Year again! Help her desperate captives escape using your Match 3 talents! Master minigames and find helpful items in Hidden Object scenes in Season Match 3: Curse of the Witch Crow. Free the Months and save the day!

Deepica BFG


A scientific expedition has found the legendary Valley of the Lost Depths! However, each expedition so far has returned empty-handed. Help professor Teresa Robinson defeat the living Coral that protects the treasures, and reach the Valley of Lost Depths in Deepica! Use your Match 3 skills to unlock the countless gold and riches hidden away. Defeat the living Coral and return back to land a hero of the scientific community!

Tech Feature: Noise and Fractals

Introduction
Now that I have a working algorithm for terrain rendering, I wanted to try making some of it procedurally. This would not be used in order to generate levels, but instead to help artists add some extra detail and perhaps for some effects. The natural world is very noisy and fractal place, so in order a to get a nice looking environment, these two features are crucial.

Noise
When doing noise for natural phenomena, one normally wants some kind of coherent noise. Normal white noise, when nearby pixels are not correlated in any way, looks like this:

This is no good when one wants generate terrain and the like. Instead the noise should have a more smooth feel to it. To get achieve this, one fades between different random values, creating smooth gradients. A way to do this is to generate a pseudo-random number (pseudo because a certain coordinate, will always return the same random value) for whole number points, and then let the fractional parts between these be interpolations. For example, consider the 1D point 5.5. To get the value for this coordinate the pseudo-random values for 5 and 6 are gotten. Lets say they are 10 and 15. These are then interpolated and since 5.5 lies right between them, it is given the value 12.5 ( (10+15)/2 ). This technique is actually very similar to image magnification, where the whole numbers represent the original pixels.

Generating random numbers this way, something like this is gotten:


This looks okay, but the interpolations are not very smooth and looks quite ugly. This can be fixed by using a better kind of interpolation. One way to to do this is using cosine-interpolation, which smoothen the transition a bit.

This looks a lot better, but the height map image still looks a bit angular, and not that smooth. However, we can smooth it even further by using cubic interpolation. This ties nicely into the image magnification analogy I made early as cubic is a common type of filter for that. It works by not only taking into account the two points to blend between, but the points next to them as well. In our above example this would be the points 4 and 7 (which are next to 5 and 6). It looks like this:


This gives a much smoother appearance, but it (as well as the other algorithms above) has some other problems. Because the height values for each whole pixel are completely random, it is gives a very chaotic impression. Many times one wants a more uniform look instead. To fix this something called Perlin noise is used. What makes this algorithm extra nice is that it based on gradients instead of absolute values for each pixel. Each whole pixel is assumed to have the value 0, and then a gradient determines how the value changes between it and a neighboring pixel. This allows it to be much more uniform look:


Because of it is based on gradients, it also makes it possible to take the derivative of it, which can be used to generate normal maps (something I am not using though). It is also quite fast, pretty much identical to the cosine interpolation. The cubic interpolation, which requires more random samples, is almost twice as slow.


Fractals
Now that a coherent noise function is implemented it can be used to generate some terrain. The screens above does not look that realistic though and to improve the look something called Fractal Brownian Motion can be used. This is a really simple technique and works, like all fractals, by iterating an algorithm over and over. What is iterated is the noise function, starting off with a large distance between the whole pixel inputs (low frequency) and then using smaller and smaller distances (higher frequency) for each iteration. The higher the frequency the smaller the influence, resulting in the low frequency noise creating the large scale features and the high frequency creating the details.

The result of doing so can produce something like this:


Suddenly we get something that looks a lot more like real terrain!

There is lots of stuff that can be done with this and often very simple alteration can lead to interesting results. Here is some iterated fractal noise that as been combined with a sine-function afterwards:


End notes
There is a lot more fun stuff that can be done using noise and I have just scratched the surface with this. It is a really versatile method with tons of usages for graphics. The problem is that that it can be quite slow though and my implementation will not be used for any real-time effects. However, Perlin noise can be simulated on the GPU, allowing it for realtime usage, and this is something I might look into later.

Next up is the hardest part of the terrain rendering - texturing! I am actually still not sure how to do it, but have tons of ideas. Can never get enough of info though, so if anybody know any good papers on terrain texturing, please share!