When I originally envisioned the server for Miranda, I thought it would have a massive Tranquility-style MySQL server at its core running on giant SSD's and a ton of RAM that contained every bit of information about Miranda's world where I would dramatically tweak game settings in real-time to fight griefers and continuously refine the gameplay. Initially this was how the game worked. All the information about players, every setting, every unit stat, all of it was loaded into MySQL.
The first two superweapons in Miranda are the the Empire's Fuel-Air Explosive Missile and the Independents' Orbital Bombardment Platform. Both weapons are powerful area-of-effect attacks and each player can only have one. Unlike superweapons of old, the superweapons in Miranda have a 5KM maximum range - this range limitation reduces their griefing potential. The really dangerous thing about superweapons is that they erase the shroud above the superweapon for all players in-range who have radar. You build a superweapon, you better be ready to get hit by one.
I mentioned last week that I had a small design flaw in my networking to look at this week. Work on that flaw, increasing the capacity of the server and fixing the few bugs that came up along the way took up the whole week.
This past holiday Monday I spent a few hours playing Guild Wars 2 and tried the Mystic Forge for the first time. As soon as I tried it I realized that the UI design
they were using would make a much better interface for the Unit Design screen in Miranda so I took a break from server optimization to rebuild that screen (and make
something I could take a screenshot of for a change.)
On the new unit design screen, every time you pick an item from your inventory to go into the design, the game applies the unit design rules and grays out any
inventory items that don't fit the design based on your previous selections. This simple refinement eliminates a whole bunch of numbers and red things and greyed out things
that players would have undoubtedly struggled with.
I was also reading an article on MineCraft where the author said that because there weren't any instructions for MineCraft when it started, that the
community got together to discover what you could do in the game. I realized that all the stats that Miranda was exposing
entirely precluded this kind of experimentation and discovery so I have removed all of the component stats from the UI. Players will have to
figure out which components are best for what through experimentation and shared knowledge. Players will still have a few things to go on initially: name and
description, price, quality (color), tier, sellability, veterancy and build time.
I've been wanting to do more video, so I recorded a demo of the new Unit Design screen (and some other things.) There isn't much game audio in the video, there's still lots
of work to do on that.
[Designing a New Tank (3:18)]
Work on the server is still proceeding nicely. I can currently get 35 clients to remain connected reliably.
I've fixed a few more little bugs but most of my time this week was spent hunting one of my two terrible bugs.
I was pretty happy when I finally tracked it to a rare desync in the list of entities that the client is currently interested in. If it happened that an entity was added
and then immediately removed, the server thought it didn't need to tell the client about that change. It was wrong.
Above 35 clients I have a small design flaw with my networking that causes a packet flow backup. I'll be tackling that on Monday.
I got 50 clients logged in this afternoon - squeeeee! So maybe that doesn't sound like much for an MMO, but its a pretty huge step forward. The goal of this initial load testing was to get 50 game clients into the game at once with 5000 units moving around and fighting. At the start of last week it would start crashing with around 3 clients in the game. Over the last week and a half I've fixed 24 bugs, some small, some rather challenging. I still have two more I'm working on and eight I've seen only once.
Fauxranda is The Imperial Realm's new stress client. A stress client is a game client stripped to the absolute minimum, no graphics, sound, or user interface with a simple scripting system tacked on so that many, many, many of them can be run on a single PC in order to simulate large numbers of players connected to the server. Fauxranda logs into the server, creates 100 tanks (and a construction yard) then drives them randomly around the map looking for things to shoot at. While it does that, it finds bugs. Hopefully all the bugs, so that players won't have to. The other goal of Fauxranda is to help me optimize the server so that I can reach the goal of supporting 1000 players on a single server.
The first time I played Miranda with the shroud rendering enabled I was surprised by how much scarier the game had become all of a sudden. Now I was wondering what was in the dark just beyond the line of sight of my tanks.
"These reports of assassination attempts on Marvel are clearly fabricated. It's ridiculous. If someone really wanted that little girl dead, she'd be dead. She doesn't even have any bodyguards! If all these so-called attempts have been foiled, where are the assassins? We live in the safest time in the whole history of The Imperial Realm."
- excerpt from Royal Press Briefing, 3 Strongdays, 30695 Y.O.E.
Monday I finished up the effects while harvesters are harvesting. Now the harvester gives off clouds of dust and resource fragments spray out as well.
Friday was fun, I got to spend some time recording temp audio cues for the harvester.
[Harvester returning to Base]
The rest of the week was spent fixing bugs and getting the AI controlling the harvester to work. The good news is that harvesting is now working just like I wanted. Here is a harvester on a resource field with very few remaining resources.
[Nearly depleted double-yield resource field being harvested.]
If you have an old Core i7 sitting around idle, upgrade that thing! I've been needing a PC upgrade for a while, so I was quite pleased to discover that with a few new parts, running my most demanding games still only uses 40% or so of my old first-gen Core i7. I'd love a new PC, but the smaller cost of upgrading the other components to have a competent gaming PC is surprisingly worthwhile.
Player count was up, crash count was down so both those numbers are trending in the right direction. There's simply no way I can find all the bugs myself because everybody plays different and has different equipment (we tracked one player's crashes ...
A player found a bug that only affected players playing for the first time today and resulted in most keyboard controls (like WASD scrolling) not working. I have put out a new build which will prevent this problem going forward. ...