January, 2012 Q/A Session
Q: Hello there, so what's cooking for WiC MW?
blahdy wrote: Hey; So as people are aware, we've finally released MW Mod 2.0. It's been a fun journey, started originally in 2009 as Fun Mod, this mod has been sitting in beta for literally two years. It's been sitting that way until we've finally reached the state of what we always wanted to see in WiC, since 2007 when the game was originally released.
Q: 'What we always wanted to see in WiC' -- This would be the Flexible Interceptor (FLINT) engine we created. Can you describe it for the readers?
blahdy wrote: Flexible Interceptor or FLINT for short, is a high-fidelity missile simulation layer written in Python 2.7. What makes it unique is that for the first time, FLINT has made WiC the only RTS title on the market to have missiles behave with such authenticity in a matter that competes against combat flight simulators.
The only other games in the market that you will find with similar missile modeling and simulation would be combat simulators, such as Falcon 4 and Digital Combat Simulator (DCS). We've taken what they do in combat simulators, combined with the beautiful and coherent user interface of WiC, and turned it into something that even arcade gamers can fire with ease and still get great entertainment results.
Q: You've spent nearly a year writing FLINT in python. I mean I remember when the first FLINT "test round" was an Mi-24 Hind going supersonic to suicide into enemy plane, lol. Out of all these times you've spent on FLINT, what was challenging for you?
blahdy wrote: The first challenge I had with FLINT was that game hated it and kept crashing every other minute, quite literally. In order to give missiles the intelligence they needed to behave like in real-life, we had to make them as in-game units, and write a new FLINT Missile Mover algorithm to "move" these units in the game world. This is because WiC is not quite moddable as we wanted -- for example, everything related to the way homing projectiles behaved in game were hardcoded in C++, something that was off limits to modders. We were able to bypass this limitation with FLINT by turning missiles into units.
Long story short, all the crashing problems have eventually been resolved and now it's amazing how stable FLINT has become and game does not crash anymore.
Once crashes were resolved, the next stage was realistic missile guidance. The first thing I worked on was taking a crash course on missile guidance and come up with the necessary math functions to achieve Proportional Navigation (PN) guidance in game. Originally used by the AIM-9 Sidewinder in 1954, PN has since been used by nearly all missiles in real-life to "lead" their targets as they intercept.
The second thing I worked on was a program function known as Inertial Measurement Unit or 'IMU' for short, to enable inertial guidance by the missiles. The IMU provides basic simulation of measuring missile's inertia every frame and uses that information to derive guidance (inertial guidance) data. To simplify, if you are chasing someone, but suddenly you close your eyes while chasing, your head will still "remember" where you've been looking at and you'll continue running in that direction until you open your eyes again to "correct" your 'inertial drift' toward your target.
When Hellfire missiles in game pitch up to raise their altitude, there is no set parameter in the code that tells the missile "you must raise to x number of ft in altitude before leveling out." Instead, the IMU measures the Y axis inertial acceleration and decides when to level out.
Q: Something has to be said about the Apache Longbow system in game. It's literally a missile truck that can take out several targets simultaneously. To an arcade gamer, it looks very seamless and amazingly easy to use, but to a flight-sim enthusiast, its behavior is quite realistic and intriguing. I know you're addressing the balancing issues but can you describe for readers on some of the behind the scenes details?
Yeah sure. The comments I received was that Longbow in WiC behaves like Jane's Longbow, quite funny for an RTS :) Yet the beauty is incredibly how easy to use to the point of being overpowered, while retaining all of the realistic parameters we wanted.
The Longbow program in game is broken into two parts. First section is the helicopter and its radar to detect targets. Second section is the missile guidance.
In the first section, the code uses a technique in real-life known as "Track While Scan" or TWS. Using TWS, the program remembers the targets it finds into what is known as "radar tracks". Each track is updated during routine search & detect cycle, without alerting the target that he's being "locked on." The program then takes list of all the tracks, up to 128 of them, and sorts them based on threat priority. Anti-air threats are prioritized so they get shot at first, then the list goes down to less threatening targets.
In the second segment, the Longbow fires the AGM-114L Hellfire with millimeter-wave band active radar seeker. The distance at which missile seeker can lock onto the target is rather limited, so the missile is often fired in LOAL (Lock On After Launch) mode.
With LOAL mode, the missile is fired into a "basket" or "kill box" without actually seeing or locking onto anything. You'll see that the missile initially pitches up and raises altitude. Once the missile arrives at the basket, it then turns on its seeker and starts narrow scan until it finds a target to home into.
To prevent redundant re-attack against the same target and wasting rounds, as missiles are flying toward their assigned basket, the Longbow acquires them and begins transmitting updates to the missiles. This process is known as "mid-course update" and "fire & update data-link." Over this data-link the Longbow sends target coordinate updates to make sure missile gets delivered to where it needs to go; once the missile arrives in the basket, the Longbow tells the missile where to look to find its target. From that point, missile drops its down-link to the helicopter and begins diving onto the target from high altitude.
Q: Quite impressive indeed. How about the laser-guided variant of Hellfire missile?
blahdy wrote: Yea, the other variant of Hellfire is the AGM-114K, which is the semi-active laser homing version. With semi-active laser homing, the missile looks for a coded laser reflection from a target, locks onto the laser source and homes in.
The laser 'illumination' or designation of target can be done by the helicopter itself (TADS) or by an infantry player using JTAC infantry near the target basket. To ensure simplicity of user interface and gameplay, by default, your helicopter will always automatically lase the target for you, without having you do anything but simply fire the missile. However, your chopper needs to continue facing the target while target is being lased until missile impacts. If you turn your chopper away for too long, missile will lose the laser spot and miss the target.
If JTAC infantry is providing the laser designation, then you're free to turn away your chopper, no longer exposing you to hostile AA fire, giving you that "fire and forget" part of Hellfire acronym. With JTAC, the infantry player has the "man in the loop" authority to override your Hellfire guidance and guide it into whatever target he wants.
Both LOAL and LOBL launch modes are simulated, again, without requiring the player to know anything -- it's all done seamlessly behind the scenes. If the target is too far, missile will guide in LOAL mode automatically.
Just like in real-life, both ripple-fire and rapid-fire modes are also supported. With rapid-fire, a single helicopter fires several missiles in LOAL mode, by targeting the ground next an enemy unit. The chopper or nearby JTAC infantry then designates the target and all missiles go after the designated target. As soon as first target dies, you then switch your laser designation ("walking the laser") to the next target and remaining missiles will maneuver to hit the next target. With this rapid-fire method, several targets can be destroyed in series. But you also need to make sure you provide just enough spacing between missiles so they don't all arrive at the same time.
Q: JTAC has been my favorite. Even playing co-op in LAN against bots has become so much fun. The fact that infantry and air players have to literally work together to bring teamwork just changes the gameplay in ways you couldn't imagine.
As we move forward, what are the new upcoming changes we can expect?
blahdy wrote: The first upcoming news is 2.0.1 mod update and map pack. We will be releasing two new maps. In 2.0.1, various bug fixes are contained and the update will also re-introduce SA-15 Tor M1 SAM for Russian faction, to balance the air power. The SA-15 can intercept incoming Hellfire missiles, providing a mobile air & tactical missile defense for the advancing tanks.
Also in the works for after 2.0.1 release, is a revised auto-pilot scripting to make fixed-wing aircraft working properly. I mean the whole point of FLINT project was to allow fixed-wing air to operate in game. It will be shame to not work on fixed-wing air after all this effort was spent on FLINT :)
Patriot and S-300 SAMs will probably become upgraded to use FLINT engine in the near future as well, though this has not been finalized yet.
Q: For my last question. A while ago, many people and myself have asked whether all this complicated over-engineering was necessary for an RTS game. But now, I think units like JTAC infantry really proves what over-engineering has achieved as long as you make it intuitive for the player. Your comments?
blahdy wrote: The reason why we're modding WiC in the first place despite the small audience, is that unlike Company of Heroes and other games, WiC has the learning curve that allows anyone to start playing. But mastering WiC will take a life time and this allows systems like FLINT to come in to maximize encouragement of teamwork and also have a bit of an educational factor into it as well.
We're very pleased with what's been achieved so far and we look forward to continuing this trend in 2012 :)