What’s up with the Commando and Uller (Kit Fox)’s movement speed in MechCommander?

With the years-long CBP Alpha 10 done I finally had some spare time/energy and so sat down to revisit MechCommander 1, something I haven’t played since I was a kid (and very, very bad at it). After first playing through much of the original campaign in my revisit, I noticed that even though all of the light mechs (except for the expansion-only Stiletto) claim to share the same 27 m/s movement speed, Ullers and Commandos always outrun Firestarters, Cougars, and Ravens – even if controlling for possible acceleration differences. I wanted answers, and every source I’ve been able to find parrots the same 27 m/s figure with no note about “btw the in-game value is wrong” or anything, so I tried (and spoiler: failed) to figure it out myself.

Although this is my first time with MC1/MCG modding, at this point the modding tools for it seem to be pretty good for a game this old, and one modder has made it their mission to collate most of what everyone else has been doing in one place alongside their own MCG modding work (thanks RizZen and other modders!). Using these tools to look through extracted game data files, there’s an entry for the Commando(s) in OBJECT2.PAK, and it lists values for maxAccel (3.0) and maxVelocity (40.0). Unfortunately these don’t seem to be what we’re after, because every mech in this set of files shares these same maxAccel and maxVelocity values.

Snooping around a little more, in MISSION.FST there’s some more (extracted) files that have a bunch of stats for individual mech variants. These files don’t seem to answer our question either, as the MaxRunSpeed here is the same as the value shown in-game (27) for both the actually-faster-than-27 mechs (Commandos/Ullers) and the actually-27 mechs (Firestarters/Ravens/Cougars). Unfortunately the available modding documentation doesn’t seem to have a clear answer as to what other file(s) the observed speed value might be coming from. There also aren’t that many files in the game pre-extraction, so there aren’t that many places it could be coming from in the data files.

I briefly poked around the game exe in a hex editor — because hey, you never know what you’ll find until you look — and noticed what looked like some debugging symbols, so I took a look at it in Ghidra and oho, this looks like it would be a very viable full decompilation / reverse engineering project for somebody to pick up (please not me EDIT 2026-04-08: someone is trying to vibe-code a re-implementation), because yes indeed those are (limited) embedded debugging symbols of some kind. We’re missing some valuable stuff like data structure layouts,1 but we do seem to have namespaces and function names, which is already a lot better than nothing.

Searching said function names and looking through the hits for “speed” and “velocity” doesn’t yield an immediately obvious answer – I don’t see clear evidence that those functions have e.g., a hardcoded override for these two mechs.

It should be possible to run all of these functions through a debugger and read values in memory and see if the speed values which they handle are what we’re looking for buuuut having reached this point, knowing that this step wasn’t going to definitely give me a definitive answer, and being very exhausted from sleeping Very Badly™, I decided to leave it for somebody else2 to figure out instead.

I checked out some of the init / similar functions for mechs and similarly didn’t see an obvious answer, though that would be another avenue for tracing-in-a-debugger-to-help-understand-things.

There is one other low-hanging fruit that I haven’t checked. Although I think it’s unlikely, it’s possible that this movement speed difference is coming from either Desperate Measures (the MC1 expansion that comes packed with MCG), or the specific re-pack that RizZen is distributing on ModDB. It wouldn’t be hard to check out both explanations, but I would also be pretty surprised if either of these were the cause of the problem.

Interestingly the official BattleTech stats for the mechs in question has them all at (more or less) the same speed too: ~97 km/h — except for the Cougar at 86 km/h — so this isn’t a nod to lore accuracy either.

So the mystery remains unsolved – if you’re reading this and have been able to figure out why the Commando and Uller move faster than they seem like they’re supposed to, please let me (and the rest of the world) know!

 


 

  1. They’re coming up with mangled placeholders in Ghidra 12.0.4.
  2. Including, potentially, future me, I guess.

3 Replies to “What’s up with the Commando and Uller (Kit Fox)’s movement speed in MechCommander?”

  1. Hello! Was looking through an old external drive full of backups and got flashbanged by nostalgia, came across your site while poking at the Mechcommanders to get them going on win10. I legitimately had no idea it ran at 640×480 lmao, when I was playing these I still had a CRT so it all scaled seamlessly.

    Anyway on-topic, it appears that what you’re looking for here is actually the *animations* – the MCGExtracted collection doesn’t seem to actually have the sprites, but it *does* have a… metadata? that seems to be connected to how they’re stitched together ingame.

    Commando run animation, line 251: https://github.com/oseparovic/MCGExtracted/blob/master/data/sprites/SPRITES.PAK/13.fit
    Uller ditto, line 233: https://github.com/oseparovic/MCGExtracted/blob/master/data/sprites/SPRITES.PAK/8.fit

    Both of these maintain a velocity of 36, which going by the numbers for these stats in the other mech files seems to be set to about 3x what a mech’s tabletop-rules speed is. This would have them running at 12 hexes/turn, or 129 km/h, 33% more than they officially should be, though their run-to-fall transition animations seem to start at 27 which would line up with a Commando/Kit Fox’s 97km/h running speed. I suspect that was missed when they tweaked it.

    The Stiletto seems to be in under ‘firefalcon’ and is the same speed- as it should, speed being about all it has going for it -though the Desperate Measures mech entries seem to be a lot more bare-bones in terms of comments and descriptive text so searching them in VScode is a bit harder.

    Line 254: https://github.com/oseparovic/MCGExtracted/blob/master/data/sprites/SPRITES.PAK/922.fit

    I had a hunch, and you’re right that it’s the work of Desperate Measures/Mechcommander Gold; my install is from a cd I’ve had for ages so it should be ‘clean’, and I compared its sprite defs to the ones on the MC1 iso on ModDB (which appears to be German, annoyingly enough). The only difference in base-game mechs was the speed on these two.

    I assume it’s a balance tweak, to make the Commando and Kit Fox less obsolete once you lay hands on the Firestarter and Cougar. Piloting any Commando variant on the Clan front is what might be called a low-survivability occupation, and the Kit Fox is slow for a Clan light and tabletop-wise has a reputation for its heavy weapons load (including a Gauss Rifle in one config) writing checks that its armour and speed can’t cash.

    Copying the MC1 SPRITES.PAK into the MCX data folder appeared to have the mission 1 mechs all moving at the same speed (albeit getting hung up on each other somewhat). Though of course trying to launch the expansion campaign caused a crash due to missing data. Maybe it’d work fine right up until a mission with an added mech? Not really worthwhile.
    “Fixing” this properly, if desired, would probably involve editing the relevant .fit files and repackaging them into the .pak, but while there’s a modding tool for unpacking, and Rizzen has a ‘blog’ entry on moddb describing the process of re-packaging the .pak, they don’t actually seem to have a tool for it up.

    Separately, weapon stats appear mostly the same; LRMs got a 20% damage nerf, along with, possibly, Elemental lasers.

    IDK what other changes there may have been though, just took a quick poke.

    1. Thanks so much for checking it out and taking the time to share about it! I’m actually pretty surprised it did end up being a MC1 -> DM/MCG thing given that I have literally not seen a single mention of the expansion including those changes – would’ve thought someone would document it somewhere. I did wonder if somehow speed was ultimately defined by animations rather than the “listed” value (Rise of Nations has a not quite 1:1, but vaguely similar thing going on sometimes where an animation can effectively define a unit’s attack speed rather than their listed attack speed stat).

      And yeah, as a balance tweak it does make some sense, though at the same time it kind of steps on the Stilleto’s feet a little? Idk, I guess it’s not really a big deal either way.

      Weapon stats also being tweaked is very interesting 👀. I’ll put documenting the changes on the nebulous low-priority todo list.

      I actually threw together some (not robust) basic tooling while working on investigating the MC2 patch, so based on that experience it seems like it might not be too hard to fix up. Whether that means “restore MC1 values for maximum nostalgia” or “update the tooltips so that the game isn’t lying to you” I guess could be up to the user. Thanks again for looking into it – I honestly threw up the MC1/MC2 posts assuming nobody would ever read them lmao.

      1. All good, I was mostly hoping to snaffle some sprites of the Bushwacker (my beloved ❤️) before getting curious about what the git upload *did* have in the sprites folder and what the promised mech files had in them.

        I dunno that the speed/damage changes are material even beyond the suspicion that more people have played MCX than MC1; Elementals barely show up (probably because clicking them is so tricky), using Commandos/Ullers as the player is very risky and the AI doesn’t tend to “kite” with fast long-range mechs IIRC. LRMs probably deserved the nerf; they can be a bit oppressive as-is when deployed in bulk.

        Though – some of it might also be to make them better at scouting vs the Raven, given that most Clan heavies are otherwise only marginally slower and have a massive edge in range and firepower.

        Documentation is a bit scarce but that’s not unusual for minor games I think. It’s a wonder Rizzen kept and uploaded all the stuff they did. For ex. what the difficulty options actually *do* beyond make the game easier or harder doesn’t seem to be written anywhere either (appears to be salvage chance and bonuses/penalties to player and enemy pilot skill & weapon damage incidentally). Read something somewhere about how maybe the Mechcommander 2 ones add more enemies to missions or something but no clue.

        I 100% get the “shouting into the void” effect; though the upside of doing it on a blog instead of a discord or smth is that someone with the right kind of brainworms can stumble over it on Google (or actually *find it* when trying to diagnose something – hate to imagine how much knowledge is getting hidden and lost on discords). Though IDK if I’d have said anything if it wasn’t so freshly posted.

        Funnily enough Rise of Nations was another game that was a fixation for a while; though my main memories are obsessing over the Microsoft web page/encyclopaedia for it, watching the little dudes in the Industrial Age artillery picking up shells and throwing them into the breech, and destroying and rebuilding my own farms because some of the crops were different colours and didn’t match, which probably gives an idea of my age at the time. Though when (rarely) playing RTSes I still tend to spend too much time watching the little dudes do things, so it’s probably for the best it’s 99% single player. That and the slow reaction times, turtling, vibes-based tactics & strategy, and psychologically dividing the map into My Side (keep out!) and Their Side (where they belong)… I own quite a lot of RTSes for someone who’s not very good at them.

        Rise of Nations was quite good for Little Dude Watching IIRC, compared to Age of Empires engine games. Company of Heroes and Dawn of War 2 ditto – which are dangerous because on the one hand the little dudes are clever and can look after themselves somewhat, but on the other it makes them more interesting to watch…

Leave a Reply to Vana Cancel reply

Your email address will not be published. Required fields are marked *

I accept the Privacy Policy

This site uses Akismet to reduce spam. Learn how your comment data is processed.