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
By Robert Basler on 2013-02-25 00:02:39
Homepage: email:one at onemanmmo dot com

So that last blog post was picked up by which was pretty cool. It was tweeted to over 70,000 people, hit the front page of Gamasutra and stayed there for three days, was featured, and made their news feed. I got 15 comments, saw 22 new followers, traffic on the website was 8 times normal the first day (almost 25% of those iDevices!), and it has now settled at twice what it used to be.

Between checking out the comments and web stats, I've been working on a bunch of different things.

I rebuilt my entity replication system for the third time, which I think should be the charm. The improvements this time were partially inspired by this really good talk on Halo's networking. The old system would put all the changes into one big packet, which made serialization much simpler, but the problem was that if lots happened at once, the packet would get big. Then the rate limiter would kick in and dole that packet out over several seconds, lots of changes would get backed up, resulting in another big packet and so on. It didn't work.

The new system prioritizes updates and sends the most important updates first until a standard UDP packet is full. As changes get older, their priority increases. The other big change is that the system keeps track of changes to individual entity components on a per-client basis. That should have added a lot of processing overhead when I build the packets for each client, but with sorting and cacheing it ended up not that bad. By keeping all updates for entities together in full updates, by only updating individual components, and by completely eliminating resynchronization, I was able to get some significant bandwidth savings.

I was doing a lot of bugfixing last week. For almost the entire time I've supported fullscreen rendering, switching from windowed to fullscreen hasn't worked. I'm amazed that games get this to work. It doesn't seem like it should be that tricky, but for me, I had to take down and then bring back up every system which is associated with rendering, including terrain, the complete scenegraph, every model, the UI, mapping, textures, all sorts of things. And while doing that I have to maintain the client's view of the simulation. Luckily, while I was fixing another bug I refactored a bunch of messy code down to just two functions which surprisingly gave me an easy way to get this to work at long last. Once that was in, it was just a process of switching repeatedly and fixing all the crash bugs.

Also at long last, my binaries are now cryptographically signed. It's vastly inconvenient to have to get a certificate, but Windows makes unsigned binaries very scary nowadays. It started when Tucows announced a great deal in mid-December on code signing certificates. Save yourself some effort and just go and get a Dun & Bradstreet number before you apply. Comodo originally told me all I needed was to be listed in an online telephone directory and some company documents, so after going through far too many calls and emails with I finally got that organized in the last week of January. (No surprise to me that Yellow Pages are having problems.) Then Comodo changed their policy and I had to get a D&B number which took another couple of weeks (D&B came through ahead of schedule, so props to them.) I finally got my cert February 13, after almost two full months of very tedious waiting.

I had great fun picking out environmental sound effects yesterday and I'm starting on some enhancements to the audio system tomorrow. There doesn't seem to be much good information on game audio system design. I had to search through all of the game programming gems books to find some decent guidance on how to improve my audio system.

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 is four plus three? (What's this?)

  Admin Log In

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