Version 0.54   15th May 2000


Contents

      1. Required Runtime Environment

      2. Introduction to Boids

      3. Stopping and Starting the Simulation

      4. Controlling the Camera View

      5. Manipulating the Scene's Objects

      6. Landscape Options

      7. Controlling the Boid's Behaviour

      8. Saving and Restoring Boid Configurations to and from Disk

      9. Display Mode Options

      10. Known Issues or Problems

      11. About the Author

      12. Version Information





1. Required Runtime Environment

Known to work properly in:
   Windows 2000, Windows NT4 with Service Pack 3 or above installed
   Windows 95, 98 & 98 2nd Edition
   (All known win32 environments with DirectX 3 or above)

To run the simulation you will need:
   Microsoft's DirectX version 3 or above installed.
   16 bits or more colour depth display mode
   (it does not use 256 colour mode palettes).

To improve the frame rate, which is crucial to the simulation:
    - Reduce the number of boids.
    - Use the smaller boid meshes.
    - Reduce the landscape features.
    - Reduce the number of active boid behaviours.
    - Use an accelerated graphics card.
        I recommend the GeForce range, nearly triple the frame rate with hardware
        transform and lighting.  Visit www.nvidia.com for more details.
    - The faster the CPU the better.
    - Use a Windows NT Kernel operating system.
    - Use NT with multiprocessing ( more than one CPU ).

If you are using Windows 95 without DirectX drivers, visit:
    www.microsoft.com/directx/homeuser/downloads/  to update your system.




2. Introduction to Boids

Boids were originally invented by Craig Reynolds and are quite simply a model of the flocking, herding or schooling behaviours observed with intelligent lifeforms.  The grouping behaviour for the boids is produced by the application of just three simple rules:

1. The attraction of the boids to each other.
2. The adjustment of each individual boid's velocity to match up with the rest of the flock's velocity.
3. The avoidance of any direct collisions with any other boids, objects or landscape.

All the behaviour produced from each boid is a resultant combination of these three individual boid behaviours, within it's local environment.  Boid behaviour therefore is a good model of a cellular automaton, where there can be an emergence of group behaviour.  The implementation of the boid behaviours can be varied using very basic or advanced programming techniques.  Basic boids would just inhabit a blank two dimensional plane and follow simple averaging algorithms.  Advanced boids could live in a complex three dimensional environment with obstacles ect.  Their behaviour could be influenced by much finer details, like their field of vision and movement characteristics, which could even be particular to each boid.

Elaboration of boid details can go on and on indefinitely.  But the essence and underlying framework for all boid simulations, is just the deployment of the three simple rules to produce the complex and fascinating emergent behaviour.




3. Stopping and Starting the Simulation

There are three ways in which to stop or restart the simulation:

   1. Pressing the Start/Stop button at the bottom of the control panel.
   2. Selecting the Start/Stop option from the 'Main' drop down menu.
   3. Pressing the space bar.

When the simulation is stopped, only the boids motion is affected.
Therefore most of the other features still remain active.




4. Controlling the Camera View

There are four ways to manipulate or change the camera view:

    1. Using the sliders on the right hand side control panel.
    2. Pressing the 'Centre Angle' button on the control panel.
    3. Using the menu items from the 'Camera View' drop down menu.
    4. Directly pressing the menu's accelerator keys.

When there are no boids present in the scene, the view 'To Boid' becomes unavailable.


The Camera Menu Accelerator Keys:
From Above
To Boid
Looking North
Looking East
Looking South
Looking West
+ Camera Position
- Camera Position
+ Camera Rotation
- Camera Rotation
Centre Rotation
NumPad5
NumPad*
NumPad8
NumPad6
NumPad2
NumPad4
Up Arrow
Down Arrow
Right Arrow
Left Arrow
Home




5. Manipulating the Scene's Objects

There are three ways to manipulate or change the objects in the active scene:

    1. Using the two sliders on the control panel that control the boid
         numbers and sizes.
    2. The 'Objects' drop down menu contains many commands including:
            - Setting the style of the rendering.
            - Setting the number and sizes of the boids.
            - Setting the colours of the boids.
            - Setting the mesh shapes of the boids.
    3. There are accelerator keys for all the menu options.

The Object Menu Accelerator Keys:
Wireframe
Unlit Flat
Flat
Gouraud
Add Flyer
Remove Flyer
Increase Flyer Size
Decrease Flyer Size
Set Flyers to Tetrahedrons
Set Flyers to Small Birds
Set Flyers to Animated Birds
Set Flyers to White
Set Flyers to Yellow
Set Flyers to Pink
F5
F6
F7
F8
=
-
]
[
CTRL+T
CTRL+S
CTRL+A
1
2
3




6. Landscape Options

There are two ways to manipulate the landscape:

    1. The 'Landscape' drop down menu contains many commands including:
            - 'None' deactivates the landscape completely removing it from the scene.
            - Four different rendering styles to choose from.
              The landscape can have both a wire-frame and solid appearance
              enabled simultaneously.
            - The geometry of the landscape can be recalculated.
            - The colouring style can be set to either green or checkerboard.

    2. All the commands on the landscape menu also have keyboard accelerators.

The Landscape Menu Accelerator Keys:
None
Wireframe
Unlit Flat
Flat
Gouraud
Green
Checkered
Recalculate
CTRL+N
F9
F10
F11
F12
6
7
CTRL+R




7. Controlling the Boid's Behaviour

The 'Behaviour' drop down menu gives all the available options for changing the boids behaviour including the following:

    - Three checked menu items that enable/disable the boid behaviours.
    - A menu item to display the flyer attributes dialog box.


Flyer attributes and their default values:

Acceleration Rate 2.0
Angle of Vision (deg) 90
Collision Distance 50
Flock Forming Distance 500
Flocking Radius 150
Maximum Speed 350
Minimum Speed 150
Range of Flock Headings 60
Wing Strokes Per Second 1.5


The 'Range of Flock Headings' is the horizontal heading range that determines whether a certain boid is heading in a similar enough direction to become part of the flock.  If the difference between the boids headings does not exceed this range, they can join together in a flock.  Having this feature allows boids traveling in totally different directions to ignore each other.  Making the boids more selective about flocking with other boids.  Therefore allowing different flocks going in different directions, to pass each other without splitting up or interfering with each other.

Please note that there is no input validation for the flyer attributes.  This allows maximum flexibility but can cause the simulation to crash in extreme cases.




8. Saving and Restoring Boid Configurations to and from Disk

The 'Main' drop down menu contains two menu items for loading and saving configurations of boids to and from disk.  The configuration files are produced in a human readable format that allows detailed examination and alteration of their contents.  It is worth noting that if a configuration is loaded and it contains more boids than there is currently active, only the active number of boids will be loaded in.  This feature is to prevent any overloading that could be caused by transferring files to a less powerful workstation.  Therefore it is worth checking beforehand, how many boids there are to load in.  Then possibly increase the active number of boids to accommodate them.




9. Display Mode Options

The 'Display Mode' drop down menu gives the following options:

    - Full screen mode (default), also activated by pressing ALT+ENTER.
    - Select mode dialog, which sets the default full screen mode resolution.
    - Window sizing commands, which are useful for benchmarking a workstation.
    - Toggle Show / Hide the control panel, also activated by pressing TAB.




10. Known Issues or Problems

There are no known bugs or errors in the code, but there are the following issues:

    - There is no input validation for the flyer attributes.  This allows maximum
       flexibility but can cause the simulation to crash in the worst case.
    - The rendering of the landscape creates a very significant performance
       overhead.  Rewriting the project to use Direct3D immediate mode or
       OpenGL would solve this.




11. About the Author

The simulation was designed and programmed by Robert Platt, a mature student of BSc (Hons) Software Engineering at the University of Westminster, London, England.  It constituted for the final year project for the academic year 1999/2000.

www: www.roberts-resource.com
email: robert@abs2net.com