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.)
Traditionally Command & Conquer doesn't have a unit cap (other than C&C4 which we'll ignore because it's awful) so up until this last week I hadn't thought too seriously about a unit cap in Miranda.
I've been replaying Homeworld (Homeworld Remastered) this last week and one thing I had forgotten about that game is that it has hard unit caps. The unit caps are fairly generous, but nevertheless there are caps (only 6 destroyers! can you believe it?) The reason behind the cap I suspect, is because unlike C&C, units carry over from mission to mission and the designers didn't want to make it too easy for the player to steamroll the AI by simply capturing every ship put against her in the earlier missions.
Homeworld's unit cap is per category, so 6 destroyers, 100 fighters, 16 salvage corvettes, etc. They are reasonable limits, but an average player is going to have to work within these limits eventually.
At the moment Miranda doesn't have a unit cap (other than a limit of 16 construction buildings per category which is purely a UI limit) although I always figured I'd need to add an upper limit at some point. Reasons to add a unit cap include:
- Miranda is more like Homeworld in that players keep their units indefinitely, they aren't given a clean slate before each mission like Command & Conquer.
- Limits force players to make choices - which are always a good thing.
- A cap mitigates force-size imbalances between new players and experienced players. Experienced players will have cooler units, but not a crushing numeric advantage.
- A plague of cheap tanks. A cap would prevent the pathological case of a player creating tens of thousands of units (tanks/superweapons) and using them to annoy other players.
- Load time after login is directly proportional to the number of units the player has.
- A player logging in with 10,000 units may cause performance problems for other players on the same server.
- A cap limits storage/bandwidth costs per-player.
The only really compelling arguments I can come up with against unit caps are:
- They suck!
- Command & Conquer doesn't have them.
So what do you think about unit caps in Miranda?
Once I got the server up, the next thing I wanted to tackle was revamping the design for combat. The original combat system was sort of rock-paper-scissors-lizard-spock. It worked, but it was a little too complicated for people to be able to figure out intuitively.
The new system is based on the design of Red Alert 2. Each of the 6 types of units (construction buildings, ATV's, tanks, utility buildings, air and superweapons) has one of three armour types (light/medium/heavy.) Players will be able to figure out quickly which weapons work effectively against which unit types.
Thanks so much for letting me know of the problem. I looked at the server log and you appear to have arrived from a direct link to page 6, which would account for what you're seeing. Maybe check your bookmark is just http://onemanmmo.com/
I think your web server clock threw a wheel. Suddenly your 2016 posts aren't at the top and 2015 ones are. For a while the IT post was at the top, now on Aug 9th the April 2nd, 2015 post moves to the top as if it were brand new. At a guess, the ...
Both buildings and vehicles capabilities are based on the components chosen for them so all the things you describe are currently possible, although I don't have as many component variations as I'd like yet.
In the final design, partially filled harvesters can happen. While there is still a timer to tell the harvester when to leave, if the field is low on resources the timer is shortened, also the player can tell it to leave and it will leave with a ...
Any thoughts to expanding base design/building using components? Possibly as a future feature or expansion.
I'm a personal fan of the Tower Defense genre, which origin is attributed to RTS - specifically the Autumn Tower Defense level in Warcraft 3. ...