A new build of The Imperial Realm::Miranda is finally live. It has been a while since the last update, mainly because there were a couple of big changes to the game that I wanted to finish. The really exciting thing for me about this build is that with a full complement of units for the Independents, it is the first one that really tests a lot of the game features I've been building.Note: The database on the test server has been wiped. Testers will have to create their accounts again using the same Secret Lair Code as previously.
This screenshot shows all the units that can be built from the Independents' default inventory before the player needs to start shopping at vendors or hunting for crates.
I hate it when I hit Friday afternoon and I haven't finished what I was working on that week. I like to be able to do demos on the weekend. It looks like that's going to work out for me this week.
Since the end of July I've been working on a full set of units for Miranda's Independents faction. It took an amazing amount of time to figure out just how to get all the game elements I wanted, and put them into the framework I've set up for Miranda. I've worked on lots of other things as well - I can only spend so many hours in a spreadsheet without doing any programming - but an initial full set of units for the Independents was the big goal. After doing a lot of research and game testing and building a stack of messy spreadsheets, that goal is now mostly achieved (although many units' special abilities have yet to be implemented.)
[ATVs on the move, Hover Tanks & a Few of the Independents' New Units.]
Friday I had what I believe is the first new feature that didn't require a single engine change: I made a new explosion (the one in the middle.) All that was required to add this was a script file change and some new art. I now have all of the elements I need to make some nice explosions:
- Animating, color changing particles for fire and smoke.
- Hot spark particles.
- Debris particles.
- Spherical particle emitters (smoke and fire, shockwave rings.)
- Ballistic particle emitters (sprays of sparks.)
- Camera shake.
- Screen whiteout (not shown in these explosions.)
- Audio propogation delay (farther explosions take longer for you to hear.)
I'm not totally satisfied with these yet, but now it is mainly a matter of adding to and tweaking the art. The plan is to have a few more explosion effects in the finished game.
I've been programming for 34 years now. I have never had this happen before.
I was working on a feature for the AI for units in the game. If the AI decides to move to attack an enemy, I want it to return to its original location afterwards so units don't just wander off whenever an enemy comes by.
To implement this, after a unit is downloaded to the client, I save the unit's position so it knows where to go back to. With an existing unit exactly nothing happens then. Just like I planned it.
By happenstance, a brand new unit's Y location isn't actually set to a good value when it is downloaded, (shortly after it is downloaded, some other code sets the Y value to place the new unit at the right height above the terrain.) The first time the AI wakes up and looks for something to do, it sees the change in Y and as far as it is concerned, the unit has moved. The AI then tries to move the unit back to its home location (where it actually is already) however, as part of the process of moving to its destination, it does a collision check to make sure that the destination it is moving to doesn't have any other units on it. If its destination is blocked it will move to the nearest clear location.
I had another feature on my task list which said:Make new units find a good position to park instead of just appearing on top of one another in front of the war factory.
in the AI does that for me now completely for free!
The first time a unit moved aside after creation I was completely astonished. AI is voodoo.
This was just a super-quick test of the new AI support for base defense turrets (the weapon effects are recycled for now.) Like Command & Conquer, they are disabled when the base has low power.
[Base Defense Turrets]
One thing that always bothered me about this otherwise quite nice shot of Miranda is that all the buildings are buried in the terrain to varying extents. Until today it was the ugly but unsurprising consequence of flat-bottomed buildings and non-flat terrain.
This screenshot shows Miranda's new deformable terrain. Wherever a building is placed, a patch is placed on the terrain to flatten it out. There are still places where even this can't provide a perfect presentation (like when two buildings are very close together,) but overall it is a considerable aesthetic improvement.
I gave Matt at MMOs.com a lengthy tour of The Imperial Realm::Miranda. Read it here
While the game client is the biggest single piece of Miranda, by sheer numbers, tools are definitely winning. There's a tool for importing Collada 3D models, one for putting assets into container files (sort of like a ZIP tool) (thanks music industry), a tool for creating Secret Lair Codes, a tool for converting the string database into a quick to load, quick to search format, a tool for analyzing memory reports for when things go horribly, horribly wrong, a tool to run the servers and restart them in case they crash, a tool for doing evil things to PNG files that shaders like, a tool for processing and procedurally generating all the terrain data, about 50 tiny automation tools (also known as batch files,) a tool for loading TOS documents into the database and last but not least, a unit testing program that makes sure that I don't accidentally break anything important. Whew.
I had planned to add a bunch of new units to The Imperial Realm :: Miranda
next, but when I started to work on that, I discovered I hadn't actually figured out how best to do that, so instead, I've been doing a few little things while I thought about it.
[Shields, Territory Capture & Unit Caps]
One of the most common attacks against an online game is to use a program like WireShark
(which is awesome) to figure out the networking protocol and then use that knowledge to gain advantage. One common example of such attacks is the dreaded aim-bot
(this one's for Quake) where a computer program aims and fires perfectly for the player in a multiplayer game. Tools like this one also able to gain additional information for the player that normally wouldn't be available to them (like the location of players hidden by walls.)
After today, such attacks will be much more difficult on Miranda because communications between the client and server are now encrypted.
I'm not going to say too much about how it works, but I read a bit about game protocol encryption and it basically comes down to using a fast symmetric encryption algorithm, have different keys for every session, and if you can, use an expert's implementation (don't roll your own.)
You're right, think I've got it now. Thanks for the feedback.
Nice, but just one thing: This makes the next post and previous post links difficult to read on some of the background pictures. I'd suggest making them blue like the rest of the floating text.
Assigning Secret Lair Codes in pairs is a good idea, this way I'll be able to choose my own doom.
Hey Dondergod, since we're the only people posting here I imagine we'll have to pick opposite sides to fight on. I hope you'll be a worthy opponent :D
I did not want to ask it when you released the previous blog :P. Anyway, still looking forward to get my hands on the game!