Racer v0.8.33 released

Ruud

RACER Developer
Things have been very busy, lots of things going on at the edges of Racer (not really core Racer), but here's an update finally. :)

Get it at http://www.racer.nl/download/racer0.8.33.zip (75Mb)

Known issues:
- The current replay should be re-recorded
- AI training is very alpha, it currently s*cks

Changes:
- Added 'gfx.show_traffic_lines' option to visualize track grid
- Added 'show traffic' and 'hide traffic' console commands
- Traffic improved to be usable
- Added 'gfx.bestline.source' which determines whether the bestline is derived from AI or the ghostlap
- Added log.buffer_time to be able to change the log buffer size
- RTD logging improved
- DXT3 dds format was flipped incorrectly (bad detection of DXT3 format)
- dbg_controls.throttle/brakes/clutch/steer now work again (if dbg_controls.update=0)
- Multiview camera were slightly off wrt eye position
- Added 'show log' and 'hide log' console commands to show live log details
- Cg dll's updated to v3.0.16
- Added log.database.dir for eternal logging of RTD telemetry files (customer)
- Added ghost.time_scale for slow-motion ghost laps (mostly for testing use)
- Changes in thread creation (handle leak fix)
- Added data/images/fadeout.tga where Racer fades to in menus and other situations
- Added 'show ailines' (and 'hide') to visualize AI lines
- Pressing Ctrl-F6 to drive an AI lap now accepts AI cars; they will try to train themselves.
Use 'ai learn save' to save the trained lap.
Let it run for quite a number of laps. See http://www.racer.nl/tutorial/newtrack.htm#default_ai
- Added 'ai reset' console command to reset AI velocities to 50 km/h (for AI training purposes)
- Added 'ai scale <v>' console command to scale AI velocities
- Experimental friction circle method added; #6. Is like #3, only without clamping max_slip_len (dbg_car.friction_circle_method). Doesn't seem too viable though.
- Per-wheel tweaking of 'max_slip_len'; an addition to the tire model to constrict large slip lookups
See http://www.racer.nl/reference/wheels.htm#combinedforces
 
Hehe.

I must admit I didn't really get it. Is a pickline something in trackEd?

I'm just distributing cones in 3DS Max with flags etc in the properties dialog box, and exporting right from there. It makes distributing objects really easy... spline a load of paths, then distribute clone a cone along it :D

Dave
 
Lol...

pickline.jpg
 
Thx guys, it's my pleasure ! :redface:

Yes sure, should be easy as butter, just swapping the building textures (packed now => 4096x4096 px => 16 buildings in a 4x4 grid i.e.) & you should be OK. Now, it's getting tricky, because I want more & you need to implement conditional events such as, if the scope or geometry area is bigger than a certain value, choose another a grid of building textures which fits better the area & avoids some 'unwanted' texture stretching. Hopefully, there's a console which debugs all variables/attributes you set.

Also, I'm little concerned with detailing the whole. Since I'm projecting to distribute literally thousands of houses (20.000 - 40.000) + other objects (x trees, lamps, ads etc.) & I also want some detail where it needs to be (visible from car/track cams), I was thinking, creating 'real' facades, the main issue here, is the polycount, which drastically goes up...so maybe for smaller maps, or only on the street side.
 
Here's the actual issues I'm facing, in the middle, the one poly/quad whose area is too small, so what shall I do ? just tell the script to swap to another grid of a tilable 'concrete' facade texture with no windows...that will probably look somewhat strange !

Also, look how nicely the texels (Texture Pixels) ratio are preserved & randomly distributed & correctly UV planar-projected across the facades.

There's another issue, the x trees are taking a lot of space on the street sidewalks, my idea was to animate the streets with skeletons & the problem with collision proxy meshes isn't resolved yet. I could enlarge those or modify slightly the trees bottom polies, so that a skeleton won't collide against the x tree polies when walking/looping thru the whole block :confused: or just loop them in between 2 trees (which will be done manually with the 'pickline', lol)

Lots of things to consider the way I want it...


geometryarea01.jpg
 
No flags on the trees, then draw a 2d plane with a blank shader to exhibit the hit 'surface' for the trunk...

In theory you could generate the collide mesh and then remove the objects from geometry.ini, BUT, next time a collide mesh is generate it'll need the geometry.ini entries changing back to on for them. Bit messy really.

Making the tree model more complex is a bad idea if you want to use the nice tree shader we have now, which works only on a quad effectively.

Or you could be smart and put little ring fences or something around the trees, anything that will add appealing visual detail and so not be a waste, but can act as the collide object to stop you hitting the tree trunk!


As for that weird polygon with squished texture, I guess the tool you are using has it's limits. Why not extrude it inwards and have an alley, put a few bins down there near the front... details like that make the world have more depth and realism. I believe there is a need to go in and make sure detail changes to add character.
For now it will be ok for testing etc, so I'd leave it. But when you do change it, make it interesting. Go around the city and customise areas and just make them stand out and be a bit different.

Cheers

Dave
 
Anybody else seeing this in their qlog with this beta?

Code:
[racer/12084] QInfo: 'car.physics' only found in fallback file.

Ruud, Mitch - what is this parameter/tree supposed to contain? Just a leftover from the commercial version, or relevant for us from now on?
 
Boomer, can you summarize your probs ?

From testings, I didn't had that much difficulty implementing it, it's just a matter of scaling & orientating the original 3D meshes correctly.

1 advice : If you build a dynamic asymmetrical mesh which needs to be connected to the wheels, then you'll probably have a 3D distortion & you'll loose your original alignments, if meshes are closer to each other. So, best is always symmetrical pieces...
 
Bugs :

- minimap y value => misalignment if value tweaked => I use 10 just to get little offset from the top border edge on windowed mode.
- when AI is scripted with the new feature WP/Routes, the AI is like a stone when I collide it ?

Big thx to Ruud/Mitch, I can feel the love ! :)

P.S. : Would be great, if you release 1 rsx script per week with the most unused objects, something with files, rtex, even with complex arrays, for learning purposes.
 
From testings, I didn't had that much difficulty implementing it, it's just a matter of scaling & orientating the original 3D meshes correctly.
I've been keeping track of how I translate & rotate each object for the Aronde, it's reasonably straightforward to do the translation (find one of the endpoints, translate that to 0,0,0), the rotation is a bit more complicated. I'm writing them all down in a text file so if I ever need to export the object again, I have a record of how i moved it into place.

Not really helped by the fact that Blender and Racer use different coordinates - +X, +Y, +Z in Blender means +X, +Z, -Y in Racer, or so.
Within Blender, +X: left of car. +Y: back of car. +Z: top of car.
Within Racer, +X: left of car. +Y: top of car. +Z: front of car.
The exporter takes care of this, but it makes describing the orientation of objects more difficult. In Racer, they need to extend from (0,0,0) on the Y axis to (0,-1,0) if they have variable length. In Blender this means they go to (0,0,-1) instead. So the first part of rotation is getting the second endpoint you're using to be on the negative Z axis. Then you need to rotate it around the Z axis, so that it'll show up correctly in game. Rotation seems to happen around Blender's Y axis (Racer's Z axis), but whether that means the "top" of the object should face +X or -X is kinda tricky. Mostly I've just had to export a few times until I get the rotation right. Probably helps to use a test shader, so the object in question is nice and bright.

If you use scripted object movement/rotation, it's relatively straightforward - translate the object in the modeler so it rotates around 0,0,0. Then use scripted translation to move it back. That lets it keep its orientation.
 
QCM & Stereo,
I don't use scripted object movement/rotation as I don't have the programming skills to do it.

I don't have problems with wishbone suspensions only trailing link.

Here is an image of the problem with trailing link suspensions.
 

Attachments

  • susp2.7z
    40.2 KB · Views: 216
I know what's the problem, don't forget for dynamic meshes to always rotate them 90° (from memory => parallel to the X Racer axis & the same axis in you 3D app considering the Z is up) as racer.nl explains, also you might need to re-position your CoG at 0,0,0 WC (world coordinates) & freeze it.

I've re-check my recent F1 dynamic suspension project...it's a -90° rotation, so it should be parallel to the front/back of your Racer/3D car & not to the sides !

Hope it helps...
 
Cog is correct. There is a slight angle with the mounting points (2) of the trailing arm, about 80 deg. from the X car axis. Perhaps using one mounting point will work but I doubt it as the free mounting point could rotate wrong. I'll keep working on it.

Thanks for the comments!
 
Since i'm still using versio 0.8.6, this is the first time I try the new system "CG & no-CG".
I set the 0.8.33's racer.ini like the older one, but I immediately had some problems: the CG screen appears too brighter, the no-CG one too darker than 0.8.6.

From left to right: racer 0.8.6, racer 0.8.33 CG, racer 0.8.33 no-CG:



Here are my 086 e 0833 .inis:
Code:
;
; Racer settings - see www.racer.nl for documentation
;
app
{
  ; Allow double runs?
  run_twice=0
}
machine
{
  ; Type of role (M=master, L=right etc). Used for loading images (loading_<role>.jpg) if not empty
  role=
}
process
{
  ; Dualcore/multicore options (Windows only)
  ; CPU affinity mask; 0=all CPU's, 1=CPU 0, 2=CPU 1, 3=CPU0 & CPU1 etc.
  ; Setting this to use only 1 CPU may help on some fast machine that give (s)low framerates
  cpu_affinity_mask=0
}
ini
{
  ; Controls file (new format since v0.5.2 beta 9.4; in data/controls/)
  controls=default.ini
  controls=test_e2m.ini
  ; Possibly fall back on a local set of defining controls (useful for multiple different calibrations)
  ; Directory of the file is local on Windows
  controls_fallback=local.ini
  ; Locale file (languages); default is racer_english.txt
  locale=racer_english.txt
  ; Language ID (0=English, 1=French, 2=Dutch); for some internal texts
  locale_id=0
  ; Force feedback damping (for low speed)
  ff_damping=0.2
  ; Force feedback damping threshold (in m/s of tire velocity)
  ff_damping_threshold=0
  ; Let time-of-day automatically control lights?
  auto_lights=0
}
race
{
  ; Race settings
  ; Skip lights sequence at the start?
  quickstart=0
  ; Show 3..2..1 at (non-quick)start?
  show_start_numbers=0
  ; Show lights overlay texture at (non-quick)start?
  show_start_lights=1
  ; Track to drive
  track=Barcelona
  track=carlswood_nt
  ; Which car to drive
  car=bmw540i
  car=bug_lambomurcielago_pitch
  car=lambomurcielago
  ; Total #cars expected (if >1, waits before showing graphics)
  expected_cars=1
  ; Number of AI cars besides player car
  ai_cars=0
  ai_car=lambomurcielago
  ; Multiple different AI cars
  ai_car_multiple=
  ai
  {
    random_scenario=0
    performance=1.0 0.8 1.0 0.96 0.97 0.96 0.98 1.0 0.97 0.96
    performance=1.0 0.8 1.0 0.96 0.97 0.96 0.98 1.0 0.97 0.96
  }
  ; Player preferred grid position (0..ai_cars-1)
  grid_position=0
  ; Number of laps in race
  laps=6
  ; Maximum race time (in seconds)
  max_time_race=0
  ; Type of race ranking; 0=time/bestlap, 1=distance
  ranking=0
  ; Qualifying max laps (0=no qualifying)
  qualify_laps=0
  ; Qualifying time (in seconds)
  qualify_time=0
  ; Type of qualifying ranking; 0=racetime (doesn't make sense for qualifying), 1=distance, 2=bestlap
  qualify_ranking=2
  ; Event type; what type of race you're running; 0=Qualifying run, 1=Qual+Race, 2=Real race (default)
  event_type=2
  ; Racing class; 0=circuit (loops), 1=rally/A-B tracks. Only used for menu statistics and warp position.
  racing_class=0
  ; Driver id (name)
  driver=Komandor
  ; Pace car present? (first AI car found)
  pace_car
  {
    ; Pace car #laps to assist
    laps=1
    ; Disappear immediately when done pacing?
    disappear=0
    enable=0
  }
  ; Driver level; see levels.*
  level=0
  ; Auto-return time (in ms; once a race ends, return to start for next lap; rally for example)
  ; 0 means no auto-return. Only works for point-to-point tracks
  auto_return_time=3000
  ; Competition name and id
  competition=ParmalatRace
  competition_id=1
  ; Customer ID (passed by RaceManager for example)
  cid=0000000001
  ; Heat number
  heat=14
  ; Time (s) to countdown towards end of session
  countdown_start=3
  ; Time (s) to cool down after a session (qualify)
  cooldown_time=3
  ; Time (s) to cool down after the race (show results)
  cooldown_time_race=10
  ; Time (s) for the start scene (after all cars are loaded, and just before the starting lights)
  ; Allow some time for multiplayer clients to settle down to trigger the race on each client at the same time.
  startscene_time=1
  ; Where to start in qualifying; 0=pits, 1=track
  qualify_start=1
  ; Speed of start lights (time in ms per light)
  time_per_light=1000
}
ghost
{
  ; Ghost car options (use 'ghost save <name' to save current ghost lap in data/tracks/<trackname>/ghosts/<name>.ghost)
  enable=0  ; Load ghost file upon starting race? (leave empty to skip loading)
  load=
}
rules
{
  ; When pitting (standing still currently), what is the distance of other cars before hiding car?
  pitstop_autohide_distance=250
}
custom
{
  ; Custom version settings.
  hexatech=0
}
gadgets
{
  ; Intro (if available)
  intro=0
  ; Intro images wait time
  intro_wait=500
  ; Turn on the menu? If set to 0, the game immediately proceeds into Race
  menu=1
  ; Automatically go into replay mode?
  replay=0
  ; Turn on the game itself? Normally keep this at 1.
  game=1
}
loading
{
  ; Load bar Y
  bar_y=570
}
menu
{
  ; Background movie (leave empty for none)
  bgr=
  bgr_opacity=0.2
  bgr_scale_x=1
  bgr_scale_y=1
  ; Show wheel?
  wheel=0
  ; Running at x fps
  movie_fps=25
  ; Show buttons? (might not want a menu when using a Race Manager for example)
  show_buttons=1
  ; Show statistics? (best drivers etc)
  show_stats=0
  ; Paint logo?
  show_logo=1
  ; Paint title on top?
  show_title=1
  ; Show console in menu?
  show_console=0
  ; Redo fullscreen after x ms? (Mac Cinema HD ugly bugfix). Only for multiview slaves.
  redo_fullscreen=0
  ; Be CPU friendly in menu? (ms to wait every step)
  wait=30
}
splash
{
  ; Image (must be 2^n sized); if not found no splash screen will be shown
  ; Size of image onscreen
  width=500
  height=350
  ; Duration of splash image onscreen (ms)
  time=500
  ; Fade out time
  fade_time=500
}
audio
{
  ; Turn off enable (0) in case of sound problems
  ; All platforms use FMOD (www.fmod.org)
  enable=1
  ; Set mastervolume; 0 is silent, 255 is maximum volume
  mastervolume=255
  ; Output; for Windows, use 'dsound', 'winmm', 'asio', 'openal', 'wasapi' (Vista) or leave empty
  ; to autodetect. For Linux, use 'oss', 'alsa', 'esd' or also
  ; leave empty. For Mac, use 'mac' (or empty).
  ; Try empty for starters. In case of trouble, try 'nosound' or enable=0 above.
  type=
  ; Output quality
  frequency=44100
  ; Bits per sample; 16-bits sounds much better and the mixer
  ; is optimized for 16-bit anyway.
  bits=16
  ; Speaker mode; -1=system default, 1=mono, 2=stereo, 3=quad (4.0), 4=surround (5.0), 5=5.1 (subwoofer), 6=7.1, 7=ProLogic (5.1)
  speakermode=-1
  ; Number of voices to allocate (defaults to 128)
  voices=128
  ; 3D rolloff factor; 1=default, nearing 0 means volumes don't roll off
  ; as quickly, while >1 means sounds will fade very quickly
  rolloff_factor=0.1
  ; Buffer size in ms; too low means cracking up the sound, too high
  ; will generate audible frequency updates (stepwise changes)
  ; Doesn't seem to work in Linux/SuSE7.3/ALSoundblaster
  buffersize=100
  ; Hook car audio to camera? (for more noise with incar cameras); default=1
  hook_incar_to_camera=0
  ; Generic effects on all audio
  distortion=0
  {
    ; Level 0..1
    level=0.5
  }
  reverb=0
  {
    new_var_here=0
  }
  flange=0
  {
    ; Drymix 0..1
    drymix=0.45
    ; Wetmix 0..1
    wetmix=0.55
    ; Depth 0..1
    depth=1.0
    ; Rate 0..20, default 0.1
    rate=0.1
  }
  ; Surface sounds
  road
  {
    volume=0
    ; Pitch determination
    pitch_scale=0.005
    pitch_offset=2
    smp0
    {
      sample=road.wav
      ; Speeds in m/s
      min=0
      max=9999
      natural=5
    }
  }
  grass
  {
    ; Pitch determination
    pitch_scale=0.005
    pitch_offset=2
    smp0
    {
      sample=grass.wav
      min=0
      max=9999
      natural=5
    }
  }
  gravel
  {
    ; Pitch determination
    pitch_scale=0.015
    pitch_offset=0.5
    smp0
    {
      sample=gravel.wav
      min=0
      max=9999
      natural=5
    }
  }
  sand
  {
    ; Volume determination
    volume_scale=0.5
    volume_offset=0
    ; Pitch determination
    pitch_scale=0.015
    pitch_offset=0.5
    smp0
    {
      sample=sand.wav
      min=0
      max=9999
      natural=5
    }
  }
  kerb
  {
    ; Pitch determination
    pitch_scale=0.02
    pitch_offset=2
    smp0
    {
      sample=kerb.wav
      min=0
      max=9999
      natural=5
    }
  }
  stone
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=stone.wav
      min=0
      max=9999
      natural=1
    }
  }
  water
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=0
    smp0
    {
      sample=water.wav
      min=0
      max=9999
      natural=0.7
    }
  }
  ice
  {
    ; Volume determination adjust as desired
    volume=0.9
    volume_scale=0.01
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=ice.wav
      min=0
      max=9999
      natural=1
    }
  }
  snow
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=snow.wav
      min=0
      max=9999
      natural=1
    }
  }
  mud
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=0
    smp0
    {
      sample=mud.wav
      min=0
      max=9999
      natural=1
    }
  }
  ; Environment sounds
  rain
  {
    ; Pitch determination
    pitch_scale=1
    pitch_offset=0
    smp0
    {
      sample=rain.wav
      min=0
      max=9999
      natural=1
    }
  }
}
music
{
  ; Several section with music choices
  ; Menu music (MP3/WAV etc)
  menu
  {
    ; song1=menu.mp3
    song1=
  }
  lobby
  {
    song1=lobby.mp3
  }
  replay
  {
  }
  race
  {
  }
}
replay
{
  enable=0  ; Replay to view
  file=test
  ; Generic full-race replay buffer size (in bytes)
  size=10000000
  ; Ghost-car replay buffer size
  size_ghost=100000
  ; Recording interval (ms per step, default=100 which is 10Hz)
  interval=100
  ; Load standard replay (test.rpl) instead of actual replay?
}
multiplayer
{
  ; Always enable multiplayer; even your local car will connect
  ; through it's own server
  enable=1
  ; The host that serves the game. I.e. 'somehost' or '192.168.0.1'.
  ; Note that for v0.4.8, if 'server' is 'localhost', the machine
  ; is both client and server. Do NOT use the real machine name in
  ; this case, since Racer will think that the server is a remote
  ; machine, and no serving will take place.
  server=127.0.0.1
  ; Time (ms) to connect to server (per try!)
  timeout_connect=1000
  ; Retries when connecting to server
  connect_attempts=30
  ; Remote server; this indicates a fixed server you want to connect
  ; to when selecting 'Join' from the menu.
  ; This automatic selection is only used if 'use_remote_server'=1
  ; and generally you only want this on the Mac, where dialogs
  ; don't work yet.
  server_remote=10.1.90.111
  ; 'server_remote' is only used if the value below is 1
  ; This is needed on the Mac, where dialogs don't work yet.
  use_remote_server=0
  ; Expected number of clients. Leave at 0 unless you know in advance
  ; how many clients (including spectators) will/should connect.
  expected_clients=1
  ; Allow remote connects? (in other words, be a host?)
  ; If enabled (1) it will allow remote clients to connect.
  ; If 0, the server above will automatically be set at 'localhost'
  ; because Racer is always multiplayer, even in single player mode.
  allow_remote=1
  ; Communication port (normally 25000, for WAN latency tests port 25001 can be used with a computer inbetween running:
  ;   portforward 25000 25001 192.168.0.101 (where .101 = the multiplayer server)
  port=25000
  ; Time (ms) between car updates being sent to the server
  ; For example: 100 means 100ms is 10Hz, which seems about reasonable.
  ; Default for LAN     : time_per_update=10, linear_interpolation=1
  ; Default for internet: time_per_update=100, linear_interpolation=0
  time_per_update=100
  ; Type of interpolation; use linear for LAN play (1), splines for internet (0)
  linear_interpolation=0
  lag
  {
    ; Upon receipt of a packet, a spline interpolation is used to
    ; smoothly move the car to the new position. The time this takes
    ; is dependent on 'multiplayer.timet_per_update'.
    ; It is advised to keep time_per_update the same on every client
    ; (and server) for minimal interpolation weirdness.
    ; The 'correct_factor' is multiplied by the time_per_update to
    ; get the time in which the car is smoothly pushed to its new
    ; location (as just received from the latest network packet)
    ; Experimentation is probably useful for this value (0..2?).
    correct_factor=2
  }
  ; Spectator-only view?
  audience=0
  ; Camera mode in audience view (0=car, 1=track, 2=heli, 3=director)
  audience_camera_mode=1
  ; Internet based games
  internet
  {
    ; Obsolete tree; use multiplayer.listclient from v0.5.5 on.
    ; Are the races public for the internet?
    public=0
    ; List server to notify of races, so people can hook on to that listserver and see your race
    listserver=192.168.1.99
  }
  listclient
  {
    ; Where is our current listserver?
    host=lobby.racer.nl
    ; UDP port
    port=28100
    ; Your nickname/login with which to enter the listserver
    nick=MyNick
    ; Known listservers
    servers
    {
      count=1
      server0
      {
        host=127.0.0.1
        port=28100
      }
    }
  }
}
limits
{
  ; Max #milliseconds to simulate per graphics frame. If this is not
  ; attainable, the display will show 'SLOMO' (your fps is too low)
  max_sim_time_per_frame=500
  ; Max world size (Newton)
  world_size=5000
}
car
{
  ; Y offset when warping the car
  warp_offset_y=0.01
  ; What is considered low speed? (rotational velocity of wheel in radians)
  low_speed=2.0
  ; Damping of forward/backward wheel speed reversal. This takes place
  ; when the car is coming to a stop; when a wheel reverses direction,
  ; the slip ratio is negated but damped using this factor. This is an
  ; addition to the SAE950311 damping method.
  ; Is also used laterally.
  damp_sr_reversal=0.0
}
stats
{
  ; Default info page; 0=none, 1=tire forces, 2=timing/race/aero, 3=surface,
  ; 4=controls, 5=network, 6=profile, 7=suspension, 8=driveline/ai, 9=telemetry
  default_info=0
  ; Default info subpage - some info pages have multiple subpages
  default_info_sub=0
  ; Big info text font name
  font=realvirtue40
  ; Extra horizontal scale (on top of global scale)
  font_scale_x=1.0
  ; Smaller font scale; 1=default, <1=smaller, >1=larger
  scale=0.8
  ; Show FPS initially? (toggle with Ctrl-F)
  fps=1
  ; Show gear indicator as debug text? (toggle with Ctrl-G)
  show_gear=1
  ; Show car view initially? (toggle with Ctrl-V)
  show_dials_2d=1
  ; Race summary view; 0=nothing, 1=laps at bottom, 2=time comparisons (default), 3=last lap results (big),
  ; 4=session results (big), 5=ranking (spectator), 6=front/rear time difference
  race_view=0
  ; Limit race summary view toggling
  max_race_view=3
  ; Time to keep info texts onscreen (ms)
  info_time=5000
  ; Info position; x=0 means center horizontally
  info_pos=200 50 0 0
  ; Flag position (carproblem/disqualify); normalized to a 800x600 display (0,0 is topleft); default is centered horizontally
  flag_pos=50 20 150 110
  ; Enable wrong-direction indicator? (flashing image)
  show_wrong_direction=1
  ; Alpha scale of data/images/standings.tga (fading)
  standings_alpha_scale=0.75
}
console
{
  enable=0
  ; Location
  x=200
  y=580
  maxline=10
  ; Initial activation?
  active=1
  ; Paint console onscreen? (can still do UDP output)
  paint=1
  ; Autohide? If >0, specifies time (in milliseconds) when to hide in
  ; case of no messages
  autohide=5000
  ; Alternative route; UDP output (hides console window, only outputs to UDP)
  ; If no host is defined, output goes to main computer console window.
  ; Preferred is to direct to a RaceMgr directly to catch all messages upon startup
  host=
  port=26000
  ; UDP server (reliable, with connections, using ENet)
  port_server=26001
  ; Log file (outputs all console message into data/dump/<file>). Leave empty to cancel logging.
  logfile=
  log_append=0
}
environment
{
  ; Air density; taken here is density of air at 15 degrees Celcius,
  ; 59 degrees Fahrenheit, in kg/m^3. This and other values can be
  ; found at http://www.windpower.dk/stat/unitsw.htm
  air_density=1.225
  ; Gravity (in m*s^-2)
  gravity=9.80665
  ; Outside temperature in degrees Celcius
  temperature=20
  rain
  {
    ; Multiply grip of surfaces for full rain (1.0)
    grip_factor=0.6
  }
  snow
  {
    ; Multiply surface grip; normally around 90% (0.9) for good snow tires
    grip_factor=0.6
  }
}
assist
{
  ; Automatically engage clutch at low engine rpm? (if 0 it might still be turned on if it is 1 in the car.ini)
  auto_clutch=1
  ; Automatically shift? (if car isn't already an automatic)
  ; You can also use the script commands 'manual' and 'automatic')
  auto_shift=0
  ; Enable traction control? (if 0 it might still be turned on if it is 1 in the car.ini)
  ; (script commands 'tc on', 'tc off')
  traction_control=0
  ; Enable ABS? (if 0 it might still be turned on if it is 1 in the car.ini)
  abs=0
  ; Enable ASL? Limits to AI speed (helps braking before turns; active speed limiter)
  asl=0
  ; Time allowed offroad (ms) before auto-reset
  time_allowed_offroad=0
  ; Time allowed without wheel contact (flying or lying on back)
  time_allowed_nowheel=3000
  ; Time allowed without driving
  time_allowed_novelocity=0
}
controls
{
  ; Input time step (#ms per input update); 20=50Hz
  time_input=20
  ; Output time step (#ms per output update; FF)
  time_output=20
  ; Time (in ms) when a bad shift is done (no clutching or bad speedshift)
  ; This is then the delay before the actual gear really becomes active.
  bad_shift_penalty=250
  ; Following the steering angle.
  ; An attempt to make the car cameras point in the direction where
  ; the driver would like to look. With high speed, use a smaller angle,
  ; since this can otherwise be disturbing to look at.
  pov_follow
  {
    enable=0
    min
    {
      ; Speed in m/s (100 m/s=360 km/h), angle in degrees
      speed=5
      angle=10
    }
    max
    {
      speed=50
      angle=1
    }
  }
  ; On-center reduction of oscilattion (shimmy). Reducing steering wheel back and forth
  ; motion at higher speeds. The idea is to cut down force near zero steering.
  ; Center squeeze: the higher the number, the smaller the range where force is reduced.
  ; Values ranging roughly from 1 to 20.
  center_squeeze=10
  ; Center minfactor; makes sure that at zero steering, there is still some force left.
  ; Mathematically, Mz will not be reduced further than the original Mz times center_minfactor.
  center_minfactor=0.4
  ; Minimal car velocity before on-center reduction becomes active (m/s)
  center_velocity_threshold=50
  ; Maximum start throttle, to keep automatics from going to 5th when lights go out
  max_start_throttle=0.3
  ; Ignore safety on controllers?
  ignore_safety=0
  ; Multi-thread engaging of controllers? (quick motion up while loading the track)
  thread_engage=0
}
selcar
{
  ; Car selection options
  ; Rotate floor along with car?
  rotate_floor=1
  light
  {
    x=1
    y=4
    z=5
  }
}
helicopter
{
  ; Mass of helicopter
  mass=200
  ; Spring constant to pull heli above car
  k=1
  ; Damping to keep helicopter from overshooting car location
  damping=10
  ; Height of heli (avoid going to high for clipping and rendering speed)
  height=50
  ; Lens
  fov=50
}
graphics
{
  ; Hide cursor? 0=don't hide, 1=hide if fullscreen, 2=hide even if not fullscreen
  hide_cursor=0
  ; Use track-specific loading images? (data/tracks/<trackname>/loading.jpg)
  use_track_loading_image=1
  ; Show car names above cars? (default 0)
  show_names=0
}
minimap
{
  ; Small map indicating where all the cars are
  enable=0
  x=800-200
  y=0
  wid=180
  hgt=180
}
pacecar
{
  ; The pacecar stops after 1 lap
  ; Minimal distance between pacecar and actual drivers (m); starts braking beyond this.
  min_distance=20
  ; Minimal pacecar distance in time (s); if time to impact gets under this value,
  ; the pacecar will drive.
  min_distance_time=20
  ; Maximum distance before pacecar begins to slow down to let
  ; drivers approach
  max_distance=60
  ; At which distance before the end of the last pacelap to stop pacing
  turn_off_distance=12000
  ; Distance upon which the pacecar is removed from the race after pacing ends
  disappear_distance=-100
}
;
; Graphics
;
resolution
{
  ; Resolution to play in
  fullscreen=0
  ; Avoid screen switch? (takes 1 of height)
  near_fullscreen=0
  ; No border? (for non-fullscreen windows without a border)
  no_border=0
  ; Position of (non-fullscreen) window; for x/y, -1 means center on the desktop (non-fullscreen only)
  x=-1
  y=-1
  ; Width and height of window (or fullscreen resolution)
  width=800
  height=600
  ; Surround Gaming (Matrox Parhelia)
  ; Pixel aspect ratio; normally 1 (pixels onscreen are sized 1:1)
  aspect=1
  ; Rendering aspect; 1.333 for most VGA resolutions, 1.6 for example for a 1280x800 screen (Apple screens, 16:10). 0=automatic (width/height)
  render_aspect=0
  ; Pixel depth (RGB; use 16 or 32; 32 preferred)
  bits=32
  ; Alpha bits? Not really needed for normal shader operation, so keep at 0
  alpha_bits=0
  ; Depth buffer bits; 16 or 24
  z_bits=24
  ; Stencil buffer bits; is used for projective shadows, stencil shadowing
  stencil_bits=0
  ; Frequency (only implemented on Mac)
  ; Make sure the frequency is supported, otherwise you could damage your monitor!
  frequency=60
  ; Vertical sync? 0=off (max framerate, the default), 1=sync to display frequency, >1=set interval
  vsync=0
  ; Frame lock? (0=disable, 1=enable) Only works on nVidia Quadro cards.
  frame_lock=0
  ; Force frame lock enable/disable to succeed? (for tests on non-Quadro cards)
  frame_lock_force=0
  ; Swap group & barrier; for locking multiple computers/displays (nVidia Quadro cards only) - 0=off
  swap_group=0
  swap_barrier=0
  ; Gamma (only implemented on Mac)
  gamma=1.0
  ; Number of monitors; normally set to 1, may be set to 3 if for example
  ; a Matrox Parhelia is used.
  monitors=1
}
window
{
  ; On X-Windows systems, should we let the window manager manage us?
  ; (this gives a border)
  manage=0
}
fx
{
  ; #ms per fx interval (things like skidmarks, smoke etc)
  interval=20
  ; Fog hint; 0=don't care, 1=fastest, 2=nicest
  fog_hint=2
  ; Forward visibility (in good weather conditions) in meters
  visibility=1500
  ; Use track lighting?
  track_lighting=1
  ; Skid marks; number of skid mark points
  skid_mark_buffer=100
  skid_mark_enable=1
  ; Allow skid mark saving?
  skid_mark_save=0
  sun
  {
    ; Sun white-out factor; the bigger, the more whiteout. Try 50000 first.
    whiteout=0
    ; Visibility method; 0=always (if in frustum), 1=zbuffer, 2=raytrace (NYI)
    visibility_method=1
    ; Enable flare?
    flare=0
    ; Flare textures (8 textures, ac0..4 each); avoid texture switches
    ; by keeping equal textures together (i.e. 0 1 1 instead of 1 0 1)
    texture=0 1 1 2 3 3 4 4
    ; Length of flare distance to sun (1=sun itself, 0=center of screen,
    ; -1 is mirrored across screen center)
    length=1.0 0.5 0.33 0.6 0.4 -0.25 0.2 -1
    ; Size scaling; 1=128x128, <1=smaller, >1=bigger
    size=6.0 .5 .25 0.8 .5 .25 .25 1.2
    ; Time of day enforcing (HHMM); if empty, the track's sun settings are used.
    time_of_day=
    ; Speed of time progress; 0 if no progress, 1 for real-time etc.
    fast_time_factor=0
    ; Use actual system time for sun? (take real time of day if time_of_day is empty; overrules the track's special.ini gfx.time setting)
    auto_time_of_day=0
    ; Day-night zapping in the middle of a session
    day_night_ramp=0
    ; Start time for ramp (in minutes from midnight)
    day_night_ramp_start=14*60
    ; End time for ramp
    day_night_ramp_end=23*60
  }
  smoke
  {
    ; Number of particles reserved; the more, the slower things may be,
    ; but nicer graphics (decrease fx.interval for best effect)
    particles=200
  }
  ; Fade value if car has a problem (to prevent sickness); may need to be >0.5 to have an effect
  problem_fade=0.95
  ; Fade alpha scale (to keep fade from fully fading)
  fade_alpha_scale=0.2
}
filter
{
  ; These settings are overruled by the new gfx engine in Racer v0.5.2
  ; Use mipmapping? 0=none, 1=nearest, 2=linear
  mipmap=1
  ; Use trilinear filtering? If mipmap=0 and trilinear=1,
  ; bilinear filtering is used instead.
  trilinear=1
  ; Max anisotropy; the higher, the better the filtering
  ; Only supported on some cards. Values 1..?. 1 will not use any
  ; anisotropy, starting from 2 you'll get results.
  max_anisotropy=16
}
envmap
{
  ; Enable old-style spherical environment mapping?
  enable=1
  ; Live updating of track environment map? (very costly)
  live_track=0
  {
    ; Number of cubemap sides to update per frame (less=faster but more jerk)
    sides_per_frame=3
    ; Use an offscreen FBO? Faster, better
    fbo=1
    ; Number of FBO bits; 8 or 16 (HDR)
    bits=16
    ; Size of FBO (width & height)
    size=512
  }
  ; Dozens of options controlling live track map should come here. :)
  ; Default environment map image for sphere environment mapping
  default_texture=smap_whitesun_add.tga
}
shadow
{
  ; Keeping the shadow above the track
  ; Use projected shadow for cars (on tracks)?
  project_shadows=1
}
renderer
{
  ; Gfx engine rendering options
  ; Desired framerate - will reduce detail dynamically to obtain the framerate (0 to disable)
  desired_fps=0
  ; Throttler detail limits (0=nothing drawn, 1=full detail, >1=increased visibility range)
  min_detail=1.0
  max_detail=1.0
  paint
  {
    ; Show wire frame?
    wireframe=0
    ; Show vertex normals?
    normals=0
    ; Show triangles? (default=1)
    triangles=1
  }
  ; Note that some fog parameters are defined in <track>/special.ini
  ; Enable fog? (shaders can still turn fog off)
  fog=1
  ; Use stencil shadowing? Costs a lot of performance and the track must support it, but can look nice.
  stencil_shadows=0
  {
    ; Use simple darkening (just 2 passes needed plus 1 dark fullscreen quad)?
    ; If 0, full lighting is done at more cost.
    ; Simple darkening does not require explicit 'Receive shadow' flags
    ; in the track objects; all objects are shadowed.
    simple=1
  }
  ; Use array elements instead of 1 drawelements?
  use_array_elements=0
  ; Use single pass rendering instead of multitexturing? Don't set at 1 if you use Cg shaders
  single_pass=0
  ; Support Vertex Buffer Objects? (for cars and/or tracks)
  use_vbo=1
  ; Support projected lights? (default=1)
  projected_lights=0
  hdr
  {
    ; HDR rendering (high-dynamic range)
    enable=1
  }
  bloom
  {
    ; Bloom on top of HDR - needs hdr.enable=1
    enable=0
  }
  auto_exposure
  {
    ; If enabled, calculates luminance of the scene and automatically adjusts the 'exposure'
    ; It then overrules any exposure setting from track special.ini files or the script 'exposure' command
    enable=1
    ; Decrease the amount of luminance calculations to improve framerate
    steps=20
    ; Linear response; exposure=offset-sceneLuminance*gradient
    offset=1.4
    gradient=0.7
    ; Minimal exposure
    min=0.4
    max=100.0
    ; Gradually change exposure with a Kalman filter
    filter_gain=0.05
  }
  motion_blur
  {
    ; Method: 0=disabled, 1=OpenGL accumulation buffers, 2=blur-texture, 3=bitmap (not functional), 4=FBO (fast texture based)
    ; Preferred is FBO (the future is going to do more & more with FBO's due to Cg shaders)
    method=0    ; (Method 1 only) Motion blur using accumulation buffers; 0=don't use, >1=number of passes (renders); can be slow!
    passes=4
    ; (Method 1 only) Mix scale; <1=darken, >1=brighten (sort of HDR)
    accum_factor=1.0
    ; (Method 2 & 4) Amount of blur; 0=nothing, 1=full.
    blur_alpha=0.5
    ; (Method 4 only)
    fs_filter1=bloom_motionblur_vign2_f.cg
    ; (Method 4 only) Number of samples for multisampled FBO (0=no multi-sampling, >1=samples); only works on nVidia cards 8xxx series and up
    samples=16
    ; Generate velocity map? (for use in fullscreen shader) Creates velocity values in R & G channels using motion_blur_v/f.cg shaders.
    velocity_map=1
    ; Distortion for projectors
    distorter
    {
      ; Enable distortion? (also set motion_blur.fs_filter1 to distort.cg if enabled)
      enable=0
      ; Enter edit mode at startup?
      auto_edit=0
      ; Texture size (must be a power of 2)
      texture_size=1024
      ; Control points defining a net to fit the screen in. The points are normalized
      ; (so 1 means the right or lower side of the screen, 0,0 is the origin at the top-left)
      ; Number order is row-column, so control_point_10 means row 1, col 0.
      control_point_00=0.000000 0.000000
      control_point_01=0.250000 0.000000
      control_point_02=0.500000 0.000000
      control_point_03=0.750000 0.000000
      control_point_04=1.000000 0.000000
      control_point_10=0.000000 0.250000
      control_point_11=0.250000 0.250000
      control_point_12=0.500000 0.250000
      control_point_13=0.750000 0.250000
      control_point_14=1.000000 0.250000
      control_point_20=0.000000 0.500000
      control_point_21=0.250000 0.500000
      control_point_22=0.500000 0.500000
      control_point_23=0.750000 0.500000
      control_point_24=1.000000 0.500000
      control_point_30=0.000000 0.750000
      control_point_31=0.250000 0.750000
      control_point_32=0.500000 0.750000
      control_point_33=0.750000 0.750000
      control_point_34=1.000000 0.750000
      control_point_40=0.000000 1.000000
      control_point_41=0.250000 1.000000
      control_point_42=0.500000 1.000000
      control_point_43=0.750000 1.000000
      control_point_44=1.000000 1.000000
    }
  }
  ; Enable depth of field rendering? (experimental); needs motion_blur_passes>=2
  depth_of_field=0
  ; Force ATI card? A number of measurements may be taken, since ATI drivers have some problems.
  ; Note that v0.5.3 beta 8+ already automatically tries to detect ATI cards and overrules this value
  ; if an ATI card is indeed found (will force it to 1).
  ati=0
  ; Fader PID proportional setting; 0.002 is ok, 1 means superfast fades
  fgr_pid_p=0.002
  edge_blend
  {
    ; Software edge blending
    ; From v0.8.5, this needs to be done in Cg shaders, not a texture onscreen!
    enable=0
    ; Curvature of edge fall-off (1=linear, 2=curvy, 3=more curved)
    p=1.000000
    ; Gamma of projector (around 1.8..2.2, 1.0=linear)
    gamma=1.000000
    ; Size of edge ramp in pixels
    width=256
    ; Side (1=left, 2=right, 1+2=left&right)
    sides=0
    ; Testing the setup; draw a test image? (see also the script commands 'edgetest on' and 'edgetest off')
    test_pattern=0
    ; Transparency of test pattern (defaults to 128)
    test_pattern_alpha=128
  }
  gpu_shaders=1
}
lod
{
  ; Level of detail
  enable=1
  ; Modifying LOD values being loaded.
  ; 1=normal, <1=objects move out quicker, >1=objects stay visible longer
  factor=1.0
}
mirrors
{
  ; Simple rectangular mirror at top? Use the mirror texture!
  ; So if used, also enable texture.enable (set to 1)
  simple
  {
    ; Enable it at the start of the race?
    enable=0
    ; Position (if undefined, it is centered horizontally and placed near the top vertically)
    ; Size of simple mirror (onscreen)
    wid=350
    hgt=120
  }
  ; Mirror texture
  texture
  {
    enable=1
    ; Use an FBO to render into? (faster if you have the graphics power)
    fbo=1
    ; Anti-aliasing of mirror (normally 0, but 1/2/4/8/16 may look better)
    fbo_samples=4
    ; Texture size; the larger, the sharper, but also more costly
    wid=512
    hgt=128
    ; FOV in mirror view
    fov=40
    ; Update rate (1=update every frame, 2=update every 2nd frame, 3=every 3rd etc)
    update_rate=2
    ; Visibility in mirror (distance in meters)
    visibility=100
    ; Haziness in the mirror (default: 1.0)
    extinction_factor=5
    ; LOD factor (default: 1.0); keep it low to get fast rendering
    lod_factor=0
    ; Offset
    offset=0 0 0
    ; Angle offset (yaw, in degrees)
    angle=0
    ; Texture coordinates; normally 0 and 1. Use 0.5..1 for the left part (the mirror is reversed!)
    tc_x_start=0
    tc_x_end=1
  }
}
textures
{
  ; Big hack for faster loads during testing
  enable=1
  ; Quality; 1=max, 2=halfsize, 4=1/4th etc. Must be power of 2.
  quality=1
  ; Support texture compression? (default is 1 (on) unless shaders specifiy compression=0)
  compression=1
  ; Maximum texture size; useful to cut down on really big texturemaps
  ; or supporting ancient gfxcards that can only deal with 256x256
  ; texturemaps.
  max_wid=2048
  max_hgt=2048
}
shaders
{
  ; Faster loading during testing; if set to 0, no (Racer) shaders are loaded
  enable=1
}
;
; Debug settings
;
debug
{
  ; Use blackboxrevised.dll to catch bugs?
  use_blackbox=1
}
dbg_car
{
  ; Several physics settings - can have a big impact on car behavior, so proceed with care!
  ; Initial rotational speed
  av_yaw=0
  av_pitch=0
  av_roll=0
  ; Initial speed
  vx=0
  vy=0
  vz=0
  ; car's grip, when set to 0, the level's values are used, else, this overrides the levels grip
  grip=0.0
  ; engine's torque, when set to 0, the level's values are used, else, this overrides the levels torque
  torque=0.0  
  ; Disable slipangle usage? (for steady-state acceleration tests)
  no_sa=0
  ; Disable pitch jacking forces?
  no_jack_pitch=0
  ; Disable roll jacking forces?
  no_jack_roll=0
  ; Wheel rotation speed at start (100 for example)
  wheel_rvx=0
  ; Enable suspension rotational movement?
  suspension=1
  ; Enable wheels touching ground? (if 0, it's all car-track collisions)
  wheel_road=1
  ; Enable gravity working on the body? Actually enables all chassis
  ; forces (suspension, aero, gravity). Gives a floating car if 0.
  gravity_body=1
  ; Apply friction circle?
  apply_friction_circle=1
  ; Method; 0=Genta (prefers longitudinal forces)
  ;         1=vector trim (equal mix of forces)
  ;         2=void (don't combine forces; should be testing only)
  ;         3=Gregor Veble's combined Pacejka
  ;         4=Cruden combined (not really useful yet)
  ;         5=none (for MF5.2 testing; automatically used if Pacejka model is set to Magic Formula 5.2)
  friction_circle_method=3
  ; Maximum slip length for combined slip calculations (5=understeery, 15=snap oversteers)
  max_slip_len=6.0
  ; Maximum tan(slipAngle); default is 0.75 (+/- 36 degrees), 20.0 (87 degrees) seems to work better
  max_tan_sa=20.0
  ; Adjust force direction when wheel starts locking?
  wheel_lock_adjust=1
  ; Apply friction (reducing) curve based on slip velocity?
  use_slip2fc=0
  ; Zero lateral tire forces? (focus on longitudinal only)
  lateral_tire_forces=1
  ; Automatic damping (car.ini's damping_predict_lat)?
  auto_damping=1
  ; Test for car-track collisions?
  track_collision=1
  ; On (multiplayer) collision, how much time to keep server master (steps)
  collide_time=25
  ; Use AABBTree to speed up wheel-track collision checking?
  use_aabb_tree=1
  ; Avoid using spline info in the track? (to compare WITH splines)
  no_splines=0
  ; Use suspension force instead of tire rate force to determine
  ; load for Pacejka curves? This may stabilize things a lot during
  ; braking, avoiding the tire's jittering behavior and using the more
  ; gradual and damped suspension force instead. I think that rules
  ; out wheel hop though.
  use_susp_as_load=0
  ; Maximum forces (to try to avoid sudden explosive physics)
  max_force=130000
  max_torque=130000
  ; Maximum tire penetration (limits tire load forces)
  max_tire_penetration=0.1
  ; Maximum camber angle (Pacejka doesn't work well with high camber)
  ; Angle is in degrees.
  max_camber=15.0
  ; Enable camber calculations? (sideway car movement bugs)
  enable_camber=1
  ; Start with AI driver?
  start_ai=0
  ; Rev limiter timing (ms to cut throttle on activation)
  rev_limiter_time=50
  ; Limiting velocities to avoid adding too much energy
  ; 350 m/s is around Mach 1 (1260 km/h)
  max_linear_velocity=350.0
  ; Max rotational velocity (radians/sec), to keep from overly spinning
  max_angular_velocity=10.0 
  ; Apply conservation of momentum after collisions?
  conserve_momentum=0
  ; #samples in conversion of torque curve to lookup-table (lut)
  engine_lut_steps=100
  ; Implicity integrate suspension? (currently buggy due to weight changes at the suspension)
  susp_implicit_integration=0
  ; 24-07-08: suspension live rate slope was overly simple; set the next variable to 0 (default=1 for backwards compatibility)
  simple_susp_live_rate_slope=0
  ; Dampen wheel velocity when its sign changes? (perhaps more stable with really hard dampers, default=0)
  damp_vertical_velocity_reversal=0
  ; Add jacking forces in implicit integration mode (susp_implicit_integration=1), default is 0 for backwards compatibility
  ; 1 works well (?) for the F1-v2, 0 for older cars
  implicit_add_jacking_forces=1
  ; Use Tustin tire? (experimental; different integration of wheel movement, currently buggy)
  tustin_tire=0
  ; Damper force correction: 0=don't (before v0.6.3), 1=halfway to zero velocity (v0.6.3-v0.8.4), 2=to desired damper velocity (v0.8.5+)
  damper_correct_method=2
}
damping
{
  ; Body low-frequency wobble damping; torque threshold.
  ; totalTorque must be less than mass^2*damp_torque_threshold
  damp_torque_threshold=4.0
  ; Also, the car velocity squared(!) must be below damp_vel_threshold (m/s)
  damp_vel_threshold=3.0
}
ai
{
  ; Thinking rate (ms per step)
  time_per_update=1
  ; Looking ahead; velocity*lookahead_factor is the #meters the AI
  ; looks ahead (targeting)
  lookahead_factor=0.02
  ; Minimal lookahead distance; too smooth out steering at low speed
  lookahead_offset=1
  ; Steering response; frequency (lower=slower response, high=fast steering)
  ; Higher values reduce driver induced oscillation it seems.
  steering_frequency=100
  ; Throttle/brake response
  throttle_frequency=2
  ; Line adjustment factor; the higher, the more the car is pulled towards
  ; the driving line
  line_adjust=0.0
  ; Line adjust minimal distance; race distance to be completed before
  ; line adjusting starts
  line_adjust_distance=1
  ; Focus on AI car when it appears? (testing AI avoid other cars)
  focus=0
  ; Load AI lines at all?
  load_ai_lines=1
  ; Drive alongside player car? (matches velocity to stay near)
  ; Only works with car0=player, car1=AI
  drive_alongside=0
  ; Ignore other cars entirely?
  ignore_cars=0
  ; Velocity scale (global AI performance)
  scale_velocity=1.0
  ; Target U correction speed (default 1.0; lower is slower)
  target_u_correct=1.0
  ; Target smoothing to avoid jerky steering
  target_smd
  {
    mass=1
    k=140
    ; Keep damping close to optimal; sqrt(k)
    damping=10
    maxdist=0.5
  }
  ; Acceleration smoothing using PID controller
  pid_accelerate
  {
    proportional=-0.3
    derivative=0.01
    integral=0
  }
  pid_steering
  {
    proportional=100
    integral=0
  }
}
state
{
  ; Automatically load state at start? (simulates Ctrl-L)
  auto_load=0
}
dbg_controls
{
  ; Turn off controls altogether?
  update=1
  ; Debugging the engine (also set controls.update to 0 to keep control values)
  ; Throttle 0..1000
  throttle=800
  ; Brakes 0..1000
  ; Clutch 0..1000
  clutch=0
  ; Initial steering position (-1000..+1000)
  steer=-800
  ; Road noise velocity factor (smaller=less road noise at low velocity)
  ; Only deals with low velocity situations!
  road_noise_factor=0.1
}
timing
{
  ; Speed of simulation; this time (in milliseconds) gives the number
  ; of milliseconds for each integration step. Internally, the granularity
  ; of time is 1/1000th sec. So laptime accuracy upto 1/1000th sec
  ; is possible.
  ; However, this is quite a lot of computing, and some computers may not
  ; be able to catch up with this. In fact, REAL time may then move faster
  ; than the computer can keep up with (in which case FPS becomes 0!).
  ; So I suggest 5ms for example. This will make the simulation run at 200Hz.
  ; Keep it at least below 10; a simulation running at anything less
  ; than 100Hz becomes more and more instable.
  integration_time=1
  ; Draw each frame? For debugging, it is handy to see every integration step,
  ; instead of doing realtime stuff, which may go much to quickly.
  draw_every_step=0
  ; Slowmotion inserts <slomo> milliseconds of delay at every drawn frame
  slomo=0
  ; Exit after x frames?
  ; Exit after x physics steps?
  max_steps=0
  ; Quit Racer after max_steps physics steps?
  exit_after_max_steps=1
  ; Realtime scaling; actually allows slowmotion or fastmotion driving
  ; Scales the realtime clock.
  realtime_scale=1.0
}
gfx
{
  ; Display triangles of the spline surface?
  show_spline_tris=0
  ; Show car collision geometries?
  show_car_bbox=0
  ; Show movables collision geometries?
  show_movables_bbox=0
  ; Check OpenGL errors while running? (may slow down rendering)
  check_opengl_errors=0
  ; Show live envmapping render results? -1=none, 0..5=side selection
  show_live_envmap=-1
  ; Show car points/lines, like nullpoint, CG, rollcenters, contact patch locations,
  ; suspension, spline interpolated location (hit point), AI etc.
  show_car_points=0
  ; Show aerodynamics?
  show_aero=0
  ; Show AI lines (racing lines, lateral lines)
  show_ai_lines=0
  ; Show timelines?
  show_timelines=0
}
collision
{
  ; Car-track CFM (constraint force mixing). Use a small value near 0 for default,
  ; and increase to make the car body softer
  cfm=0.0001
  ; Car-track ERP (error reduction parameter). Use a value close to 1 (0.9?) for
  ; default behavior, and reduce to decrease movements of the car when hitting
  ; an object (takes more integration steps to correct the car position)
  erp=0.6
  ; Friction coefficient for car touching track (or fences etc!)
  mu=0.5
  ; Body restitution; 0=bouncy, 30=clay, >40 bouncy again?
  restitution=15
  ; Restitution for network collisions (car-car)
  restitution_network=0.9
  ; Player car is never affected by collisions with AI?
  ai_collide_rock=0
  ; Do car-car collisions?
  car_car=1
  ; Report car-track collisions? (in console) (variable renamed on 8-4-09)
  ; Does not work on Newton for the time being
  report_car_track_collision=0
}
log
{
  ; Logging telemetry groups (also use F3 to toggle logging while driving)
  enable=0
  ; Filename (in data/dump/) to log to (extension will be .log)
  filename=the_log
  ; #ms per logging entry
  period=10
  ; Logging type (0=ASCII file, 1=PI Toolbox PDS (.pds))
  type=0
  groups
  {
    ; Suspension lengths (for ASCII, also the ARB force)
    suspension=0
    ; Slip angle per wheel
    slip_angle=0
    ; Slip ratio per wheel
    slip_ratio=0
    ; Tire forces (Fx/Fy/Fz); currently unsupported for PDS output (only ASCII)
    tire_forces=0
    ; Steering angle (per wheel) & force feedback
    steering=0
    ; Throttle/brake/clutch (clutch stored is actual controller input, no auto-clutch included)
    controls=0
    ; Orientation is unsupported for PDS output
    orientation=0
    ; XYZ and distance (in PDS, only distance is recorded)
    position=0
    ; Car velocity (3D in ASCII, 1D in PDS)
    velocity=0
    ; Angular velocity (not supported in PDS)
    angular_velocity=0
    ; AX/AY/AZ m*s^-2
    acceleration=1
    ; RPM, Gear, Engine torque
    engine=0
  }
}
camera
{
  ; Initial camera mode (0=car, 1=track, 2=heli, 3=director)
  initial_mode=0
  ; Initial car camera (if initial_mode=0)
  initial_car_camera=0
  ; Use car-camera switching during track-cam viewing? (temporary views)
  use_carcam_while_trackcam=0
  ; Focus on last network car that entered?
  focus_network_car=0
  ; Focus on front (pole) car?
  focus_front_car=0
}
stability
{
  ; Test going from menu into game and back again. Waits a couple of seconds, then
  ; runs the game, exists again etc.
  ; This is to find bugs which only appear every couple of hours.
  test_inout=0
  ; Number of seconds to stay racing
  time_to_race=5
  ; Number of seconds in menu
  time_in_menu=2
}
levels
{
  level0
  {
    name=Pro
    grip=1.0
    torque=1.0
    ; FCS Motion override (1=Racer_GTilt, 2=Racer_0, 3=EPhyse)
    system_model_switch=1
  }
  level1
  {
    name=Semi-pro
    grip=1.2
    torque=0.75
    ; FCS Motion override
    system_model_switch=1
  }
}
pacenotes
{
  ; Location onscreen (center!) in virtual 800x600 screen
  x=400
  y=30
  ; Size
  wid=100
  hgt=100
}
dev
{
  ; Development options
  ; Debug messages, sends UDP packets to host:port (for use with a UDP terminal)
  udp_out=
  ; Network wait to let a remote PC enter before the local one (multiplayer tests)
  ; In Racer upto v0.5.5, this leads to swapped driver names & cars
  wait_for_remote_client=0
  ; Fast start for BoundsChecker runs? (skips many driver inits for example)
  fast_start=0
  ; Add geometry triangles to AABB tree? (default: 1)
  add_geometry_to_aabb=1
  ; Show memory reports in console?
  show_memory_usage=0
  ; Fake stats for sorting tests
  fake_laptime=0
  ; Hide audio for local car? (to listen to multiplayer cars)
  no_local_car_sound=0
  ; Force output of race results to statsclient even if the race is aborted?
  force_out_race_results=0
  ; Cache geode loading? (default:1); currently buggy when skinning cars
  cache_geodes=1
  ; Leave message in QLOG on car.ini values that are taken from data/cars/default/car.ini instead of car's car.ini?
  ; Will generate a lot of noise, only for use while developing car.ini files.
  note_ini_fallback=0
  ; Show QLOG at exit automatically, if it contains errors or warnings? Only works on Windows (runs Notepad).
  log_last=0
  internet_simulator
  {
    ; Enable delaying of packets sent out of the machine? (much better to use an extra machine with delayed portforwarding)
    enable=0
  }
  ; Flash screen every second? Used for network timesync tests to check timesyncing
  flash_network=0
}
Code:
;
; Racer settings - see www.racer.nl for specifics.
; Most settings come with comments as to what they do.
;
app
{
  ; Allow double runs?
  run_twice=0
  ; First run ever?
  first_run=0
  ; Keyboard support? (avoid scenes with keys)
  keyboard=1
}
machine
{
  ; Type of role (M=master, L=right etc). Used for loading images (loading_<role>.jpg) if not empty
  role=
}
process
{
  ; Dualcore/multicore options (Windows only)
  ; CPU affinity mask; 0=all CPU's, 1=CPU 0, 2=CPU 1, 3=CPU0 & CPU1 etc.
  ; Setting this to use only 1 CPU may help on some fast machine that give (s)low framerates
  cpu_affinity_mask=0
  ; Main thread affinity mask; must be a subset of 'cpu_affinity_mask'
  ; The main thread does controls, basic timing, graphics (although the graphics driver may spawn its own thread)
  ; When using physics.async=1, you can control the cores directly using the thread affinity masks
  ; If you don't understand process and thread masks, it's better to stay away from these settings
  main_thread_affinity_mask=0
}
physics
{
  ; Run physics asynchronously? (multithreaded).
  ; Only works nicely on multi-core systems.
  ; Single processor machines may experience fluctuating performance.
  ; Do not set this to 1 for multiview slaves (enforced in software)
  ; Will turn off collisions (iPhyse v2.0)!
  async=0
  ; Run on which cores? (a subset of process.cpu_affinity_mask) - 0=all cores
  thread_affinity_mask=2
  tracks
  {
    ; Use road_noise from special.ini? (default 1, which means it is used)
    use_road_noise=1
  }
  newton
  {
    ; Platform architecture; 0=lowest common denominator, 1=spacial instruction set, 2=optimal (default)
    architecture=2
  }
}
ini
{
  ; Controls file (new format since v0.5.2 beta 9.4; in data/controls/)
  controls=default.ini
  ; Possibly fall back on a local set of defining controls (useful for multiple different calibrations)
  ; Directory of the file is local on Windows
  controls_fallback=local.ini
  ; Locale file (languages); default is racer_english.txt
  locale=racer_english.txt
  ; Language ID (0=English, 1=French, 2=Dutch); for some internal texts
  locale_id=0
  ; Force feedback damping (for low speed)
  ff_damping=0.2
  ; Force feedback damping threshold (in m/s of tire velocity)
  ff_damping_threshold=1.0
  ; Let time-of-day automatically control lights?
  auto_lights=0
}
race
{
  ; Race settings
  ; Skip lights sequence at the start?
  quickstart=0
  ; Show 3..2..1 at (non-quick)start?
  show_start_numbers=0
  ; Show lights overlay texture at (non-quick)start?
  show_start_lights=1
  ; Track to drive
  track=Barcelona
  ; Which car to drive?
  car=bmw540i
  ; Total #cars expected (if >1, waits before showing graphics)
  expected_cars=1
  ; Car setup
  ; Number of AI cars besides player car
  ai_cars=0
  ai_car=lambomurcielago
  ; Multiple different AI cars
  ai_car_multiple=
  ai
  {
    random_scenario=0
    ; Performance for each AI car
    performance=1.0 0.8 1.0 0.96 0.97 0.96 0.98 1.0 0.97 0.96
  }
  ; Player preferred grid position (0..ai_cars-1)
  grid_position=0
  ; Number of laps in race
  laps=0
  ; Maximum race time (in seconds)
  max_time_race=0
  ; Type of race ranking; 0=time/bestlap, 1=distance
  ranking=0
  ; Qualifying max laps (0=no qualifying)
  qualify_laps=0
  ; Qualifying time (in seconds)
  qualify_time=0
  ; Type of qualifying ranking; 0=racetime (doesn't make sense for qualifying), 1=distance, 2=bestlap
  qualify_ranking=2
  ; Event type; what type of race you're running; 0=Qualifying run, 1=Qual+Race, 2=Real race (default)
  event_type=2
  ; Racing class; 0=circuit (loops), 1=rally/A-B tracks. Only used for menu statistics and warp position.
  racing_class=0
  ; Driver id (name)
  driver=Komandor
  ; Pace car present? (first AI car found)
  pace_car
  {
    ; Pace car #laps to assist
    laps=1
    ; Disappear immediately when done pacing?
    disappear=0
    enable=0
  }
  ; Driver level; see levels.*
  level=0
  ; Auto-return time (in ms; once a race ends, return to start for next lap; rally for example)
  ; 0 means no auto-return. Only works for point-to-point tracks
  auto_return_time=3000
  ; Competition name and id
  competition=1
  competition_id=1
  ; Customer ID (passed by RaceManager for example)
  cid=SIM_1
  ; Heat number
  heat=67
  ; Time (s) to countdown towards end of session
  countdown_start=3
  ; Time (s) to cool down after a session (qualify)
  cooldown_time=3
  ; Time (s) to cool down after the race (show results)
  cooldown_time_race=10
  ; Time (s) for the start scene (after all cars are loaded, and just before the starting lights)
  ; Allow some time for multiplayer clients to settle down to trigger the race on each client at the same time.
  startscene_time=1
  ; Where to start in qualifying; 0=pits, 1=track
  qualify_start=1
  ; Speed of start lights (time in ms per light)
  time_per_light=1000
  ; Controls
  disengage_at_race_end=1
}
ghost
{
  ; Ghost car options (use 'ghost save <name>' to save current ghost lap in data/tracks/<trackname>/ghosts/<name>.ghost)
  enable=0
  ; Show ghost? (if 0, and 'enable'=1, you can still record ghost files)
  show=1
  ; Auto-save ghost? (uses heat tag: data/tracks/<trackname>/ghosts/heat1.ghost )
  auto_save=0
  ; Load ghost file upon starting race? (leave empty to skip loading; don't add .ghost postfix)
  load=
  ; Time offset (ms) for playback (so you can let the ghost run in front of you)
  time_offset=0
  ; Time scale for slow-motion playback (normally 1.0)
  time_scale=1.0
}
rules
{
  ; When pitting (standing still currently), what is the distance of other cars before hiding car?
  pitstop_autohide_distance=250
}
gadgets
{
  ; Turn on the menu? If set to 0, the game immediately proceeds into Race
  menu=1
  ; Automatically go into replay mode?
  replay=0
  ; Turn on the game itself? Normally keep this at 1.
  game=1
}
loading
{
  indicator_pos=360 200 80 80
  ; Load bar Y
  bar_y=570
}
menu
{
  ; Background movie (leave empty for none)
  bgr=
  bgr_opacity=0.2
  bgr_scale_x=1
  bgr_scale_y=1
  ; Show wheel?
  wheel=0
  ; Running at x fps
  movie_fps=25
  ; Show buttons? (might not want a menu when using a Race Manager for example)
  show_buttons=1
  ; Show statistics? (best drivers etc)
  show_stats=0
  ; Paint logo?
  show_logo=0
  ; Paint title on top?
  show_title=1
  ; Show console in menu?
  show_console=0
  ; Redo fullscreen after x ms? (Mac Cinema HD ugly bugfix). Only for multiview slaves. 0 means no redo.
  redo_fullscreen=0
  ; Be CPU friendly in menu? (ms to wait every step)
  wait=30
  ; Screen saver time (in seconds)
  screen_saver=0
}
splash
{
  ; Image (must be 2^n sized); if not found no splash screen will be shown
  ; Size of image onscreen
  width=500
  height=350
  ; Duration of splash image onscreen (ms)
  time=1500
  ; Fade out time
  fade_time=1500
}
audio
{
  ; Turn off enable (0) in case of sound problems
  ; All platforms use FMOD (www.fmod.org)
  enable=1
  ; Set mastervolume; 0 is silent, 255 is maximum volume
  mastervolume=255
  ; Output; for Windows, use 'dsound', 'winmm', 'asio', 'openal', 'wasapi' (Vista) or leave empty
  ; to autodetect. For Linux, use 'oss', 'alsa', 'esd' or also
  ; leave empty. For Mac, use 'mac' (or empty).
  ; Try empty for starters. In case of trouble, try 'nosound' or enable=0 above.
  type=
  ; Output quality
  frequency=44100
  ; Bits per sample; 16-bits sounds much better and the mixer
  ; is optimized for 16-bit anyway.
  bits=16
  ; Speaker mode; -1=system default, 1=mono, 2=stereo, 3=quad (4.0), 4=surround (5.0), 5=5.1 (subwoofer), 6=7.1, 7=ProLogic (5.1)
  speakermode=-1
  ; Number of voices to allocate (defaults to 128)
  voices=128
  ; 3D rolloff factor; 1=default, nearing 0 means volumes don't roll off
  ; as quickly, while >1 means sounds will fade very quickly
  rolloff_factor=0.1
  ; Buffer size in ms; too low means cracking up the sound, too high
  ; will generate audible frequency updates (stepwise changes)
  ; Doesn't seem to work in Linux/SuSE7.3/ALSoundblaster
  buffersize=100
  ; Hook car audio to camera? (for more noise with incar cameras); default=1
  hook_incar_to_camera=0
  ; Generic effects on all audio
  distortion=0
  {
    ; Level 0..1
    level=0.5
  }
  reverb=1
  {
    new_var_here=0
  }
  flange=0
  {
    ; Drymix 0..1
    drymix=0.45
    ; Wetmix 0..1
    wetmix=0.55
    ; Depth 0..1
    depth=1.0
    ; Rate 0..20, default 0.1
    rate=0.1
  }
  ; Surface sounds
  road
  {
    volume=0
    ; Pitch determination
    pitch_scale=0.005
    pitch_offset=2
    smp0
    {
      sample=road.wav
      ; Speeds in m/s
      min=0
      max=9999
      natural=5
    }
  }
  grass
  {
    ; Pitch determination
    pitch_scale=0.005
    pitch_offset=2
    smp0
    {
      sample=grass.wav
      min=0
      max=9999
      natural=5
    }
  }
  gravel
  {
    ; Pitch determination
    pitch_scale=0.015
    pitch_offset=0.5
    smp0
    {
      sample=gravel.wav
      min=0
      max=9999
      natural=5
    }
  }
  sand
  {
    ; Volume determination
    volume_scale=0.5
    volume_offset=0
    ; Pitch determination
    pitch_scale=0.015
    pitch_offset=0.5
    smp0
    {
      sample=sand.wav
      min=0
      max=9999
      natural=5
    }
  }
  kerb
  {
    ; Pitch determination
    pitch_scale=0.02
    pitch_offset=2
    smp0
    {
      sample=kerb.wav
      min=0
      max=9999
      natural=5
    }
  }
  stone
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=stone.wav
      min=0
      max=9999
      natural=1
    }
  }
  water
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=0
    smp0
    {
      sample=water.wav
      min=0
      max=9999
      natural=0.7
    }
  }
  ice
  {
    ; Volume determination adjust as desired
    volume=0.9
    volume_scale=0.01
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=ice.wav
      min=0
      max=9999
      natural=1
    }
  }
  snow
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=1
    smp0
    {
      sample=snow.wav
      min=0
      max=9999
      natural=1
    }
  }
  mud
  {
    ; Volume determination adjust as desired
    volume=1
    volume_scale=1
    ; Pitch determination
    pitch_scale=0.01
    pitch_offset=0
    smp0
    {
      sample=mud.wav
      min=0
      max=9999
      natural=1
    }
  }
  ; Environment sounds
  rain
  {
    ; Pitch determination
    pitch_scale=1
    pitch_offset=0
    smp0
    {
      sample=rain.wav
      min=0
      max=9999
      natural=1
    }
  }
}
music
{
  ; Several section with music choices
  ; Menu music (MP3/WAV etc)
  menu
  {
    ; song1=menu.mp3
    song1=
  }
  lobby
  {
    song1=lobby.mp3
  }
  replay
  {
  }
  race
  {
  }
}
replay
{
  enable=0
  ; Replay to view
  file=test
  ; Generic full-race replay buffer size (in bytes)
  size=10000000
  ; Ghost-car replay buffer size
  size_ghost=100000
  ; Recording interval (ms per step, default=100 which is 10Hz)
  interval=100
  ; Load standard replay (test.rpl) instead of actual replay?
}
multiplayer
{
  ; Always enable multiplayer; even your local car will connect
  ; through it's own server
  enable=1
  ; The host that serves the game. I.e. 'somehost' or '192.168.0.1'.
  ; Note that for v0.4.8, if 'server' is 'localhost', the machine
  ; is both client and server. Do NOT use the real machine name in
  ; this case, since Racer will think that the server is a remote
  ; machine, and no serving will take place.
  server=localhost
  ; Time (ms) to connect to server (per try!)
  timeout_connect=1000
  ; Retries when connecting to server
  connect_attempts=30
  ; Remote server; this indicates a fixed server you want to connect
  ; to when selecting 'Join' from the menu.
  ; This automatic selection is only used if 'use_remote_server'=1
  ; and generally you only want this on the Mac, where dialogs
  ; don't work yet.
  server_remote=10.1.90.111
  ; 'server_remote' is only used if the value below is 1
  ; This is needed on the Mac, where dialogs don't work yet.
  use_remote_server=0
  ; Expected number of clients. Leave at 0 unless you know in advance
  ; how many clients (including spectators) will/should connect.
  expected_clients=1
  ; Timeout for expected clients to arrive (in seconds)
  expected_clients_timeout=60
  ; Allow remote connects? (in other words, be a host?)
  ; If enabled (1) it will allow remote clients to connect.
  ; If 0, the server above will automatically be set at 'localhost'
  ; because Racer is always multiplayer, even in single player mode.
  allow_remote=1
  ; Communication port (normally 25000, for WAN latency tests port 25001 can be used with a computer inbetween running:
  ;   portforward 25000 25001 192.168.0.101 (where .101 = the multiplayer server)
  port=25000
  ; Time (ms) between car updates being sent to the server
  ; For example: 100 means 100ms is 10Hz, which seems about reasonable.
  ; Default for LAN     : time_per_update=10, linear_interpolation=1
  ; Default for internet: time_per_update=100, linear_interpolation=0
  time_per_update=100
  ; Type of interpolation; use linear for LAN play (1), splines for internet (0)
  linear_interpolation=1
  lag
  {
    ; Upon receipt of a packet, a spline interpolation is used to
    ; smoothly move the car to the new position. The time this takes
    ; is dependent on 'multiplayer.timet_per_update'.
    ; It is advised to keep time_per_update the same on every client
    ; (and server) for minimal interpolation weirdness.
    ; The 'correct_factor' is multiplied by the time_per_update to
    ; get the time in which the car is smoothly pushed to its new
    ; location (as just received from the latest network packet)
    ; Experimentation is probably useful for this value (0..2?).
    correct_factor=2
  }
  ; Spectator-only view?
  audience=0
  ; Camera mode in audience view (0=car, 1=track, 2=heli, 3=director)
  audience_camera_mode=1
  ; Internet based games
  internet
  {
    ; Obsolete tree; use multiplayer.listclient from v0.5.5 on.
    ; Are the races public for the internet?
    public=0
    ; List server to notify of races, so people can hook on to that listserver and see your race
    listserver=192.168.1.99
  }
  listclient
  {
    ; Where is our current listserver?
    host=lobby.racer.nl
    ; UDP port
    port=28100
    ; Your nickname/login with which to enter the listserver
    nick=MyNick
    ; Viewing extra's for development
    dev_flags=0
    ; Known listservers
    servers
    {
      count=1
      server0
      {
        host=127.0.0.1
        port=28100
      }
    }
  }
}
limits
{
  ; Max #milliseconds to simulate per graphics frame. If this is not
  ; attainable, the display will show 'SLOMO' (your fps is too low)
  max_sim_time_per_frame=100
  ; Max world size (Newton)
  world_size=10000
}
car
{
  ; Y offset when warping the car
  warp_offset_y=0.01
  ; What is considered low speed? (rotational velocity of wheel in radians)
  low_speed=2.0
  ; Damping of forward/backward wheel speed reversal. This takes place
  ; when the car is coming to a stop; when a wheel reverses direction,
  ; the slip ratio is negated but damped using this factor. This is an
  ; addition to the SAE950311 damping method.
  ; Is also used laterally.
  damp_sr_reversal=0.0
}
stats
{
  ; Default info page; 0=none, 1=tire forces, 2=timing/race/aero, 3=surface,
  ; 4=controls, 5=network, 6=profile, 7=suspensions, 8=driveline/ai, 9=telemetry
  default_info=0
  ; Default info subpage - some info pages have multiple subpages
  default_info_sub=0
  ; Big info text font name
  font=realvirtue40
  ; Extra horizontal scale (on top of global scale)
  font_scale_x=1.0
  ; Smaller font scale; 1=default, <1=smaller, >1=larger
  scale=0.6
  ; Show FPS initially? (toggle with Ctrl-F)
  fps=1
  ; Show gear indicator as debug text? (toggle with Ctrl-G)
  show_gear=1
  ; Show car view initially? (toggle with Ctrl-V)
  show_dials_2d=1
  ; Race summary view; 0=nothing, 1=laps at bottom, 2=time comparisons (default), 3=last lap results (big),
  ; 4=session results (big), 5=ranking (spectator), 6=front/rear time difference
  race_view=0
  ; Limit race summary view toggling
  max_race_view=3
  ; Race lights vertical position (0..600)
  lights_y=250
  ; Time to keep info texts onscreen (ms)
  info_time=5000
  ; Info position; x=0 means center horizontally
  info_pos=0 50 0 0
  ; Flag position (carproblem/disqualify); normalized to a 800x600 display (0,0 is topleft); default is centered horizontally
  flag_pos=325 20 150 110
  ; Enable wrong-direction indicator? (flashing image)
  show_wrong_direction=1
  ; Alpha scale of data/images/standings.tga (fading)
  standings_alpha_scale=0.1
}
console
{
  enable=0
  ; Location
  x=200
  y=580
  maxline=10
  ; Initial activation?
  active=1
  ; Paint console onscreen? (can still do UDP output)
  paint=1
  ; Autohide? If >0, specifies time (in milliseconds) when to hide in
  ; case of no messages
  autohide=5000
  ; Alternative route; UDP output (hides console window, only outputs to UDP)
  ; If no host is defined, output goes to main computer console window.
  ; Preferred is to direct to a RaceManager directly to catch all messages upon startup
  host=192.168.0.111
  port=26000
  ; UDP server (for reliable messages, with connections, using ENet middleware)
  port_server=26001
  ; Multithreaded port - this port only replies to simple ping commands, making
  ; sure you can check Racer's up state even if Racer is busy with something (load a track for example)
  ; Default port is 26002
  port_mt=26002
  ; Log file (outputs all console message into data/dump/<file>). Leave empty to cancel logging.
  logfile=
  log_append=0
}
environment
{
  ; Air density; taken here is density of air at 15 degrees Celcius,
  ; 59 degrees Fahrenheit, in kg/m^3. This and other values can be
  ; found at http://www.windpower.dk/stat/unitsw.htm
  air_density=1.225
  ; Gravity (in m*s^-2)
  gravity=9.80665
  ; Outside temperature in degrees Celcius
  temperature=20
  rain
  {
    ; Multiply grip of surfaces for full rain (1.0)
    grip_factor=0.6
  }
  snow
  {
    ; Multiply surface grip; normally around 90% (0.9) for good snow tires
    grip_factor=0.6
  }
}
assist
{
  ; Automatically engage clutch at low engine rpm? (if 0 it might still be turned on if it is 1 in the car.ini)
  auto_clutch=1
  ; Automatically shift? (if car isn't already an automatic)
  ; You can also use the script commands 'manual' and 'automatic')
  auto_shift=0
  ; Enable traction control? (if 0 it might still be turned on if it is 1 in the car.ini)
  ; (script commands 'tc on', 'tc off')
  traction_control=0
  ; Enable ABS? (if 0 it might still be turned on if it is 1 in the car.ini)
  abs=0
  ; Enable ASL? Limits to AI speed (helps braking before turns; active speed limiter)
  asl=0
  ; Time allowed offroad (ms) before auto-reset
  time_allowed_offroad=0
  ; Time allowed without wheel contact (flying or lying on back)
  time_allowed_nowheel=3000
  ; Time allowed without driving
  time_allowed_novelocity=0
  ; When resetting, check if we are close to another car, this is the minimum distance (0 for no check)
  reset_distance=30
}
controls
{
  ; Input time step (#ms per input update); 20=50Hz
  time_input=20
  ; Output time step (#ms per output update; FF)
  time_output=20
  ; Time (in ms) when a bad shift is done (no clutching or bad speedshift)
  ; This is then the delay before the actual gear really becomes active.
  bad_shift_penalty=250
  ; Following the steering angle.
  ; An attempt to make the car cameras point in the direction where
  ; the driver would like to look. With high speed, use a smaller angle,
  ; since this can otherwise be disturbing to look at.
  pov_follow
  {
    enable=0
    min
    {
      ; Speed in m/s (100 m/s=360 km/h), angle in degrees
      speed=5
      angle=10
    }
    max
    {
      speed=50
      angle=1
    }
  }
  ; On-center reduction of oscilattion (shimmy). Reducing steering wheel back and forth
  ; motion at higher speeds. The idea is to cut down force near zero steering.
  ; Center squeeze: the higher the number, the smaller the range where force is reduced.
  ; Values ranging roughly from 1 to 20.
  center_squeeze=10
  ; Center minfactor; makes sure that at zero steering, there is still some force left.
  ; Mathematically, Mz will not be reduced further than the original Mz times center_minfactor.
  center_minfactor=0.4
  ; Minimal car velocity before on-center reduction becomes active (m/s)
  center_velocity_threshold=50
  ; Maximum start throttle, to keep automatics from going to 5th when lights go out
  max_start_throttle=1.0
  ; Ignore safety on controllers?
  ignore_safety=0
  ; Multi-thread engaging of controllers? (quick motion up while loading the track)
  thread_engage=0
}
selcar
{
  ; Car selection options
  ; Rotate floor along with car?
  rotate_floor=0
  light
  {
    x=1
    y=4
    z=5
  }
}
helicopter
{
  ; Mass of helicopter
  mass=200
  ; Spring constant to pull heli above car
  k=1
  ; Damping to keep helicopter from overshooting car location
  damping=10
  ; Height of heli (avoid going to high for clipping and rendering speed)
  height=30
  ; Lens
  fov=50
}
graphics
{
  ; Default font (in data/fonts/)
  default_font=din14
  ; Hide cursor? 0=don't hide, 1=hide if fullscreen, 2=hide even if not fullscreen
  hide_cursor=0
  ; Use track-specific loading images? (data/tracks/<trackname>/loading.jpg)
  use_track_loading_image=1
  ; Show car names above cars? (default 0)
  show_names=0
}
minimap
{
  ; Small map indicating where all the cars are
  enable=0
  alpha=1.0
  x=800-200
  y=0
  wid=180
  hgt=180
}
pacecar
{
  ; The pacecar stops after 1 lap
  ; Minimal distance between pacecar and actual drivers (m); starts braking beyond this.
  min_distance=20
  ; Minimal pacecar distance in time (s); if time to impact gets under this value,
  ; the pacecar will drive.
  min_distance_time=20
  ; Maximum distance before pacecar begins to slow down to let
  ; drivers approach
  max_distance=60
  ; At which distance before the end of the last pacelap to stop pacing
  turn_off_distance=12000
  ; Distance upon which the pacecar is removed from the race after pacing ends
  disappear_distance=-100
}
;
; Graphics
;
resolution
{
  ; Resolution to play in
  fullscreen=0
  ; Avoid screen switch? (takes 1 of height)
  near_fullscreen=0
  ; No border? (for non-fullscreen windows without a border)
  no_border=0
  ; Position of (non-fullscreen) window; for x/y, -1 means center on the desktop (non-fullscreen only)
  x=-1
  y=-1
  ; Width and height of window (or fullscreen resolution)
  width=1024
  height=768
  ; Surround Gaming (Matrox TripleHead2Go)
  ; Pixel aspect ratio; normally 1 (pixels onscreen are sized 1:1)
  aspect=1
  ; Rendering aspect; 1.333 for most VGA resolutions, 1.6 for example for a 1280x800 screen (Apple screens, 16:10). 0=automatic (width/height)
  render_aspect=0
  ; Pixel depth (RGB; use 16 or 32; 32 preferred)
  bits=32
  ; Alpha bits? Not really needed for normal shader operation, so keep at 0
  alpha_bits=0
  ; Depth buffer bits; 16 or 24
  z_bits=24
  ; Stencil buffer bits; is used for projective shadows, stencil shadowing
  stencil_bits=0
  ; Frequency (only implemented on Mac)
  ; Make sure the frequency is supported, otherwise you could damage your monitor!
  frequency=60
  ; Vertical sync? 0=off (max framerate, the default), 1=sync to display frequency, >1=set interval
  vsync=0
  ; Frame lock? (0=disable, 1=enable) Only works on nVidia Quadro cards.
  frame_lock=0
  ; Force frame lock enable/disable to succeed? (for tests on non-Quadro cards)
  frame_lock_force=0
  ; Swap group & barrier; for locking multiple computers/displays (nVidia Quadro cards only) - 0=off
  swap_group=0
  swap_barrier=0
  ; Gamma (only implemented on Mac)
  gamma=1.0
  ; Number of monitors; normally set to 1, may be set to 3 if for example
  ; a Matrox Parhelia is used.
  monitors=1
}
window
{
  ; On X-Windows systems, should we let the window manager manage us?
  ; (this gives a border)
  manage=0
}
fx
{
  ; #ms per fx interval (things like skidmarks, smoke etc)
  interval=20
  ; Fog hint; 0=don't care, 1=fastest, 2=nicest
  fog_hint=2
  ; Forward visibility (in good weather conditions) in meters
  visibility=1500
  ; Use track lighting?
  track_lighting=1
  ; Skid marks; number of skid mark points
  skid_mark_buffer=100
  skid_mark_enable=1
  ; Allow skid mark saving?
  skid_mark_save=1
  sun
  {
    ; Sun white-out factor; the bigger, the more whiteout. Try 50000 first.
    whiteout=0
    ; Visibility method; 0=always (if in frustum), 1=zbuffer, 2=raytrace (NYI)
    visibility_method=0
    ; Enable flare?
    flare=0
    ; Flare textures (8 textures, ac0..4 each); avoid texture switches
    ; by keeping equal textures together (i.e. 0 1 1 instead of 1 0 1)
    texture=0 1 1 2 3 3 4 4
    ; Length of flare distance to sun (1=sun itself, 0=center of screen,
    ; -1 is mirrored across screen center)
    length=1.0 0.5 0.33 0.6 0.4 -0.25 0.2 -1
    ; Size scaling; 1=128x128, <1=smaller, >1=bigger
    size=6.0 .5 .25 0.8 .5 .25 .25 1.2
    ; Time of day enforcing (HHMM); if empty, the track's sun settings are used.
    time_of_day=
    ; Speed of time progress; 0 if no progress, 1 for real-time etc.
    fast_time_factor=0
    ; Use actual system time for sun? (take real time of day if time_of_day is empty; overrules the track's special.ini gfx.time setting)
    auto_time_of_day=0
    ; Day-night zapping in the middle of a session
    day_night_ramp=0
    ; Start time for ramp (in minutes from midnight)
    day_night_ramp_start=14*60
    ; End time for ramp
    day_night_ramp_end=23*60
  }
  smoke
  {
    ; Number of particles reserved; the more, the slower things may be,
    ; but nicer graphics (decrease fx.interval for best effect)
    particles=200
  }
  ; Fade value if car has a problem (to prevent sickness); may need to be >0.5 to have an effect
  problem_fade=0.95
  ; Fade alpha scale (to keep fade from fully fading)
  fade_alpha_scale=0.2
}
filter
{
  ; These settings are overruled by the new gfx engine in Racer v0.5.2
  ; Use mipmapping? 0=none, 1=nearest, 2=linear
  mipmap=1
  ; Use trilinear filtering? If mipmap=0 and trilinear=1,
  ; bilinear filtering is used instead.
  trilinear=1
  ; Max anisotropy; the higher, the better the filtering
  ; Only supported on some cards. Values 1..?. 1 will not use any
  ; anisotropy, starting from 2 you'll get results.
  max_anisotropy=16
}
envmap
{
  ; Enable old-style spherical environment mapping?
  enable=1
  ; Live updating of track environment map? (very costly)
  live_track=0
  {
    ; Number of cubemap sides to update per frame (less=faster but more jerk)
    sides_per_frame=6
    ; Frames per update; each update, 'sides_per_frame' sides will be rendered (!). Default is 1.
    frames_per_update=1
    ; Use an offscreen FBO? Faster, better
    fbo=1
    ; Number of FBO bits; 8 or 16 (HDR)
    bits=16
    ; Size of FBO (width & height)
    size=512
    ; Render once? This will generate a nice map, but never update it. Very fast
    render_once=1
  }
  ; Dozens of options controlling live track map should come here. :)
  ; Default environment map image for sphere environment mapping
  default_texture=smap_whitesun_add.tga
}
shadow
{
  ; Use projected shadow for cars (on tracks)? Turn off when using shadow mapping (CSM).
  project_shadows=1
}
renderer
{
  ; Gfx engine rendering options
  ; Desired framerate - will reduce detail dynamically to obtain the framerate (0 to disable)
  desired_fps=0
  ; Throttler detail limits (0=nothing drawn, 1=full detail, >1=increased visibility range)
  min_detail=1.0
  max_detail=1.0
  paint
  {
    ; Show wire frame?
    wireframe=0
    ; Show vertex normals?
    normals=0
    ; Show triangles? (default=1)
    triangles=1
  }
  ; Note that some fog parameters are defined in <track>/special.ini
  ; Enable fog? (shaders can still turn fog off)
  fog=0
  ; Use array elements instead of 1 drawelements?
  use_array_elements=0
  ; Use single pass rendering instead of multitexturing? Don't set at 1 if you use Cg shaders
  single_pass=0
  ; Support Vertex Buffer Objects? (for cars and/or tracks). Often increases framerate if enabled.
  use_vbo=1
  ; Support projected lights? (default=1)
  projected_lights=1
  ; CSM shadow mapping
  shadowmapping
  {
    ; Enable shadow mapping? If enabled, changes the Cg shader directory to
    ; data/renderer/shaders_hdr_csm (!) instead of data/renderer/shaders_hdr
    enable=0
    ; debug mode (paints splits)
    debug=0
    ; size of the debug polygons rendered
    dbgsize=128
    ; Blur the shadowmap? (slower)
    blur=1
    ; Profiles for different camera types
    profile0
    {
      ; outside car
      ; nr of splits used, each split takes one extra render loop (3 should be enough)
      splits=4
      ; texture resolution; MUST match that in data/renderer/common/constants.cg!
      mapsize=1024
      ; split distances 0 - 3, each distance higher than the previous one; now in data/renderer/common/constants.cg? (not true probably)
      splitdist0=10
      splitdist1=40
      splitdist2=160
      splitdist3=640
      ; the amount of frames to skip to increase performance
      splitrenderjump0=0
      splitrenderjump1=0
      splitrenderjump2=0
      splitrenderjump3=0
      ; offset the framecount for jumping frames
      splitrenderoffset0=0
      splitrenderoffset1=0
      splitrenderoffset2=0
      splitrenderoffset3=0
      ; debug mode (paints splits)
      debug=0
      ; size of the debug polygons rendered
      dbgsize=128
    }
    profile1
    {
      ; inside car
      ; nr of splits used, each split takes one extra render loop (3 should be enough)
      splits=4
      ; texture resolution; MUST match that in data/renderer/common/constants.cg!
      mapsize=1024
      ; split distances 0 - 3, each distance higher than the previous one; now in data/renderer/common/constants.cg? (not true probably)
      splitdist0=5
      splitdist1=30
      splitdist2=150
      splitdist3=850
      ; the amount of frames to skip to increase performance
      splitrenderjump0=0
      splitrenderjump1=0
      splitrenderjump2=0
      splitrenderjump3=0
      ; offset the framecount for jumping frames
      splitrenderoffset0=0
      splitrenderoffset1=0
      splitrenderoffset2=0
      splitrenderoffset3=0
      ; debug mode (paints splits)
      debug=0
      ; size of the debug polygons rendered
      dbgsize=128
    }
    mapsize=1024
    shadowintensity=0
  }
  rain
  {
    ; Method of rain; 0=fullscreen poly (old), 1=Project Gotham Racing 4 particle boxes
    method=1
    ; Method 1: particles per box (there's a maximum of 20 boxes); default 10000 (rain 1 means 20*10000 particles visible); max=10900
    particles_per_box=10000
  }
  bloom
  {
    ; Bloom on top of HDR - keep it on
    enable=0
    ; Size of first bloom FBO (more are created, each half the size of the one before)
    width=256
    height=256
  }
  auto_exposure
  {
    ; If enabled, calculates luminance of the scene and automatically adjusts the 'exposure'
    ; It then overrules any exposure setting from track special.ini files or the script 'exposure' command
    enable=1
    ; Time per luminance sample (increase value to improve framerate)
    time_per_sample=500
    ; Exposure is calculated using: gradient/sceneLuminance+offset (this was changed in v0.8.18)
    offset=0
    gradient=0.35
    ; Minimal exposure
    min=0.0
    max=1000.0
    ; Gradually change exposure with a Kalman filter (values around 0..1; close to 0=slow)
    filter_gain=0.001
  }
  motion_blur
  {
    ; Method: 0=disabled, 1=OpenGL accumulation buffers, 2=blur-texture, 3=bitmap (not functional), 4=FBO (fast texture based)
    ; Preferred is FBO (the future is going to do more & more with FBO's due to Cg shaders)
    method=0
    ; Direct setting of FBO size (if 0, the window size is used) - only used for multiview+mirrors currently
    fbo_width=0
    fbo_height=0
    ; Use stencil buffer? (default=0) - use 0 when using shadowmapping, 1 when using the old projected shadows
    stencil=0
    ; (Method 1 only) Motion blur using accumulation buffers; 0=don't use, >1=number of passes (renders); can be slow!
    passes=4
    ; (Method 1 only) Mix scale; <1=darken, >1=brighten (sort of HDR)
    accum_factor=1.0
    ; (Method 2 & 4) Amount of blur; 0=nothing, 1=lots of blur. 0.5 seems reasonable. Based on a 100fps rate and adjusted accordingly.
    blur_alpha=0.3
    ; (Method 4 only)
    fs_filter1=passthrough.cg
    ; (Method=4 only) Number of color samples for multisampled FBO (0=no multi-sampling, 2/4/8/16=samples); only works on nVidia cards 8xxx series and up
    samples=4
    ; CSAA coverage samples (only supported on nVidia cards that support CSAA)
    ; Typical use: CSAA 16x: samples=4, coverage_samples=16. Much faster than plain MSAA (samples=16).
    coverage_samples=16
    ; Generate velocity map? (for use in fullscreen shader) Creates velocity values in R & G channels using motion_blur_v/f.cg shaders.
    velocity_map=0
    ; Distortion for projectors
    distorter
    {
      ; Enable distortion? (also set motion_blur.fs_filter1 to bloom_distort_edge_lr_f.cg for example if enabled)
      enable=0
      ; Enter edit mode at startup?
      auto_edit=0
      ; Enable a test pattern at start 
      init_testpattern=2
      ; Transparency of control points
      points_alpha=1.0
      ; Texture size (must be a power of 2)
      texture_size=1024
      ; Control points defining a net to fit the screen in. The points are normalized
      ; (so 1 means the right or lower side of the screen, 0,0 is the origin at the top-left)
      ; Number order is row-column, so control_point_10 means row 1, col 0.
      control_point_00=0.000000 0.000000
      control_point_01=0.250000 0.028320
      control_point_02=0.500977 0.066406
      control_point_03=0.750000 0.026367
      control_point_04=1.000000 0.000000
      control_point_10=0.009766 0.250000
      control_point_11=0.250000 0.250000
      control_point_12=0.500000 0.250000
      control_point_13=0.750000 0.250000
      control_point_14=0.987305 0.250000
      control_point_20=0.024414 0.500000
      control_point_21=0.250000 0.500000
      control_point_22=0.515625 0.483398
      control_point_23=0.750000 0.500000
      control_point_24=0.977539 0.500000
      control_point_30=0.000000 0.750000
      control_point_31=0.250000 0.750000
      control_point_32=0.500000 0.750000
      control_point_33=0.750000 0.750000
      control_point_34=0.985352 0.750000
      control_point_40=0.000000 1.000000
      control_point_41=0.250000 1.000000
      control_point_42=0.500000 0.971680
      control_point_43=0.750000 0.989258
      control_point_44=1.000000 1.000000
    }
  }
  ; Enable depth of field rendering? (experimental); needs motion_blur_passes>=2
  depth_of_field=0
  ; Force ATI card? A number of measurements may be taken, since ATI drivers have some problems.
  ; Note that v0.5.3 beta 8+ already automatically tries to detect ATI cards and overrules this value
  ; if an ATI card is indeed found (will force it to 1).
  ati=0
  ; Fader PID proportional setting; 0.002 is ok, 1 means superfast fades
  fgr_pid_p=0.002
  edge_blend
  {
    ; Software edge blending
    ; From v0.8.5, this needs to be done in Cg shaders, not a texture onscreen!
    ; Still, even with Cg, the p and gamma values are used.
    enable=0
    ; Curvature of edge fall-off (1=linear, 2=curvy, 3=more curved)
    p=2.000000
    ; Gamma of projector (around 1.8..2.2, 1.0=linear)
    gamma=1.93
    ; Size of edge ramp in pixels
    width=256
    ; Side (1=left, 2=right, 1+2=left&right)
    sides=0
    ; Testing the setup; draw a test image? (see also the script commands 'edgetest on' and 'edgetest off')
    test_pattern=0
    ; Transparency of test pattern (defaults to 128)
    test_pattern_alpha=128
  }
  gpu_shaders=1
}
lod
{
  ; Level of detail
  enable=1
  ; Modifying LOD values being loaded.
  ; 1=normal, <1=objects move out quicker, >1=objects stay visible longer
  factor=1.0
}
mirrors
{
  ; Simple rectangular mirror at top? Use the mirror texture!
  ; So if used, also enable texture.enable (set to 1)
  simple
  {
    ; Draw simple mirror on top of screen? If 1, also set mirrors.texture.enable to 1.
    enable=0
    ; Position (if undefined, it is centered horizontally and placed near the top vertically)
    ; Size of simple mirror (onscreen)
    wid=350
    hgt=120
  }
  ; Mirror texture
  texture
  {
    ; If you don't enable the simple mirror, you may also turn this setting off to save memory & render time
    enable=0
    ; Use an FBO to render into? (faster if you have the graphics power)
    fbo=1
    ; Anti-aliasing of mirror (normally 0, but 2/4/8/16 may look better)
    fbo_samples=4
    ; Texture size; the larger, the sharper, but also more costly
    wid=512
    hgt=128
    ; FOV in mirror view
    fov=40
    ; Update rate (1=update every frame, 2=update every 2nd frame, 3=every 3rd etc)
    update_rate=2
    ; Visibility in mirror (distance in meters)
    visibility=100
    ; Haziness in the mirror (default: 1.0)
    extinction_factor=1
    ; LOD factor (default: 1.0); keep it low to get fast rendering
    lod_factor=1
    ; Offset
    offset=0 0 0
    ; Angle offset (yaw, in degrees)
    angle=0
    ; Texture coordinates; normally 0 and 1. Use 0.5..1 for the left part (the mirror is reversed!)
    tc_x_start=0
    tc_x_end=1
  }
}
textures
{
  ; Big hack for faster loads during testing
  enable=1
  ; Quality; 1=max, 2=halfsize, 4=1/4th etc. Must be power of 2.
  quality=1
  ; Support texture compression? (default is 1 (on) unless shaders specifiy compression=0)
  compression=1
  ; Maximum texture size; useful to cut down on really big texturemaps
  ; or supporting ancient gfxcards that can only deal with 256x256
  ; texturemaps.
  max_wid=2048
  max_hgt=2048
}
shaders
{
  ; Faster loading during testing; if set to 0, no (Racer) shaders are loaded
  enable=1
}
;
; Debug settings
;
dbg_car
{
  ; Several physics settings - can have a big impact on car behavior, so proceed with care!
  ; Initial rotational speed
  av_yaw=0
  av_pitch=0
  av_roll=0
  ; Initial speed
  vx=0
  vy=0
  vz=0
  ; Car's grip, when set to 0, the level's values are used, else, this overrides the level's grip
  grip=0
  ; Engine's torque, when set to 0, the level's values are used, else, this overrides the level's torque
  torque=0
  ; Disable slipangle usage? (for steady-state acceleration tests)
  no_sa=0
  ; Disable pitch jacking forces?
  no_jack_pitch=0
  ; Disable roll jacking forces?
  no_jack_roll=0
  ; Wheel rotation speed at start (100 for example)
  wheel_rvx=0
  ; Enable suspension rotational movement?
  suspension=1
  ; Enable wheels touching ground? (if 0, it's all car-track collisions)
  wheel_road=1
  ; Enable gravity working on the body? Actually enables all chassis
  ; forces (suspension, aero, gravity). Gives a floating car if 0.
  ; DOES NOT WORK ANYMORE FROM V0.8.7!
  gravity_body=1
  ; Apply friction circle?
  apply_friction_circle=1
  ; Method; 0=Genta (prefers longitudinal forces)
  ;         1=vector trim (equal mix of forces)
  ;         2=void (don't combine forces; should be testing only)
  ;         3=Gregor Veble's combined Pacejka (FC_SLIPVECTOR)
  ;         4=Cruden combined (not really useful yet)
  ;         5=none (for MF5.2 testing; automatically used if Pacejka model is set to Magic Formula 5.2)
  ;         6=Beckman (=3 without factor limiting, see chapter 25)
  friction_circle_method=3
  ; Maximum slip length for combined slip calculations (5=understeery, 15=snap oversteers)
  max_slip_len=6.0
  ; Maximum tan(slipAngle); default is 0.75 (+/- 36 degrees), 20.0 (87 degrees) seems to work better
  max_tan_sa=20.0
  ; Maximum brake reduction when wheels stop spinning - default=0.2
  max_brake_reduction=0.2
  ; Adjust force direction when wheel starts locking?
  wheel_lock_adjust=1
  ; Apply friction (reducing) curve based on slip velocity?
  use_slip2fc=0
  ; Zero lateral tire forces? (focus on longitudinal only)
  lateral_tire_forces=1
  ; Automatic damping (car.ini's damping_predict_lat)?
  auto_damping=1
  ; Test for car-track collisions?
  track_collision=1
  ; On (multiplayer) collision, how much time to keep server master (steps)
  collide_time=25
  ; Use AABBTree to speed up wheel-track collision checking?
  use_aabb_tree=1
  ; Avoid using spline info in the track? (to compare WITH splines)
  no_splines=0
  ; Use suspension force instead of tire rate force to determine
  ; load for Pacejka curves? This may stabilize things a lot during
  ; braking, avoiding the tire's jittering behavior and using the more
  ; gradual and damped suspension force instead. I think that rules
  ; out wheel hop though.
  use_susp_as_load=0
  ; Maximum forces (to try to avoid sudden explosive physics)
  max_force=130000
  max_torque=130000
  ; Maximum tire penetration (limits tire load forces)
  max_tire_penetration=0.1
  ; Maximum camber angle (Pacejka doesn't work well with high camber)
  ; Angle is in degrees.
  max_camber=15.0
  ; Enable camber calculations? (sideway car movement bugs)
  enable_camber=1
  ; Start with AI driver?
  start_ai=0
  ; Limiting velocities to avoid adding too much energy
  ; 350 m/s is around Mach 1 (1260 km/h)
  ; NO LONGER ENFORCED (Newton)
  max_linear_velocity=350.0
  ; Max rotational velocity (radians/sec), to keep from overly spinning
  ; NO LONGER ENFORCED (Newton)
  max_angular_velocity=10.0
  ; Apply conservation of momentum after collisions?
  conserve_momentum=0
  ; #samples in conversion of torque curve to lookup-table (lut)
  engine_lut_steps=100
  ; Implicity integrate suspension? (much more stable since v0.8.7)
  susp_implicit_integration=1
  ; 24-07-08: suspension live rate slope was overly simple; set the next variable to 0 (default=1 for backwards compatibility)
  simple_susp_live_rate_slope=0
  ; Dampen wheel velocity when its sign changes? (perhaps more stable with really hard dampers, default=0)
  damp_vertical_velocity_reversal=0
  ; Add jacking forces in implicit integration mode (susp_implicit_integration=1), default is 0 for backwards compatibility
  ; 1 works well (?) for the F1-v2, 0 for older cars
  implicit_add_jacking_forces=0
  ; Use Tustin tire? (experimental; different integration of wheel movement, currently buggy)
  tustin_tire=0
  ; Damper force correction: 0=don't (before v0.6.3, v0.8.7+), 1=halfway to zero velocity (v0.6.3-v0.8.4), 2=to desired damper velocity (v0.8.5/v0.8.6)
  damper_correct_method=0
  ; Flip tan/atan in slipangle calculations? Default is 0 (v0.8.22 behavior)
  flip_tan=0
  ; Move CG to match nullpoint? Needed to fix CG problems (set to 1). Default=1; 0 is for backward compatibility.
  move_cg=1
  limit_arb_forces=0
}
ai
{
  ; Thinking rate (ms per step)
  time_per_update=1
  ; Looking ahead; velocity*lookahead_factor is the #meters the AI
  ; looks ahead (targeting)
  lookahead_factor=0.02
  ; Minimal lookahead distance; too smooth out steering at low speed
  lookahead_offset=1
  ; Steering response; frequency (lower=slower response, high=fast steering)
  ; Higher values reduce driver induced oscillation it seems.
  steering_frequency=100
  ; Throttle/brake response
  throttle_frequency=2
  ; Line adjustment factor; the higher, the more the car is pulled towards
  ; the driving line
  line_adjust=0.0
  ; Line adjust minimal distance; race distance to be completed before
  ; line adjusting starts
  line_adjust_distance=1
  ; Focus on AI car when it appears? (testing AI avoid other cars)
  focus=0
  ; Load AI lines at all?
  load_ai_lines=1
  ; Drive alongside player car? (matches velocity to stay near)
  ; Only works with car0=player, car1=AI
  drive_alongside=0
  ; Ignore other cars entirely?
  ignore_cars=0
  ; Velocity scale (global AI performance)
  scale_velocity=1.0
  ; Target U correction speed (default 1.0; lower is slower)
  target_u_correct=1.0
  ; Target smoothing to avoid jerky steering
  target_smd
  {
    mass=1
    k=140
    ; Keep damping close to optimal; sqrt(k)
    damping=10
    maxdist=0.5
  }
  ; Acceleration smoothing using PID controller
  pid_accelerate
  {
    proportional=-0.3
    derivative=0.01
    integral=0
  }
  pid_steering
  {
    proportional=100
    integral=0
  }
}
state
{
  ; Automatically load state at start? (simulates Ctrl-L)
  auto_load=0
}
dbg_controls
{
  ; Turn off controls altogether?
  update=1
  ; Debugging the engine (also set controls.update to 0 to keep control values)
  ; Throttle 0..1000
  throttle=500
  ; Brakes 0..1000
  ; Clutch 0..1000
  clutch=0
  ; Initial steering position (-1000..+1000)
  steer=90
  ; Road noise velocity factor (smaller=less road noise at low velocity)
  ; Only deals with low velocity situations!
  road_noise_factor=0.1
}
timing
{
  ; Speed of simulation; this time (in milliseconds) gives the number
  ; of milliseconds for each integration step. Internally, the granularity
  ; of time is 1/1000th sec. So laptime accuracy upto 1/1000th sec
  ; is possible.
  ; However, this is quite a lot of computing, and some computers may not
  ; be able to catch up with this. In fact, REAL time may then move faster
  ; than the computer can keep up with (in which case FPS becomes 0!).
  ; So I suggest 5ms for example. This will make the simulation run at 200Hz.
  ; Keep it at least below 10; a simulation running at anything less
  ; than 100Hz becomes more and more instable.
  integration_time=1
  ; Draw each frame? For debugging, it is handy to see every integration step,
  ; instead of doing realtime stuff, which may go much to quickly
  draw_every_step=0
  ; Pause every step? Only kicks in after the first car is loaded
  pause_every_step=0
  ; Slowmotion inserts <slomo> milliseconds of delay at every drawn frame
  slomo=0
  ; Exit after x frames?
  ; Exit after x physics steps?
  max_steps=0
  ; Quit Racer after max_steps physics steps?
  exit_after_max_steps=1
  ; Realtime scaling; actually allows slowmotion or fastmotion driving
  ; Scales the realtime clock.
  realtime_scale=1.0
}
gfx
{
  ; Display triangles of the spline surface?
  show_spline_tris=0
  ; Show car collision geometries?
  show_car_bbox=0
  ; Show movables collision geometries?
  show_movables_bbox=0
  ; Check OpenGL errors while running? (may slow down rendering)
  check_opengl_errors=0
  ; Show live envmapping render results? -1=none, 0..5=side selection
  show_live_envmap=-1
  ; Show car points/lines, like nullpoint, CG, rollcenters, contact patch locations,
  ; suspension, spline interpolated location (hit point), AI etc.
  show_car_points=0
  ; Show aerodynamics?
  show_aero=0
  ; Show AI lines (racing lines, lateral lines)
  show_ai_lines=0
  ; Show timelines?
  show_timelines=0
  ; Show best driving line?
  show_bestline=0
  ; Show traffic lines?
  show_traffic_lines=0
  bestline
  {
    ; Derive 'bestline' from which source: 0=AI (default), 1=ghostlap
    source=0
  }
}
collision
{
  ; Car-track CFM (constraint force mixing). Use a small value near 0 for default,
  ; and increase to make the car body softer
  cfm=0.0001
  ; Car-track ERP (error reduction parameter). Use a value close to 1 (0.9?) for
  ; default behavior, and reduce to decrease movements of the car when hitting
  ; an object (takes more integration steps to correct the car position)
  erp=0.6
  ; Friction coefficient for car touching track (or fences etc!)
  mu=0.5
  ; Body restitution; 0=bouncy, 30=clay, >40 bouncy again?
  restitution=15
  ; Restitution for network collisions (car-car)
  restitution_network=0.9
  ; Player car is never affected by collisions with AI?
  ai_collide_rock=0
  ; Do car-car collisions?
  car_car=1
  ; Report car-track collisions? (in console) (variable renamed on 8-4-09)
  ; Does not work on Newton for the time being
  report_car_track_collision=0
}
scripts
{
  ; automatically load scripts when loading track
  auto_load=1
  ; load rsx files ? skips rcx files with the same name in the folder
  load_rsx=1
}
log
{
  ; Logging telemetry groups (also use F3 to toggle logging while driving)
  enable=0
  ; Filename (in data/dump/) to log to (extension will be .log or .pds, depending on 'type' below)
  filename=log
  database
  {
    ; Alternative storage location (leave empty to store log files in data/dump)
    ; If defined, this will use the filename <cid>/<date>_<time>.<extension>, automatically creating
    ; customer folders
    dir=
  }
  ; #ms per logging entry
  period=100
  ; Allocated buffer in milliseconds (#samples allocated=buffer_time/period); default is 30 minutes (30*60*1000)
  buffer_time=1800000
  ; Logging type (0=ASCII file, 1=PI Toolbox PDS (.pds, commercially only), 2=Racer Telemetry Data (.rtd))
  type=2
  groups
  {
    ; Suspension lengths (for ASCII, also the ARB force)
    suspension=1
    ; Slip angle per wheel
    slip_angle=0
    ; Slip ratio per wheel
    slip_ratio=0
    ; Tire forces (Fx/Fy/Fz); currently unsupported for PDS output (only ASCII)
    tire_forces=0
    ; Steering angle (per wheel) & force feedback
    steering=1
    ; Throttle/brake/clutch (clutch stored is actual controller input, no auto-clutch included)
    controls=1
    ; Orientation is unsupported for PDS output
    orientation=1
    ; XYZ and distance (in PDS, only distance is recorded)
    position=1
    ; Car velocity (3D in ASCII, 1D in PDS/RTD)
    velocity=1
    ; Angular velocity (not supported in PDS)
    angular_velocity=0
    ; AX/AY/AZ m*s^-2
    acceleration=1
    ; RPM, Gear, Engine torque
    engine=1
    ; AI (ai_line_delta)
    ai=0
    ; Lap info (sector and lap; only supported for RTD)
    lap=1
  }
}
camera
{
  ; Initial camera mode (0=car, 1=track, 2=heli, 3=director/disco)
  initial_mode=0
  ; Initial car camera (if initial_mode=0)
  initial_car_camera=0
  ; Focus on last network car that entered?
  focus_network_car=0
  ; Focus on front (pole) car?
  focus_front_car=0
  ; Automatically switch track and director camera modes every now & then?
  auto_switch_director_track_cam=0
}
stability
{
  ; Test going from menu into game and back again. Waits a couple of seconds, then
  ; runs the game, exists again etc.
  ; This is to find bugs which only appear every couple of hours.
  test_inout=0
  ; Number of seconds to stay racing
  time_to_race=5
  ; Number of seconds in menu
  time_in_menu=2
}
levels
{
  level0
  {
    name=Pro
    grip=1.0
    torque=1.0
    ; FCS Motion override (1=Racer_GTilt, 2=Racer_0, 3=EPhyse)
    system_model_switch=1
  }
  level1
  {
    name=Semi-pro
    grip=1.2
    torque=0.75
    ; FCS Motion override
    system_model_switch=1
  }
}
pacenotes
{
  ; Location onscreen (center!) in virtual 800x600 screen
  x=400
  y=30
  ; Size
  wid=100
  hgt=100
}
dev
{
  ; Development options
  ; If strict mode is set to 1, any errors are treated as fatal when loading tracks/cars and Racer exists immediately
  ; Use this mode if you're developing cars or tracks to make sure they're clean (generate no QLOG warnings/errors)
  strict=0
  ; Leave message in QLOG on car.ini values that are taken from data/cars/default/car.ini instead of car's car.ini?
  ; Will generate a lot of noise, only for use while developing car.ini files.
  note_ini_fallback=0
  ; Report unused ini items for cars? Useful to hunt for typos.
  note_ini_unused=0
  ; Show QLOG at exit automatically, if it contains errors or warnings? Only works on Windows (runs Notepad).
  log_last=0
  ; Debug messages, sends UDP packets to host:port (for use with a UDP terminal, such as 'udpterm')
  udp_out=
  ; Network wait to let a remote PC enter before the local one (multiplayer tests)
  ; In Racer upto v0.5.5, this leads to swapped driver names & cars
  wait_for_remote_client=0
  ; Fast start for BoundsChecker runs? (skips many driver inits for example)
  fast_start=0
  ; Add geometry triangles to AABB tree? (default: 1)
  add_geometry_to_aabb=1
  ; Optimize Newton collision trees (delete trackcollision.bin in the track's cache/ directory first to regenerate) - default is 1
  optimize_newton_tree=1
  ; Show memory reports in console?
  show_memory_usage=0
  ; Fake stats for sorting tests
  fake_laptime=0
  ; Hide audio for local car? (to listen to multiplayer cars)
  no_local_car_sound=0
  ; Force output of race results to statsclient even if the race is aborted?
  force_out_race_results=0
  ; Cache geode loading? (default:1); currently buggy when skinning cars
  cache_geodes=1
  internet_simulator
  {
    ; Enable delaying of packets sent out of the machine? (much better to use an extra machine with delayed portforwarding)
    enable=0
  }
  ; Flash screen every second? Used for network timesync tests to check timesyncing
  flash_network=0
  ; Use nVidia PerfSDK counters? (need instrumented driver; install PerfHUD) - default is 0
  nvidia_perf=0
}

How I can solve it? Thanks in advance.
 
Turn off "autoexposure" and you may have to adjust the TOD values will help fix that problem. Both code list show autoexposure = 1 and I don't use it as it has problems. If that doesn't fix it I can post my racer.ini and TOD files.
 

Latest News

Are you buying car setups?

  • Yes

  • No


Results are only viewable after voting.
Back
Top