Twitter  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
Load Testing by Day, Features by Night
By Robert Basler on 2016-08-08 11:54:08
Homepage: email:one at onemanmmo dot com

I was back to working on load testing this week. The week started with me being able to get about 30 clients connected to the server before something would crash. By Friday afternoon Miranda was running in the high forties.

[Load Testing Client]

I fixed a lot of bugs this week which is a little surprising given how stable Miranda usually is. All of these new bugs only showed up when systems were under heavy load. The interesting thing for me was that the bugs that showed up were new every time. I'd fix each new bug, then run until I got another. Any bug I that I couldn't fix immediately, often didn't show up a second time. Usually the bugs were straightforward to fix, but by Friday they took a lot longer to occur and were getting really challenging to fix.

The weirdest bug I saw this week was when I received a UDP packet that was corrupted while travelling over the LAN. Local networks are super-reliable and in most cases, UDP packets check themselves, but there is an extremely tiny possibility of a corrupt packet getting through. I'm here to tell you it happened here this week. Miranda now properly detects this situation and drops the damaged packet.

Another strange bug was a crash on a call to a pure virtual function (which should never happen.) That turned out to be because every one in a million times I would call a function on an object from another thread before its constructor completed. Luckily I'd seen that one time before so I knew what to fix. I also have a crash with no callstack or data (Google tells me the callstack is uninitialized.) I'm not sure how I'm going to figure that one out yet.

The big bug though is that clients start mysteriously having trouble connecting once I get 35 or so clients connected. One of the tools I use to figure out that type of problem is trace logs which contain messages about significant events while the program is running. With nearly fifty clients connected, the size of the text log files from final test run Friday afternoon was an SSD busting 20.5GB! My last task Friday was to modify the game so that I can better match up all the messages in the server trace with the messages from the client having the connection problem. I'm hoping that will give me a clue about my mysterious connection difficulty.

In the evenings I knocked off a bunch of must-fix bugs and small feature additions from my All Access TO-DO list.

All Access Update

This week I read an article on Offword Trading Company's experience in Early Access which reinforced something I had heard in a presentation (video) on Darkest Dungeon at Full Indie Summit 2015. Both of these games really struggled with gameplay changes during Early Access that players didn't expect or really didn't like. Their solution to this strife was to make those divisive game features optional, but that is not an option in a multiplayer game like Miranda.

There are three big features that I have planned that are remaining to do for Miranda: Expanded Server Capacity, Player Progression and The Nemesis System. I'm working on the server now but I had planned to work on Progression and Nemesis during All Access. I have come to realize that putting off Progression has two big problems: The first is that when Progression is turned on, it will take away the complete, unfettered access to all game features that players currently enjoy from the first minute of play. The second but much bigger concern is that the progression system not only gives players a chance to experiment with each new game element before delivering the next, it gives players goals and the joy of receiving new toys as a direct result of their play, which I believe is critical to Miranda's success. Without Progression, Miranda simply won't be as much fun as it could be.

So after talking it over with everyone, we've decided to postpone All Access by a few weeks in order to give me time to implement the core of Player Progression. This should also give World of Warcraft players a couple weeks to clear their palate after the latest expansion before All Access starts.

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)
Cats or dogs? (What's this?)

  Admin Log In

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