Twitter  Facebook  YouTube  E-Mail  RSS
The One Man MMO Project
The story of a lone developer's quest to build an online world :: MMO programming, design, and industry commentary
The Perilous Precipices
By Robert Basler on 2018-10-28 19:24:00
Homepage: email:one at onemanmmo dot com

The first biome, recently renamed The Perilous Precipices is complete and I am thrilled with how it has turned out. Making an area that is mostly black is quite challenging from an art perspective because black on black doesn't really look like much. I wanted to have some unusual plantlife in the area and I remembered the Silversword plant I saw at the top of the Haleakala volcano. I struck out at finding a pre-made model (although I did find a lot of lovely silver swords,) so I took one of my photos from my trip and created my own low-poly take on that plant.

[Miranda's Silversword Plants]

[An Actual Silversword Plant]

I also ended up modelling some volcanic spires, as well as steaming vents. This really gave me an appreciation for how big Miranda's world really is. The world builder tells me there are 1,351 instances of the steam vent in the world. Could I find a single one to check it? No. (Eventually I did.)

[Editing a Spire]

The balance of the effort the last month has been fixing bugs. I figured out the problem with shadows not working, and reworked them so that shadows now draw to 256m from the camera (not quite twice as far as before) with better resolution. At some point I'll write a separate rage-fuelled blog post "Why doesn't glClear Work?!?!" and talk about that.

I finished my work on Scalable Ambient Obscurance (SAO) which darkens concave areas. The difference SAO makes on Miranda's rock formations is really remarkable. I had implemented the last part of the SAO shader incorrectly and I have a full blog post "Scalable Ambient Obscurance for the Mathematically Uninclinced" about that which I'll post later.

A big part of fixing a lot of my little rendering bugs was to consolodate my many, many shader programs I had written over the years down to a single ubershader. The number of almost-the-same-but-ever-so-slightly-different shader programs had really ballooned and trying to keep every program up to date with every bug fix was quite prone to error. I didn't manage to get it down to one shader (there are five - near terrain, far terrain, sky, particles, and the ubershader for everything else.) Seeing the lighting change as tanks drive in and out of cloud shadows is pretty cool.

I also spent a couple days trying to solve color-banding problems with the new sky. When the sky texture (the largest texture in the game) was compressed with DXT1 it ended up with large bands of solid colors in the blue areas of the sky. I first tried encoding the texture as YCoCg and then encoding it with DXT5, and that was marginally better. Then I tried a technique called Alpha-Exponent where you use GIMP's Color to Alpha with the color Black (which divides the RGB values of each pixel by the max of the 3 values, and then puts the max into the A channel) and then in the shader I multiply the RGB values by A to get the original colors back. This worked pretty well although the cost is double the amount of RAM.

[Mysteriously black texture]

[...and two days of debugging later]

I am super-pumped to report that when tanks drive offscreen now, their dust trails no longer disappear! Originally when I implemented culling for offscreen objects, I included particles in the culled objects, however what happens is that when the particle emitter goes offscreen, all its particles, some of which may be onscreen, are culled as well. Generally this is done as a performance optimization, but since I don't have a ton of particles being processed most of the time, I've rearranged things so that particles continue to be emitted and render even when they're offscreen. This also means that if a smokestack goes offscreen, when it comes back there's still smoke.

Miranda's classic biomes live on in the south-west of the map. When I went to confirm they were all still working after all the changes I discovered that I had accidentally put them outside the world. They're back now, and looking just like before. I'm kind of tempted to make a series of before and after screenshots, the changes in the world are quite dramatic.

This week I started work on the second (of four) biomes. My first idea for populating the biome with fully procedural rock formations similar to what are found in the Perilous Precipices didn't work out, so I switched to another rock system which uses artist-built geometry. It is pretty amazing what a procedural system can do with a single mesh and simple rotations and scaling. The trick is making sure that your art has a different silhouette from every direction. I spent most of my time fixing various bugs and adding additional layout controls so I'm still iterating on the rock art.

New Comment

Cookie Warning

We were unable to retrieve our cookie from your web browser. If pressing F5 once to reload this page does not get rid of this message, please read this to learn more.

You will not be able to post until you resolve this problem.

Comment (You can use HTML, but please double-check web link URLs and HTML tags!)
Your Name
Homepage (optional, don't include http://)
Email (optional, but automatically spam protected so please do)
What color is an orange? (What's this?)

  Admin Log In

[Home] [Blog] [Video] [Shop] [Press Kit] [About]
Terms Of Use & Privacy Policy