Problematic Airplane Ground Navigation - ATC 'Control'

Abstract

‘Control’ is a ROBLOX game that simulates the crucial aspects of Air/Ground traffic control. We want people to have an experience unlike other control games. There already exists games where ATC and players can play together but it is often the case that players tend to disregard ATC and ruin the gameplay by taking off on the taxiway. Control aims to create the autonomy to replace these issues for a greater standard.

Interactivity

We’ve planned the basis for interactivity and to keep it short we’ve bullet pointed some information you might want to consider:

  • Game is 1 player, Cannot play as a plane.
  • Bird’s eye view is used to manage arrivals and departures.
  • Commands are done through typing.

Context & Navigation

In the field of ATC, Navigating a plane to a destination is usually given by stating multiple alpha-numeric codes relative to the taxiway that a plane may need to cross.

So for example, If tower would wish a plane to navigate a plane (‘ABC123’) towards a runway (RWY01) via taxiways (AA, Y, Z) they would provide the command

ABC123 RWY01 TAXI VIA AA Y Z

The plane will create the shortest path possible in full acknowledgement that they would be required to use those taxiways to navigate.


Current Design and Scripting Issue


^ This is the image depicting the imported terrain and building meshes. On ROBLOX. We’ve ensured that our content is copyright compliant.

Control is a development project lead by myself and another developer. Resource management is crucial so that we avoid having to create more work for ourselves let alone the small development team. We’ve got all of our models ready to work alongside with scripts but we currently do not know what best way to allow planes to navigate using commands.

Problematic Scenario

So lets say we wanted a plane to taxiway to the RWY. The green highlighted path in the image below is the correct navigational path the plane should take upon command
’CALLSIGN, RUNWAY01 TAXI VIA B, D, N, AD’

We want to clear out common answers that we have with this issue and what in theory happens if we:

‘Just use pathfinding service at intersections to get to the runway.’
If we used pathfinding service, we would get this kind of route:

Which indeed is the shortest route possible but doesn’t take account of the taxiway commands given, what if we considered taxiway endpoints into pathfinding service?

The plane reaches the whole paths of all taxiways but this isn’t how taxi’ing works. It ignores crucial turns such as [D - B3], [AA-Y] and behaves incorrectly.


We’re reaching out to many scripters out there with any ideas on how to achieve correct taxiway behavior effectively, We’d love support on this issue.

If you need anything clearing up please ask since this is a long-winded post

1 Like

If you already have a preset of instructions that must be followed and turns that must be made, why not just use PathfindingService to fill the gaps, using the service for when a decision needs to be taken.

eh pathfinding service isnt going to help really, because XLNS_XYZ needs to set up the lanes the plane needs to use, with pathfinding service you cant. make dots with in eachdot a object value, those object values will say where the next position can go for example forward left or right.
then store nodes for example this node leads to this. then use loops to check what nodes the plane has to follow

1 Like

It would certainly be possible by creating a set of invisible walls. My suggestion did not lean to nodes based on their apparent intent to use PathfindingService.

1 Like

I don’t suppose there are any alternatives to pathfindingservice because the methods to use that would be rather unconventional with these circumstances?

Create position node data at each intersection and mark it with whichever roads connect to this node.

You should already be able to get which road the plane is on already, which you can get by finding this distance for all roads and grabbing the smallest value that’s within segment bounds.

The grey segmented line is going to be your distance ratio between the two points.
chrome_2018-08-25_12-25-05

Make sure you specify deadzones at the nodes so you can tell whether players are at a node or not. This is important because we can use these deadzones to determine when a plane reaches a node or not, which can allow the navigation system to give them the next path they need to travel.

Basically what we’re doing here is we’re going to go step-by-step and try to path ourselves to the ending point. You did mention some special cases like B3 and Y paths. From a scripter’s viewpoint, these are special cases in which you need to prepare the pathfinder to draw accordingly. Ask yourself the following:

“Does this turn on B3 seem more logical than reaching the end of the road I’m currently on?”

Yes because N is our next road and the end connects to C at the end, while turning onto B3 is not only closer but connects to our N road as well.

“Does turning onto Y seem more logical than going through AA?”

Yes because this behavior would make us run into the runway, while Y travels onto and connects with AD. Here’s the issue though; Y is dispersed across 4 nodes, which create 3 roads. You’ll have to hardcode this example in if you want quick and good results. Otherwise you could try potentially adding the separate roads as one “road data” and using the road data to create one path.

Please note the following:
You do NOT need pathfinding service for this at all! this is purely just mathematical.
You MAY run into a lot of hardcoding points. Please consider restructuring builds to follow code if it ever gets too challenging, otherwise you’ll only delay your progress.

With all this in mind, you should be able to build grounds for how you want to go about this. I hope this helps! :grin:

3 Likes

You are my everything.

1 Like

Glad I can help!

I have a Node Map plugin that lets you create a web of nodes and paths between the nodes. It has a module for pathfinding across the nodes too:

2 Likes

Hey @Crazyman32 , your node plugin is extremely useful. We’ve spent quite a while patching up our airfield with nodes and connections. We’d just like to update you on a small issue that we lost all progress when our team create went down, you might want patch a countermeasure for that.

Else than that. Thank you veryvery much it saved us a lot of time.

1 Like