Don't forget that you'll need hardware-accelerated OpenGL if you
don't want the graphics to bring everything to a grinding halt...
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
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...
You start off in a paused state. Press "p" to unpause, and thus
launch the glider. To control it, either:
- 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).
- 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
- 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
- "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
(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:
- Decreasing the terrain size (if using a random terrains) -
e.g. to 129 in sss.cfg
- Use "peaks" instead of "midpoint" in sss.cfg (if you're using
a random terrain).
- Disabling thermals (set thermal_density to 0 in sss.cfg)
- Don't launch too many robot gliders.
- Reduce the terrain detail (press '9' quite a few times) and then
disable "view frustum culling" - just press 'c' once(!).
- 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:
- 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.
- Try running with different numbers of robot gliders - some (maybe
1!) people have said that it crashes when there are NO robot gliders!
- Make sure everything unzipped correctly - remember the directory
structure should look like this.
- 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.
- 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!
Edit sss.cfg to use:
and use the f3f crrcsim model.
- wind_scale 2.0
- wind_file ds
- builtin_terrain_type ridge
- glider_file glider_crrcsim.dat
There's a batch file/config set up to do this.
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 -
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, 184.108.40.206
- on 220.127.116.11 use
sss 50001 18.104.22.168 50002
- on 22.214.171.124 use
sss 50002 126.96.36.199 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
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
- 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.
- Some cracks in the terrain at the edges with geo-morphing.
- I don't think that the view-frustrum culling is quite right -
even when looking from the body view the triangle distibution changes.
- Sometimes the start position is under water (when SSS gets to
choose the start position).
- If the body is moved on top of the glider, the view projection
- 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...
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
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
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
- 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
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
- 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
- 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
v1.1.1 March 10 2002
- Terrain data stored in quadtree structure -> faster rendering (=
- Joystick support
v1.0.7 Feb 19 2002
v1.0.6 Feb 11 2002
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
- slight changes to config files - planes are more realistic even
though the parameters are less realistic.
v1.0.1 Nov 21 2001
- Started coding... (not knowing any OpenGL, aerodynamics, graphics etc!)