Introduction
At the end of a yet another 100% run of GTA SA, I was finishing up with the Brown Streak train side missions. While I was thinking about how boring they are, my mind wandered into the big plane parked in the LV airport garage. How cool could an airliner pilot mission be!
As I started aimlessly flying around in the game, brainstorming and thinking of various scenarios, I came up with something even better. I could make a mission chain using all of the planes in the game that never appear in vanilla missions. It could be themed around commercial flying and be similar to trucking.

DYOM prototypes
Before diving into mission scripting, I decided to use a tool that would allow me to make quick prototypes of my ideas. DYOM is a GTA SA mod for making custom missions with an editor, without scripting. This is perfect, as I can test both the technical feasibility and gameplay quality of my ideas without wasting time diving into implementation details.
Skimmer test mission
The first mission I made in DYOM was a supply route Skimmer mission. I had the idea of roleplaying in the form of “loading” supplies from well connected areas and “delivering” them to remote ones. There’s a big problem with this approach that I’ll go into later. The flight path would look like this:

Immediately, I noticed that the start of the mission doesn’t flow well. The player is just plopped off at a random bay and is instructed to enter the plane.
.png)
The first directions are given to the player after entering the vehicle. At this point the player doesn’t know the length of the mission yet. This is a problem.
.png)
The mission is hard-coded to start at 5AM and have clear weather, so the rising sun looks really nice.
.png)
Completing the full flight route takes a bit less than 8 minutes. That’s very long in terms of San Andreas missions, as long as the Santa Marina triathlon race!
.png)
Immediate design problems
As expected, a lot of issues became apparent after a quick prototype:
- The mission is just too long and goes over too much of the map. Maybe in other games that would be fine, but when playing SA, I expect most missions to be well under 4 minutes long. Even the last trucking mission is less than that.
- The focus on the destinations making sense leads to a boring flight path. When I’m thinking of a seaplane, I’m thinking of flying over twisting rivers and remote beaches, not 2 large cities!
- The start of the mission is too sudden, there are no set expectations as to what the player is supposed to do.
Splitting the Skimmer mission in two
Splitting the Skimmer mission in two, besides reducing the length of each mission, can also be used to add more variation in difficulty, thus allowing each mission to be introduced at different parts in the story chain. I decided to go with the following routes and conditions, flight paths pictured in the map below:
- Colored in red, River supply run, an easy and relaxing mission where the player has to do multiple deliveries through the San Andreas rivers.
- Colored in purple, Fog rider, a more tense and difficult mission where the player has limited time to do a single delivery and land at a port, all in dense fog, forest environment and during the night. This has the potential to be the final mission in the story chain.

I started working on Fog rider first, even though I plan to introduce it later into the story chain. The first thing I fix is the initial instructions given to the player. Rather than just telling them to “get in the plane”, I got inspired by the trucking prompts and gave a general mission context at the start instead. Obviously, the result is much better.
.png)
Flying around in such dense fog, dodging trees and hills, is actually quite difficult. The time should be more than enough for anyone to finish the mission, I usually reach the goal with more than a minute left, flying slowly. The real purpose of the timer is to force mistakes from needlessly hasty players, who rush into the goal without thinking the situation through.
.png)
Reaching the destination triggers a countdown and gives the player extra time to fly to the most convenient docks.
.png)
The resupply mission is actually easier, as there’s no limited time to do it. It’s just a bunch of checkpoints for where the player has to go and countdowns for “unloading” the shipments.
.png)
Not all destinations make sense now, but the flight path is much better, going through the countryside rivers.
.png)
Design improvements summary
Based on the immediate design problems noticed in my initial test mission, I made the following improvements:
- The missions are now shorter, both taking about 4 minutes to complete.
- One of the missions is significantly harder, making use of the weather mechanics.
- The checkpoint placement focus is now based on the flight path rather than the destinations making sense.
- The first dialogue box gives a brief explanation as to what the mission will be, just like it’s done in trucking.
AT-400 and Beagle missions
Measuring flight route times
Taking a note from my previous missions, I started by flying all of the possible routes in the game and recording how much time they took. This would allow me to have a general idea of the potential length for a mission. I recorded times by starting my stopwatch while the plane was still stationary before takeoff and pausing it after the plane got to a halt post landing. I made the following observations:
| Route | Beagle | AT-400 |
|---|---|---|
| LS <-> SF | 2:03 | 1:46, 1:42 |
| LS <-> LV | 2:03, 2:30 | 1:35, 2:03 |
| SF <-> LV | 1:30, 1:47, 1:36 | 1:24, 1:22, 1:18 |
| VM <-> LS | 2:55 | |
| VM <-> SF | 1:35, 1:52, 2:10 | |
| VM <-> LV | 0:55, 1:05, 1:03 |

Vehicle properties
Besides route times, the Beagle and AT-400 have other key differences:
- The AT-400 is significantly faster in the air and gains altitude very quickly.
- The Beagle can take off and stop after landing very quickly. The AT-400 is extremely slow in that regard. Actually, about 25% of each of my AT-400 times is spent either accelerating for takeoff or stopping after landing.
- Combined with its larger size, the AT-400’s very long stopping time makes it difficult to land and maneuver at the small Verdant Meadows airfield.
- The Beagle has insane agility, being able to make very sharp turns.
Mission ideas
- A quick and easy Beagle
LV -> VM -> LVcharter flight, named “Charter round-trip”. - A longer AT-400 flight
SF -> LV -> LS, named “San Andreas regional”. Besides landing on the airfield, the player has to taxi to drop-off points. - A very difficult AT-400 mission named “Cost saving”, where the player starts at the LS airport and has to collect passengers from SF and LV, and then drop them off at VM. The player then has to return the plane back to LS. The weather is foggy with no visibility and the plane is damaged from the start.
- A Beagle mission named “Improvised airfields” where the player has to take off and land on multiple random fields. It’s intended to make use of the insane agility of this aircraft.
Adding a passenger
I started with the quick Beagle round-trip mission. As before, the player is given a prompt with the overall mission objective and has to enter an empty plane.
.png)
While the 3D model of the plane has 8 seats, the vehicle entity has only 2, therefore I can only add a single passenger. I do this by making a checkpoint which the player has to reach, and then spawning an actor with the Enter nearest car animation in front of it. After the checkpoint a cutscene is played, so the actor has time to enter the plane.
.png)
“Dropping off” the passenger
After picking up the passenger, the player has to fly to to the Verdant Meadows airfield and park the plane there.
.png)
Making a cutscene of a character exiting a vehicle in DYOM is quite cumbersome, so I just make a quick 1st person player cutscene for 4 seconds to simulate that.
.png)
Final result
I uploaded a mission pack to the DYOM site, containing six missions:
- Charter round trip - a very quick and easy Beagle mission.
- SA Regional - an AT-400 where the player has to fly to each major airfield.
- River supply run - a Skimmer mission where the player does multiple deliveries.
- Improvised airfields - a Beagle mission where the player has to land in isolated forest areas in a thunderstorm.
- Fog rider - a time-limited Skimmer mission where the player has to fly in thick fog in a forest area.
- IFR Endurance - an AT-400 mission, where the player has to do 6 flights in dense fog, it’s longer and takes about 20 minutes.
I made video demos of the missions, split in two:
Conclusion
Thinking in broader terms of game design, I could test a lot of aviation gameplay ideas in this project. I now feel inspired to do something bigger and build on top of it.
If I have the time, I’d really like to use actual scripting to do procedural flying missions that have more variation. Maybe something like taxi, where the player has to drop-off and pick-up peds from random airports or locations, depending on the plane.
External resources summary
- https://dyom.gtagames.nl/show/89861 - The mission pack.
- https://youtu.be/-HRSKF-Nnds - Video showcasing the first 5 missions in the pack.
- https://youtu.be/3JW2Y_3lR-8 - Video showcasing the low-visibility AT-400 mission.
- https://gtaforums.com/topic/403790-mission-coding-for-dummies/ - A guide to mission scripting.
- https://dyom.gtagames.nl/ - DYOM homepage.
- https://gtaforums.com/topic/574586-tutthe-dyom-complete-tutorial/ - DYOM tutorial.
- https://dyom.gtagames.nl/showtut/89 - Uploading a DYOM mission pack.
- https://cookieplmonster.github.io/2025/04/23/gta-san-andreas-win11-24h2-bug/ - Silent’s Skimmer bug fix.