A downloadable mod
This page is for adding custom airports to Endless ATC, a realistic but easy to play air traffic control simulator. The ability to add custom, user created airports is a new feature that requires editing text files. Many ready-to-play, user created files are already available thanks to the community on GitHub and Discord.
Below, you can download a collection of about 3000 raw airport configuration files. They're not intended as ready-to-play airports, but more as a starting point to create a new airport file. The files in this collection are automatically composed out of free databases (runways, beacons), but the quality and completeness may differ per file. In any case, the files are not finished, so you'll have to add more properties (like SIDs and runway configurations) yourself. Best practice would be to pick one airport you would like to work on from the collection, copy that file to the game folder, and start expanding the file, bit by bit, with more features. Or you can start from scratch, googling all data and properties yourself.
To create a file, use a text editor together with the included example.txt file as a guide, and save the file in the locations folder of the game. For Steam users, the path to this folder is likely:
\Program Files\Steam\steamapps\common\Endless ATC\locations
Custom files work on the android version too (full version). Connect your device to your PC, enable USB file transfer on your phone, then look for this path on the internal storage:
where you should find the example.txt as well, and copy your airport file(s) there. If you can't find this folder, try rebooting the device.
The example file is pretty big, but most of the properties in it are only optional. In theory, just a runway and an airport code is enough data to create a minimal but playable file. You can add more detail later. First thing to do is to make sure the '#code = ' item in the [airport1] section is un-commented to make the airport appear in-game at the bottom of the airport menu. So just remove the # at the beginning of that line.
Carefully put each item in the correct section, in the same format as the example. Copy and paste sections from the example to avoid mistakes. Reload the file every now and then to make sure it still works as expected (doubleclicking the airport button reloads the file on the PC version). Note that lists, for example the list of runways, must start with a tab or space at the beginning of each line, otherwise the file fails to load into the game.
You can define all airspace properties yourself, however some of the properties may be automatically limited within a certain range, to keep the game playable and working correctly. For example, the altitudes must meet the airspace structure of the game:
These five altitudes must stay in this order, so for example the descendaltitude must be inside of the controlled airspace (shaded area), so between the floor and the ceiling. Above can only be reached by departing planes with SID mode enabled. The floor of the airspace must be close to the ground; a height of about 2000 feet should do (it makes short finals possible). Higher up, keep at least 1000 to 2000 feet between the levels.
Runways are defined by a couple of required values, such as position and heading, as well as some optional ones, for example displaced thresholds (which are by default set at 0 feet) or custom glideslope angles (which are by default 3 degrees):
When creating an airport, keep in mind that the game has limitations which may require you simplify things compared to real life. Look at the default airports to see what properties suits the game best, in terms of complexity and playability. For example, compact airspaces with a radius of 30 to 40 miles work nicely, and are more fun to play than larger airspaces, as the planes get to the runways in a small amount of time.
Optional are approach routes to the ILS, and departure routes from a runway. They are not implemented in the default airports; this is to keep the game simple to play, and focussed on vectors (and when the airspace gets a only slightly busy, they are not that useful anymore). But if you want, you can add them to your own airport. For approach routes, you need to define a beacon, which makes a special 'APP' button available when a plane selects the beacon.
The moment you click the APP button, a route is selected. If there are multiple routes defined for that beacon, the bearing from plane to beacon determines which route is chosen. Approach routes consist of optional waypoints, and an interception point on the localizer:
In this example there are two waypoints followed by the interception point, and the bearing from the plane towards the beacon is about 300 degrees, which fits nicely to the first leg of the route. Imagine a plane coming from the other side, say heading 120. Then the first turn on this route would be very steep. For this case you can define a second route, for bearings of about 120 degrees, with additional waypoints to create nice turns of 90 degrees or less. To display all routes at once, click and hold the custom airport button at the bottom of the airport menu.
Bug reports, suggestions and links to your own creations can be posted on the discussion board below. Finished locations can also be shared on this community-created GitHub repository, or this Discord server.
Unzip the file and see example.txt for further instructions.