Airio LFS Tracker
Full Version Manual (v. 2.0)

Airio Home Overview Downloads Changelog
User Manual Admin Manual Full Manual Airio FAQ
Airio Servers Live for Speed LFS Forum Donations

Contents

Introduction
User Features
Customization
Message Commands
Other Commands
Soft Splits
Admin Features
Additional Commands
Configuration Options
Racing Options
External Communication
Closing Notes

Introduction

Airio comes in two releases. One is called FREE and is (or will be soon) available to everyone. It contains all the user core features mentioned and described in User Manual, as well as all the necessary administration/configuration features and options you'll find described in Admin Manual. The other release is called FULL and it adds some unique features, both on the administration part and to users as well. To see which version is running type !ver.

The following sections describe user and admin features offered only by the Airio FULL version. You may always find this release running on the AirAttack servers, where it is possible to use the additional options and commands. FULL version is not available for download, if you're interested in learning about how to get it contact me via private message in LFS Forum sent to EQ Worry.

User Overview

These are the general FULL version features experienced by users:

  • Private and server messages
  • Race progress data
  • Soft splits
  • Calling admins
  • Ranks and voting using ranks
  • Race/serie podium statistics
  • Event messages

Admin Overview

Here we have overview of FULL version features experienced by admins:

  • Unlimited number of severs
  • 2 more limad levels for finer control
  • Managed voting by limads and against limads
  • Easier, definable server initialization
  • Sending live stats data
  • IRC communication and remote control
  • Capturing server commands and IP addresses
  • FTP upload of stats and configurations, download of updates
  • Car reset penalties management
  • Custom race start ordering (under development)
  • Support, improvement, stunt points
  • Managed join timer

User Features

Let's start with user features.

Customization

User configuration options make three more items accessible:

  • Soft splits allow every player to define his own custom split points on any track. The game-defined splits are called hard in Airio terminology. Soft splits are moveable points on track (usually in the middle of each sector, but configurable), where you'll receive additional timing info. By default soft splits halve every sector, giving you in total twice as much timing data. The data displayed (in buttons or in chat area) offer the same info as in hard splits and allow you to see in more detail where you are gaining/losing time. Each sector may contain only one soft split, placed anywhere you need. For more details see the !soft command below.
  • When Race progress reporting is turned on, new buttons or chat lines will be generated, giving you in every (hard) split up-to-date info about time difference to one player before you and one behind you. You will see lap and split number where the measuring takes place, current time difference, and change of the difference comparing to previous lap finish. Note that the current difference is equal to the number also shown in race position table, but it is not limited to players in the same sector and it stays visible until the next split point, giving you chance for later review. Most interesting is of course change of the time difference, because you can easily see if you are gaining time (closing in to player before you or separating from player behind you, green numbers) or losing time (red numbers). Change of the difference is very useful especially in mid-length and endurance racing, allowing you to adjust your racing strategy (push harder or drive rather on the safe side).
  • Points gained may be converted into ranks and you may turn on/off these messages. Ranks are shown when players connect and when they are promoted. You can combine this setting with showing just your own data, which will in effect hide for you all rank messages except your own.

These options are naturally saved in your profile and in no way are the data forced upon you. Soft splits and race progress is turned off by default, limiting info amount especially for people that see Airio for the first time. Once they understand the data given by default, it would be time to experiment with new options. Ranks are by default active, because they may create more competitive environment.

Message Commands

As mentioned, the FULL release offers also new user commands. They are all very much unique. There is, as always, a short help available on all of the following commands. You can see the help items by typing !h3 or !!!. Lets look now at the real stuff.

!pm +|–[name]

This is the first truly interesting Airio command. While the earlier explained commands are known from other tracking systems or they are just useful variations or additions of the same principles, private messaging (for which the !pm stands) is something different. Private messaging allows you to send messages to anyone else connected to the same server or to any group of people in such a way that no one else sees the message, only you and the recipient(s). You may communicate secretly with anyone, even the host, and anyone can communicate in this fashion with you.

To use private messages you must first create a list of recipients. For this you use the + sign with (partial) nickname or username of someone you see connected. You may add more people to your list using + and remove them from the list using . After any change or after typing !pm without parameters the current list of recipients is shown. Specifying just without name deletes the whole recipients list.

Note that the system is based on user's unique connection IDs. If someone from your list disconnects, he will be deleted. If he reconnects, you must add him to the list once more, because he now has different internal LFS connection ID. Also note that you cannot send PMs to yourself. On every change the list is printed out, so that you know whom you'll be sending messages.

  • !pm +unnamed – adds user "unnamed" to your list of recipients (there is no space between + and the name).
  • !pm +onemore – adds "onemore" user to recipients.
  • !pm –unnamed – removes "unnamed" from the list, so that only "onemore" remains there.
  • !pm – – deletes the whole list.

Naturally the !pm (and the !sm, see below) command entry is not replicated (not displayed to other connections, even if they have commands showing turned on) – that would beat the whole purpose of private messaging.

Alternative versions: !pmess.

!pm [msg]

Once you have some recipient(s) defined, you may start sending private messages. You must always start them with !pm, or they will appear in chat! Output of the command will show you as the originator, all recipients of the message, and the message text itself. The text will be on as many lines as necessary so that no info is lost. If you receive such a message suddenly and want to reply in similar fashion (secretly, with an info intended only for the eyes of the originator), you first need to set recipients (see above).

  • !pm – just shows list of nicknames of currently defined recipients.
  • !pm Here's my addy: me@mail.com – sends the text message to all your private message recipients.

The private messaging system is intended as a means of secret communication. It is ideal for sending e-mail addresses and similar info. You should know however, that all these texts are stored in Airio system log, which is accessible (usually) to administrators – they may later (or in real time, under certain conditions) see what you are writing, so do not use it for communicating very sensitive info. If bad language filter is used on the server, your messages are subject to its checks. This in effect means you may be kicked for cursing even if you were silent from other people's perspective, while communicating privately your not very good opinions about someone's driving style, for example.

!sm +|–[name]

Server messages, for which the command shortcut stands, represent another means of private communication. They use much the same principle as PMs, but allows you to send messages to people that are offline. Such messages are stored on the server and displayed to the recipient once he connects (to any managed server under one Airio instance). The messages are displayed as buttons and there are options to manage your server messages (sent and received). You may see your sent and not yet delivered messages, and you may delete them. Of course you can also display received server messages and delete them by simple clicking. Airio sends notification to message originator once his message is displayed. All server messages are also stored only for a certain configurable time, 7 days by default. Then they are removed and you are notified of this action.

To send a server message you again first need to define recipient(s). The syntax is similar to the !pm command, with + for adding people and for removing them. Instead of nicknames (as in private messages) the server messages use unique usernames (and you see them in list). By the principle you may send user messages only to people known to Airio, meaning to anyone included in the statistics (which are common to the whole group of connected servers).

  • !sm +unnamed – adds user "unnamed" to your list of recipients.

Alternative versions: !smess.

!sm [?|!|msg]

The actual server message is again sent in a similar fashion to !pm command. You will see what was sent and you may also display the sent message, deleting it if necessary. Every server message shows the sender, date and time, and the actual text. To send longer texts, just send several separate SMs.

  • !sm – just shows list of usernames of currently defined server message recipients.
  • !sm Man, that was nice racing... – sends the text to the server message recipient.
  • !sm ? – shows all your received server messages, you may delete them by clicking.
  • !sm ! – shows all your sent and yet undelivered server messages, you may also delete them by clicking.

Again, do not put sensitive info inside server message. Not only the !sm commands are logged, but the messages themselves remain on the server in a text file. Still, server messages may be very good means of communication for both users and admins, because they cannot be overlooked – they pop out on the recipient once he connects. Keep in mind that server messages require graphical interface, which means they cannot be received/read by the host (the dedicated server).

Other Commands

!rank[s]

This command without s at the end shows ordered connected people ranks which are basically converted points. For each player you see current point score, nickname, username and points needed for entering into next level. Ranks may be currently used for limiting kick/ban voting possibilities, so that newcomers cannot start voting against advanced players, but that is also a FULL Airio version feature.

  • !rank – just shows the points and ranks of connected people as explained above.
  • !ranks – shows a table of all defined/available ranks with points needed.

!bt[p|s] [car] [from]

This is an enhancement of previously (in user manual) explained !bt command. Here the p switch stands for podiums (one of first three places) in races, while s stands for podiums in series on current track. If car is not specified, results from all car types on current track are summarized. To see stats of one particular car type on current track, enter the car code. Otherwise the command format is the same, it just sorts people by podiums gained in races or series, where 1st place carries the virtual value of 4, 2nd place has the value of 2 and 3rd place is calculated as 1 for the comparison.

Alternative versions for total race podiums: !podiums, !pods.
Alternative versions for total serie podiums: !series.

Worth noting is a fact that in races with low number of people (less than 5) the winner does not get highest podium (just like he usually does not get full 10 points), because that would distort of the podium statistics. If two or less people start in a race, the winner gets virtual 3rd place. In case there are three or four player, the winner gets virtual 2nd place and the runner-up then virtual 3rd place. Once more than four people race there is no more such podium shifting.

!bc[p|s] [car] [from]

Same as above, only the data on championship level are used.

Alternative versions for champ race podiums: !podium, !pod.
Alternative versions for champ serie podiums: !serie.

Note the rather better understandable alternative versions of !pod(s) and !serie(s) for champ/total race/serie podiums.

!admin [text]

This is a cry for help possibility. If properly configured, your message is redirected to an IRC channel where server admins may be connected and chatting. A message informs users whether their message was forwarded or whether the feature is not available. If IRC is used, channel operators may talk directly from chat group and also carry out all Airio and server commands from there. Message entered is hidden from view, because the !admin command is not replicated. Also talking to host may be redirected to an IRC channel, but in that case the sent text is visible by all people connected.

Alternative versions: !ad.

!event

This simple command shows special text lines defined in server configuration file by admins. These lines may include text explaining in short e.g. some race or serie rules, but basically it can be any kind of info. In case they are the upcoming race rules all newcomers may type the command and review the rules without browsing some forum with lengthy explanations and without confusing communication with other connected people.

Alternative versions: !rules, !infos.

Soft Splits

!soft [on|off]

This is the command to show your custom defined soft splits for the current track and optionally turn them on and off (using GUI with buttons or !show command for this is preferred though). Let me say again that soft splits are specific places (dynamic, defined individually by users) between hard splits (constant, defined by tracks) where similar time comparison data as in game-defined splits are shown. Soft splits allow you to break the track into smaller pieces, watch time comparison data and get better idea where you are loosing most of the time and what paths are faster.

By their nature soft split data cannot be exact to 0.01 second as hard split times are. They are calculated in Airio from data received from server each 0.1 second and that is their maximum resolution to which they are rounded. For this reason you can quite often see zero difference between current and best soft split time, which happens only rarely in hard splits. Still, soft splits are flexible and they can provide very interesting data.

  • !soft – displays hard and soft split nodes for current track plus total track length in nodes.

Soft split times are stored only on session level, meaning the best times are lost after disconnect and deleted by !clsb command. This is natural behaviour – soft splits really cannot be compared to LFSW best or WR data, because the necessary info is not available. And because soft split positions (see below) are stored into user's profile on track level, meaning they are the same for all car types on that track, the achieved times are not stored into PB data either. That is why soft split times are always compared to session best data, regardless of comparison base chosen for hard splits.

Alternative versions: !sf.

!soft [–]node

This command is a variation of the above one and moves or removes soft splits in relevant sectors as the user sees fit. After first activation the soft splits are installed into default locations, halving every track sector. To install soft split at a particular place, drive there with your car, stop and enter !node to see the current track node (something like a very small sector). Then type the node number after !soft command. Previous soft split node from that sector will be removed and new one created. Locations of soft splits are part of your profile on the tracks, meaning the values are preserved and used again after reconnect.

There can be only one soft split defined in each track sector. If you try to install 2nd soft split into a sector already containing one defined soft split, it is simply moved to the new location. To remove a soft split just enter its number with sign. The particular sector then will be without soft split. If you delete all defined soft splits, then the default ones (halving each sector) are again used. Install soft split back by using any node from the sector. Whenever you move or delete a soft split point, all your session best data are deleted, just like if you used the !clsb command.

  • !soft 144 – moves soft split to a new location, the specified track node.
  • !soft –32 – removes soft split from appropriate sector.

To be able to use soft splits effectively good connection without lag to server is required. The server must see your car in the defined node to launch soft split handling routines. Real tests show that unless the connection is really laggy with car disappearing for longer periods the soft splits are always captured and messages in the following format are displayed:

softNode compare: splitTime (+/–sessionBestDiff) | sectorTime (+/–sessionBestDiff) | currSpeed

Example output of soft split installed in node 253, comparing to session values (always):

253S: 0:51.50 (-0.10) | 0:15.80 (+0.20) | 106.36

Current split time (from lap start) is 0:51.5 which is by 0.1 seconds better than your best time in this spot on track during the racing session. Current sector time (from last hard split) is 0:15.8 which is 0.2 slower than your today's best. The last number in soft splits says current speed, 106.36 kmph in this case. If button interface is used, exactly the same data appear in timing buttons used also for hard splits.

Admin Features

Additional Commands

!ban [time] name

Level 3 limads can specify length of the ban in days and nickname or username of anyone connected. If no time is specified, default value of 0 is used representing ban for 12 hours. If there is no such player currently connected the command supposes the name is a username and bans this guy for specified time or 12 hours. To see nicknames and usernames of recently disconnected people use the !rt command.

  • !ban himdood – if there is himdood connected, he is banned for 12 hours. If no such player is found online, /ban 0 himdood command is issued banning that username for 12 hours.
  • !ban 33 himdood – if there is himdood connected, he is banned for 33 days. If such player is not found online, there is a 33-day ban imposed on username himdood whether it exists or not.

!unban name

This command of limads level 3 unbans the passed username and allows to correct some wrong decisions. Naturally the person being unbanned is not currently connected, so nicknames do not work here. Use only registered usernames as parameters.

  • !unban himdood – unbans himdood username whether it exists (and was banned) or not.

Alternative versions: !ub.

!sini [version]

This is a server initialization command. It resets the current server to a required state by sending server control commands from prepared external files. It could be used for switching the server into some special state for an event and then back to default setup.

You define the LFS commands to be sent to the current server when no version is specified in a file named Airio.set.?.txt where ? is the internal server number (as defined by CON file and used also by SRV file). You may put inside the file any server commands recognized by LFS – they all start by / and you should really read LFS docs if you're not familiar with them.

Optionally you may specify version number and in that case contents of file Airio.set.?.!.txt is sent. Here ? is again server number and ! is the version number. You may have as many versions of one server setup as you wish, but one default and 2 or 3 alternate are usually enough. You may have practice setup, racing setup, demo series setup and S2 series setup prepared and easily switch between them.

  • !sini – if issued on server 2 it reads file Airio.set.2.txt and sends as commands all lines starting with /.
  • !sini 2 – if issued on server 4 it reads file Airio.set.4.2.txt and again sends the commands stored there. If no such file exists an error is reported.

Alternative versions: !si.

!cini

This command reinitializes Airio external communications. Currently it has only one function, specifically to reconnect to a defined IRC server/chat group if this link times out or is broken for some other reason. IRC connection allows full remote control over Airio and LFS servers and is very handy if admins use IRC chat for talking about the simulator and other issues. Airio will be there with them, supporting special commands as well as direct communication with users – they see host talking to them. We'll talk more about IRC connection later.

Alternative versions: !ci.

!uld

When Airio sees this command it zips and uploads current system log/personal best/configuration data to a FTP server. This procedure is automatically run on every day change (around midnight on the server) and it compresses the mentioned files for back-up purposes and sends the created file to a defined FTP server so that every admin can access the data without admin credentials necessary for direct access to Airio folder. Note that because of their sensitivity the CON files (containing server passwords) are not zipped and uploaded.

Automatic back-up files have date in their name. The !uld commands shows where the data will be stored (optionally incl. the necessary login info) and file created in this way includes hour and time in its name as well. You may wait up to a full minute for the output file, because this request is put into a separate timer thread as not to block other events.

If an remote admin sees some strange event on a server managed by Airio, he may issue the command and wait on the FTP server. Once the ZIP file arrives, he may check system log to see what happened and why. System log stores all players' messages as well as many other server events, Airio actions and their causes. This whole back-up/upload system also ensures it is always possible to return to STA files not older than 24 hours in case the data are somehow damaged (e.g. by killing the Airio process while writing the files to disk).

Alternative versions: !upload, !upl.

!dld

This command works in the opposite way, downloading files from that same FTP server where the !uld command stored them. Any admin thus has the possibility to update e.g. the curse file on the external FTP server, call !dld in Airio and a minute or so later (after download is confirmed) call !rld. With direct access to Airio folder all this is not necessary, but there may be LFS servers that are most of the time inaccessible via FTP and even if FTP service is occasionally running, most admins don't have access there.

The command downloads only supported TXT files from the specified FTP server, not some ZIP files. For example let's take a look at how permanent limad update could be done without access to Airio folder: 1) Use !uld to get current configuration files version to the FTP server. 2) Wait a while for successful upload confirmation and then extract the appropriate file from the ZIP. In our case we need Airio.cfg.nc.txt file. 3) Open the file, add new Limad?=name item, save and close the file. Upload it back to FTP server, if you edited it locally. 4) In Airio type !dld and wait a while. 5) When successful download is confirmed, type !rld to update the configuration.

Note that it is not possible to return to some older stats in this fashion. For that it is currently necessary to turn off Airio, replace the STA files directly in Airio folder and then start Airio again. Only CFG, SRV, MSG, TXT and SET files can be updated in this fashion.

Alternative versions: !download, !dnl.

Configuration Options

FULL version of Airio supports additional configuration options that are ignored in the FREE version. You will find those grouped at the end of CFG and SRV/FIL files. We will now take a look at the background principles.

Server Count

While the FREE version of Airio supports "only" four concurrent connections to LFS servers, in FULL version this number of servers is not limited. Instead, it is a configurable parameter found in Airio.cfg.txt file that may be updated live, with !rld command. The question is how many servers may one Airio instance manage at the same time from hardware perspective. There have not been any heavy load tests conducted and I may only estimate some values and conditions from personal experiences.

The main factor would not be how many servers are connected, but how many connections are active. Most data are generated by cars moving on tracks, all the other events are from info traffic volume perspective rather unimportant. Airio manages 50 connections with ease. Can it manage 100 or 200? I'm pretty sure of that. What about 500 connections? Well, that would be something wouldn't it?

Let me think aloud: Processor power is not a big factor, unless many people call !pb at the same time. Partial concern may be processing resources, especially threads management. In FULL version each connection to server represents up to 4 new threads (connection itself, listening to TCP, listening to UDP, sending with delay). There are other common threads running, such as one for processing Web requests and several for ICQ communication. Physical memory requirements do not grow dramatically with number of servers and connections. Sure, each server and connection has lots of "personal" data to keep, but they are still in units of KB at most. My very wild guess: 500 connections would take 50 to 100 MB of system memory, not much by today's standards. With so many people and logging active there'll be substantial number of disk writes. The system log file of such monstrous site would represent 200 to 400 MB of textual data every day. If the data writing is spread relatively evenly over the period, it is clear no modern hard disk will have troubles keeping the pace.

Communication Concerns

It seems to me the most limiting factor is communication capabilities. LFS server is not sending that much data, but they come in large number of small quantities. 500 cars on tracks would represent about 600 to 1000 packets of car data (each containing 8 cars) to receive and process every second. I think throughput is not a problem, especially if the servers are connected locally, but the sheer number of packets may be another matter. You can sometimes see TCP warnings and errors reported by servers and connections lost because of such troubles. I think similar problems would be more frequent once that many players have to be managed. Lagging would be more common with all the bad effects it has.

The TCP communication with servers is handled by internal Aegio library. When writing the code I tried to use the simplest, fastest, and most reliable methods for TCP/UDP packets handling. The library itself implements a buffer that may be optionally delaying sending messages to LFS server. LFS developers suggested such a mechanism be used in case numerous packets are sent, so it is implemented. Airio is sending many messages, instructions to LFS server(s). Calling option screen by one player means sending over 70 requests for buttons. One global message (such as spectate reason) in fact represents probably dozen messages, because each player may get its own language version (but also may choose to ignore such message). It seems the communication works very reliably even on heavily loaded servers, but you will always see some lost connections.

Limad Levels

FULL version of Airio uses two additional limad levels numbered 1 and 3. Level 3 is the highest and people of this class should have almost the same privileges as admins. By default they can ban and unban anyone by username and they have some race management commands at their disposal. Level 1 is somewhere between 0 (team members) and 2 (mid-level limads). Limads 1 cannot under default settings ban other people even if they are connected and kicking is the utmost beating you can get from them. Still, they are to some extent protected by Airio. It is possible to define what actions may limads of each level take and what protection they get. These things are inside Airio.cfg.lc.txt file and allow you to fine-tune limad levels.

Limads Voting

If there is voting to kick/ban people by (majority of) other racers allowed on a server, Airio may manage it to some extent. It is possible to turn on priority votes. When a voting starts or runs and a limad (or admin) with sufficient rights votes by pressing 1 (or starts the vote), the vote is immediately completed, the player is kicked or banned by a priority vote. Note that when ban by priority is used, the player is kicked first to cancel the running vote, and then banned. It is also possible to protect limads and kick everyone voting against them. The last voting management option is to turn on voting by ranks in which case people with low rank cannot start vote against higher-ranked people (the rank difference may be changed). All these features should make people more aware of the voting, stop them from blindly pressing 1 on every running vote as some happily do.

Server Commands

InSim data do not contain (and Airio thus cannot process) certain interesting and usable data that appear only in LFS server log files. FULL version of Airio may "listen" to changes in server log files and take additional data from there. With current settings is copies into its system log all server commands (staring with /) so that you may see in Airio log e.g. when someone was banned using direct /ban command and for how long he was banned. Unfortunately such commands issued outside the server console or by using buttons are not stored anywhere, not even in the server log. I feel the server log should include information about who banned/kicked whom and when (looks like a feature request towards LFS developers).

One more information is being captured in this way, the incoming connection IP address. Again, it is stored in Airio system log, but currently it is not used for anything. If you come up with an idea how to turn it into something usable and reasonable, let me know. To mind comes banning by IP addresses and not only by usernames, because they can be changed relatively easily in demo. But the same is true for some people's IP addresses.

Racing Options

The following extended options apply to races and may be used to give players unique experience and unusual options.

Car Reset

FULL version configuration allows to define penalties for car reset used in race. This feature may well be used in mid-length or endurance races where you may disallow pitting but allow one car reset (second car reset means spectating). You can then define two penalties – one given immediately after reset and the optional second penalty given when the first penalty is completed and the player enters last lap of the race. Generally, car reset is not allowed on most racing servers, but limiting possible resets in race and giving penalties for that may make this neglected function again usable.

Be aware that reasonable penalties must be given – assigning e.g. drive-through as the 2nd penalty would always result in the player disqualification. Good combination may be SG+30 or just DT, where SG is stop-and-go and DT is drive-through. The code assigning penalties tries to be intelligent, converting SG into 45 seconds and DT into 30 seconds if the player uses car reset in last lap or is on a track without pit boxes.

This function will be extended in the future with setting to define number of allowed car resets in one race and maybe more penalties to be given in a reasonable sequence. If you see some usage of car reset and penalties for your servers but that usage is not supported yet, send me please your ideas, because they can help to create a more general framework of the function.

Race Start Ordering

Airio supports custom race start ordering, but this feature is still under development or rather in consolidating stage. It does not allow any other settings now except to be turned on or off. If turned on it reverses the order of players on points from last finished race and arranges the remaining players by their best session lap times. It means newly connected people start from the back, once they do a reasonable lap time they move to the middle of the field on start and when they get some points in a race they are somewhere in the front.

There may be many parameters and their combinations used for custom ordering. The problem is to devise some understandable and flexible configuration items and processing routines, because you may wish to order whole grid by one parameter, you may also wish to use one parameter for first part of the grid and another for the remaining cars (just like in the currently implemented scheme). You may wish to define how that parameter is used and the parameter itself may be many things – place, points, lap time but also added mass or intake restriction. You may also wish to reverse certain number of positions and come up with many other start ordering principles. Again, if you have something specific on mind, let me know and I'll try to extend the code and options accordingly.

Additional Points

You may define additional points to be given to players for other actions than racing. At present points may be given for improvements in LFSW statistics, for doing laps on server in case there are just a few people on track, and also for some stunt actions after race. Example of stunt action is best height reached by crashing your car (especially open wheelers) in a certain manner. It may be fun to try to get as high as possible and people will also learn better how their cars behave what actions they really should avoid during race.

Multi-Join Timer

This is a feature usable in demo configurations allowing more than the standard 12 cars to race. I'm afraid I may be pushing developers' patience a bit too much here and if I hear any objection from them, this timer will disappear. Anyway, the basic principle is rather simple: Once the server sees 12 cars in demo race it does not allow more people to join (reports "Race full") even though they may be connected to server. But when two or more people try to join race at approximately the same moment, the server will let them all join and there may be race with 13 or even 14 cars on track in demo.

This sometimes happens by a pure chance, but FULL version of Airio implements a special timer to coordinate the joining. When there are 12 cars in demo race and one leaves the race, the timer kicks in, counting down to everyone spectating the moment of multiple joining. While counting down everyone trying to join is spectated and required to wait for the right moment. When there is more than 12 cars in race Airio tries to keep that state and does not spectate people for idling and similar things. Instead it sends them to pitlane, so that they do not present obstacles but at the same time remain in race.

Some people would call this timer a hack. I do not think it is a hack. Over-limit races happen by itself on full servers, this timer just helps a bit to reach such a state. I tend to call this feature an exploit. It is using the LFS principles in their full scope, just like the Airio LFSW stats download uses the free service rules there to maximum extent allowed.

External Communication

FREE version of Airio may use additional external communication. It may be sending Web requests to the LFSW site, getting in response WR or PB tables. It may also be sending local Airio usage statistics, getting global statistics in response. FULL version or Airio adds more communication channels like FTP and IRC.

Live Stats

If you can create and define receiving script, Airio may send you each minute "live stats", current server(s) state. It is done using a Web request in this form:

http://www.server.eu/script.php?C1=10&P1=8&L1=1&K1=2&B1=0&T1=001&C2=3&P2=3&L2=0&K2=1&B2=0&T2=011

Here C represents number of connections, P is number of players (on track), L is number of limads and admins connected, K is number of kicks for the last minute, B is number of bans, and T is track number. These data are sent for each running server as denoted by numbers following the just described info. AirAttack uses a PHP script created by JoRuss to process the data, summarize them into a database and provide nice graphs for each day showing selectable parameters and averaging periods. It is very easy then to see general server load distribution or overnight activity. The script is not part of Airio, but you may ask about its availability.

Web Stats

If you need to display stats on your Web pages, you'll have to create a script picking up data from Airio STA files, sorting them and displaying the results. Even in FREE version it is possible to set up automatic export to LFS Lapper's PB.txt file and use the existing scripts to process that file. FULL version adds the possibility to zip the STA files and send them every hour to a FTP server where your script may process them. Anyone can then browse to your pages, call the script and see e.g. !sb listings (or anything else you want to support). Just like in previous case such a PHP script was created by JoRuss. It is not part of Airio, but you may always ask about its availability.

FTP Upload and Download

FTP communication may be used for backing-up statistics (upload of a ZIP file to an external server) and for updating Airio configuration without direct access to its folder (download of TXT files from an external server). If a FTP server is defined the ZIP file with configs and stats created automatically each server midnight or on direct request is automatically uploaded there. For more information about this type of communication and practical usage example see the !uld and !dld commands above.

File compression into ZIP file format is handled by external library, SharpZipLib for .NET. This library is part of the FULL release, no special installation is necessary.

IRC Communication

If you are an IRC (Internet Relay Chat) user, you'll know it is an old online communication service supporting private communication and chat groups similar to e.g. MSN. FULL version of Airio includes SmartIrc4Net external library through which it may connect into an IRC chat group and you may send to this "user" special commands showing e.g. server(s) state. You may also connect to any of your LFS servers and take up the role of host there. Sending a message to Airio in IRC would appear as the host talking in LFS and you'll see the responses as well. Being host allows you to execute any Airio (staring with !) on LFS (staring with /) command through IRC channel, but only if you have Operator status in the IRC chat group.

To use this nice option you first need to define in Airio.cfg.txt file the IRC server, port and group this instance of Airio should connect to. Again, if you need to update these settings, just edit the CFG file, save it and type !rld. If for some reason the IRC link is broken, recreate it by typing !cini. Depending on IRC server used you may need to go through additional steps like registering Airio name, which will have the form of Airio_?? where ?? is your server group short identification, found also in that CFG file.

Once Airio connects to the desired IRC chat group, you may open private communication window and type !ihelp or just !i. This will give you a list of supported IRC commands. Lets look quickly at the commands available for security reasons only to channel operators:

  • !conn [server] – opens channel to the specified server. You will then see in private Airio window all server communication and what you sent will be executed at the server – your messages would be the host talking, your Airio and LFS commands would execute just like you were on the server console. If no server is specified in the command or the channel is already opened, it is closed. (Alternative version: !cn)
  • !list – lists currently opened channels, so that you may see who of the other chat group people is listening to what channel. (Alternative version: !ls)
  • !resp [text] – confirms help request received. When someone on any server uses the !admin command or talks directly to host, you'll see a special message with the request in the IRC main chat window. If there are more admins chatting, the one who is willing to take care of the problem may type !resp with optional text appended. The text will appear as host talking on the server and other admins will see the matter is already being dealt with. (Alternative version: !rs)

The following IRC Airio commands do not pose security risks and as such they may be used by any member of the chat group.

  • !status – shows summarized status of active servers. This command is good for quick check of servers, because you'll see which of them are running and in what state they are. Output of the command shows server number, server name, loaded track, number of connections, players, and limads plus admins. It also shows server state as a bunch of capital letters with the following meaning: R = race, P = practice, Q = qualification running. One of the previous is always displayed, then may follow other letters: Q = qualifying allowed, V = voting allowed, R = car reset allowed, S = users may select tracks, M = mid-race join allowed, P = must pit in race, C = selected Airio checks are running, L = Airio time lock is active. (Alternative version: !ss)
  • !links – shows Remote links to active servers. If your server(s) use the Remote LFSW tool functionality, this command will give you links for direct opening of the Remote windows. It may be useful when responding to some request and you need to see what is currently happening at the server. (Alternative version: !ln)

IRC server owners do not like their service to be used for spamming. Airio can generate quite some amount of output lines and that may quickly lead to its ban from the IRC server. To prevent this situation Airio is grouping output lines and sending them to IRC in reasonable intervals. This means the messages are longer but there is much less of them. Also the responses are formatted in such a fashion it is clear what lines represent Airio output, but I'm not sure all IRC clients support the formatting characters used (end of line and tabs).

Final note: It is possible but really not advised to use IRC for watching the system log output (by the !log command). When I last tried it on DalNet IRC network our instance of Airio was banned within 5 minutes despite the output lines grouping. Fortunately for us it was a short ban and we soon had our favourite tool at hand again.

Closing Notes

You have reached the end of Airio Full Version Manual. Again, please contact me through LFS Forum if you spot some errors, factual or syntactic, or have some ideas for improvements or new features. It is probable most of new features will appear only in the FULL version because I consider the FREE part as very much complete. In case you are interested in using this FULL Airio version (maybe with some new/finalized things like different custom start ordering) contact me through LFS Forum and I'm sure we can make some arrangement.

© EQ Worry, 2010