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
By Robert Basler on 2018-05-28 11:52:46
Homepage: email:one at onemanmmo dot com

So the last time we talked, I said I was working on new textures for the terrain. So... that's still underway.

I've been starting to think about the things I need to do to get the next build out to everyone. Back in January I fixed one of the bugs players reported which turned out to be in the container file used to store almost all of the data for the game. The container file does compression and encryption, versioning and some other things for game data automagically. At some point in the last couple months I realized that the fixed files were incompatible with the old ones. Old ones like the files that store all the information about player's units on the live server. Whoops. (Don't worry, I always check that new game builds work on the live data before I release them.) So I spent a day reworking the container files to be backwards compatible (and still fixed) and then rebuilding all the game data in the new format.

I have also been working on procedural rock algorithms. One works great, the other still has problems with texture mapping and geometry sticking out where it shouldn't. It looks good, I like it, but when you really start to look closely at it, it isn't working. I have some ideas for fixing it, but I thought of a better way to fix it when I saw this video. I had already built my new microprops system which was exactly perfect for rendering tons of small models, so I bought the rock models from the video and added in a new rock algorithm which combines my procedural rock generator with the microprops tech and the new rock art. That works well, but it has the small problem that it generates 700MB of vertex data that causes the game to run out of memory.

So to find that out (since normally you have no idea what causes an out-of-memory error,) I spent a day building a new out-of-memory tracker which figures out exactly what's using memory in the game.

But before I could get the out-of-memory tracker working, I had to spend a couple days tracking down a bug related to shutting down the game while it was still loading terrain. Loading terrain is a complicated multi-step, multithreaded process where data is loaded from disk, then a bunch of meshes and materials are generated for terrain, props, rocks and more which are then added to the scene. For a long time now, any time someone quit the game while this process was underway, the game would crash. This turned out to be ten separate bugs that all converged into what appeared to be a single bug which prevented the out-of-memory tracker from running.

You may also have heard a bit about GDPR in the news this last week. A bunch of games closed down because of it. Realizing I needed to be ready for that, I spent a half day researching in a morass of conflicting and outdated information about GDPR to see what, if anything was required of Miranda. Miranda didn't really need any changes because Canada introduced privacy legislation a couple of years ago that covered a lot of the same territory - permission, privacy policies, data security. The new wrinkles are that Miranda now needs the ability to let people download or remove their personal data. Luckily I have a month to comply with such a request, so I'll write those tools when I actually need them. I did have one thing I wanted to do which involved changing the data the game stores for each user. Changing user data in a live game is kind of a pain, because you don't want to accidentally lose or break anything, so there's a lot of extra planning and testing involved any time you have to do it.

Now you may have noticed that the login screen has a greyed-out Forgot Password button. Password recovery is pretty important, given that people forget their passwords. I've had to reset a couple passwords manually already. Getting password recovery working has always been pretty high on my list, and password recovery needed information to be added to the user data, so I thought since I was changing the user data anyway, I should finally get password recovery working.

I spent a couple days researching password recovery algorithms in my downtime waiting for things to compile. What a mess all that is. People forget things, they lose things, hackers are tricky. There is no official standard algorithm for password recovery. Eventually I settled on a secret question/secret answer system, I even started work on implementing it. But when I went to add the new screen for it, I realized that there already was a password recovery screen. The greyed-out button was actually all hooked up except for one detail. That's the thing about working on a large codebase - sometimes you forget what's there. So I ripped out and scrapped all the new work I'd done.

The thing that was missing was the ability to send a password recovery email. Email is sort of messily supported on older versions of Windows - it relies on having an email program installed that adds the ability to send email to the OS. Yeah, I don't know what they were thinking. Probably "I don't want to write an SMTP module." So I'm writing my own code to send email via SMTP. That's what I was working on Friday. Just before I quit for the day, I discovered that every Base16, Base32 and Base64 string Miranda has generated since 2014 has been backwards. Those strings are used for a lot of things in the game, many more things than I want to fix and then test.

So even though it bugs me, Miranda will continue to have backwards strings for the forseeable future. Once in a while game developers just have to let things go. I'm hoping that I can finish the email sending, then get back to figuring out why the rocks are causing the game to run out of memory, then get back to adding the cool new rock art, then get back to finishing the textures (I borrowed some cool photography lights which should help,) and then get back to adding the final few new rendering features to Bold New World.

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)
How many minutes in an hour? (What's this?)

  Admin Log In

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