The revised hud in Orcs vs. Martians is coming along nicely. Screenshot (click to enlarge):

There have been lots of other improvements and developments in the past month as well, both in the hud and elsewhere.
Hotkey group display
The hud now shows a summary of the hotkey groups. These are the ten groups assigned by the CTRL + number key combination. The summary shows which groups are currently assigned, and what kind of unit/building they contain.

Dynamic chat log
The chat log now appears and hides itself dynamically. When not in use, it rolls itself into the top of the hud, freeing up extra real estate.
now you see it

now you don’t

Base summary
There’s now a small base summary display in the upper-right corner of the hud.

This summary allows the player to check on the status of his bases at a glance. Normally, he’d have to select the bases or hover over over them in the 3-D view to see info about them.
Improved details display
The details display now has two modes, selection and upgrades. Selection mode shows the currently-selected units or buildings.

Upgrade mode shows each player’s upgrades.

The upgrades mode is partly new, in that it now shows enemy upgrades. It used to show only the player’s own upgrades.
One twist with the upgrades mode is that it shows only enemy upgrades that the player has actually seen. It’s quite possible for enemies to have better upgrades than the player knows about, hidden behind the fog of war. Until you actually spot a unit or building that has an upgrade, it doesn’t show up. That way you can never be quite sure what kind of advances your enemies might have, until you’ve forayed deep into their territory.
I used to try to show information from both the selection and upgrade modes on the hud at the same time. But there wasn’t enough screen real estate, and it was too visually complex. The user now switches between the two modes using the TAB key.
New unit/building portraits.
The 2-D unit/building portraits are now generated automatically from their respective 3-D shapes.

This is nice from a development standpoint, because it allows me to revise the 3-D art without worrying about updating the portraits. It also means a smaller download size, since the game won’t need to ship with portrait image files (they’re generated at run-time, in-memory).
This feature still needs some work; for example the units’ weapons don’t show up yet in the portraits.
Building fire
Buildings now catch fire when they’re damaged.

I actually had this feature in the game a long time ago. Originally, it required network bandwidth to work. I tried to remove that requirement and make the fire be client-side-only, but it stopped working. It turns out that Torque needs to be explicitly told when an object is client-side-only, otherwise the object won’t render. That was the problem in the case of my fire. I’ve fixed it now and the fire is working again.
In case it helps someone else, the fire is implemented as a standard Torque ParticleEmitter. The fix to make it client-only was to set its ScopeAlways flag, and to clear its Ghostable flag. That’s basically all there was to it.
Robot damage
Martian robots now emit oily smoke when damaged.

This uses the same client-side ParticleEmitter approach that building fire uses, so smoke also requires no network bandwidth.
Overkill limiting
Ever get annoyed while playing an RTS, because a hundred of your units fire at the same target, and don’t shoot at other targets in the same vicinity? The first target gets oblitterated, and then you have to wait for all your units to reload again. Meanwhile, your units get pelted by return fire from the other targets that are still alive. When your units do reload, the same thing may happen again.
OVM now contains A.I. code to prevent this. As soon as there’s ample firepower headed towards one doomed target, your units that haven’t fired yet will automatically select other targets. This helps spread out your units’ fire, making them more effective. This feature is especially helpful in large or lopsided battles.
By interesting coincidence, I ran across an internet discussion of this issue just after I started to implement the A.I. in OVM to prevent it.
Visible carried resources
Resources carried by workers are now visible.

Right now I’m just using a placeholder 3-D model to represent the resources (a backpack). For release I’ll use something more accurate, like logs and/or stones, which is what resources are in OVM.
Game tips
The loading screen now shows a game tip while the user waits for the game to load.

There’s also an optional tip window at the start of the game. This window allows the user to cycle through the tips, and to turn the tips off.

The user is also now able to pause the game and get to the tips, via a help sub-menu.


Tabbed options
The options dialog now sports the look of a tabbed property sheet.

Auto-groups!
Orcs vs. Martians can now automate assignment of hotkey groups! The user simply tells the game which types of units & building to assign to the different group numbers. The game will then automatically add new units / buildings to those groups, as the units / buildings are created in the game.

I really like this feature. It’s yet another way to reduce RTS micromanagement. I haven’t seen this idea tried yet in any other RTSs I’ve played.
About dialog.
The game now has an “About” dialog.

The credits window self-scrolls. Even to do something as simple as that, though, I had to add code to Torque’s C++ GuiScrollCtrl class. Torque’s gui control classes are pretty bare-bones, IMO. They implement just barely enough functionality to satisfy what a typical first-person shooters might need; do anything beyond that, and you’ll need to extend the gui classese yourself. But, I’ve found their implementations to be pretty straightforward and easy to work with, so it’s not a big deal, it’s just always a little extra work.
Demo mode
The game now has a demo mode, in addition to the full mode. The demo mode limits some features until the user purchases the game.
I also added in some simple copy protection.
Nag screen
The demo mode now shows a nag screen when the game exits. This is the notorious screen we all know and love that makes a sales pitch for buying the full version of a game. I don’t actually have the screen drawn yet, but there’s a placeholder for it and the code is implemented.
Pre-release expiration
Pre-release builds of the game now expire after a certain date. The game then gives a link to the RedBrickGames.com website, so a user can get a more recent build. These kinds of features are boring to work on, but they need to be there.
Replays
The game now supports simple replays.

Replays are available immediately at the end of the game (well, after the data is streamed down from the server, they are) without having to exit out to the main menu. Players can watch the replay while still connected with the other players, and can chat about the replay in the chat gui.
Game setup
I’m in the process of revamping the game setup screen for ease-of-use.

The ping bar-indicators on this screen now work! Torque really shines here - the ping bars turned out to be easy to implement. Torque already maintains a list on the server of all the client network connections. It’s named ClientGroup, intuitively enough. Each element in ClientGroup is a GameConnection object. Those objects have a getPing() method on them, and Torque does all the work in computing the ping. So all OVM has to do is periodically poll the GameConnections for their ping, and then draw the ping indicators.