This week I started work on my final big feature - getting Miranda's server to run on multiple server PC's at the same time. This is the key to scaling Miranda up to tens of thousands of simultaneous players. The server has been designed from the start to run on more than one PC, but until now I've never actually tried it. The work requires 13 programs plus their associated debuggers running on two PC's to test anything. I use batch files to set everything up, but its still really time-consuming and tedious.
Fun bug showed up last night, first time in the five years I've been running Miranda's pathfinding. I was driving a group of tanks around the map when all of a sudden, two of them wouldn't move. I looked in the log and the pathfinding was giving up with "no path to destination" errors. Weird, they were moving fine a second ago and the destination I was clicking on looked fine.
[Stuck tanks - This should never happen!]
Stuck characters are a common problem for MMO's, usually requiring special menu options and customer service and I thought I'd never have to worry about that particular problem so... Eek!
This screenshot shows another of the new HUD icons. Unit designs at their unit cap get an infinity symbol overlay plus a note on the tooltip explaining why they can't be built. (Players can only build a single superweapon.)
[Superweapons at Unit Cap (infinity symbol)]
I was fixing bugs and adding little features last week. Box select no longer selects buildings, only vehicles. Clicking on the minimap moves the camera again like it is supposed to (still have to add the ability to move selected units.) I fixed the harvester so it doesn't complain out loud every 3 seconds if there are no resources for it to harvest. I also fixed a bug which left the superweapon UI on the HUD after it was destroyed. All in all, 12 major bugs fixed along with a bunch of little crash bugs I fixed along the way.
I added a resource capacity bar for harvesters. It shows both the volume of resources contained in the harvester and the type. Borrowing an idea from one of the achievements I actually worked pretty hard to get in Skyrim, I added Rich
achievements when the player reaches 1,000,000 and 100,000,000 dollars. So 5 new features in all.
The biggest feature this week is the addition of better handling for when a player gets wiped out. The wiper now gets some XP as well as a notification popup. The wipee is a bit more complicated. They receive a popup notification when their last unit dies. The server keeps track of whoever the last real attacker was for each player so that even if a player decides to try to skip out by selling their remaining units, the attacker still gets credit for the kill. Previously the eliminated player had to log out/log in again to get a new construction yard. Now the game looks at the player's inventory and bank balance and decides if the player gets a free construction yard or needs money, then the client switches back into base layout mode. That last transition is pretty tricky, I'm optimistic I can get that working tomorrow.
One more screenshot. This shows the beginnings of a tutorial (red arrow) as well as the new inventory empty icon (box) and a design that is locked out because of missing Perk prerequisites. Also, the resource field looks quite nice while harvesting.
[UI Updates - Tutorial & Status Icons]
[Fuel-Air Explosion Superweapon]
I was doing some quality assurance work on Superweapons today and I thought it made for some nice screenshots. The first test there was nothing left of my base but the construction yard. :) The Fuel-Air Explosion is an area of effect attack. Here are the hi-res frames:   
Demoing a multiplayer game on a single computer with no internet is not optimal. The funnest part of Miranda is blowing a bunch of stuff up, but without any other players, that's a little hard to do. I thought a lot about the single player content in Miranda on the drive home tonight. Most MMO's have NPC's to fight. Should I focus more on PvE? There are things to do in Miranda by yourself, but is it enough? I kind of concluded that if nobody is online, why have an online game in the first place?
One of my favourite players, I call her The Clicker
came by and played Miranda again tonight. The first time I watched her play at Full Indie I was completely flabbergasted. I had never seen anyone play like her. She clicks all over the screen, continuously and fast. Click click click click click click click click click click click click click click click click! The first time she played the game it crashed almost instantly. After watching her last time I added a visual feedback for every click on the terrain to tell players that their click was accepted. It turns out that for her that is completely ineffective. I have plans to add audible feedback as well (not that you'd be able to hear that in The Butcher and Bullock.) I hope I see her again so I can learn if that helps. Oh, and she was able to crash the game tonight, but it took a lot longer than last time. It's probably worth investing in a soak test that randomly clicks the UI.
One intriguing comment was that by making such an ambitious game am I inviting unfavourable comparison with games with much higher budgets like Starcraft II? OK marketing department, there's your challenge.
I got lots of helpful feedback tonight. Watching people play your game is so educational/scary/thrilling. A big "Thank You" to everyone who came out to Full Indie
This is a response I posted to some concerns about balance and progression on Reddit.
The blog post doesn't make it explicit but Miranda isn't a traditional RTS with individual matches. It is a seamless open world RTS with 10,000 players all together on the same map. I'm still figuring out all the ramifications of that reality.
Work on player progression is still progressing - for four weeks now. There's probably another week and a half more work then I'll make a video of the new screens (cuz they're whizzy.)
You Got Your RPG in My RTS(*)
Traditional RTS games unlock units as the player progresses through the campaign (or based on rules selected by the person who sets up the multiplayer game.) Miranda doesn't have a campaign, so I needed a way for the game to unlock abilities for the player as they play through the game. Something that would give players time to use each new tool and learn how it can be most effectively applied. Prior to this work, every unit in the game was unlocked right from the start which was pretty overwhelming and not very fun.
The solution I've adopted mashes together ideas from Skyrim
, Fallout 3
& Dragon Age Origins
as well as Dungeons and Dragons
. Miranda now lets the player choose their optimal blend of light or heavy weapons, attack power, defense, stealth, economic, or even high or low technology approaches to the conflict. It also limits each commander to about a third of the total set of abilities for each faction. This makes for interesting choices, and encourages play with other players who may have complementary strengths.
There are 9 attributes for commanders which vary in value from 1 to 9.
[The new Attributes Screen]
Another exciting week of load testing and fixing bugs. The good news is that all but one were client bugs - the server was super-stable all week.
[Terrain Builder Tool]
I got a third test PC this week and was able to push the server past 60 users. I decided it was time to up the ante and turn unit movement back on for load testing. I fixed the couple of bugs that immediately showed up, but with everything working good I enabled the profiler on the server and discovered that the pathing, collision and movement code is still way too slow to support 1000 players per server.
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.
Thanks, I'm still looking for ideas of what people think could be fun to do in an open world RTS.
Sounds awesome to me, i like the idea of NPC encounters/quests etc,one thing i found when i played was you are right once you build a base and get harvesters running etc, if noone is there to fight you kinda float about waiting. Dont know what you ...
I had an absolute grand time playing this weekend. Thanks for helping me out whenever you could, Rob!
Looking forward to an awesome future
Hey Dondergod, what firewall program, and what did it complain about? It's not BitDefender
I tried to get in, but my firewall kept blocking it.
Unfortunately I did not have the time this weekend to look further into it. Probably an easy fix, but I had too much to do.
Hope I will be able to enter the next test!