by Peter D. Pawelek
Article Type: How-To
Article Date: September 10, 2002
Product Name: Operation Flashpoint
Category: Squad-Based FPS
Developer: Bohemia Interactive
Release Date: Released 06/22/2001 - Europe. Sept. 2001 - N. America
Files & Links: Click Here
* * *
IntroductionI must admit that I've never had much patience with mission editors. For most simulations, I open up its mission editor and stare blankly at the interface with no idea of how to conjure up something that I, let alone anyone else, would find remotely interesting to play. I guess part of the problem is my lack of vision, of putting together an exciting story because that's what a well-designed mission should be. It should have dramatic tension, crises popping up here and there, and an exciting climax (never can have enough of those, can't we?).
|Firing up the Mission Editor. |
At the same time, I've always been intrigued with the mission editor in Operation Flashpoint. For one thing, it comes with an interface that's pretty easy to figure out. Also, you can go into 'Preview' mode and test drive your mission at any point. I poked around a bit at some of the OFP editing websites and was overwhelmed with all the scripting you can do in addition to the basic stuff that the interface allows for. What I found out was that the OFP mission editor is a very powerful tool that comes with really lousy documentation.
After doing the research for my article on the destruction of the Gorgopotamos rail bridge by SOE and Greek resistance forces in 1942, I finally had the story I needed to try a full-blown OFP mission. Of course, elements had to be updated and certain liberties taken, but in the end I came up with something that I was pretty happy with and at the same time learned a few neat tricks about the mission editor that I'd like to pass on to you, the gentle reader. By the time you've gone through this tutorial, you'll know how to place units and groups, how to compose groups from scratch, how to place and program waypoints, and how to link event triggers to waypoints. More advanced stuff like scripting and synchronizations will be covered in another article.
The Big PictureFor those who haven't read my article on the Gorgopotamos raid (shame on you!), British and Greek resistance forces attacked the Italian garrisons of the Gorgopotamos rail bridge from both sides. During the firefight that ensued, a team of British explosives experts crawled down the gorge and planted plastic explosives along the trestles. They managed to successfully blow the bridge and incur heavy enemy casualties before withdrawing into the woods. The rail bridge was out of commission for about six weeks, thereby denying supplies to Rommel's Afrika Korps during a major Allied offensive in North Africa.
So, how do we convert the skeleton of this story into the OFP setting? Fortunately for us, Resistance, the latest OFP add-on, comes with a new island that just happens to have a big fat juicy bridge in it. It's not a rail bridge, but it'll do. So before putting down a single unit, let's sketch out a rough sequence of events superimposed on the OFP map:
|Situation overview. |
This mission is going to be all about timing. The dramatic tension will be found in trying to both get to the bridge and to blow it up before the armored column passes over it. Getting to the bridge will not be so simple since we are going to place at least two large patrols in between the players and the bridge, in addition to the bridge garrison. Also, the players can radio-in allied Resistance forces to assault the garrisons on their command. I have already worked out a variation of this mission that is more complicated: the players start on the opposite side of the river and have to hail a patrol boat to transport them across. For the sake of simplicity we're going to start the players on the same side of the river as the objective.
Introduction to the Mission EditorBefore we embark on creating the mission, I just wanted to point out that although this requires the Resistance add-on, the basic principles are the same for those of you who have OFP without Resistance (i.e., version 1.46). From the main screen, select 'Mission Editor' and then select the 'Nogova' map. In the upper right-hand corner, you can select between 'Basic' and 'Advanced' editor modes. Always select 'Advanced' since it will give you more options that may come in handy if you decide to tweak your mission later on.
Now, we'll set the time of day for the mission and weather conditions. Below the 'Basic/Advanced' button is a panel that has a cloud icon on it. This is the Intel panel and from here you can set the weather conditions, time of day, and write a briefing for the mission. Set the time of day to 23:30, so that the mission will occur at night. Select the weather to be clear and make sure Resistance forces are set to be 'Friendly to the West'.
|The mission Intel screen. |
You can write a briefing for the mission at this point, but it's not necessary. Here's the little briefing that I typed in the text box:
|You and your fellow Black Ops are tasked with destroying the bridge at Davle before an armored column can pass over it. You will start at a Resistance campsite on the east side of the river which is north of the bridge. Use motorcycles to get to the bridge as fast as possible. Try to avoid the road since enemy patrols are heavy in that area. You can call in Resistance forces to attack the bridge garrision by selecting the Radio command 'Alpha'. To blow the bridge you will need to place at least three satchel charges at its base.|
For some reason I couldn't make paragraph breaks within this text box; every time I hit 'Enter', it would cause the Intel screen to close. If you have this problem, you can avoid it by typing out your briefing in a word processor and pasting it into the briefing box.
Setting Up the Enemy ForcesNow we can place the enemy units. We'll start with the bridge garrisons: two infantry squads on either side of the bridge onramp, each facing outwards. Press F2 or click on the 'Groups' button on the editor interface. This will put you in 'Groups (F2)' mode. Now, double-click the position on the map where you want the squad placed: one squad north of the road leading to the bridge and one on the south. From the drop-down menus, select 'East' for side and 'Infantry Squad' type. For the garrison on the north side, make sure that it's facing north by clicking on the 'Azimuth' control to the northern compass face. Now repeat the same process for the south garrison, but make sure it's facing south and not north.
|Inserting a Group. |
It's good practice to name each unit you create. This can be tedious at first, but will come in handy when you get more sophisticated with scripting missions. For example, you can name the officer of the north garrison 'ngarr1', and the soldiers 'ngarr2', 'ngarr3', etc. As long as the names are meaningful to you, you can type in anything you want.
In OFP, a group is a collection of units controlled by a lead unit. The subordinate units in a group have lines connecting them to the command unit that usually has a higher rank. The groups that you can create by selecting 'Groups (F2)' mode are pretty limited. Using the 'Units (F1)' mode, you can create a group from scratch. I'll show you how to do that with the Resistance force we'll be placing in a few minutes. In the meantime, you can reposition the units in the groups you just created.
Click on the 'Units (F1)' button (or press the 'F1' key) to put yourself in 'Units' mode. Now you can drag the individual units of each group and place them as you like. The subordinate units should remain connected to their leader; if the line breaks while moving them, go back into 'Groups (F2)' mode and drag a line from the subordinate group to the leader to reconnect it. In the picture below you can see how I've arranged my north and south bridge garrison troops.
|Disposition of enemy garrisons at the exit of the bridge. |
Now, let's setup that armored column. Zoom out of the map by hitting the '-' key on the keypad and refocus on the village of Davle on the west side of the bridge. You can drag the map while holding down the right mouse button which will allow you to refocus elsewhere. Once again, select 'Groups (F2)' mode (or press the 'F2' key) and double-click on the road in the village in map sector Ga65. From the dropdown menus select 'East' for side, 'Armored' for type, and then 'T80 Platoon' for name. This will plop down a T-80 platoon near the road but not necessarily on it. Make sure its azimuth is facing east, or 45 degrees. Go into 'Units (F1)' mode and drag the tanks onto the road in a column, with the command tank in the lead as shown below.
|Plotting the route for the armored column. |
Okay, we've placed the garrisons and the armored column. Now all that's left is to place a patrol in between where the players will start and the bridge. Zoom out again, and place a mechanized infantry squad on the north-south road in map sector Gf62 using the same procedure as for placing the groups above. This time, we're going to make things a bit more interesting. Since this is a patrol, we're going to make its radius of placement and waypoint placement a bit variable. Once the group is placed, select the lead unit and set its 'Probability of Placement' to 100 and its 'Radius of Placement' to 50. This will give the officer a 100 percent chance of appearing in the mission and he will be placed anywhere within a radius of 50 metres of the selected.
Unfortunately, doing this to the leader will not result in the same settings being propagated to the rest of the squad. For now, double-click on each unit of the squad and make sure they all have a 'Radius of Placement' of 50.
Setting and Programming WaypointsThis patrol is going to be on the move, so it's time to setup some waypoints! Single-click on the group leader of the mechanized squad (i.e., the officer) to select him. Now, select 'Waypoints (F4)' mode (or hit the 'F4' key) and double-click a position on the map to set the first waypoint. This will bring up a screen to set a number of parameters for this waypoint. Set the 'Type' to 'Move', the 'Combat Mode' to 'Hold fire, engage at will', the formation to 'Wedge', and the 'Behavior' to 'Aware'. Now, give the waypoint a placement radius of 50 which means that the officer will move anywhere within a 50 metre radius of the selected waypoint position. This will make the patrol's movements a bit less predictable. The cool thing about groups is that once you setup waypoints for the leader, all the subordinate units will follow him; therefore, you don't have to set waypoints for all the subordinate units as well. Now, setup four more waypoints in a pattern similar to that shown below.
|Plotting the waypoints for the enemy patrol. |
Make sure all waypoints have a placement radius of 50. You don't have to individually set the rest of the waypoint parameters since they all have 'No change' as default, meaning they will keep the settings of the previous waypoint. Since this is a patrol, we're going to make sure that the squad doesn't stop moving when it reaches the last waypoint. To do this, go back to the first waypoint you created and change its type from 'Move' to 'Cycle'. In the 'Waypoint Order' box, select the very last waypoint number shown in the drop-down menu. Now this squad will continue patrolling around these waypoints for the entire mission!
The last thing we have to do for the enemy forces is to setup the waypoints and behaviour of the armored column. Single-click on the lead tank of the T-80 platoon over in Davle. Plot three waypoints for the lead tank, all along the road going across the bridge. One waypoint on the west side of the bridge at the entrance, one halfway across the bridge, and one on the east side at the exit. Double-click on the first waypoint and make sure it has the following settings: 'Never Fire' for 'Combat Mode', 'Column' for 'Formation', 'Full' for 'Speed', and 'Safe' for 'Behaviour'.
This will ensure that the tanks will stay in formation and not get distracted from their route by firing on enemy troops. Their highest priority is to get across the bridge! Once these settings are applied to the first waypoint, they will be kept for the subsequent waypoints.
We're going to introduce the timing element at this point. Double-click on the first waypoint along the tank route and enter the following numbers into the 'Timeout' field: '180' for 'Min', '300' for 'Max', and '200' for 'Mid'. This means that the armored column will start moving towards the first waypoint after 180-300 seconds (3-5 minutes) have elapsed. The actual time that the column starts moving will be randomly determined but will occur within this time range.
|Programming the first waypoint of the armored column. |
In order to give the players a cue to hurry the hell up and place their explosives, double-click on the waypoint of the tank route that's on the bridge. Click on the 'Effects' button and in the field that says 'Type' select 'Text' from the drop-down menu and in the field that says 'Text' type in: “The tanks are crossing the bridge!” When the tanks get to this waypoint, that text message will then flash on the screen warning the players that they have very little time left to blow up the bridge.
A Brief Introduction to EffectsFor one final cute little twist, double-click on the last waypoint of the route and hit the 'Effects' button. We'll have the camera zoom-in on the lead tank when it successfully crosses the bridge and play a bit of music while showing a text message. In the 'Effects' screen for the waypoint, select 'Around & Zoom Slow' for 'Camera Effect', '7th -Decide' for 'Music', and 'Text' for 'Titles' with some appropriate message typed into the text field. It should look like something below:
|Setting up a waypoint effect. |
When the lead tank crosses the bridge, the camera will zoom into it, music will start playing and the following message will splash across the screen:
|What the programmed effect looks like. |
Note that we could have programmed this effect to end the mission at this point, but why bring the fun to a standstill? Things will only get more interesting for us once those tanks are across and mopping up our bedgraggled forces!
Saving the MissionWe've now setup the enemy forces and are about to put in the 'good guys'. At this point, it would be judicious to save the mission! Hit the 'Save' button on the editor interface screen, give the mission the name 'bridge1' and in the 'Save As' field, select 'Export to Multiplayer Missions' from the drop-down menu. Then do the same thing but select 'User Mission' in the 'Save As' field. By doing this, you've just made both single-player and multiplayer versions of the same mission.
|Saving the mission. |
Setting up Playable UnitsOkay, there are three things we have to do for friendly forces setup: the players themselves as BlackOps soldiers, motorcycles they can use to get to the bridge, and the Resistance force that will engage the bridge garrision upon the player's signal.
For the BlackOps and motorcycles, zoom out the map and re-centre it at sector Gd61. Select 'Units (F1)' mode and double-click on the map near the shore in that sector. In the Unit parameters screen, select 'West' for 'Side', 'Captain' for 'Rank', 'Men' for 'Class', and 'Black Op' for 'Type'. For 'Control', select 'Player'. Also, give it the name 'blackop1'. This will be you.
Now, hit 'Ok' and you'll see your icon on the map. Single-click on the icon and hit 'Ctrl-C' to copy the unit. Now hit 'Ctrl-V' three times to paste three more BlackOps on the map. Make sure they have the same unit settings as the first one, but for 'Control' make sure that 'Playable' is selected. This means that in a multiplayer game your buddies can play in these characters. However, in a single-player game we're going to want them under your control.
So, select the 'Groups (F2)' mode and draw lines from each of the subordinate BlackOps to the icon of the first BlackOp on the map (the one you set under 'Player' control). Also, change the ranks of the three subordinate BlackOps from 'Captain' to 'Lieutenant'. This will allow the player to control the other three BlackOps in single-player mode. The BlackOps come with a default loadout of three satchel charges each. From my own experimentation I've found that three charges placed at the base of the bridge are sufficient to bring it down. So, we won't have to place an ammo dump with additional satchel charges.
|Playable BlackOps Troops and Motorcycles |
Beside the BlackOps, place four motorcycles that they will be able to use to drive to the bridge. With 'Units (F1)' mode selected, double-click on the map and setup a unit with the following paramters: 'Civilian' for 'Side', 'Car' for 'Class', 'Playable' for 'Control', 'Unlocked' for 'Vehicle Lock', and 'Motorcycle' for 'Unit'. Once this unit is setup, copy it and paste it three times in the same manner as we did for the BlackOps.
Now, one awkward aspect of this setup is that the motorcycles will appear in the game with civilian drivers. In order to drive the cycles, it will be necessary to shoot and kill off the drivers. I haven't found a way to just have the motorcycles appear without drivers so until I figure that out we'll be left with this unsavory little in-game task. For the sake of brevity, I'm not going to setup waypoints and behavior for the subordinate BlackOp units; so, until that is done this will best be played as a multiplayer mission.
Setting Up The Resistance ForcesFinally, we're going to setup the Resistance force that will attack the south bridge garrison. Zoom out the map and refocus on map sector Gf65. We'll setup the Resistance units uphill from the garrison and in the woods, ready to strike! Go into 'Units (F1)' mode and double-click on a point just east of the woods in sector Gf65. Setup this unit to be a Resistance Colonel of type 'Soldier' with a skill of 100 (although, as we'll see later, this setting is a bit high).
Now, plop down four Resistance soldier units of rank 'Sergeant' and type 'Soldier'; also plop down two Resistance machine gunner units of rank 'Lieutenant'. We're going to make this a group by going into 'Groups (F2)' mode and drawing lines from each subordinate unit to the colonel. We have now created a group to attack the north garrison. To create a group to attack the south garrison, draw a box around the first group and hit 'Ctrl-C'. Now, hit 'Ctrl-V' and you'll paste an identical Resistance group onto the map!
Go into 'Groups (F2)' mode and drag the cloned colonel unit a bit south of the first group. As you'll notice, this will drag the entire cloned group into the new position! You can cut and paste just about anything in the mission editor, including units, waypoints and triggers! Your map should look something like this:
|Disposition of Resistance forces. |
Now we'll setup the behavior of these Resistance forces. We want them to assault the garrisons only when the players give a radio signal. To do this, we're going to use waypoints and triggers. Select the first Resistance group and go into 'Waypoints (F4)' mode. Setup two waypoints: Waypoint #1 will be a move waypoint very close to the squad's position.
Set its behavior as follows: 'Combat Mode' set to 'Never Fire', 'Behavior' set to 'Stealth'. This will ensure that the unit will not fire on the enemy until given the proper radio command. Most importantly, enter the following text into the 'Condition' box: 'trig1==1' (note the double-equals sign; in computer programming lingo, this is a 'conditional operator' such that 'trig1==1' means 'if trig1 is true (i.e., active)' ). This will activate the waypoint only after our trigger (which we'll name trig1) is activated.
Now setup a second waypoint right on top of the north garrision and give it the following behavior: 'Type' to 'Seek and Destroy', 'Combat Mode' to 'Open Fire and Engage at Will', 'Formation' to 'Echelon Left', 'Speed' to 'Full', and 'Behavior' to 'Combat'. Basically, they will charge to the waypoint and try and wipe out any enemy in their path.
For the second Resistance force, setup two waypoints in exactly the same manner except give it an 'Echelon Right' formation for the assault waypoint. Make sure that the first waypoint has the 'trig1==1' condition set. By doing this, both squads will move out after being given the radio signal which will activate the trig1 trigger.
Setting up TriggersSetting up the trigger itself is as easy as pie. Activate the 'Triggers (F3)' mode by hitting the button on the interface or by pressing the 'F3' key. Now, double-click on the map near your lead BlackOp (although, this trigger can really be placed anywhere on the map since it's going to be activated by radio and not by anything present within its radius of activation). Enter the following paramters for the trigger: 'Activation', select 'Radio Alpha' from the drop-down menu, and in the 'On Activation' field, type 'trig1=1' (this time, only a single equals sign is used since what we're doing here is assigning the value of 1 (or true) to trig1; the equals sign in this case is known as an 'assignment operator').
|Programming the Radio Alpha trigger. |
In the 'Text' box, you can enter something like 'The Resistance Forces have been called!'
How will this be activated ingame? As the player, you will go to your comms menu by hitting the Backspace key, then you'll hit '0 Reply', then '0 Radio' which will bring up a radio menu. One of the menu items will be 'Alpha'. Select that, and it will activate the trig1 trigger!
Debugging the MissionNow that we've setup all the elements of the mission and have them timed to our liking, we have to do a bit of debugging. Rest assured that althought the mission looks good in the editor, it'll never play out exactly the way you expect it to. It's going to need tweaking.
We want to make sure that the Resistance forces behave as expected and that the armored column crosses the bridge when it's programmed to. In order to do this, we're going to create a temporary unit right in the vicinity of the garrisons and the Resistance forces. Make this a civilian man and set control to 'Player'. We are going to enter the mission in Preview Mode as a civilian bystander and watch the action unfold! As a civilian, none of the combat forces of either side will fire on us. Also, go back to the Intel screen and temporarily change the time of day to noon so that it will be bright enough to see what's going on. Once that's done, hit the 'Preview' button in the main editor interface and this will start the mission! (NOTE: When you're finished debugging, be sure to set the time back to 23:30 and make BlackOp1 the Player!)
When I first entered Preview Mode for this mission, I immediately detected a problem. I triggered the Resistance forces to attack by hitting the backspace key ingame which activates the radio. I then hit '0 Reply', followed by '0 Radio' and then selected 'Alpha' from the comms menu to activate my trigger (yes, you can also do this as a civilian!). Within about a minute, all of the garrison forces were shot dead! It turned out that setting the skill level of my Resistance forces to 100 was way too high and it turned them into highly accurate Uber troopers. I aborted the mission, went back into the editor and decreased their skill levels to about 50 percent. After that, the battle between Resistance forces and the garrison troops went very nicely, and the casualties from both sides were pretty well-balanced.
|Debugging the Resistance attack on the bridge garrisons. |
I then aborted the mission and went back to the editor in order to plop my little man down near the mechanized infantry patrol. I watched it as it went through its patrol waypoints and made sure that it cycled properly.
|Debugging the enemy patrol. |
Things are looking good. I plopped my little guy over to where my BlackOps forces are waiting with the motorcycles. No problems there, although it's clear that that mechanized infantry patrol is going to be uncomfortably close!
|Debugging the initial player position. |
Finally, I watched the armored column on the other side of the bridge. As expected, it fired up its engines after about three minutes and started rolling across the bridge.
|Debugging the armored column. |
This is where I got the idea to add a text message at the second waypoint to warn the players that the tanks were on the bridge and nearly across. I also decided to add a fourth waypoint to the tank route on the other side of the bridge that would change their behavior to a combat stance in order to engage any Resistance and BlackOp forces that were around (since I decided not to abruptly end the scenario if the tanks crossed).
ConclusionThis tutorial really just scratches the surface of the OFP Mission Editor. Nevertheless, you now know enough to program some pretty robust missions! Once you understand how triggers and waypoints can be programmed, you can start to do all sorts of interesting things. At this point, you can start exploring with other options and parameters associated with these game elements. With the 'Preview Mode', it's really easy to jump in and see exactly how something works. In a future article, I'll talk about more advanced elements of OFP mission editing, including initializations, synchronizations and scripting. But first I'll have to get busy and figure out how to do these things myself!
Bonus: Download Peter's .sqm file for this mission.
Patches / Upgrades / Demo:
Squadrons & Leagues:
Home of the VMF-124 Death's Head Squad