The online racing simulator
AIRIO - Advanced LFS Tracker
(2361 posts, started )
AIRIO - Advanced LFS Tracker
Hello, racers and server administrators!

After about 9 months of intense development, debugging and polishing on the AirAttack servers I believe the time has come to offer you a completely new LFS tracker – Airio. It is an InSim application designed to connect to a dedicated LFS server and provide extensive services to both racers and administrators.

First, I'd like to present here some (really, just some) points that make Airio unique for users and admins:

What may racers like:
  • Many settings, all available through graphical interface (selections are made by clicking on buttons, see the attached picture)
  • Selectable user language (one click changes all user messages)
  • Complete personal customization (what information is shown and in what form)
  • Detailed timing info on all split points (including sector times and comparisons with selectable base)
  • Extensive personal stats (theoretical best, best race time, points gained)
  • Protection from other racers (using many configurable filters such as bad language or wrong-way driving)
  • Easy access to LFSW stats (own and other connected peoples', if properly configured)
  • Automatic restarts, track rotations, vote management, racing for set number of minutes
  • About 30 user commands in many variations (showing all kinds of race/server stats, allowing customization)
What will interest administrators:
  • One instance of Airio may connect to several LFS servers at the same time (to save resources and to ease the site management)
  • All servers connected to one Airio instance use common stats (no synchronization necessary)
  • It is possible to define people with limited admin rights for partial server management (kicking, restarting; altogether approx. 10 additional commands)
  • Many advanced filters are available (lagging checks, locking by LFSW/server lap time, limiting car setup options such as tyres or automatic gears)
  • Everything is configurable using extensive options in external text files (more than 100 items to tweak)
  • All settings and options can be updated "live", while Airio is running (no reconnect/restart is necessary)
  • LFS Lapper PB file import and export (on demand or periodical e.g. for Web stats)
  • All actions and events are saved into detailed system log (allowing to see later what happened and why)
  • It offers several options to communicate with users (text shown on connect, periodically displayed messages, server rules/notes)
  • About 15 admin commands are available (allowing manipulations with stats, showing servers' state, joining and parting LFS servers)
  • Requires .NET 2.0, works in Windows and also under Linux with Mono
The above are just some of the possibilities and options. To read a bit more and to see the Airio settings screen and some output data browse to Airio Features Overview. To see Airio in action visit " #1" or " #2" demo servers. You may see Airio managing S2 servers at "[AA] AirAttack Rally" and "[AA] AirAttack Racing". Note that all four above mentioned servers (plus two external) are controlled by one running Airio instance with all the advantages such arrangement offers.

Airio is a complex system; still it can start to work for you (and your users) after updating just one text file – entering data necessary to connect to a LFS server. To fully grasp all options and the meaning of some not readily understandable items read the Airio User Manual and the Airio Admin Manual. Be warned though, these documents are rather lengthy, simply because the application requires it. On Airio Home Page you'll find other sections of interest, such as FAQ or Full Version Manual.

Well, if you have a feeling this sounds interesting, just Download Airio Now (optionally with language pack), set up your connection to a dedicated LFS server and run it. You'll get a powerful tool for yourself and you'll also offer racers fully customizable racing environment with lots of data or none at all, just as anyone wishes and likes. You may also create very strict or lenient racing environment, just as you wish and desire.

There have been people contacting me earlier and asking where they can get the system for their own servers. They usually said it is currently the best tracking system running anywhere. While I will not comment on that statement, I’d like to add that they have seen only the user part, but most of the innovative things are in fact in the administration part, hidden from regular racers.

Happy New LFS/Airio Year to all of you!

EDIT1: Here is the complete changelog and todo list.

EDIT2: Links updated, but some example server names are still obsolete.
Attached images
Looks very interesting...

Cant wait for it
Looks great but I have a few questions

1. I want to show Race best split times, but not have the speed keep coming up. How do I do this?

2. Is it possible to only allow restricted cars, i.e. 32% intake restriction.

If these small issues can be solved I think this could be a great alternative to lapper
Quote from jasonmatthews :Looks great but I have a few questions
1. I want to show Race best split times, but not have the speed keep coming up. How do I do this?
2. Is it possible to only allow restricted cars, i.e. 32% intake restriction.
If these small issues can be solved I think this could be a great alternative to lapper

Right, thanks for your response! Now about the questions:

1) There are about 10 categories of messages you can turn on/off. One of them is "race best values" (split times, sector times, speed). Unfortunately it is not (currently) possible to see just some race best values. You can choose to see all three above mentioned or none. While separation by sub-type may be possible, it would be too complicated to add one (or two) more buttons into options screen. An alternative might be to offer textual command, one or two more options in the !show command...

2) Creating requirements by intake restriction or added mass is certainly possible and nothing complicated by itself. More problematic is creating some reasonable/understandable configuration setting somewhere. What should this check be dependent upon? Track? Car type? Both? That could be possible, it would be a bit of a new code for the CFG.TC file...

Well, sorry about the not-so-positive answers. :-) I never needed these options before, but if they are important for you...
1. Just realised that because I was testing it locally, they were the only stats available to me. If I had run it on a dedi, I would probably just turn that option off anyway But I would say that the top speed stat is pretty useless (IMO) anyway to be displayed in the races. May be useful after a race, just not whilst doing it...

2. Yes, this is especially useful for GT2 classes. I think you would only need to be able to configure the cars mass and intake restriction. I don't think you would need to configure it for each track, as the restrictions are the same no matter. And of course, the option in-game to turn off the restrictions would be cool.

I have to say though mate, this looks like a great app, keep it up

Edit: A command like !rest FZR 20 32 would work. I.E. Restrict FZR 20 mass and 32 intake
Then to turn off just !rest FZR 0 0

Then if anyone tried to join it would come up a RCM saying FZR Restriction of 20kg Mass and 32% intake restriction required, then spectate them.
1a) I'm not sure what you mean by the first sentence. :-) But never mind. You should know Airio is designed to be used on dedicated server. Running it locally, when you are connection 0, would not function quite OK. Most things will work, but not all, especially if you allow other people to connect. That is because connection 0 is handled in many special ways.

1b) There seems to me to be a very simple way to disable race best speed messages (and maybe also race best sector messages) for everyone. I can create one more server setting. The downside is it would affect everyone, even people interested in that number. I'll think about other ways to give people yet mode detailed options...

2a) I'm already working on implementing "IntakeRestriction" and "AddedMass" parameters into track/car configuration file and creating new player join check(s). It will require some testing though to see it works the way it should.

2b) The proposed commands look good, but I'll have to think deeper how it should "cooperate" with point 2a, external/default configuration.

Anyway, thanks for bringing these points up! I'm sure there'll be other similar "absolutely necessarry things" that I never needed. :-) Also thanks for nice words...
Right, the newest available Airio download contains definable intake and mass restrictions. You can find all necessary files here as version 1.9.2. Note that this version does not use LFSLib anymore, it has its own packets handling code inside (including a new parameter setting allowed rate of messages sent to server intended to limit TCP errors).

The intake and mass restrictions are defined in file, you'll find descriptions and examples inside. You may define the restrictions for any track, car, or combination of both. These are checked when player joins race with spectating and appropriate messages shown in case his car does not comply to requirements.

There are no direct commands to set the restrictions though, because these would be outside the current applied principles and complicate matters. If you need to reconfigure the setings, edit file, save it and reload new settings by typing !rld.

A new filter called CheckHandicaps was created and only if set to true the handicap checks will really run. You can turn on/off the filter on individual servers in SRV file(s) or by issuing !cfg CheckHandicaps=false command. This makes it easy to turn on/off restrictions without editing any files. Note that you can control all other filters in similar fashion.
Pretty impressive program and it´s to use right out of the box. I must agree with jasonmatthews: The topspeed msg. should be an option.
Right. While I consider this a really minute detail, whether top speed display should be configurable separately, I'm listening to your demands/ideas.

Now if you want to configure specifically the display of top speed, you certainly want an option to turn off best sector in race messages as well, or maybe best split messages, each one separately. You should know they are currently in one group of options (Best times), which you may turn on/off as a whole for yourself as you see fit.

Then we have good/great split and good/great sector messages available, also in one group (Good times). I guess there'll be someone interested in just good split times or only good sector times. All the other groups of selectable info cover several items each as well.

Problem is there's no space to fit all these extra options into settings screen, creating a new bunch of detailed settings buttons is not good. Currently I'm inclined to support such things only using text commands, specifically the !show command. So, in the end such details could/would be available, but not readily...

EDIT: A friend just reminded me there is in fact space for one more button in the options screen, behind the selection of kmph and mph. Ideal place for a button to switch on/off best speed in race messages. The option will be available in Airio 1.9.3, of course saved into profile...
Fantastic mate, great also to see you put in my request so quick. After seeing how much your program already did, that extra option really helps, thanks again
#11 - STF
Good program, i really really like it.. and just got this idea:

Would it be possible to be used for multi class racing?

Server side, make it so you can define 2 classes in the config file (i guess there`s no point for more.. or for a interface).
Client side, a driver would set his license plate number to define the class he`s running in.. (eg. "GT1"/2).
Read plate number, check his intake restrictions from cfg file, etc..

I don`t know if this is a feasible idea, but maybe some would want to use it for multiclass racing. It`s not really the pick-up server option type i guess. How does it sound?
Version 1.9.3 is available for download. It incorporates Race speed button allowing every player to display or hide best speed in race messages. Default state is ON, but the setting is part of profile, saved and reapplied on next connect.

About the multiclass options: You mean to create a situation when e.g. 2 FXR cars would be in different classes in one race, distinguished by restrictions applied? Well, doing that using numberplate text may be (somehow) possible but I'm not sure what would be the point. You would then need a mechanism to create two separate result tables, one for each class (or at least give people separate points). I can already think of some tricks how to make that possible, but it does not look like an easy matter. Especially since I do not see good enough how would such races be conducted, results processed.
Quote from EQ Worry :

EDIT: A friend just reminded me there is in fact space for one more button in the options screen, behind the selection of kmph and mph. Ideal place for a button to switch on/off best speed in race messages. The option will be available in Airio 1.9.3, of course saved into profile...

I know nothing about all this coding etc, so forgive me , but is there any reason why a 2nd (3rd, 4th etc) page of options couldnt be used for the GUI - for the future adding of options/switches etc?

I believe there is a limit to the number of buttons on screen at once or something, but just a thought for the future perhaps..
Quote from mkinnov8 :is there any reason why a 2nd (3rd, 4th etc) page of options couldnt be used for the GUI - for the future adding of options/switches etc? I believe there is a limit to the number of buttons on screen at once or something, but just a thought for the future perhaps..

In theory there may be up to 240 (or something like that) server buttons (such as Airio creates) displayed at once and there's nothing preventing you to have as much such complete sets as you want. The option screen currently contains approx 70 buttons, so if other buttons are needed they may be added there or to some 2nd screen, technical solution may always be found.

In practice there may be troubles with sending so many buttons, TCP errros, connections suddenly lost. Airio contains a buffer slowing down sending of all messages (incl. buttons), but it is hard to find a value optimal for everyone, some people may have problems displaying options and the more buttons there are the more people may be affected.

Also I'd like to keep the options reasonably understandable, it is best to limit them to one overview screen, I think. Still, I'm already thinking of some improvements/optimizations, such as combining kmph/mph into one switchable button and thus gaining space for one more button, perhaps allowing to turn on/off display of split/sector times...
Airio 1.9.4 adds the possibility to specify maximum allowed spin rate for any track/car combination. The setting is usable for automatically spectating crashed cars, just as maximum allowed speed filter. It is also possible to set a small delay to prevent incorrect spectatings in case the server does not see car parameters (speed, spinning rate) quite correctly for a short time due to lags. Also blue flag warnings are now handled in a bit different manner...
Airio 1.9.5 has much better LFS Lapper's PB.txt file import recognizing several date/time formats with ability to ignore incomplete and nonsense data (which unfortunately may be stored there - missing car types, sector times close to zero).

A note about numbering. 1.9.x versions are in essence 2.x beta compiles. Once 2.x is out as a system incorporating the most common additional demands (such as recently added intake/mass restrictions or spinning detection), I'll be keeping change log.
Well Mr. EQ Worry, you have to know that you made the best LFS Tracker. Congrats to you, and I hope that Airio will become the most popular LFS Tracker.

From a proud Airio user
Thanks for nice words, Sanchez!

Airio 1.9.6 contains other options some people may have been missing so far. It is now possible do define web (PHP) script(s) to run on each race start and also script(s) run in set intervals. Also added is an option to define messages sent to chat area on each race start. Three large buttons may now be used for showing some basic info to all newly connected people (with OK button) and for 5 seconds on each race start.

Take care!
Awesome Airio
Hello all.
Ive been using the Airio tracker on my team's servers for months now. I gotta say it IS the best tracker available. Tons of options, relatively easy to configure, VERY stable, and extremely customizable per connected user. It will no doubt become the best tracker system in LFS. Thanks EQ! Then only thing I can think of that it is missing as of yet is a drift scoring system like Lapper has. But other than that, its great. You also need to be careful if you are running FO8s at Kyoto Ring. Airio has a system to kick people who make "impossible times" to help keep cheaters out. Well, in the F08 at kyoto ring bump drafting can knock seconds off of your time and Airio doesnt like it. But this is configurable per track/car. So you can set what is seen as "an impossible time/speed". Thanks again, EQ! w00t!
Check out (AW)BumpDraftRacing and (AW)AsphaltWarriorsDEMO to see Airio in full action!
Thanks, Amped, for very nice words. All praise so far was rewarded with a new/updated feature so here it goes again:

New version

Airio 1.9.7 improves blue flag handling. Extended info given to flagged player shows him how far in meters and seconds the obstructed car is behind, allowing to see the tendency. Admins may specify the time gap when this info starts to be shown to flagged players and also intervals at which it is shown. The time gap calculation uses current car locations (actual distance) and speed and it is therefore highly dynamic.

Concerned server config items:
ShowBlue - turns on/off the infos
DelayBlue - seconds to delay repeating info
DistanceBlue - Hundreths (!) of a second of the gap when infos should be shown

As always, all these settings are updateable live with Airio running and people racing using the !rld command after SRV file update (or using the !cfg command for temporary change).

Oval racing

Very good note about oval racing, I did not realize that on oval people would do much better than WR times. To solve this a small update of two values in SRV file is necessary:


These settings say that sector/split time of 95 percent of WR is still considered as possible, players with that time are not cheaters. Note that this update for oval races is necessary even if time filter is not running, or you may see "Lap data were not saved" messages...


About driftings points. Hm. I never intended to support drifting scores, Airio was to be a racing system. Still I guess many people would welcome such stats, optionally turned off and with all the bells and whistles other features have. I may add something later, but it will require time to incorporate it properly into all stats.
Great to see the public availability of this awesome tool has finally happend. Nice work EQ.
Thanks, Boost, it took some time.

Airio 1.9.8 adds the possibility to measure acceleration and show time and distance needed to reach server-preset speed (in kmph or mph) from full stop. Anyone can turn off this info for himself using Own Data switch. This measurement uses data received from the server each 100 ms and that is the maximum precision it can have...
Ah, so nice to hear again from you, Silver! We all hope to see you "in person" soon. It has been some time since you last saw Airio and I think you will not recognize it, but at the same time I hope you'll still like it. For now:


Airio 1.9.9 incorporates basic drifting scores, all properly integrated into personal/server stats. The calculation uses for now the principle seen in other apps, specifically accumulated angle*speed*speed value with some coeficients applied to move the scores down into reasonable single (or double) digits for a single drift (do not expect Airio to give you thousands of points at once for anything).

The following text comes from Airio.srv.txt file storing server config data which may be overwritten on individual specific servers:

# Should drifting be watched and processed - boolean
# If false, no drifting data will be gathered, no scores shown/stored.
# If you do not intend to support drifting, you'll save processor
# time by using 'false'.

# Minimum speed in kmph necessary during the whole drift - integer

# Minimum angle of the drift - integer
# Maximum angle of the drift - integer
# Only drifts ending in car angle going below minimum angle are
# considered as scoring drifts. No scores are given for drifts ending
# in low speed (that is just sliding) or car angle over maximum angle
# (that is only spinning). Drifts must end properly.

# Minimum time of drifting in tenths (!) of a second - integer
# A value of 20 means car must comply with drifting conditions above
# for at least 2 seconds and end the drift properly.


I'm not a drifter, I just applied principles that seemed reasonable to me. This whole scoring system is only a beginning, changing the formula or adding more conditions in the future is highly probable. If you can think (or know) of some other factors that should be considered, let me know. First suggestions are stability of drift speed and maybe also stability of car angular velocity during the drift. Also note drifting support is by default turned off.
#24 - arco
Great addon. Currently testing it on our private team server.
Is it possible to implement a !calc command, so one can use it for simple calculating, like finding needed fuel load for a certain number of laps?
Quote from arco :Is it possible to implement a !calc command, so one can use it for simple calculating, like finding needed fuel load for a certain number of laps?

I always say that anything is possible. What you mean is you issue e.g. !calc 15 and it will return fuel estimate valid for current track, your current car and 15 laps?

Problem is track/car fuel consumption is not reported by InSim (I think) which means there would have to be an external table with some numbers. It should be in one of the config files (probably Then new cars/tracks may appear (lets hope VWS will come soon) and this item will need updating.

Maybe even calculating estimated distance would be useful, just as race time. Well, come to think of it, even reverse calculations could be useful, like entering time and getting number of laps and fuel. I'll think about it...

AIRIO - Advanced LFS Tracker
(2361 posts, started )