FSHost
Help
(also take a look at the FAQ page for answers to specific questions)

Help Topics:


Getting Started

Download and run the program

The first thing to do is to download the program and extract the zip file to a directory. Please see the Download page for links.

When you first run the program, you'll see the main window, and the game servers will start automatically. You'll also see text that looks like this, in the log window at the bottom:

Notice the line in red, above. This shows your current IP address (11.22.33.44 -- yours will of course be different). This is the IP address people will use in Flight Simulator to connect to your server.

Configure your network

If you're using a router on your network, or you have a firewall enabled (including the one built into Windows), you'll need to configure your PC to allow incoming data from the internet. Otherwise you'll have problems with people getting disconnected from the session or not being able to connect. See the topic Firewalls, Routers, and Port Forwarding for more info. Also note that anyone connecting to your session will need to configure their router and firewall the same way.

Someone else connecting to your FSHost

When someone connects to your server, here's how they do it. First they start the game themselves. Then they click on "Multiplayer" and then "Open multiplayer session" (or Flights / Multiplayer / Connect, if they're already in the plane).  They should see a window like the one below.  First they should type in a player name.  Then they should type in your IP address (from the log window above), and click Search. After a second or two, they should see your session come up in the "Sessions" box. Then they can click "Join" and it'll connect to your FSHost.  The screenshot below is from FS2002, but it's very similar in FS2004.

Note that players using Flight Simulator X (FSX) will need my FSHostClient program to be able to connect to an FSHost server.  You can download it for free from the FSHostClient page.  That page also explains how to install it and how to connect to an FSHost server.  FSHostClient is only for people running FSX that want to connect to an FSHost server.  FS2002 and FS2004 users don't need it, although players from all three games will still be able to fly together and see each other in the game.

Playing in your own game

If you want to fly in the game as well as host it, you just connect your game to FSHost like everyone else does. When you connect your game to your own FSHost, you do it exactly the same way.  The only difference is that you can leave the IP address box blank, and just click Search. This is because both the game and FSHost are on the same machine. (Note that you don't click the Host button in your game -- that's what FSHost is for)

NOTE for FS2004 and FSX:  When connecting FS2004 or FSHostClient (for FSX) to FSHost on the same machine, you need to configure FS2004 or FSHostClient to use a different port from what FSHost is using for the "2004 Host Port" (on the Options / Session window).  By default, FSHost, FS2004, and FSHostClient all use port 23456.  It's best to change your own FS2004 or FSHostClient to use a different port such as 23455, and leave FSHost on the default port.  This way other people connecting to your session will still be able to find your game.  To change the Connect port in FS2004, click "Multiplayer" on the FS2004 startup screen, then click "Open Multiplayer Session", then on the screen where you type in the IP address, click "Client Settings", and set the "Connect" port to be 23455.  Then click OK, and you should be able to click Search again and find your own session.

Note that this is only for your own FS2004 or FSHostClient.  Other players should use the same port your FSHost uses.

The player list

After players have connected to your FSHost, try right-clicking on a player's name to see the player features. Or select a player in the list, and then use the Player menu.

The player list shows each player's latency time*, game, name, type (Pilot, Observer, FSNavigator, or Unknown), aircraft name, connect time (in days, hours, and minutes), nearest airport ID, altitude, heading, ground speed, Hop List position, DirectX version*, and status.

*NOTE for FS2004 and FSHostClient:  The latency time and DirectX version are currently only shown for FS2002 players.  These may be available for FS2004 and FSX players in a future version of FSHost.

The latency time indicates the quality and speed of the player's connection to the server.  Players that are geographically close to the server, and those that have broadband connections, will often show up with a green "Good" icon.  But even those players may occasionally show yellow or red when their game is reloading, or doing something else very CPU-intensive.  Players consistently showing red or gray may be experiencing delays in the game, such as seeing other airplanes jumping around in the sky, because they're not getting data from the other players quickly enough.  The latency indicator can be one of the following:

The Hop List position is only shown for players that have started flying entries in a Hop List.  The image above shows that OzzieYank is on hop number 1, flying to airport PHMK.  See the Hop List section for more information.

The DirectX version (shown as "DX") is only reported if the machine running FSHost has at least DirectX version 9.  See this entry on the FAQ page for more info about why running DirectX version 9 is so important.

The "status" column can be one of the following:

What's next, after connecting?

If you connected to the server from the Multiplayer start page, then at this point you'll be back at the same Multiplayer start page again. First click the "Chat" button to open the Chat window. This is what you'll use to communicate with the other players (and with the server, via Chat Commands -- more on that below).  You'll always see the "FSHost" fake player listed in the chat window, and you may also see other players if you're not the first one to connect. If there are other people in the game, ask them for a starting airport "ID". This is usually a 3- or 4-letter code, such as KLAX for Los Angeles.

Then click "Create A Flight" on the left side of the Multiplayer start page, and setup your flight. You'll probably want to change the airport to whatever airport ID the other players told you. To do that, click the "Change" button under "Current Location", and then enter the ID in the "Airport ID" box. Note that the ID box is the second box, not the first. If you know the name, you can use the first box instead, but many people find it easier to refer to airports by ID.  After you type in the airport ID, it should show the name of the airport at the top of the "Search Results" list -- this is how you know you've typed it in correctly. If it doesn't find it, make sure you don't have a particular region or country specified (you want it to use all regions and all countries as you type in the airport ID). If the airport is a large one, it may have gates you can start at. This is always a good idea to check, because it means you don't have to start on the runway, where someone might be in the middle of taking off! :-)  In the bottom left of the window, there's a box called "Runway / Starting Position". Click the arrow next to that box, and see if there are any gates or ramps you can start at. You may need to scroll down a bit to get past the runways, which usually look like "25" or "18R", etc.

After you've set the airport id, and possibly a gate or ramp to start on, click OK, and you'll be back at the Multiplayer start page. You can also change your aircraft, weather, and date/time. You may want to be sure that the time is during the day, unless you specifically want to fly at night. When everything's setup, click "Fly Now!" to go to the plane. Once there, if there are other planes nearby, you should see them, with the pilot's name over the top of the plane. If the airport wasn't big enough to have gates or ramps, then you'll now be sitting on the runway, and you should attempt to clear it as soon as possible, in case someone's waiting to take off or land. Once you see who's in the area, you can taxi back onto the runway and take off.

When you're ready to disconnect from the game, you can either just close FS, or you can go to the Flights menu and select Multiplayer, and then Disconnect.


Session Options

When you first started the program, it automatically started the game server with the default options. You can change all the options by selecting "Options" from the Server menu, or by clicking the first toolbar button , or by typing Ctrl-O. This is what it will look like the first time you open the Options window:


Misc Options

The Misc tab has a lot of different features:

*NOTE for FS2004:  Because of changes to FS2004, the latency time and DirectX version are currently only shown for FS2002 players.  These may be available for FS2004 players in a future version of FSHost.


Chat Commands

When a player types a Chat Command in the game's chat window, a private message is sent back only to that player, showing some information. FSHost comes pre-configured with a few Chat Commands:

You can also create your own Chat Commands in the Options / Chat Commands window.

The special command ?list always shows the full list of commands on your server.

Other Notes:


Hop Lists

A Hop List is an ordered list of airports that players can fly to when the server is unattended (sort of like a "treasure hunt").  As they fly to each airport in the list, the server tells them where to fly to next. Your "Session Comments" (on the Session tab) and "Welcome Message" (on the Misc tab) should tell the players to type "?hop" after they connect, to get the instructions for where to begin.

Creating a Hop List

The first item in the list above should be the starting airport, and the instructions for it should include directions for how to jump to the airport using "Create a Flight" or the World menu in Flight Simulator. All other items should be an airport ID to fly to, along with text explaining how to get there. You can include whatever you want in the instructions, including altitude, ILS, and VOR information, or just heading and distance, as above.  The list above starts and ends at the same airport (PHNL), but that's not required.  Players must fly to each airport in order, and once on the ground (and not paused or slewing), they can type "?hop" again to get the next destination. The "End text" is shown to the player after they arrive at the last airport. Usually this would include something like "Congratulations" and instructions to type ?hop to automatically restart the trip from the beginning.

Multiple Hop List files

Use the Open, Save, and Save As buttons to manage multiple Hop List files. You can save files with names such as "hoplist_hawaii.fhl" to keep lists for different areas of the world, and then easily switch to a different file later.  Each Hop List uses a matching position file.  For example, if you load a Hop List file called "hoplist_test.fhl", then the program will look for a Hop List player position file called "hoplist_test.fhp" and load it automatically.  If you don't want to use these saved player positions, you can use the "Reset Player Hop List Positions" command under the Server menu to set all players back to the first hop.  If the program doesn't find a matching position file, it will automatically reset all players to the beginning of the Hop List and create a new position file with a matching filename prefix.

Importing FSNavigator flight plans

The easiest way to create a new Hop List is to import a flight plan file from FSNavigator. Create your plan in FSNavigator with a list of airports (not runways), then click the Plan button, select Export, and choose the "WindowsINI" format to save your file as a .INI file. You can then click the Open button above to import it into FSHost. All of the entries at the top of the window will be filled in automatically (replacing any entries that were already there), and then you just need to set the "End text" if it's not already set.

Hop List Chat Commands

Other notes


Hop List Races

A Hop List Race is a list of touch-and-go airports that players must complete while FSHost officiates.  FSHost makes sure that everyone completes all the hops, and that nobody slews or changes their simulation rate, and then announces the winner in the chat window.

Creating a Race

Creating a Hop List Race is exactly the same as creating a normal Hop List (see the Hop Lists section for help), but players do a touch-and-go at each airport instead of coming to a complete stop.  If you like, you can change the instructions for each airport to mention a touch-and-go instead of a normal landing.  For example, a hop from KCGX to KORD might have the instructions, "Fly heading 300 for 14nm and touch-and-go at KORD (Chicago O'Hare), runway 27L."

Starting a Race

Before starting the race, be sure all players understand the rules.  You can refer them to this page, where they can read the standard race rules (or you're welcome to make up your own page):

http://www.chocolatesoftware.com/fshost/race.html

All players should start at (or near) the first airport in your Hop List (the airport that you normally tell them to jump to using the World menu).  The first hop of the race will then be to the second airport in your list, which is the same way normal Hop Lists work (although it sounds a bit strange, think about it a second and you'll see).

Then ensure that all players are in the same aircraft, and are at a starting line that you choose.  Normally the starting line  would be the beginning of a runway, but you could also do a flying start if you like.  It's easier to have all players turn off aircraft collisions in Flight Simulator, so that they can all line up on top of each other on the runway.  To disable aircraft collisions, players can go to the Aircraft menu, select "Realism Settings", and uncheck "Allow collisions with other aircraft".

Players should also disable "Pause on task switch" on the Options / Settings / General window, to prevent the game pausing automatically when they change to a different window.

When everyone is ready, select "Start Hop List Race" from the Server menu in FSHost and you'll see this window:

Then click "Start the Race!" and the countdown will begin.  The first chat message sent to all players will include the minimum and maximum altitudes, if you specified any (if not, then just the countdown time).  For the settings above, the following text would be sent in the first chat message:

The race will start in 15 seconds...
You must reach 2000 feet somewhere during each hop.
Max altitude is 10000 feet.

Then another chat message will be sent every 5 seconds during the countdown:

The race will start in 10 seconds...

The race will start in 5 seconds...

And then finally the actual starting message, which includes your "Race start text" above, and the instructions for the first hop, which are added automatically:

*** GO! ***   Fly heading 300 for 14nm and touch-and-go at KORD (Chicago O'Hare), runway 27L.

During a Race

Players are automatically disqualified if they do any of the following during the race:

When a player is disqualified, it's announced in the chat window for all players to see.  The player's name is also shown in the Player List with "(D)" in front of his Hop info.  For example, if the player is on hop 1 and is disqualified, the Hop column will show "(D)1-PHNL".  The player can then complete the race if he chooses, but cannot win.

It's very important that players understand that after landing at an airport, they must slow down until they receive the next hop instructions in the chat window from FSHost before taking off again.  Usually this happens when their speed goes below 60 kts (you can configure the Maximum On-Ground Speed on the Options / Pilot Logs window). However, if the airport they're landing at has a rough runway with gravel or dirt, it's possible that FSHost may not see them as "on the ground" until they get to a speed much lower than 60 kts.  Failure to wait for the next hop instructions in the chat window will result in a disqualification when they land at the next hop.  Usually, explaining that they must wait for the chat message works better than telling them they have to slow to less than 60 kts, since that's actually what's required.

You can manually change a player's disqualification status by right-clicking the player's name and selecting "Edit Player's Race Status".

Race Observers

When a player is a race observer, he can't be disqualified, and will have no effect on the status of the race if he changes hop position, slews, jumps to another airport, changes planes, etc.  This feature is intended for players acting as race admins, so they can still slew to watch the race without being announced as disqualified.  To change a player to a race observer, right-click the player's name and select "Edit Player's Race Status".  The player will then be shown in the Player List with "(O)" in front of his Hop info.  For example, if the player is on hop 1 and is a race observer, the Hop column will show "(O)1-PHNL".

Ending a Race

The race will stop automatically when the first non-disqualified player reaches the last airport in the Hop List and slows down enough to get an "on-ground" status in FSHost (usually below 60 kts, but see note above).  The winner will then be announced in the chat window for all players to see.  If a disqualified player reaches the last airport first, they will receive a message telling them that they did not win the race, and the race will continue until the first non-disqualified player finishes.

The race will also stop automatically when all players are disqualified.

You can manually stop the race at any time by selecting "Stop Hop List Race" from the Server menu.  A chat message is then sent to all players telling them that the race was stopped.

Other Notes


Weather

The Weather tab lets you setup a custom weather pattern to be sent to all players.


Program Options


Pilot Logs

Pilot Logs are log files created for each player to log detailed information during their flight.  Several options are available:

Files are created automatically in the "PilotLogs" subdirectory.  Each player has their own Pilot Log file, created daily.  For example, the file "OzzieYank_030919.log" was created for player OzzieYank on September 19th, 2003.  If the same player connects again on September 20th, a new file will be created to log all flights on that day.  Note that if a player connects before midnight and then stays connected past midnight, the entire connection will be logged to the original file created when he first connected.  If however, he disconnects after midnight and then immediately reconnects, a new file will be started using the new date.

Open a new file for each Flight Plan - This option is available when either "Log only pilots with open Flight Plans" or "Log only pilots with open Flight Plans containing the text.." is selected.  This option causes a new pilot log file to be created for each new Flight Plan the player opens.  The filename contains the player's name, the date and time the Flight Plan was opened, and the actual Flight Plan itself.  For example: "OzzieYank_030919_151827_KDFW-KLAX 35000' VFR" was created when OzzieYank opened the Flight Plan "KDFW-KLAX 35000' VFR" on September 19th, 2003 at 3:18 PM and 27 seconds.

Maximum "on-ground" speed.  This option allows you to configure the maximum speed in knots that a plane can be moving and considered "on the ground".  This also affects Hop Lists created with "touch-and-go" airports, since the pilot must slow down below this speed to automatically receive the next hop information before taking off again.


Remote Access (web interface)

Remote Access allows players and admins to connect to FSHost with a web browser.  You can setup Remote Access in the Options window, on the Remote Access tab.

There are 4 levels of access

With Public access, users can see all of the Session options (max number of players, session name, etc.) the player list (player names, aircraft, etc.), and the Flight Plans. Public users connect without a username and password, and cannot change any settings on the server.

With Admin access, trusted individuals can change whatever settings you want to allow them to have access to. You can set the Admin username and password, and then give the information to people you trust with the server. You can also specify which features you want to allow your admins to have access to. If they don't have access to a particular feature, they'll see a red X next to the button on the web page, and they'll be restricted from performing that action.  For example, you might give them access to the Kick & Ban feature, but maybe not the ability to start and stop the server. All Admins share the same username and password, as well as feature restrictions. If an Admin abuses his power, just change the password and inform the other Admins.

Owner access is intended to be used only by you, the person actually running FSHost. You have full access to all features, so you can change all the settings, Kick & Ban, even start and stop the server. You can set the Owner username and password, which are separate from the ones used by Admins.

Connect to your server with Remote Access

Connecting to FSHost in a web browser is easy. Just use the same IP address that people use when connecting in the game. For example, if your IP address is 11.22.33.44, then just type this URL into your web browser to connect via Remote Access: http://11.22.33.44.  That address will show the Public page, and will not require a username and password. From the Public page, you and your Admins can click the "RemoteAccess Login" link to access the secure features. When you click this link, you'll be prompted for a username and password. Type in either the Admin username and password, or the Owner username and password. You'll have access to different features depending on how you login. When you start the server in FSHost, it'll print out your current IP address in the log window. You can also view your own IP address on several web sites, including www.whatismyipaddress.com.

If you already run a web server

If you already have a web server running on the same machine as FSHost, then it is most likely using the standard "port" number for web servers, which is port 80. Since FSHost will also try to use port 80 by default, you'll need to change FSHost's port number (to 81, for example), on the Options / Remote Access page.

Running Remote Access on Multiple Copies of FSHost

If you have multiple copies of FSHost running on the same machine, each one should use a different Remote Access port number (81, 82, 83, etc.). You can change the port in the Options / Remote Access window. For example, if you use port 81 for your Free Flight game, then people would use this URL to connect to your server in a web browser: http://11.22.33.44:81 (Note the :81 at the end of the URL, which specifies which port to use. When using port 80, which is the default, it's not necessary to include the port number in the URL).  Please see the section Running Multiple Copies of FSHost for more info.

Custom "User" web pages

You can also create your own custom "user" web pages, with images and information about your server. You can include special rules on your server, pictures of the planes you like to fly, or anything else you want to put on your pages.

For security reasons (to prevent hackers from gaining access to your machine), FSHost has strict rules about which files it will serve. All user files must begin with the word "user", and must end with one of the following extensions:

For example, you can create an html page called "user.html", and have an image on it called "user.gif". If you want to serve more files, you can call them "user2.html", "user3.html", etc.  And the images might be named "user2.gif", "user3.gif", etc.

Note that only numbers can be used after the word "user" in the filename. "user123.html" is legal, but "userABC.html" is not.

All user files must be in the same directory as the FSHost program.

You can create a link from the Public web page (edit the template file "RemoteAccessPublic.html") to your user page by adding a link such as:

<a href="/user.html">Click here for information about this server</a>

You can also use several special codes in your HTML pages. These codes are replaced with information from the server when the page is requested. All of the codes used by the Public page (RemoteAccessPublic.html) can also be used in your User pages. Look for the ^^ that surround the codes -- for example: ^^session_name^^ will be replaced with the current Session Name, which is entered in the Options / Session window.

User web pages are always accessible whenever any of the three Remote Access levels (Public, Admin, or Owner) are enabled. If you decide not to show your user pages, just move them to a different directory.

Special variables

All HTML "template" files use special variables that begin and end with ^^.  For example, the variable ^^session_name^^ gets replaced by FSHost with the Session Name you enter on the Options / Session window.  So if you see ^^session_name^^ in one of the HTML files, it might be replaced with "My Session" when the HTML page is requested by a web browser via Remote Access.  Some of the RemoteAccessOwner pages use specific variables available only on that page, but many variables are available for use on any HTML page, even custom "User" web pages (see above section).

Variables available on all HTML pages:

Variable Replaced With Example
^^server_name^^ Server Name, from Options / Master Server "Public Server"
^^server_url^^ Server web site URL, from Options / Master Server "http://www.site.com"
^^server_version^^ FSHost version "3.0"
^^server_run_time^^ Days, hours, and minutes FSHost has been running "0d 1h 27m"
^^current_time^^ Current local time on server "08:11 PM" or "20:11", depending on Windows time settings on server
^^current_date^^ Current local date on server Depends on Windows time settings on server, but usually Month/Day/Year or Day/Month/Year or Year/Month/Day. Example: "09/17/2003"
^^server_ip_address^^ Current numeric external IP address "11.22.33.44"
^^host_address^^ Current "named" external IP address, possibly with dash and port number "www.site.com" or "www.site.com-81" if port is not 80 or "11.22.33.44" if a named address is not available or "11.22.33.44-81" if a named address is not available and port is not 80 (dash used instead of colon, for easier bookmarking)
^^host_address_text^^ Current "named" external IP address, possibly with colon and port number "www.site.com" or "www.site.com:81" if port is not 80 or "11.22.33.44" if a named address is not available or "11.22.33.44:81" if a named address is not available and port is not 80 (colon used as normal)
^^remote_access_port^^ Remote Access Port from Options / Remote Access "80"
^^session_name^^ Session Name, from Options / Session "My session"
^^session_comments^^ Session Comments, from Options / Session "Please join at YSSY"
^^password^^ Text stating whether a password is required to join "Required" or "Not required"
^^directx_version_required^^ DirectX version required to join "9" or "0" if no specific version required
^^pilots^^ Number of pilots connected and max allowed "5 (unlimited)" or "5 of 10"
^^cur_pilots^^ Number of pilots connected "5"
^^max_pilots^^ Max pilots allowed or "unlimited" "10" or "unlimited"
^^max_pilots_number^^ Max pilots allowed "10" (always the actual max, even if using unlimited)
^^observers^^ Number of observers connected and max allowed "5 (unlimited)" or "5 of 10"
^^cur_observers^^ Number of observers connected "5"
^^max_observers^^ Max observers allowed or "unlimited" "10" or "unlimited"
^^max_observers_number^^ Max observers allowed "10" (always the actual max, even if using unlimited)
^^num_flight_plans^^ Number of Flight Plans "5", or "0" if no Flight Plans
^^host_port_2004^^ 2004 Host Port, from Options / Session "23456" or "0" when 2004 session not running
^^weather_description^^ Current weather from Options / Weather "Wind: 248/5, Vis: 3 miles, Clouds: overcast (8/8), Precip: rain, Temp: 55F, Dew: 53F, Altimeter: 29.82", or empty if weather is not being sent to players when they first join.
^^weather_required^^ Text stating whether players must use the current weather "Required" if weather is being re-sent to players every X seconds, or "Not required" if not being re-sent.

There are also certain "list" variables available on the public page (RemoteAccessPublic.html), as well as all custom "User" web pages that end with .htm, .html, and .xml.  These list variables must appear in the HTML pages between certain "begin" and "end" variables, which mark a block of HTML code that will be repeated for each item in the list.

The "Player" list begins with the variable ^^begin_player_list^^ and ends with the variable ^^end_player_list^^.  Any HTML or variables between these two markers are repeated once for each real player or FSNavigator.  Take a look at the RemoteAccessPublic.html page for an example of how this works.

To list only real players, and not FSNavigators, use the begin/end variables ^^begin_player_names_list^^ and ^^end_player_names_list^^ instead.

Here are the variables available in the Player list:

Variable Example
^^player_name^^ "OzzieYank"
^^player_id^^ "1234" (internal ID number, unique within a 2002/2004 session, usually unique across 2002/2004 sessions as well)
^^latency_text^^ "231 ms"
^^latency^^ (HTML "img" tag pointing to a green, yellow, red, or gray .gif image, with "alt" text such as "Player Latency: 231 ms")
^^game_version^^ "2002" or "2004"
^^player_type^^ "Pilot", or "Observer" or "FSNavigator" or "Unknown"
^^aircraft^^ "Cessna Skyhawk 172SP"
^^connect_time^^ "0d 2h 47m"
^^near^^ "KCGX" or empty if no airport within 48 miles
^^near_distance^^ "17nm" (distance to nearest airport, or empty if distance is zero or if no nearest airport)
^^altitude^^ 596'
^^heading^^ 359°
^^speed^^ "127 kts"
^^hop^^ "1-KORD" or "(D)1-KORD" (if disqualified from race) or "(O)1-KORD" (if a race observer) or empty if no hop position
^^dx_version^^ "8" or "9", or empty if FSHost is running on a machine with less than DirectX 9 or player is using FS2004
^^status^^ "Flying" or "Slew/Pause/Rate" or "On ground" or "Not in plane" or empty if ^^player_type^^ is "FSNavigator" or "Unknown"
^^latitude^^ N41°51.24'
^^longitude^^ W087° 36.45'
The following variables can be used anywhere on the page when a Player list is used somewhere on the same page:
^^num_pilots^^ 5
^^of_max_pilots^^ "unlimited" or "of 10"
^^num_observers^^ 5
^^of_max_observers^^ "unlimited" or "of 10"

The "Flight Plan" list begins with the variable ^^begin_flight_plan_list^^ and ends with the variable ^^end_flight_plan_list^^.  Any HTML or variables between these two markers are repeated once for each Flight Plan.  Take a look at the RemoteAccessPublic.html page for an example of how this works.  Here are the variables available in the Flight Plan list:

Variable Example
^^player_name^^ "OzzieYank"
^^flight_plan^^ "KDFW-YSSY, 737, 35000', IFR"
^^flight_plan_id^^ "1234" (internal ID number, unique for all players regardless of game type)
^^status^^ "Filed" or "Open" or "Closed"
^^status_color^^ "blue" (for Filed), "darkgreen" (for Open) or "red" (for Closed)
^^flight_plan_status^^ (HTML "img" tag pointing to a filed, open, or closed .gif image, with "alt" text such as "Flight Plan: closed, Flying Time: 0d 1h 27m, Slew/Pause/Rate Time: 0d 1h 27m, On-ground Airports: KCGX, KORD")
^^time_filed_text^^ "08:11 AM (+02:27)" (time plan was filed, with minutes and seconds of waiting time)
^^time_filed_class^^ "FlightPlanFiled" or "FlightPlanNormal" (see the CSS StyleSheet classes in "user.css")
^^time_filed^^ "<font color=blue>08:11 AM (+02:27)</font>" (time plan was filed, with the HTML font color tags if Filed) or "08:11 AM" (if Open or Closed)
^^time_opened_text^^ "08:11 AM" (time plan was opened)
^^open_time_text^^ "0d 1h 27m" (length of time plan has been open)
^^open_time_class^^ "FlightPlanFiled" or "FlightPlanOpen" or "FlightPlanClosed" (see the CSS StyleSheet classes in "user.css")
^^time_closed_text^^ "08:11 AM" (time plan was closed)
^^row_class^^ "RowDark" or "RowLight" (see the CSS StyleSheet classes in "user.css")

The "Hop List Completed" list contains the players that have completed the entire Hop List.  Each player is listed only once, and the time completed is the time the player first completed the list.  It begins with the variable ^^begin_hop_completed_list(rows,sort)^^ and ends with the variable ^^end_hop_list_completed_list^^.  Any HTML or variables between these two markers are repeated once for each player that has completed the entire list.  The begin command also contains two parameters in the parentheses, which control the number of rows to display (zero for all rows) and the sort order (0 = sort by oldest time first, 1 = sort by most recent time first, 2 = sort by name), respectively.  For example, to display all players that have completed the entire list, sorted by oldest time first, use the begin command: ^^begin_hop_list_completed_list(0,0)^^  Take a look at the User999.html page for an example of how this works.  Here are the variables available in the Hop List Completed list:

Variable Example
^^player_name^^ "OzzieYank"
^^row_num^^ 1, 2, 3...
^^time_list_completed^^ "09/19/2003 05:09 PM" (format depends on Windows settings for the server)
The following variables can be used anywhere on the page when a Hop List Completed list is used somewhere on the same page:
^^num_hop_list_completed_rows^^ "5", or "0" if no rows

The "Hop Completed" list contains the players that have completed hops.  It begins with the variable ^^begin_hop_list_completed_list(rows,sort)^^ and ends with the variable ^^end_hop_completed_list^^.  Any HTML or variables between these two markers are repeated once for each completed hop.  The begin command also contains two parameters in the parentheses, which control the number of rows to display (zero for all rows) and the sort order (0 = sort by oldest time first, 1 = sort by most recent time first, 2 = sort by name, 3 = sort by lowest hop first, 4 = sort by highest hop first), respectively.  For example, to display only the 20 most recent hops completed, use the begin command: ^^begin_hop_completed_list(20,1)^^  Take a look at the User999.html page for an example of how this works.  Here are the variables available in the Hop Completed list:

Variable Example
^^player_name^^ "OzzieYank"
^^hop_num^^ 1
^^hop_name^^ PHMK
^^time_hop_completed^^ "09/19/2003 05:09 PM" (format depends on Windows settings for the server)
The following variables can be used anywhere on the page when a Hop Completed list is used somewhere on the same page:
^^num_hop_completed_rows^^ "5", or "0" if no rows

Conditional Text

This allows you to conditionally display text (or variables) in a template based on the value of a variable.  For example, you can make the template display certain text about the user's nearest airport only if the user has a nearest airport (if the ^^near^^ variable isn't empty).  The BEGIN and END commands below can be on the same line or separate lines.

Example - This example shows how to display the current weather, if weather is being used on the server, as well as whether players are required to use this weather or not.  It uses one outer BEGIN/END section for the entire block, and two nested BEGIN/END sections to display individual lines.  This example has the BEGIN and END commands on separate lines, but they can also be on the same line if it's more convenient.

^^BEGIN_IF(weather_description,!=,)^^  (this entire block is only shown if ^^weather_description^^ is not empty)

     <b>Weather set automatically by server:</b> ^^weather_description^^<br>  (variable is replaced with current weather description)

     ^^BEGIN_IF(weather_required,=,Required)^^  (the next line is only shown if weather is being re-sent to players)
          This weather is required. (Please disable external weather programs and real-world weather)
     ^^END_IF^^

     ^^BEGIN_IF(weather_required,!=,Required)^^  (the next line is only shown if weather is not being re-sent to players)
          This weather is not required. (You can change it after joining)
     ^^END_IF^^
    
^^END_IF^^  (marks the end of the block started by the BEGIN_IF statement 8 lines above)

See the file "RemoteAccessPublic.html" for a few more examples.

Kneeboard web page for FS2004

If you have FS2004, you can use the Kneeboard to show any HTML page. FSHost comes with a special page that's formatted to fit in the Kneeboard window, to show the current status of all pilots.

To setup the Kneeboard, edit the file "kneeboard_keys.htm" in your FS2004 Aircraft directory with a text editor such as Notepad. (Usually this is in "C:\Program Files\Microsoft Games\Flight Simulator 9\Aircraft")  Add the following lines to the file, just below the 3rd line that contains "</head>":

<form>
Enter URL: <input type=text size=30 name=url value="http://">
<input type=button value=Submit onClick="location.href = this.form.url.value;">
</form>

Then in FS2004, open the Kneeboard by pressing F10.  Then use your mouse to click the "A" button in that window. That will bring up the "Key Commands" page you just edited.  Enter the IP address of the FSHost server, which is the same address you use to connect to it in FS2004.  Then click Submit, and it should load the Public page for that server. You can then click the "Kneeboard" link at the top of that page and it will load the special page formatted to fit in the Kneeboard.

Other notes


Master Server

FSHost registers with a "Master Server" to let it know when your server's running.  Players can then run FSHostSpy to view a list of FSHost servers currently available, as well as each game's session details, player names, aircraft, altitude, heading, speed, flight plans, etc.  The "Master Server" tab on the Options window has settings for configuring how your server is seen in FSHostSpy:

Other notes


Plane Translations (when running 2002 and 2004 sessions)

Some planes are included with FS2002 but not FS2004, or vice versa.  When a player is using one of these planes, players in the opposite session (2002 or 2004) will see the wrong plane for this person (usually they'll see whatever they're flying themselves, or the last default plane they used).  FSHost can help with this problem by automatically translating certain plane names to a different plane that's somewhat similar in the other version of Flight Simulator.  For example, if a player was flying the "Cessna Skylane 182R RG" in FS2002, players in FS2004 wouldn't be able to see the plane because it's not included with FS2004.  But FSHost can translate this plane to a "Cessna Skylane 182S", which is similar in size and speed, so the FS2004 players can at least see a similar plane.

All of the default 2002/2004 planes that are missing from the opposite version are included in a file called "planes.txt", which should be in the same directory as the FSHost program.  You can edit this file in a plain-text editor such as Notepad to modify the translations or add new ones.  Instructions are included at the top of the file, as well as a warning about using it with non-default (3rd party) aircraft.

Planes that are in FS2002 but not FS2004:

Planes that are in FS2004 but not FS2002:


Flight Plans

Flight Plans are very useful when running an ATC (Air Traffic Control) session. But they can also be used in normal Free Flight games, to let pilots know where everyone's flying.  Users file a Flight Plan from inside their game with a special chat command (+fp), and the plan becomes "filed", but not yet "open". The controller (maybe you, or someone else running ATC on your server) approves the plan, and changes it to "open". When the player is finished flying the plan, it can be "closed" with another chat command (-fp). The controller can also file a plan for a player, or edit and delete the plan. Flight Plans appear in the middle window inside FSHost.

For example, let's say a player files a Flight Plan from Dallas to Los Angeles, flying in a 737, at 35,000 feet.  To do this, the player might type something like this in the game's chat window:

+fp KDFW-KLAX, 737, 35,000'

This is how it appears in the Flight Plan window (and it's also visible on the web page, via Remote Access):

The Flight Plan in the picture above has been "filed", but is not yet "open". Note the blue question mark ? and the two times under the "Filed" column.  The first time (07:19 PM) is the time the plan was filed. The second time(+00:12) is a count-up timer that changes once a second, and shows how many minutes and seconds the player has waited for the plan to be approved and "opened".

The controller can change the plan to be "open" by double-clicking the plan, or by right-clicking it and selecting "Open" from the popup menu.  When a controller opens the plan, it changes to look like this:

In the picture above, the green circle shows that the plan is now "open", and the time the plan was opened is shown in the Opened column. Also note that the "Open Time" column now displays how long this plan has been open -- in this case, 0 days, 0 hours, and 4 minutes.

When the player is ready to close the plan (usually when the flight is finished), he/she can close it by typing "-fp" (without the quotes) in the chat window of the game. The controller can also close the plan, either by double-clicking it, or by right-clicking it and selecting "Close" from the popup menu. The plan then changes to look like this:

The red bar now indicates that the plan is closed, and the time the plan was closed is shown in the "Closed" column. Note that the Open Time column will stop counting, and remain fixed at the total time the plan was open (the time between when it was "opened" and "closed").

Other Notes:


Running Multiple Copies of FSHost

You can run more than one FSHost session on the same machine. Each session can have its own settings, and can be for a different style of game (beginners, ATC, free flight, helicopters, etc.). To run another copy of FSHost, just use the /s option on the command line, followed by a unique session identifier. The easiest way to do this is to create a shortcut to the program, and then modify the shortcut.

Creating a shortcut with the /s option

First right-click on the FSHost program, and select "Copy". Then right-click somewhere in the same directory (or on the desktop, or wherever you want the shortcut), and select "Paste Shortcut". Then right-click the shortcut you just created, and look at the "Target" line. At the end of the line, after the program name, add /s and an identifier name to uniquely identify this copy of FSHost. The identifier name is never shown to players connecting to your game, it's just a word that's used to keep this copy of the game's settings separate from the others in the registry. In the example below, we're setting up a "Free Flight" server, so we add /s freeflight to the end of the Target line. (this may look slightly different in other versions of Windows, but it should be similar)

Note that if you have spaces in the directory path, you'll need to put double-quotes around the path, but put the /s freeflight outside of the quotes.  For example:

"C:\Program Files\FSHost\FSHost.exe" /s freeflight

 

When you run the shortcut, it'll launch FSHost, but with all the default settings, just as if you were running it for the first time. You can then customize all the settings for your Free Flight game, and when you close the program, it'll save your settings for next time. You'll also see the identifier name (freeflight) in the title bar of the program:

Connecting Flight Simulator to Multiple Copies of FSHost

When a player connects their game to your IP address, they'll see all of your Session Names listed on the Multiplayer screen, and can pick which one they want to join:

 

Running FS2004 sessions with multiple copies of FSHost

If you're hosting FS2004 sessions, you'll need to configure each copy of FSHost to use a different 2004 Host Port on the Options / Session window.  The first copy of FSHost can use the default 2004 Host Port, which is 23456.  Suggested values for the other copies of FSHost are 23457, 23458, 23459, etc.

Note 1:  Most people won't have any trouble finding your sessions, regardless of which Connect port they have specified in the FS2004 multiplayer settings.  However, some people using complex networks or NAT servers may need to configure FS2004 to use the same port that's being used by the session they're trying to join.  This is only if they can't find the session when entering the IP address and clicking Search.  To change the Connect port in FS2004, click "Multiplayer" on the FS2004 startup screen, then click "Open Multiplayer Session", then on the screen where you type in the IP address, click "Client Settings", and set the "Connect" port to be the same as the 2004 Host Port in FSHost.

Note 2:  If you're running FS2004 on the same machine as FSHost, you'll also need to configure your FS2004 to use a different port than all of the 2004 Host Ports being used by the multiple copies of FSHost.  Follow the directions in Note 1 above to set your Connect port to a value such as 23455, and then it should be able to find any of the FSHost sessions you're running.

Running Remote Access (web interface) with multiple copies of FSHost

If you're running Remote Access, to allow people to connect to your server in a web browser, you'll need to configure each copy of FSHost to use a different Remote Access port. The default port is 80, but you can usually use ports 81, 82, 83, etc. for the other copies. You can change the port in the Options / Remote Access window. For example, if you use port 81 for your Free Flight game, then people would use this URL to connect to your server in a web browser: http://11.22.33.44:81 (Note the :81 at the end of the URL, which specifies which port to use. When using port 80, which is the default, it's not necessary to include the port number in the URL)

For more info see the Remote Access section.


Firewalls, Routers, and Port Forwarding

Running FSHost is easy, and you can use it to host a Flight Simulator multiplayer session for your friends to join so you can all fly together.  But unfortunately Microsoft made it a bit more difficult when it's used with a router (which everyone seems to have on their home network these days) or with a firewall.

All of the Flight Simulator programs use specific "ports" for the data.  Think of it like this: your external IP address, like 11.22.33.44, is like the address to get to your house.  And a "port", like 80, or 6073, or 23456, is like a door on your house.  Different ports allow different types of data in.  Once the data gets in, it goes to your router, and then the router has to figure out how to get that data to your PC.  But you might have several PCs connected to the router on your home network, so the router may not know which PC the data should go to (and it's the same even if you have only one PC, unfortunately).  

That's where "port forwarding" comes in.  You tell the router that when data comes in to your external IP address on a particular port, the router should forward that data to the PC where you have FSHost running.  If you don't setup the port forwarding, then people out on the internet won't be able to connect to you, and the FSHost Master Server will report an error when you start FSHost, saying it wasn't able to register your server so other people could find it in FSHostSpy.

Now, another note about IP addresses.  I said before that your external IP was like the address to get to your house, so people on the internet could use it to connect to you.  You usually only have one external IP, and it's shared by all the computers on your home network.  But each computer on your home network also has a unique internal IP address, which is provided by the router.  It's sort of like a fake IP address that's only valid inside your home network.  When you forward a port in your router, you forward it from your external IP to the internal IP of a particular computer on your home network.  You can find a PC's internal IP by going to Start / Programs / Accessories / Command Prompt, and typing "ipconfig". Then look for a line that shows the IP Address (or maybe "IPv4 Address"). For example, it might be something like 192.168.0.2.  Usually internal IP addresses start with "192.168" or "10.0".

One more thing about internal IP addresses... they can be either static or dynamic, and it's better if the FSHost PC has a static internal IP address.  For more information, see the note below about Static vs. Dynamic internal IP addresses.

Important: after you get your router and firewall configured, be sure to test everything with my FSPortTest program. It'll check all the FSHost and Flight Simulator ports on your PC and tell you if they're setup correctly.  This forum topic has a download link and more information.

Important: anyone connecting to your session will need to configure their router and firewall the same way (except for port 80 -- that only needs to be done on the PC running FSHost). They should run FSPortTest on their system as well, to test everything.  Every player in a multiplayer session connects directly with every other player -- the data is not relayed by the host.  If one player in the session doesn't have things setup correctly, it'll cause problems for everyone else when they try to connect, because they won't be able to connect to that one player.

Important: things are a lot easier if you run FSHost and Flight Simulator on the same PC, instead of using multiple PCs on your local network.  This is because when you forward ports in the router, you can only forward them to one PC at a time, and that PC should be the one running FSHost.  For more information, see the note below about Using multiple PCs on your local network.

Routers:

Every router has a different way of doing the port forwarding, so I can't tell you exactly how it'll be done.  But if you go to www.portforward.com, they have a huge list of instructions for every router ever made -- you just need to know the brand and model number, which you can get from looking on the actual router.  When you go to that web site, ignore the ad about buying a program -- you don't need it.  Select your router from the list, and then select FSHost from the list of applications.  It'll then walk you through how to do the port forwarding for your particular router, for using it with FSHost.  It'll also tell you how to find your internal IP address, and FSHost itself will tell you your external IP address after it registers successfully with the Master Server.

Here are all the ports that need to be forwarded to the PC running FSHost (the web site above will list these ports also, but I'll include them here so you understand which ones you might have to change, and why): 

Firewalls:

Windows XP firewall:

Windows Vista firewall:

Windows 7 firewall:

Test with FSPortTest:

Important: be sure to test your router and firewall settings with my FSPortTest program. It'll check all the FSHost and Flight Simulator ports on your PC and tell you if they're setup correctly.  This forum topic has a download link and more information.

FSNavigator port:

Although FSNavigator technically uses UDP port 23432 to connect to a session, it always tries UDP port 6073 as well, since that's the "alternate DirectPlay port".  For that reason, you really only need to forward the ports listed above, and there's no need to forward UDP port 23432 at all.  As a matter of fact, FSHost doesn't listen to port 23432, so FSNavigator will never actually connect on 23432 -- it will always connect initially on 6073, and then switch to a port in the 2302-2400 range.

Static vs. Dynamic internal IP addresses:

Each computer on your home network has a unique internal IP address, which is provided by the router.  It's sort of like a fake IP address that's only valid inside your home network.  That internal lP address can be either static or dynamic.

Static IP addresses are assigned to a specific computer, and never change.  So you might setup your FSHost PC to have a static internal IP address of 192.168.0.2 (or whatever is appropriate with your particular router).  That PC will always have that IP address, and you can setup your router to forward data to that PC via port forwarding and not have to worry about the IP address ever changing.

Dynamic IP addresses are assigned by the router each time the computer connects to the network, and the IP address can be different each time.  So you might have a laptop that connects to lots of different WiFi networks, and each time it connects it gets a different internal IP address from that particular router.  The same is true in your home network, so when your laptop connects to your router, it might get a dynamic internal IP address like 192.168.1.100.  But if it disconnects from the network and then later reconnects, it might get 192.168.1.101 instead.  If you setup your router to forward data to the laptop's internal IP address and that IP address changes, the port forwarding won't work anymore.  For that reason, it's easier if you use a static IP address on the PC running FSHost.  But if you need to use dynamic IP addresses, just be sure to update the router's port forwarding with the PC's latest IP address each time you connect to the network.

You can find a PC's internal IP address by going to Start / Programs / Accessories / Command Prompt, and typing "ipconfig". Then look for a line that shows the IP Address (or maybe "IPv4 Address").

To setup your PC to use a static internal IP address:

Using multiple PCs on your local network:

Things are a lot easier if you run FSHost and Flight Simulator on the same PC, instead of using multiple PCs on your local network.  This is because when you forward ports in the router, you can only forward them to one PC at a time, and that PC should be the one running FSHost.

When Flight Simulator connects to a session, it connects directly to every other player in the session as well -- the data is not relayed by FSHost.  If you were to run FSHost and Flight Simulator on different PCs in your local network, then someone connecting to FSHost from out on the internet will also try to connect to your Flight Simulator PC but they won't be able to, because the router ports are only forwarded to the FSHost PC.

That being said, if you want to host a session where everyone in the session is connecting in from your local network only, and nobody's connecting from out on the internet, that should work fine, and you only need to configure the firewall on each PC -- you can skip the port forwarding in the router.

But if you're determined to run FSHost and Flight Simulator on different PCs on your local network, and you want to allow incoming connections from the internet as well, then you might try PuffinSoft's DXport program.  It was designed to solve this exact problem by splitting up the DirectX ports so that each PC on your local network uses only a few of them at a time, and then you can tell the router which ones to forward to each PC.  So for example, instead of forwarding the entire range of UDP ports 2300 to 2400 all to the FSHost machine, you'd forward just the first few to the FSHost machine, then forward the next few to the Flight Simulator machine, etc.  The DXport program then allows you to tell FSHost and Flight Simulator which ports to use on that particular PC.

But trust me -- just run everything on the same machine and things will be easier.  ;-)