Non-linear Campaigns
Until recently, the campaigns for most flight simulations were simple linear affairs where the player is given the same missions in the same order each time the campaign is played. The F/A-18 campaign builder was designed to produce linear branching campaigns. These campaigns are still linear in that the missions on each branch occur in a predetermined order. What is not determined until the campaign is underway is which branch the player will take. The F/A-18 campaign builder is sufficiently powerful to produce non-linear campaigns as well.
In a non-linear campaign, the order in which the missions will be played is not determined at the beginning of the campaign. Dynamic campaign systems such as those used by Microprose's Falcon 4 or Rowan's MiG Alley are like this. The player will be given different types of mission (e.g. bombing or CAP) and different targets, depending upon previous campaign events. In a fully dynamic system, the mission is generated by the game's campaign engine. This is not possible in F/A-18 where all the missions must be written in advance. It is possible, however, to write a number of missions and have the campaign select one, either at random or on the basis of campaign variables, indefinitely until the conditions for ending the campaign are met.
This is a simple trick, accomplished by the use of global links. You need a campaign variable that will serve to tell the game which mission will be played next and a campaign variable that when set to the value for a mission will trigger a global link to that mission's node. I use the variables 'Next mission' and 'Jump to node' for this.
I have made a small campaign to demonstrate non-linear campaigns for F/A-18. It is called 'Arctic Duel' and can be downloaded here.
![]() |
There are eight missions in Arctic Duel. The mission-selection algorithm is very simple and is processed in a single state-node. The algorithm decides randomly whether the player will be attacking the enemy carrier or defending his or her home carrier. The only other factor in mission selection is the time of day, which is advanced through four periods consecutively (dawn, day, dusk, night). If the player is on offense, the game is sent to the offense node, which sends the player to the relevant mission according to the current time of day. Otherwise, the player is sent to the defense node.
![]() |
The mission selection algorithm outputs the next mission by setting the value of 'Next mission' to the ID number of either the offense or the defense nodes. The final step is to set the value of 'Jump to node' to the value of 'Next mission'. By including global links to the mission nodes according to the value of 'Jump to node', the game will play the desired mission.
![]() |
Finally, there must be a link from each mission to process the algorithm over again to yield the next mission. This is done by adding a single line to the variables section of the mission nodes' information windows, setting the value of 'Jump to node' to the ID number of the state-node that contains the algorithm.
Arctic Duel is a very simple campaign. With enough ingenuity, it is theoretically possible to construct campaigns which would appear dynamic. You can read my reasoning on this here.
Questions or comments should be directed to [email protected]