It’s hard to believe it’s been five years already; time has just flown by and a project that consumed mine and Nodunit’s time for almost three full years is now five years old! In the time since, ArmA3 has risen and matured, DCS is better than ever (and finally shedding the shackles of Starforce!), we’re seeing a number of indie simulation projects like CAP2, and VR is taking over the gaming world by storm. It’s been an exciting half decade and there are times that I wish I’d been a part of it, but I can take some solace in that our little project inspired a lot of people to do things that they might not otherwise have done today.
To start, I’m going back an entire 15 years, back in the dark ages of Operation Flashpoint, warez Photoshop and 3D Studio Max, and Milkshape 3D.
Flashpoint and Addons
Some of you may or may not be aware that in those early days, Bohemia Interactive Studio didn’t believe anyone else could make mods or addons for their game. It would be too difficult for anyone to learn their system, they said, and steadfastly refused to allow any third party content. Then in 2002, cracks began to form and they slowly started to allow special usage of their modeling tool, Oxygen, specifically for Flashpoint. There were a lot of rules in those days, like models created with Oxygen could only be used in Flashpoint, nowhere else; it was a very different time. Blender wasn’t a free, open-source program, GIMP was nothing like it is today, Krita didn’t exist, and all the alternatives to Photoshop and 3D Studio Max were either clunky or expensive. When Bohemia Interactive started letting the modders go at it, I don’t even think they could’ve predicted they were opening the floodgates that would allow their games to attain the success they have today.
The first thing I ever modified in Flashpoint was actually the demo, which I had on a PCGamer disc from the time. I was intrigued by the UH-60 in the demo, but it wasn’t flyable, so I had no idea how it would work in the game. Using Microsoft Visual Studio 6 (a student license included in a lot of “how to make games” books from the late 90s), I opened the mission .pbo file and found the class name for the UH-60, then replaced the jeep you drive at the start with the UH-60. Booyah! After that, I was hooked. When Oxygen became available, the first thing I tried to make was a AH-1W and sadly, that model has been lost to the ravages of history. I don’t even have a picture of it. It was a start, though, and that was where I went. I made a lot of different kind of addons in that first year, though I’m not going to list them all here as it’s irrelevant and somewhat embarrassing. I took a lot of flak for them at the time, so it’s always been something of a sore spot.
The AH-64D started around here, since I was somewhat annoyed by the existing AH-64A in the game (which was built to the wrong proportions and severely lopsided) and I wanted the magic 16xHELLFIRE loadout for ultimate tank-killing power. Rather than deal with the existing model (ignoring the fact that getting it wasn’t easy either), I made a new model after scouring the internet for blueprints. The AH-64A was the basis, which was morphed into what would have been a prototype AH-64D Block I. For those not aware, the early AH-64D had very different shaped avionics bays, notably a kind of triangular end fairing instead of the abrupt curve it has nowadays. Remember, this was 2003, and a lot of data wasn’t readily available at the time. The AH-64A still represented the bulk of the models in service, though the D was steadily supplanting it (the AH-64A was finally fully retired from US Army Active, Guard, and Reserve in 2012). The best references were simulations like the 6 year old Longbow 2 and Enemy Engaged: Apache vs Hokum. There was also some other stuff like FAS, but that wasn’t perfect either.
So, I ended up with a more proportional, but hardly accurate AH-64D, capable of mounting 16 HELLFIREs. But then I wanted Stingers on the wingtips, just like in Longbow 2! Well, this was a problem at the time. You see, the system for rendering missiles on aircraft in Flashpoint was done via a very, very, very restrictive proxy system and could only do one missile type. If you loaded up HELLFIREs, all of your missiles were of that proxy – including the Stingers! Annoying. I never fully solved the issue, then in 2004 I decided to try and make an RAH-66; one existed for Flashpoint, but it was far more gamey and based on an older pre-prototype model. I wanted to get something more like what Enemy Engaged had, even if I couldn’t get the dynamics in. This eventually led to workarounds for the proxy problem which translated into the AH-64D. I was still absolutely terrible at texturing though, especially as the .paa/.pac format of Flashpoint was very, very, very persnickety. If you didn’t do the colors just right, you’d end up with a strange pixellated rainbow of stuff on your texture, completely ruining it! A lot of tricks were done at the time, like adding a minute amount of noise, but the problem was never really quite solved until ArmA1 came out in ’06/’07.
At the end of 2004, the AH-64D had potential, but the textures were an ugly mess. It wasn’t going anywhere and I was getting frustrated with it. Enter Nodunit: he came in, did some remapping of the model, and put all-new textures on it. We weren’t perfect, but we were far more serious contenders, not to mention he had some references of his own to help move things forward. He made proper EFABs with rounded ends, properly proportioned a bunch of parts, and brought the old AH-64A to the front to allow us a release of a two pack. At the time, we had an in-mission changeable loadout, some missile scripting, damage scripting, and a few other simple features. This was all very taxing but on the whole, made it stand out. We released in the summer of 2005 and while it wasn’t perfect, it garnered a generally favorable response. We followed with a OH-58D at the start of 2006 (which I had been working on along with the AH-64 in ’05), which also gained a generally favorable response. Most of the features were the same as on the AH-64, but in a smaller and more agile package. It was a different era for sure.
In the summer of 2006, I began work on a F/A-18E/F Super Hornet for Flashpoint. This was actually an outgrowth of a F/A-18A/B/C/D I had been working on, but had a lot of difficulty modeling at the time. Further, doing something like that for Flashpoint was bordering on the edge of ridiculous; a fast, carrier-based jet in an environment where the preferred map size was about 5x5km. I was also trying to do this while starting college, but I managed to complete it by December, just after ArmA started hitting the shelves. Bad timing on the whole! ArmA changed up a lot of the systems we used for mods, not to mention how unoptimized the engine was. There were some very, very, very big issues early on, and the feeling at Bohemia Interactive was “release this game or starve.” They wouldn’t even check public sources like FAS for data and generally didn’t try too hard to make things accurate. ArmA would eventually mature more, but the poor initial showing put a lot of people off. I stuck with it and reintroduced the F/A-18E/F, using more specific ArmA improvements, followed by a Su-17/22M4 which didn’t really get quite off the ground before moving onto ArmA2.
ArmA2 and the Renaissance
Prior to really investing in ArmA2, I made a new AH-64A model for ArmA, using all the data and tools available in 2008 to put it together. I had been working on a lot of stuff at the time, including a stillborn F-16C Block 52, but it was just myself working on it. I was getting too ambitious and it showed with the Su-17, which I never fully completed despite a lot of fancy stuff it was capable of. It’s been one of my greatest regrets, but also one of the key reasons why the AH-64D for ArmA2 did what it did.
In 2010, Nodunit wanted to revisit the project and start a new AH-64 mod for ArmA2. It would take everything we’d learned since 2005 and put it into a new package, taking advantage of all the things we could now do in the engine. For the short term, we needed a model, and that’s where he wanted to start. In the past, I had done all the modeling in Oxygen, as Nodunit wasn’t quite so skilled at the time. Through some example work I had given him, he eventually built up his skills, and the AH-64 was his passion for going forward. His attention to detail ensured that we got the very best possible model and the painstaking work he put into it is evident, even 5 years later. Naturally, the community didn’t agree with a new AH-64D; after all, we had the one with the stock game, why did we need another? It takes a true AH-64 fan to really understand why we wanted to do it, and a lot of the community isn’t concerned with supporting elements outside of infantry – Flashpoint was primarily about infantry, as was ArmA, and so was ArmA2. To expend the resources on what amounted to a unit of secondary importance was considered foolhardy by most. For us, it was the only direction we felt we could go.
When we set out, the whole goal I had in mind was to do something that approached a total conversion mod. That is, we weren’t going to just make the helicopter and expect players to do something with it; we would provide the experience, and in true ArmA fashion, the players could decide whether or not they wanted to follow. As Nodunit fed me steady updates on the model, he eventually wanted it in the game so he could see what worked and what didn’t. Thus, we had a gray-monster in the game, which didn’t do much but was a starting point. From there we steadily added bits and pieces, starting with weapons and arming, then the first real feature: the TSD. This was one of the first real elements to truly shake things up, as now the cockpit was actually good for something other than looking pretty – it was required. It wasn’t going to be “jump in, press tab, fire” like other helicopters; this was going to be more involved.
One of the first things to change up was the arming system. On the face of it, the AH-64 is pretty simple: you’ve got HELLFIRE missiles, Hydra rockets, Stingers (technically only for certain countries), and the M230 Chaingun (I’m sure many already know this by now, but I’ll add that it’s called that because it’s driven by a chain. The M242 on the M2 Bradely is the same basic design). In reality, it’s a bit more complex. You have the early generation HELLFIRE missiles, AGM-114A/B/C/F, which are known as SAL1; next, the later generation AGM-114K/M/N/R, with different warheads and improved seekers, known as SAL2; and, naturally, the Longbow HELLFIRE AGM-114L. For Hydra rockets, you’ve got a same basic motor followed by interchangeable heads (hence, Hydra) – M151 10lb warhead, M229 17lb warhead, M255 flechette warhead, M261 MPSM warhead, and others which we only put some basic code in for later possible support. Not much needs to be said about the FIM/AIM-92 Stinger; it has the twin pack launcher which could go on the wingtips or on the wing stations, but we didn’t want to delve into that too much – ground targets were our focus of interest. Lastly, the M230 Chaingun is in a nifty little turret that can either be slaved to the TADS, the HMD, or a target on the TSD, coupled with being linked to a pretty fancy set of computers to make it hit without needing to do a lot of special work. Also, the AH-64 has three basic magazines, the 1200 round magazine from the early days, the mixed 300 round magazine coupled with a fuel tank, and a replacement of the magazine with a larger fuel tank. In the real world, the 300 round magazine is popular because the extra gas on station means a lot more than extra gun rounds, especially as the gun has a usage limit of about 300 rounds before you have to give it a lengthy cooldown. Fun stuff! We were implementing it all.
We put in the system for not only selecting individual stations, but individual rails for the M299 launchers; if you wanted to have a 114K for taking out a tank, you could do that while still having a blast-frag warhead in the 114M for softer targets. Likewise, we implemented the zone system for the M261 rocket pods, giving us zones A, B, C, D, and E for loading whatever might be necessary for the mission. There was some debate as to whether or not Stingers should be allowed, but we decided to add them for future variants. This created something of a problem for the entire armament system as ArmA2 has individual weapons, cycled through with one button, and that means you might be looking at up to 18 different weapons! That’s a lot of key presses in the heat of battle to get what you needed. The solution was to use a user action key which would cycle weapons based on whether they were the gun, rockets, missiles, or Stingers, duplicating functionality in the real aircraft. I don’t know how many people used it, but it worked for us in testing quite well. Thus, we ended up with a very complicated weapon system that did most of what we needed it to do, while being similar to the real thing.
The M230 is kind of unique, in that we chose not to make it a turret, but a separate animated piece. This allowed us to put in certain modes like auto tracking, head tracking, fixed, or linked to TADS (default game functionality). This took some work to get it to function properly and it wasn’t until a couple months after we released that it was really doing its job. It’s also heavily scripted, which is bad – but it was the only way to achieve accurate functionality, not to mention allowing both the gunner and pilot to use it.
As a result of what I had done with a F-16C project, missiles were going to be guided in a new way: instead of relying on the basic guidance system, we would guide the missiles by scripting. This was important, because we needed to both set the initial launch angle (the AH-64 has articulating pylons) as well as set the appropriate lofting profile; both Stingers and HELLFIREs have a loft to attack from above. This opened other doors for us to guide the missiles in certain ways, such as whether or not the Longbow HELLFIREs would be able to lock onto targets without the FCR (spoilers: they aren’t no-miss-ums). SAL1 missiles would lack a reacquire capability, while SAL2 would be better overall. We didn’t get a perfect system going, but we got it close enough, and I’m happy with how they turned out. It’s pretty much the most important weapon the AH-64 employs and getting it as close as we did was a good feeling. Naturally, we made some mistakes along the way, but we did the best we could with the data on hand.
We tried several ways of handling the arming menu; one of the first was a “paper clipboard” similar to the first Longbow game and Gunship 2000; this didn’t really work so well and wasn’t open to expansion, so it was replaced by a different interface which was easier to customize, allowing us to use it for other aircraft if need be. It was still a bit more convoluted and a lot of people got lost with it, so I don’t think it was a solid success. It worked but it was still more clunky than I wanted it to be. Originally, I wanted to do a drag and drop interface, but that was more work than I was willing to put in at the time, so the system that worked got the nod.
More attention was given to information management and systems. We split the sensors into three basic sets: what the crew saw, what the TADS saw, and what the FCR saw. All three sources were incorporated into the TSD, which served as a central database to display information on the page as well as for targeting purposes. We even introduced a nifty little feature that would allow us to share targets with other AH-64s in multiplayer! This system would allow one aircraft to send target data to others, which allowed us to do things like set up PFZs (Priority Fire Zones) and minimize munition wastage. The TSD would also allow us to sort targets based on general type, which when coupled with the FCR mode, would make it much easier to pick out targets from the database. Unfortunately, where we fell short was in the TADS, which relied on ArmA’s targeting system. Essentially, the TADS became the gunner’s turret, while the M230 became a kind of piece on its own. This meant that the TADS couldn’t be slaved to specific coordinates or controlled in any way outside of the game’s handling, which sucked. In the real thing, it can do all kinds of cool stuff, from being slaved to specific coordinates to being linked with either the gunner’s or pilot’s HMD. Compromises had to be made though, and so we did what we could with our available limitations.
Less important, but still relevant, were the external details. When we started working on the AH-64, there were no mechanisms to properly illustrate movement of the controls and reflect them in the rotor blades. The tail rotor and collective were relatively easy to implement, as all the blades uniformly change their angle for these values. The cyclic, on the other hand, requires blades to change uniquely as they go through 180 degree arcs. The arithmetic for this was something of a pain to figure out, and we also had to do it on a piece that had an annoying habit of rotating at 300 revs per minute. It actually took a few months to work this out, but it was a great feeling when we finally did. Of course, it didn’t change much beyond being a small detail we could point to, but it was one more piece of the puzzle for immersion. Not even Take On Helicopters added the effect.
We had a lot of ups and downs in the project and probably one of the more significant ones was when Nodunit had a hard drive failure in December ’12. He had been working on the AH-64A at the time, building a new skin for it which was looking really great. It wiped a lot of his enthusiasm for the project, since it represented a huge chunk of work to get back up to speed on. Specifically, we wanted to keep the texture on a single sheet, so as to make it easier to transition between skins and allow user skins (plus damage modeling). It’s a shame that we couldn’t finish the AH-64A because it would have been a very interesting aircraft, but our workload was already big enough with just the D Block II, ignoring that we wanted to also do the Block III/E as well. In the end, with ArmA3 in an alpha release, we ended up focusing on the Block II and figured on adding more later.
While the core was still the aircraft itself, getting campaigns and missions were one of the key priorities for me in the project. One of my biggest issues I’ve always had with Flashpoint/ArmA addons is they rarely, if ever, included any content for the subject at hand. Kind of like getting a Corvette but the only thing you can do with it is sit in the garage and go “vroom!” I wanted to change that with our project, so I had initially planned to not only make a campaign, but maps as well. In an echo of Longbow 2, I would have a training map for both a training campaign and a NTC-style campaign with blue or red forces, followed by one campaign for Chernarus and one more for an additional map. Way too ambitious, especially for a two man team! Still, I tried to do it on the side, in between art updates Nodunit made for the helicopter. After a year or so I felt it was going to be too much work for me to get done in any reasonable amount of time, so scaled back to a smaller campaign on Chernarus, plus a basic training campaign on Utes. I did at least get several voice actors to enhance these, and Froggyluv was absolutely perfect as the instructor for the training missions. Female voices were hard to find, so I got my dear old mother to do the betty voice, even though she told me at every instance that if I found anyone better, that was OK with her. In the end, I used my own voice as a filler for a lot of smaller parts (if you hated Dusk Knight, that was me), using voices of others as I got volunteers. It all came together remarkably well and while I wish I could’ve done more content, the reception was good – along with a few people surprised that we went to all the effort. BeachAV8R has a remarkably good AAR of Tarnished Gold here 1, so I suggest you check it out if you don’t want to bother with ArmA2’s idiosyncrasies.
Take On Helicopters and The Apache That Never Was
When Take On Helicopters was released, we were immediately interested in it. It offered a far more complex flight model, a huge Seattle map and a unspecified high-mountain desert map, akin to Afghanistan. It only had minor changes from ArmA2 and would allow us to do a lot more – or so we thought. After some careful evaluation, we decided that ArmA2 should be the immediate focus, with a TKOH release later on – with additional content. We were intending to do a lot more in TKOH and planned to really take advantage of what it offered. Unfortunately, TKOH was a commercial bust and Bohemia Interactive didn’t invest a lot of resources into it after the initial release. It sucks, because TKOH had a lot of potential and I think it was let down due to its niche nature and the fact that they didn’t do a very good job of adding content to it. Hinds was a total letdown and at the time it was released, we were already leaps and bounds ahead of what it offered. It was very disappointing to be doing all this work in an unofficial capacity and know what could and couldn’t be done, then seeing Bohemia Interactive completely ignore the possibilities. I think this is what led to TKOH’s downfall; there just wasn’t much, if any, additional content being made for the game to garner interest, and so it withered and died. It wasn’t serious enough from a simulation standpoint and it was too difficult from a game standpoint. It sucks because we had some very big plans for the game at one point.
The plan was to actually have a mercenary mode for the AH-64 in TKOH, where missions would be presented in either Seattle or the desert map, where pay would allow one to hire better crew, buy more helicopters, upgrade helicopters, and buy more and better munitions. While there would still be the difficult simulation aspect behind TKOH, the mod would allow for a freedom of choice as well as an economic system that would hinge on how well a player flew and managed their resources. Once again, I suspect we were being too ambitious in our plans, given our small team. After a while, TKOH got pushed aside and we narrowed our focus. We had been working on the aircraft for some time and I wanted to make sure ArmA2 got squared away and a release soon, especially as everything started to mature. We didn’t want to release 3 years after ArmA3 was released, which would have been very bad!
I’ve always seen the TKOH version as “the one that got away.” I think if we had known TKOH were coming, we would have shifted development to it exclusively, but when it came out we were full steam ahead with ArmA2 and so that was where our priorities lay.
ArmA3 and Growing Pains
We released the AH-64D for ArmA2 about two weeks before ArmA3 went gold; it got a lot of praise and was well-received. We worked on fixing some of the more annoying bugs while looking over ArmA3. On the face of it, ArmA3 looked to be offering a lot more over ArmA2, but at the time it was still very immature and we had a lot of teething issues porting our work over. The biggest problems were related to model coordinates to world coordinates commands and the new PhysX physics model, then a very annoying issue with regards to multiplayer functionality and the gun turret. For me, ArmA3 didn’t run well on my system at all, so I had difficulty just playing the game. It didn’t help that the setting and plot didn’t fit the helicopter at all – one would assume that a late 20th century attack helicopter wouldn’t have a lot of capability against a 2030s enemy. That meant to be in the right place, we had to either make our own units or use other mods. As a rule, we wanted everything to be self contained, as it kind of sucks to download this one addon and then find out you need 20 others to enjoy it. As such, the workload exponentially increased and coupled with the problems, I was disinterested in fighting it all again.
I went through a lot of psychological hurdles at the end of 2013 thanks to my job and my mind wasn’t in the right place anymore. We had just released one of the best mods for ArmA2 to great fanfare, but it felt as if Bohemia Interactive hadn’t sat up and took notice (I later learned that this wasn’t the case). I kept trying to work with ArmA3, but with all the things that were broken from ArmA2, and with Bohemia Interactive being slow to fix them, things withered and died. I wasn’t willing to make it an exclusive single player aircraft, nor single crew in multiplayer, and other solutions like reassigning the gun to exclusive gunner control were unappealing. Coupled with the general poor performance of the game and it was easy to just walk away from it. By this point, I had been involved in the modding scene for 11 years, and I think it was time for a change.
In 2016, after numerous changes and updates, I released a version for ArmA3, with proper compatibility and class names; it wasn’t a perfect fit, but it was at least in working condition. I took another whack at the mercenary campaign at this point, but once again my real life employment messed with my head and I backed away from it. I was also starting to write novels and had written two by this point, with a third in the works. On the whole, it was a more enjoyable way to exercise my creative urges, without relying on a finicky game engine to show my vision. Some folks had tried to get me in on the team for an official ArmA3 DLC, but I turned it down due to communication issues and my growing frustration with my own employment. Eventually, I put ArmA3 down and agreed with Nodunit to open source the AH-64D; Sacha Oropeza has been doing a wondrous job of upgrading it and keeping it up to date. There are other versions out there, but I haven’t kept track of them all.
The Past, the Future, and the Impacts
I know that one day, I’d like to properly revisit the project and do something akin to a Longbow 3, but the ravages of time have used me up pretty good. I haven’t done anything serious since moving a few older projects to ArmA3 last year, and Nodunit is livin’ the dream of doing 3D and 2D art professionally in the industry. He stays pretty busy and I am overjoyed that our little project turned into an actual career for him, which is more than a lot of people can say. His dedication to the project has reflected well and the experience will serve him for some time to come.
One of my major concerns with any future projects related to the AH-64 would be with licensing and lawyers. It’s become pretty significant for a lot of folks doing things like this to get in trouble with big defense corporations and having your ducks in a row is a big deal. It’s one thing to do a free mod, but quite another to do a paid DLC, much less a full game, based on a real design. I’ve thought about fictional designs, which I’m sure could work, but then you run into issues of simulation versus game: too much simulation, yet not enough; too little game, yet not enough. The audience that enjoys both is very narrow, and vocal rivet counters can make one completely give up on such an endeavor. It worked in ArmA2 because it was new, interesting, and unusual (in execution); it wouldn’t work in, say, DCS. At times, the simulation community is its own worst enemy, and while I can understand some of it, there are a lot of people out there who can ruin the experience of content creation. We got through that by saying it was for us, no one else, and we were just sharing what we thought was cool. I’m not so sure I’d be willing to put in 3 years of work like that again just to be cool!
It wasn’t all for naught, though, as later I found out that Bohemia Interactive had, in fact, taken notice what we had done with the AH-64D and implemented a lot of what they could through the Jets DLC. That DLC was started by someone who had originally was inspired by the F/A-18E/F I had made for Flashpoint and ported to ArmA; he had asked for permission to bring it over to ArmA2 many years ago. Just like Nodunit, livin’ the dream! I’m happy for him and his team and they’ve certainly earned the accolades for what they’ve done in the past few years. It’s rather funny to look at some ArmA3 stuff and do a double take, then go “they’re still using that model, more than 10 years later?! ” This is especially true for a lot of the smaller stuff, like the SA-6 I included with the Su-17/22 or the life raft for the F/A-18E/F (fun fact: that life raft was made because in Flashpoint, you couldn’t float in the water, so I made it to allow someone to eject and survive). The community has always had a culture of recycling things, which is why you’ll still sometimes see models and scripts developed in the early days used today. The AH-64 model that Bohemia Interactive used in ArmA2 was built from the AH-64A they made for the 1.20 update of Operation Flashpoint! I can’t fault people when this seems like the obvious solution, as building a model with textures can be a massive undertaking, though in this day and age things aren’t nearly as hard as they used to be.
Of everything that’s happened since, I think my biggest regret is not pressing forward with ArmA3 and just accepting certain compromises with what we could do. Not getting the Block III/E and an AH-64A finished is also a sore spot, especially as the AH-64A was so close to completion. ArmA3 is 5 years old now, too, and last I heard Bohemia Interactive was planning to move on from the Real Virtuality engine to something like Unreal. I don’t know if we’ll ever revisit the AH-64, but if we do, I’d certainly want to go further than we did last time, just like the leap ahead we did from the 2005 Flashpoint version.
Until then, let’s hope that the future remains bright and shiny for all the attack helicopter aficionados out there!
Video taken in 2012 of the articulating rotor effects:
The TKOH specific startup sequence and 6DOF testing with TrackIR. This was the direction we really wanted to go and were disappointed that ArmA3 didn’t allow the option of going this complex:
The bane of our existence in ArmA3! This little bug ruined a lot of specific features of the aircraft. ArmA3 didn’t fix it until the introduction of the modelToWorldVisual command:
A shoutout to everyone who made this addon possible and the ArmA community! You guys are awesome!
Ely “Franze” Peck
In memory of Fangs McCoy, my mother and voice of the Apache’s betty.