Slope Soaring Simulator
About Screenshots Download Documentation Documentation

Crawling

Don't forget that you'll need hardware-accelerated OpenGL if you don't want the graphics to bring everything to a grinding halt...

Running

If you followed the download instructions, you should have ended up with a directory structure containing sss.exe and various folders containing textures etc. It should look like this.

To run it, under Windows find sss.exe and double-click on it. Alternatively, go into the "batch_files" folder and run one of .bat files.

Under Linux/Unix enter the directory and type "./sss".

A few seconds later the main graphical window should appear and you're ready to go...

Flying!

You start off in a paused state. Press "p" to unpause, and thus launch the glider. To control it, either:

  1. Press "c" and enable the joystick mode (if you have one). The joystick should work... also the right mouse button will give you some acceleration to get you out of trouble. [Note: I experience problems with the GUI configuration window when it overlaps the main window. If this happens to you, either make the windows not overlap, or try pressing 'f' to go into fullscreen mode before pressing 'c' - this seems to work for me).
  2. The initial configuration is to use the mouse for control. The mouse acts like the top of a joystick - center it by moving the pointer to the center of the screen (when the plane is). Moving the mouse towards you (so the mouse pointer moves down on the screen) is like pulling back on the joystick etc. It takes a while, but after a while you get used to it! Again, the right mouse-button gives you an extra boost...
  3. Use the arrow keys. I hate controlling it like this!

There are a whole load of other keyboard controls to let you set/toggle options. Here are some:

  • "b" and "g" swap between views from the body and glider.
  • "c" toggles the configuration GUI.
  • "r" re-launches the glider from its original location.
  • "o" creates a new robot pilot, which "focuses" on the region currently in upwaind of of the body. "O" removes a robot glider.
  • The arrow keys move the body - up is towards the current glider position etc.
  • "m" and "j" toggle between the 'vanilla' mouse/joystick control modes. For other modes (e.g. 3-axis joystick), edit sss.cfg
  • "p" toggles the pause. After pressing "p" twice, clicking in the main wind should get you some graphics options.
  • "t" switches between different amounts of text output - more text slows things down a fair bit, I find.
  • "=" and "-" change the field-of-view, effectively zooming out/in.
  • "0" and "9" increase/decrease the terrain level of detail - decreasing the detail will make things run faster.
  • "1" and "2" adjust the trim on the elevator and aileron/rudder channels (i.e. move your joystick so that the glider pitch feels trimmed, then press "2").
  • "w" (hold it down for a few seconds) and "W" display/remove wind tracers, so you can see the wind direction and lift regions.
  • "f" enables full-screen mode (a one-way option at the moment).
  • "q" or escape quits, but you won't want to be pressing this very often...;-)

You can adjust all these things, and many more, by editing the file sss.cfg (Windows users, use Notepad or (preferably) Wordpad). Each line in this file starts with a option (attribute) and is followed by its value. In addition, one of the attribute lines is glider_file and the value for this tells SSS where to look for the glider model. At the moment there are a number of different gliders - try using glider_file glider_rudder.dat or glider_file glider_eagle.dat (or one of the other glider_*.dat files). And then go and write your own glider file!

As for how to keep the glider up - well you should start near to the top of a hill with the glider pointing into the wind (there's a small chance that the computer-generated terrain is hopeless, in which case you'll have to quite and start again). When it launches fly straight ahead for a bit, then turn and fly parallel to the slope, where the lift is. Before the glider gets too far away, turn (away from the slope) through 180 degrees and come back again. If you're using the mouse (hard at first, but eventually it's easy), remember that you have to consciously center it. Of all the gliders, glider_rudder.dat is probably the most stable and easiest to fly.

You can fire a missile with the space bar or left mouse button. It's quite fun trying to shoot down the robot gliders...

If it doesn't seem to work (properly)

  • If things are running terribly slow - just 1 or two frames per second, you propably haven't got hardware 3D graphics acceleration for OpenGL. Either get a decent graphics card, or download more recent drivers from the card maker.
  • If it runs OK, but isn't as smooth as you'd like try:
    1. Decreasing the terrain size (if using a random terrains) - e.g. to 129 in sss.cfg
    2. Use "peaks" instead of "midpoint" in sss.cfg (if you're using a random terrain).
    3. Disabling thermals (set thermal_density to 0 in sss.cfg)
    4. Don't launch too many robot gliders.
    5. Reduce the terrain detail (press '9' quite a few times) and then disable "view frustum culling" - just press 'c' once(!).
    6. Decrease the physics frequency in sss.cfg, though not too much (can cause glitches).
  • Having difficulty following the robot gliders (when in the glider view)? increase the field-of-view by pressing '=' (i.e. '+' without the shift key). Also try using the glider_wing.dat model.
  • Sometimes the start position isn't ideal - move the body around using the arrow keys.
  • Sometimes the start position is under water!!! Just restart the program (yes, I'll fix it...!)

If it doesn't work at all!

A few people have reported problems getting SSS to run, though it's very difficult for me to know if this is a problem with SSS or their configuration (since I can't make it crash on any machine I try!). Here are some things you can try:

  1. Run it via run_no_3d.bat (or "./sss sss_no_3d.cfg" under linux). If this works, gradually bump up the graphics details via the config window and see what breaks it.
  2. Try running with different numbers of robot gliders - some (maybe 1!) people have said that it crashes when there are NO robot gliders!
  3. Make sure everything unzipped correctly - remember the directory structure should look like this.
  4. Run it via run_debug.bat (or "./sss sss_debug.cfg" under linux). This will generate a lot of debugging information in the file sss.log. After it crashes, have a look at the bottom of sss.log (open with WordPad, for example) and it may give you a clue as to what it was doing when it crashed.
  5. Email me the sss.log file, your system specs (especially operating system and graphics card + confirm you've got reasonably recent graphics drivers) and I'll look into it.

Please do let me know if you can't get it to work!

Dynamic Soaring

Edit sss.cfg to use:

  • wind_scale 2.0
  • wind_file ds
  • builtin_terrain_type ridge
  • glider_file glider_crrcsim.dat
and use the f3f crrcsim model.

There's a batch file/config set up to do this.

Multi-player

Multiplayer is still very much work-in-progress (well, more unfinished!). To run it, you need to specify some extra options:

sss [port to listen on] [ip-addr1] [port1]

Under Windows, at the moment this means running it from within a DOS box. So, start up a MS-DOS box (you must still be running Windows), and change directory to where you unzipped all the files - e.g. type cd C:\sss.

You will also need to find out (a) what your computer's IP address is and (b) what the IP address of the "other" computer is. Under unix/linux use kppp or ifconfig to find out your ip address. Under Windows open a DOS window and type ipconfig (after connecting to the internet). The IP address of your computer is the first address listed.

Lets say you want to run the simulator on two computers, 135.96.54.24 and 134.96.55.12:

  • on 135.96.54.24 use sss 50001 134.96.55.12 50002
  • on 134.96.55.12 use sss 50002 135.96.54.24 50001

When each instance of sss starts it will wait in an initialisation phase for connections from the other simulations. Only when it receives all expected connections will it start. Once it is running it won't accept any new connections (yet).

One paramter you can tweak is remote_update_freq in sss.cfg. This indicates how many times per second to do networking stuff. It alternates between sending and receiving. Each glider update message is around 110 bytes (rather a lot) - note that there will be one of these for every object involved in networking (at the moment just gliders). So, if there are two players and no robot gliders, a remote_update_freq value of 30 will result in 110 * 30/2 = 1650 bytes/sec out and 110 * 30/2 = 1650 bytes in per second. This is 26.4Kbits per second, so should be OK n a standard 56K modem... Let me know if it works for you!

You can also toggle a "jitter reduction" algorithm by pressing 'i' (or set the value in sss.cfg). At this stage I'm not sure if the algorithm makes things better or worse...

NOTE: You need to have the same configuration files for each of the simulations. You can tweak some things (e.g. window size, graphics options etc), but nothing that really affects the simulation - e.g. terrain generation parameters etc. Otherwise confusion will follow!

Things to do

In no particular order:

  • Improve the aerodynamics.
  • Get some parameters of real (model) gliders.
  • Implement some other aerodynamic models.
  • Use the energy dissipation rate due to turbulence, output from the numerical model, to perturb the wind field
  • Find a more appropriate model for the wind-field calculation - the current model is being run quite a bit below the minimum recommended resolution.
  • Use terrain data from a real hill
  • Generally improve the graphics - nicer plane, body, ground texture, sky, shadows etc.
  • Add support for RC transmitter interfaces.
  • Other objects, and therefore proper collision detection/response...
  • Full Multi-player support...
  • Generally tidy up the code.

Known bugs

  1. Some cracks in the terrain at the edges with geo-morphing.
  2. I don't think that the view-frustrum culling is quite right - even when looking from the body view the triangle distibution changes.
  3. Sometimes the start position is under water (when SSS gets to choose the start position).
  4. If the body is moved on top of the glider, the view projection breaks.
  5. When compiling with gcc-2.* the template code (in sss_config.cpp) seems to make the compiler misbehave when optimisation is enabled. The fix is to either use gcc-3.* (I have v3.0.1), or to compile just the difficult source file by hand without optimisation. I need to find out what is causing this to happen...

Version history

v2.8.2 - v2.10.2

  • Fix two major bugs - one during loading of 3DS models, and another when probing for OpenGL extensions (only seemed to hit XP users!).
  • Smoke/Flame effects using particles.
  • Support for a nicer skybox.

v2.8.1 Jan 20 2003

  • Allow robots to fire missiles

v2.8.0 Jan 19 2003

  • Demo/race modes

v2.7.2 Jan 12 2003

  • Fix missile bug (sometimes it would explode immediately after launch).

v2.7.1 Jan 3 2003

  • Bug fix where collisions could cause crashes
  • Doesn't crash/exit if audio can't be initialised
  • Reduce unnecessary network-prompted updates which could cause freezes

v2.7.0 Dec 28 2002

  • Use FMOD for 3D sound (or plib if built without FMOD)
  • Choice of integration schemes - 1st order Euler to 2nd order Range Kutta
  • Ground collision improved (now matches the display)
  • (Optional) moving control-surfaces when using "component" graphics
  • Minor performance tweaks

v2.6.3 - 2.6.6

  • Run-time tracing/log file.

v2.6.2 Dec 10 2002

  • Improve physics timestep (more stable + accurate).

v2.6.1 Nov 18 2002

  • Minor tweaks - fix an uninitialised variable, disable backface culling in the 3ds displayer, uses the "use_audio" param in the config

v2.6.0 Nov 7 2002

  • Runtime wind calculation - quicker startup, no memory problems, and you get to choose the direction.
  • Allow a single texture to map the whole terrain.

v2.5.2 Oct 30 2002

  • now there is a tiff_to_orog (at least in the source)
  • specify glider file on the command line

v2.5.1 Oct 29 2002

  • Text done using plib (much faster).

v2.5.0 Oct 27 2002

  • Sound
  • Auto-zoom - to zoom in a little bit as the glider gets further away.

v2.4.0 Oct 22 2002

  • Using plib to obtain better joystick support

v2.3.1 Oct 20 2002

  • Improve separation layer (reverse flow) in the wind field for dynamic soaring.
  • Smooth body movement
  • non-linear control input

v2.3.0 Oct 14 2002

  • Allow a separation layer in the wind field for dynamic soaring.
  • built-in ridge and plateau terrain.

v2.2.0 Oct 9 2002

  • Ability to read crrcsim glider files

v2.1.4 September 28 2002

  • Small changes to networking to reduce jitter.
  • Start of "quidditch" mode...

v2.1.2 August 18 2002

  • changes to the glider model are transmitted during networked operation.
  • attempt to reduce effects of jitter (needs testing)

v2.1.1 August 17 2002

  • Multi-player now works under Windows (after much gnashing of teeth).

v1.9.4 August 4 2002

  • Flexible control methods - mouse/joystick or a mixture

v1.9.3 August 1 2002

  • more robust handling of bad velocity/rotation values in the simulation. This allows missile hits to be treated as kicks to the recipient glider, without causing the simulation to blow up.

v1.9.2 July 23 2002

  • Note in config GUI that joystick/mouse need to be selected using keyboard (why?!)
  • glider 'chase' view

v1.9.1 July 21 2002

  • Allows changing of the glider type and thermals at run-time.

v1.9.0 July 21 2002

  • GUI configuration (first attempt)

v1.8.1 July 15 2002

  • Fix for a sky-drawing bug
  • Very basic collision detection/response between objects

v1.8.0 July 14 2002

  • Added thermals

v1.7.0 July 12 2002

  • Coded some very basic "robot" gliders that you can fly along with, and even attempt to shoot down (possible, but tricky)

v1.6.0 July 3 2002

  • Big terrain changes - can create terrain using mid-point displacement.
  • Improved fake wind calculation
  • When using terrain_file = none, calculates a reasonable guess for the starting position.
  • Does view-frustrum culling (major speed-up)
  • The terrain data does not need to be pre-processed - i.e. it can be provided as a flat file structure. The tree structure is computed at run-time (and cached to a file).
  • Terrain geo-morphing - reduces "popping" effect so that lower levels of detail are acceptable.

v1.4.3 May 28 2002

  • Slight change to the physics simulation - introduction of a physics object (in anticipation of collisions...)
  • Can now set "trim" on the fly by pressing the channel number
  • Improvements to the builtin terrain generation
  • configurable clipping plane distances (problem with GLUT)

v1.4.2 May 22 2002

  • Able to generate a not-very-decent terrain/wind-field on the fly (should work on non x86 machines).
  • Support loading of 3DS models - hence the new eagle glider model!

v1.4.1 May 20 2002

  • Fixes/workarounds to get code building under Windows.

    v1.4.0 May 15 2002

    • Almost complete re-write/re-organisation of the internal workings. Almost no external changes (except minor change to glider config file structure).
    • Improved sun flare + "beach".

    v1.3.2 April 13 2002

    • Improved turbulence code, and added "tracers" so the wind flow can be seen.
    • Small changes to the configuration file structure.
    • Two new terrains created - one with a high-resolution wind field, and a small one allowing dynamic soaring.

    v1.3.1 March 24 2002

    • Improved aerofoil code - in particular allowing for pitching moments (i.e. flying wings)
    • Initial stab at turbulence parameterisation

    v1.2.1 March 18 2002

    • Ground detection!

    v1.1.1 March 10 2002

    • Terrain data stored in quadtree structure -> faster rendering (= larger terrain).
    • Joystick support

    v1.0.7 Feb 19 2002

    • Lens flare

    v1.0.6 Feb 11 2002

    • Glider shadow

    v1.0.5 Dec 27 2001

    • Improved ground textures, fog improvement + clouds

    v1.0.4 Dec 12 2001

    • Glider drawn as in the config file

    v1.0.3 Dec 8 2001

    • Multitexturing - large scale terrain texture + fine scale detail.

    v1.0.2 Nov 25 2001

    • Fix to bug where the aerofoil inclination wasn't being accounted for properly.
    • slight changes to config files - planes are more realistic even though the parameters are less realistic.

    v1.0.1 Nov 21 2001

    • First "release"

    Summer 2001

    • Started coding... (not knowing any OpenGL, aerodynamics, graphics etc!)
  • SSS