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
Vertical Slice
By Robert Basler on 2018-09-28 18:18:43
Homepage: onemanmmo.com email:one at onemanmmo dot com

I started the week with a last bit of work on the sky. There was a visible seam that needed fixing and I figured out a better way to position the sky. I also decided that it might be nice if the sky dome rotated every 5 hours so that the sky changes when you log in at different times of the day. That was probably the easiest feature I did this week.

The rest of the week I worked on finishing the first biome, what I'm currently calling The Breathtaking Precipices. This is known in the industry as a vertical slice. You get one part of the game complete so you work out any remaining bugs, evaluate it, and once it's perfect, you repeat the same process for all the other slices (in my case, 3 more biomes.)

The Breathtaking Precipices is very mountainous terrain of black rock and sand. The first thing I needed was a new set of procedural rock formations. I used Resynthesizer to make some new rock textures (which is super slick!) For the first attempt I used a single texture which produced ugly repetition when you looked at large rock formations. As an experiment, I applied an idea I had used before where I create two textures and then use a black and white noise texture to alternate between them. The trick with that is that the noise texture is smaller than the main textures and also a prime size (in my case x0.73) so that the pattern doesn't simply repeat every 10m (the size of the main textures.) This trick works best if the textures are relatively featureless. For textures with visible features like my rocks, it reduces repetition enough to be workable.

Once the new rocks were in I discovered a fun bug where rocks would not render at the tops of mountains. Miranda skips drawing faraway rocks based on the horizontal distance from the camera to the block that contains the rocks. It turns out that the actual distance check was 3D, and at the top of Miranda's highest peaks, the terrain block for the mountain peak (which is at 0 elevation) was farther away from the camera than the maximum draw distance. So no rocks.

Next I noticed that rocks were floating in the sky beyond the far edge of the terrain so I had to fix that.

In general, a vertical slice is an exercise in memory management. You add things, blow your memory budget, scale things back, and repeat. Once I started adding the tiny detail props to the world, the memory for those props quickly ballooned to 650MB and the game crashed. That is a lot of memory for 50,000 teeny rocks. While I was investigating that, I discovered that I had missed removing detail props that were invisible beneath rock formations. Fixing that little bug knocked the prop count and memory use down by a third. After that I added a hard limit on memory use by detail props, which took a little doing since I didn't want to leave random bald spots in the environment. That works fine to make sure the game won't crash if I mess up, but the actual reason for the memory overload is that those tiny rock models are too detailed and I need to make some super-simple rock shapes that take fewer resources to render. I'll be tackling that next week.

I also poured a full glass of Coke into my favourite keyboard and mouse. I cleaned for an hour, but I'm still finding sticky spots. The upside is that my mousepad looks like brand-new. The keyboard and mouse are mostly fine.

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



[The Imperial Realm :: Miranda] [Blog] [Gallery] [About]
Terms Of Use & Privacy Policy