Friday, March 08, 2019

Beginner's guide

Beginner's Guide for Endless ATC

Because the game is pretty abstract, it can be hard for beginners to find out how to land a plane. Here are some basic instructions to get started.

As an approach controller, you guide the planes, coming randomly from different directions, safely towards the runway.

By giving directions (vectors) you position the planes, nicely separated from each other, in front of the runway. The runway is equipped with a guidance system: the Instrument Landing System (ILS): a straight line at a 3 degree slope towards the runway.

In the simulator it looks like this: a simplified radar screen. The runway has it's own number and a thin line extending from it (the ILS line). Planes (squares) have a label with their callsign, altitude and speed.
The planes enter your airspace at a pretty high altitude, so you need to let them descend first. In this example you see a plane currently at 7000 feet, but descending towards 2000 feet, while flying at a speed of 276 knots. It will take a couple of minutes before the plane reaches its target altitude of 2000 feet.

Meanwhile you can give the plane headings towards a point somewhere in front of the runway. Finally, enable ILS mode to make the plane follow the blue line to the runway automatically. Without enabling ILS mode, the plane cannot land! The blue circles indicate the altitude of the glideslope which the plane will need to capture.

Make sure the plane captures the blue line at a shallow angle, or else it will fly straight ahead. This is just like how it's done in real life. Yellow arrows will help you. Also make sure that the distance to the runway is big enough, so the plane can pick up the glide path instead of overflying it.
This animated gif shows several planes capturing the ILS. You may also want to watch this 2-minute tutorial video on YouTube.

Quick summary:
  • Descend plane to 2000 feet
  • Guide plane towards the blue line, but far enough from the runway
  • When plane heads towards the blue line at a shallow angle, enable ILS mode
  • The plane will capture the ILS and land on the runway.

Thursday, March 07, 2019

About Endless ATC

Endless ATC
Copyright (c) 2013-2023 startgrid

This program contains free software licensed under a number of licenses, including the GNU Lesser General Public License. Here's a complete list of software used and their licenses:

Friday, December 11, 2015

Endless ATC on PC and android

The simulator Endless ATC can be downloaded for PC on Steam or, and for android in the Play Store. There are also a free versions available.

Screenshot December 2016

The sim now features nine airports, weather, traffic and display options, text-to-speech output, scenarios, custom airports and more.

Note: I, the developer, only publish the PC version to Steam and, so please download it from there, not another site, to make sure you get the original version with updates. The android version is only available on the Play store.

Privacy Policy

The application Endless ATC (in all its versions), and its developer, does not collect, transmit, distribute or sell your personal data.

Beyond the information that the stores (Google Play, Steam, and provide to the developer, the developer has no access to user data.

Although the application itself does not make use of the internet at all, the savegame files (which do not contain personal data) stored on the users device may be automatically backed up (via Google Drive) when using android, or, when using Steam, via Steam Cloud, depending on the users preferences. These backups are not accessible by the developer. When using Steam, unlocked achievements may be shared via the Steam Client application. Whether or not achievement data is visible to others depends on the users Steam preferences. Anonymous achievement statistics are publicly visible on the Steam website.

For questions:

Monday, November 04, 2013

Endless ATC instructions

Get it on Google Play
or on PC via Steam or

updated: 21 Feb 2024 (see changelog)

For users without any knowledge of ATC, there's a short beginner's guide.
The full changelog of the game can be viewed here.
To add your own airport files to the full version of the game, read here.
The free version of the android app, 'Endless ATC Lite', is available here.

Below are full instructions for the simulation game Endless ATC:
Top view and side view of a correct ILS approach. In this example, a plane at 2000 feet approaches runway 27 at a shallow angle of about 30 degrees. If ILS mode is enabled, the plane will capture the blue ILS path automatically, and land. Note that the altitude of the plane determines the required distance from the runway: the higher the plane is, the further away it needs to be from the runway. The blue circles indicate the required distance; make sure to intercept the glideslope 'from below'.

Don't intercept the ILS at a too steep angle, or from above the glideslope.

Aircraft labels, runways, and the ILS
These timelapses can give you an idea of giving vectors for an ILS approach.

  • Sequence the randomly generated arrivals to the ILS (Instrument Landing System) of a landing runway. The runway is the thick blue line in the middle of the radar screen, and the ILS path is the thin blue line extending from the runway. Guide the planes to this blue line, far enough from the runway. In order to capture this ILS beam and land, a plane must comply to these conditions:
    1. the ILS mode of the plane is activated,
    2. the plane intercepts the ILS line at a shallow heading of 60 degrees or less with respect to the runway heading (in reality they use 30 degrees or less),
    3. the plane has to be descended low enough to intercept the glideslope; the blue circles mark the altitudes of 2000, 3000 and 4000 feet.
    The plane has to be flying on the localizer (the lateral ILS component) before it will capture the glideslope (the vertical component; the descent path of the ILS). Examples of correct ways to guide a plane to the ILS are displayed in-game by yellow arrows: fly planes via those arrows, with an altitude of 2000 feet and ILS mode enabled, so the plane will capture it correctly. Once a plane is on a correct intercept course to the ILS path, it will follow the ILS automatically to the runway.
  • When a plane is established on the ILS, it will be handed over the tower and then you score some skill points. The amount of skill points you score per plane depends on your current skill score. You always get at least 0.1 skill points per plane handed over to the tower. The skill score represents how well you are managing the airspace and it also determines the number of planes you will have to control simultaneously, so a score of 8.4 will give you about 8 planes to control.
  • If a plane is too high on the ILS (flying above the glideslope) it will eventually call 'missed approach'. ILS mode is then deactivated. Try a new line-up at a lower altitude, so it will capture the glideslope from below. If a plane is about to land on a runway that is still occupied by another plane, it will go around: it climbs to 2000 feet and ILS mode is deactivated. Give it new vectors to the ILS, now with more distance behind the leading plane.
  • At the top left you see your current game score. This number is the maximum of what your skill value has been in the current game. So your score can only increase. Then there's also the high score: the highest game score you ever reached on your device (unless you cleared the app data).
  • Departing aircraft determine their heading and speed themselves; they only require an instruction to climb to a higher altitude. This can be done, when it's safe, by just one click to select FL130. Other altitudes can be selected but keep in mind that eventually the plane has to continue the climb to FL130. Optionally, a heading can be given by disabling 'SID' mode temporary. When you disable SID, the climb altitude is also restricted to FL90. Make sure to activate SID mode at some point again and continue the climb so that the plane has climbed above FL90 before passing the boundary of the airspace. The airspace boundary is displayed as the outer circle (radius 30 NM, 30 nautical miles). For New York, departing planes fly on a heading initially, so you'll have to manually enable SID to clear planes to the departure fix.
  • You can lose skill points when planes:
    1. fly too close to eachother (in general: overlapping circles and altitude difference  less than 1000 feet),
    2. divert (leave the airspace at the 30 NM boundary), also if they are departures but fly at or below FL90 when leaving the airspace,
    3. abort the approach (runway occupied, too high altitude etc.),
    4. are delayed (not landed within about 30 minutes)
  • An aircraft label has the following lines of info:
    1. callsign,
    2. current altitude and selected altitude (in feet divided by 100),
    3. ground speed (in knots), weight category (Light, medium [no tag],  Heavy or Super J), mode (ils/direct/hold).
    4. destination (only if other than main airport)
  • When a plane is not in your control, it has a smaller label of just two lines.
  • When a plane wants your attention, it has a flashing blue ring, until you select it.
  • You don't have to hand off (or hand on) planes from/to the tower or other controllers. To keep things simple, planes do this automatically. Handoffs are possible, but not necessary.
  • You can drag from an aircraft to easily set its heading. When you then drag onto a beacon (grey circle) then the plane flies directly to that point and the DCT button illuminates. Directs can also be given by pressing the 'DCT' button: then it will snap to a beacon/VOR/locator closest to the selected heading. DCT is, like ILS, a mode that alters the heading of a plane automatically. If a plane reaches a beacon without further instructions, it will fly circles above it, in a holding pattern. It's best to avoid holding planes because it will cause delays and crowds the airspace. Longpressing DCT will 'HOLD' the plane at its current position. Some runways have a beacon (a locator) on the ILS path; planes can fly direct to it but won't enter a holding there, but continue ahead. You can also drag from a selected VOR beacon to set a heading on which the plane must fly after reaching the beacon. Departures fly to a randomly chosen beacon and then continue ahead.
  • In some cases, the separation minima (1000ft/3NM) are reduced: planes may fly closer to each other when:
    1. both planes are on a different ILS localizer ('LOC' status), so independent parallel approaches are possible,
    2. one or both planes are under the minimum altitude (1600 feet),
    3. two departures are on a divergent heading of 15 degrees or more,
    4. just after a go-around you'll get a short amount of time to regain a safe separation.
    1. In general, don't let the 3 NM rings overlap when the altitude difference is less than 1000 feet.
    2. For parallel approaches, maintain a vertical separation of at least 1000 feet until both aircraft are established on the localizer. For example, join the localizer at 2000 feet for one runway, and 3000' for the other. When the planes then descend to the runway, rule 1 (as stated above) applies so no penalties are given, even if the rings overlap!
    3. Longpress ILS to enable the ILS* mode, which means the plane will cross one localizer and intercept the next one. This can come handy when parallel runways are in use and you want to guide some traffic to the other runway for better traffic distribution.
    4. The number of planes you have to control is about the same number as the skill level. When the score increases above certain levels, more runways become active.
    5. Planes with 'RD' in their label (4th line) need to land on the secondary airport which has only one runway (this runway also has RD in the name, actually meaning EHRD or Rotterdam Airport). Regular planes, so without the 'RD' tag, may not land on this destination but have to land on the main airport Amsterdam Schiphol. Landing on runway 06RD (the opposite direction) is not accounted for in the game (too close to the boundary), so only traffic via the northwest from/to RD is simulated. Note that the amount of traffic to RD is very low compared to the main airport. For London, the traffic rate to the alternate destinations (Gatwick, Luton and City) is a bit higher. If the airspace has altitude restricted areas, for example 30/RD, then planes must be at 3000 feet or above, with the exception of planes with an RD tag.
    6. Plane with destination 'EHRD'
      Plane with destination 'RD'
    7. The speed displayed at a plane's label is the ground speed, which is usually higher than the selected speed (indicated airspeed, IAS): it has an offset increasing with the altitude (due to air pressure). When you change the speed, the label temporary shows the new target IAS airspeed instead, in yellow.
    8. If there is wind enabled, the wind speed increases with altitude. It will also affect track heading and groundspeed.
    9. Expedite a plane's climb/descent (that is: increase its vertical speed) by doubleclicking on the altitude button when it's at its limit value.
    10. There are light (L), medium (no tag), heavy (H) and superheavy (J) weight planes. The heavy ones turn and climb/descend a bit slower, while their final approach speed is a bit higher.
    11. Due to wake turbulence, planes behind heavy planes need more distance than the general 3 NM circle. In this sim, wake turbulence separation only applies to planes on the localizer. The required distance depends on the plane category: if a medium plane flies behind a heavy, more distance is needed. There are 6 wake turbulence categories ('RECAT'), and an arc behind the plane will display the required safe distance to the trailing aircraft. If this limit is infringed by more than a mile, you risk a go-around.
    12. Planes are generated randomly, depending on the skill value you achieve. Runway usage is also randomly chosen at the beginning of a new game. Starting a new game resets the traffic but your high score and goals are saved. In the full version, you can start a new game by selecting the current airport.
    13. Planes below 3000 feet have the option to descend as low as 1600 feet to make shorter finals possible.
    14. Planes flying within a 15 nm circle from the field slow down to 220 knots (unless a speed instruction has been given earlier, in which case that speed is maintained till the localizer).
    15. Planes intercepting the ILS reduce to 200 knots. At 6 miles from the runway they reduce further to 160KT. And at 4 miles, they reduce to final approach speed. You can always reduce earlier if needed.
    16. Planes handed over to the tower may reduce speed further automatically, but only within 10 miles from touchdown while flying too close to a preceding plane.
    17. Departures increase their speed automatically unless the speed is set manually.
    18. Changes to an airplane are applied when pressing the OK button, or when the plane is deselected. Pressing the C button cancels the current changes, and pressing C again deselects the plane.
    19. There are 3 ways to play the game: normal, custom or scenario. In the 'traffic' menu you can choose one of them. By default, 'normal' mode is enabled.
    20. In scenario mode, your task is the guide (non-random) traffic to the runways without any mistakes, and sometimes also within a certain time-limit. See the traffic menu at EHAM to start the first scenario. When succeeding that challenge, the next scenario will be unlocked.
    21. By enabling custom traffic mode, the skill value can be either fixed to a certain level, or capped so won't increase too much while playing. This is a way to change the difficulty of the game, because the number of planes you have to control is equal to the skill value. This allows for a more relaxed gameplay, or allows you to keep the amount of traffic at a more realistic level. If you lower the skill below 4.0 then the airspace will be closed entirely. Closing the airspace is also possible by pressing the 'end game' button in the traffic menu.
    22. In custom traffic mode, you can also switch to flow mode to set a constant flow of planes per hour from/to the main airport. For example, set it at 30 and you'll get 30 planes per hour to the main airport. If can also set a varying flow rate and set a minimum and maximum; the flow rate then varies between those two values, which results in alternating inbound and outbound peaks every hour. There are also options to play a game without departures, or without traffic to secondary airports. To increase the number of active runways, go to the 'runways' menu.
      Flow varies when a minimum and maximum value is set.
    23. You can score goals by landing a certain number of planes in a correct way, like 10 planes without separation incidents, or 5 planes without any mistakes (go around/divert/delay/missed approach/separation incident), or just land 100 planes in one game. However, to make it not too easy, you cannot use custom traffic mode if you want to score goals/set high scores. If you've used custom traffic mode, you have to start a new game first. In the full version, click on the currently selected airport to restart with a new game. Or just click 'new game' in the traffic menu.
    24. To pause, press ESC or, on android, the back button.
    25. The game is automatically saved when you exit or pause the game. Next time you start the app, the game will reload. Savegames on android are stored at /Android/data/com.dirgtrats.endlessatc/files/ (accessible via USB file transfer).

    Game settings

    Most settings in the menu speak for themselves. There are also some hidden settings available:
    • Press and hold the menu button to speed up the sim to 20x speed.
    • In the display menu, longpressing ‘line’ will toggle curved heading lines, and longpressing ‘ring’ doubles the ring size. Longpressing ‘dark’ toggles high contrast mode, and longpressing 'text' clears the pause screen history. To move the control bar to the bottom of the screen, longpress the 'bar' button.
    • In the sound menu, longpressing ‘readbacks’ will enable QNH/altimeter readbacks for planes that descend to an altitude for the first time. However, the QNH cannot be changed and is always fixed at standard pressure.
    • The following keyboard commands are available to further fine-tune settings: “DELAY0” (set pilot delay in seconds), “SWEEP000” (set radar update interval in tenths of seconds), “HLINE00” (set heading line length in tenths of minutes), “SPEED00” (set simulation speed factor), “NOBAR” (remove side bar), “CURSOR” (draws bigger cursor on screen), “TIMELAPSE00” (saves images every x seconds into /img folder), “CLEARTRACKS” clears the pause screen history. If your device does not have a keyboard, you can press and hold the 'lock' button in the display menu to popup the software keyboard.
    • The full version also has multiple airports to choose from, with altitude restrictions, and optional weather (wind, clouds, air pressure) and radar delay settings. You can even add your own airport files.

    Frequently asked questions

    Q: Runways 18C and 18R are too close to each other. How do I make good use of them without getting incidents?

    A: The approaches can be done completely independent; the trick is to intercept the localizers at different altitudes and at a large distance from the field. Read instructions above for more detail.

    Q: It gets way too busy, what can I do?
    A: Enable 'custom' mode in the traffic menu. You can limit the amount of planes you have to control to a certain number, or set the number of planes per hour you want to handle.

    Q: Could you add my favourite airport?
    A: Perhaps more airports will be added in the future. But in the full version, it's now possible to create an airport yourself, by editing a text file. More info here.

    Saturday, November 02, 2013

    Endless ATC

    My ATC radar game is available on the Play Store, Steam and
    Get it on Google Play
    and on PC via or Steam

    I started to develop this game somewhere back in 2011, just for the fun of programming and creating something new. It started very simple, but slowly I started to add new features. Over two years later, it slowly became a quite realistic simulator, so I thought: why not publish it? Due to the easy interface, the sim was is fun to play not only on PC but on small screens like phones as well. In november 2013, Endless ATC was published on the Play Store.
    Screenshot from 2011

    Screenshot on N7
    Screenshot from November 2013, first android release
    Over a year later, the game has improved further with features like saving, panning/zooming, pilot delay etc.
    Screenshot from May 2015
    In December 2015, the app has been downloaded over 100.000 times, and a PC version with more features (text-to-speech, weather, areas, etc) was published on
    Endless ATC on PC, with weather and restriced areas.
    Screenshot (PC) from October 2016

    In April 2017, a paid android version with multiple airports and more features was published in the Play Store. And in July 2017, the PC version was also released on Steam.
    Triple parallel landings, and parallel takeoffs, at Atlanta (KATL)
    Screenshot (PC) from July 2017

    Since then, many more airports (and custom airports) were added, as well as many new features and UI improvements.
    Screenshot (PC) from May 2023

    Thursday, February 07, 2013

    Making a Star Trails Time Lapse

    Short tutorial about how I made this video using free software:


    Taking pictures of the stars

    Take lots of photos in manual mode with a long shutter speed (30-60 seconds) and intervals as short as possible. I used CHDK on an old Canon Powershot to shoot at intervals. Take a dark frame (by covering the lens with your hand for example) at the end; this can be used to subtract sensor noise.

    Stack pictures

    I used Python and PIL library to stack pictures on top of each other. The script I used can be found here. (I don't know if it still works). Put the .py file in the folder with the photos and run it. It can be slow.

    Create video

    You can use Virtual Dub to create an AVI file of the stacked photos.

    Wednesday, August 01, 2012

    Tutorial: Creating a timestamp on photos/timelapse

    Draw a timestamp on your time-lapse

    EXIF timestamp on photo created by script
    I think its nice to be able to see how much time has elapsed during a time-lapse video. To do this, a timestamp has to be drawn on each image. This can be done with batch processing in some photo editing software, but I did it using python scripts. Its free (apart from Windows) and more customizable. Here's a tutorial on how to do it.

    Software requirements: Windows, Python, PIL, (Aggdraw)

    Analog clock timestampTo run python scripts, you need to have Python installed. To be able to draw on photos, you also need the Python Imaging Library (PIL) which is only available for Windows. For drawing a nice anti-aliased clock you also need Aggdraw. Make sure all packages have the same version number, eg. 2.6.


    Now you need a script which opens each photo, take the EXIF date/time information and draw it on the photo. Below are two scripts you can use. Save it as a .py file and put it in a folder with .jpg files. Click on the .py file and the script should run. Done! Your images are now saved in a new subfolder.