Welcome to Flight Club, an online gliding simulator. The gliders look a bit like hang gliders. However, imagine them to be paragliders or sailplanes if you prefer; the same rules apply.
Cumulus clouds are fed by bubbles of warm rising air, called thermals. By using thermals, glider pilots are able to fly long distances. When you fly into a thermal you should circle to stay in the lift and climb upto cloud base.
Your vario will start beeping when you are in a thermal.
Hills produce lift as the wind flows over them. A glider may ridge soar by flying back and forth in the rising air in front of the hill.
Glider pilots also like hills because they function as reliable thermal triggers.
Race against the other gliders; the finish line is 100km away to the north.
A note on navigation: To find the finish line, simply follow the road that runs north. You have a compass at the bottom right of the applet.
Drag the mouse to rotate the camera position. You may switch between points of view using the number keys...
<1> focus on your glider
<2> watch the gaggle
<3> the view from 5,000 meters above
<4> the view from 8km away to the south east
Try pressing <p>
to pause the action and then switch between the different points of view.
Dragging the mouse whilst the action is paused gives a cool 'bullet time' effect.
This project is now using the gradle build system. To build the project run the following command from the command line:
$ ./gradlew build
Use ./gradlew run
to run the game afterwards.
For a general coding style guide, where better to look than the horses mouth ? Look for some classes that interest you and study them carefully. The author of this document finds Date.java, written by James Gosling, a good read.
Code that is not well commented is probably not well thought out.
Here are some conventions used in Flight Club:
float[] p; // a point whose x, y and z co-ords are (p[0], p[1], p[2])
float[] _p; // the previous value of p
float[] p_; // the co-ords of p after applying a transformation, T
float[] dp; // a small change in p, say p(tN) - p(tN-1) where tN is
the time of the Nth frame and p(t) is the path of a particle
float[][] ps; // a list of points {{x0, y0, z0}, {x1, y1, z1}, ...}
float[] ps; // a flattened list of points {x0, y0, z0, x1, y1, z1, ...}
Created by Dan Burton danb@dircon.co.uk, 22 Aug 2002