:: The story of a lone developer's quest to build an online world
:: MMO programming, design, and industry commentary
[The Imperial Realm :: Miranda] [Blog] [Gallery] [About]

The One Man MMO Project

By Robert Basler on 2013-12-31 12:18:10
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
It's time for my third annual look at the past year.

Looking at my work log, the biggest part of my year was spent getting systems that kind of worked into final working condition, adding features, fixing corner cases, bugfixing, polishing and improving performance (I did a lot of work on loading and rendering performance.) While I thought I was mostly done with rendering last year, I still put a lot more effort into making the game pretty this year. I added more normal mapping, distance fog, smoke to damaged units, dust to moving units, a sandstorm effect, two factions worth of buildings (21 of them,) 23 rocks, fields of flowers, the sky, distant terrain rendering, a rusty container-ship setpiece, color correction and heat refraction post-effects and at long last: rubber-band rendering for the mouse. Adding Object culling was the biggest rendering performance win.
By Robert Basler on 2013-12-12 11:41:49
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
For some time now I've suffered with abominable build times on my optimized builds. A full rebuild of just the client in Debug takes 160,825ms but in Release it takes 371,462ms. So for less code, that's a whopping 231% increase in build time just for optimization!

I build three different configurations of my game. Debug is a build with all debugging features enabled, ASSERT's on and debug trace output. Release has full optimization, no ASSERT's or trace output. I also have an Abort built which is fully optimized with ASSERT's and no trace output. I use the Abort build often, but the 6 minute build times even for a one-line change make it super-inconvenient to iterate.
By Robert Basler on 2013-12-08 11:29:44
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
The interview I did last week has been posted: Interview: Robert Basler, One Man MMO and The Imperial Realm: Miranda.
Read more... (2 comments)
By Robert Basler on 2013-11-21 23:06:32
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
I've spent quite a bit of time the last couple weeks piecing bits of different articles together to figure out how to implement normal mapping in the Lair Engine. The problem I encountered is that there is a huge variation in the methods and terminology used for normal mapping. This makes it a very confusing topic for non-math-lovers like myself. So here I'm going to explain the three common techniques for normal mapping for the mathematically uninclined.
By Robert Basler on 2013-11-09 17:36:20
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
Thursday morning it occurred to me that today would mark the 4 year anniversary of the start of my work on The Imperial Realm :: Miranda which made me think, "it's about time I put up some real, unretouched in-game screenshots."

Waiting out the Sandstorm

[Waiting out the Sandstorm]

Immovable Object, Meet The Irresistible Force

[Immovable Object, Meet The Irresistible Force]

I love the sand storm effect! Sometimes I park the camera under a ridge and watch the sand blow over my head. Getting all those particles interacting with the terrain at a decent frame rate was tough.

These screenshots show The Wasteland, one of several biomes in the game. It is hot, white sand, and rock and nothing lives there except some curious flowers. Anything you can see in the screenshots you can go to with no immersion-breaking load screens.

You may have noticed the second shot borrows a note from Oblivion. I loved the shots of Jack motorcycling between buried ships in a post-apocalyptic wasteland. If the final game reminds you a bit of Iceland, Oblivion and Prometheus are why.
By Robert Basler on 2013-10-24 16:18:46
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
Here is a good example of why multithreading is hard.
By Robert Basler on 2013-10-17 00:36:00
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
I can't remember the last time I had to spend any time finding a memory stomp. This was not always the case -- I have spent many an hour with data breakpoints. Man was I happy when those finally started working on the Wii. Today I thought I'd share a couple little things I use to eliminate overflows in my code.
By Robert Basler on 2013-10-15 01:32:35
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
I always hated working on games that didn't have a working debug build. On some the framerate was too low. Some didn't even build. There was always one real reason for it: somebody in charge didn't think it was worth having a running debug build. But the cost of a broken debug build is a huge increase in bugfixing time. Debugging a non-debug build results in misleading values in your debugging windows, bad callstacks, and heavy reliance on static analysis of trace output to figure out what has gone wrong. In short: it has a huge cost in developer time.
By Robert Basler on 2013-10-11 12:56:35
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
I've been stuck on this for a week, so I'm putting it out as a Friday puzzle challenge. Can you tell me what I'm doing wrong?

I added the normal mapping code from Followup: Normal Mapping Without Precomputed Tangents. I have other normal mapping code which uses the usual method of passing the tangent vector with the vertex data and that works great. There's no vertex shader code on The Tenth Planet, so I had to figure that out myself.

The problem I have is that if I use the normal from perturb_normal, the lighting rotates with the model so it is always the same side of the model that is lit (beautifully) no matter how the model is oriented relative to the light source. If I light the model with the interpolated vertex normal I get smooth n dot l lighting which works as expected.
By Robert Basler on 2013-09-25 19:53:09
Homepage: www.onemanmmo.com email:one at onemanmmo dot com
In my quest to increase draw distance, I needed to find a way to reduce the number of triangles in my terrain block meshes from 7938 to something much smaller but that still retained the overall shape of the original block. I found lots of algorithms for decimating (reducing the number of triangles in) meshes but nothing specific to terrain meshes.

Recent Comments

Combat Debugging - 2015-03-17 15:01:24 (1 comments)
Signed up for the email list, still very interested in this project
Hiding in the Flowers - 2015-03-15 15:06:47 (2 comments)
Hey Tripleskit, your answer is here.
Hiding in the Flowers - 2015-03-15 13:01:43 (2 comments)
When will this game be accessable for open/close beta/alpha
Just figured out that the normal maps I generated with GIMP's normalmap plugin were wrong. I needed to check Wrap and Invert Y.

Wrong: cliffsnormalmap.png

Right: cliffsnormalmap%20-%20new.png

I noticed this by looking at this: tutorial_normals07.gif

Stick-outy stuff should look like its sticking out. Thanks Ben!
Grab Bag - 2014-12-11 00:21:13 (2 comments)
I knew that quadtree template would work better than Facebook ads! I never played Warzone, but I am taking a lot of inspiration from Red Alert 2 and the other games in the C&C oeuvre. You're right, The Imperial Realm::Miranda is awesome and I will ...

More Posts

Project Line Counter in Visual Studio 2010 - 2011-06-04 00:01:45 (3 comments)
A Chrome UI - 2011-04-07 10:28:46 (2 comments)
Happy MMO Easter - 2011-04-22 16:17:59 (1 comments)
Looking for a Fast Square Root - 2012-03-29 11:19:56 (4 comments)
Fresnel Soap Bubble Shield Effect - 2012-02-29 00:14:19 (0 comments)
Windowed Fullscreen - 2014-08-07 13:26:33 (0 comments)
New Screenshots - 2014-08-23 00:13:12 (0 comments)
Visual Studio Ctrl-Tab Fix - 2014-02-28 09:23:22 (0 comments)
New Screenshot: In Search of Prey - 2014-05-12 13:56:13 (0 comments)
Invest In Your Debug Build - 2013-10-15 01:32:35 (0 comments)
|<      <<      1      2      3      4      (5)      6      7      8      9      10      >>      >|

Admin Log In