Update documentation to reflect VFS changes
[neverball] / doc / MANUAL
1
2                             * Neverball *
3
4
5 Tilt the  floor to roll a  ball through an obstacle  course within the
6 given  time.  If  the  ball falls  or time  expires, a ball is lost.
7
8 Collect coins to unlock the exit  and earn extra balls.  Red coins are
9 worth 5.  Blue coins are worth 10.  A ball is awarded for 100 coins.
10
11
12 * INSTRUCTIONS
13
14 Click Play  to begin.   Mouse motion tilts  the floor.   Mouse buttons
15 rotate the viewpoint.  The following  keyboard controls are defined by
16 default; most  of them can  be changed  in a configuration  file.  See
17 below for details.
18
19     ESC    Pause and resume / Exit
20     SHIFT  Fast camera rotation
21
22     F1     Default Camera
23     F2     Lazy Camera
24     F3     Static Camera
25
26     F6     Hide HUD
27     F8     Toggle nice mode
28     F9     Toggle frame counter
29     F10    Snap a screenshot
30
31     UP     Tilt the floor forward
32     DOWN   Tilt the floor backward
33     LEFT   Tilt the floor left
34     RIGHT  Tilt the floor right
35
36     D      Rotate the view right
37     S      Rotate the view left
38
39     R      Restart the current level
40
41     TAB    Cycle through scores in high-score table
42
43
44 * LEVEL PROGRESSION
45
46 Neverball levels are grouped in  level sets.  All sets are immediately
47 accessible to the player, and track of progress is kept separately for
48 each set.  The player starts out  at the first level and must complete
49 each level in turn to unlock subsequent levels until all levels in the
50 set are completed.   A level is "unlocked" by  completing the previous
51 level in the  progression or if it  is the first level of  the set.  A
52 level  is "completed"  by collecing  the required  amount of  coins to
53 activate the goal in the level and reaching said goal.
54
55 There are  two game  modes or  ways of  progressing through  levels in
56 Neverball.  Each  mode is essentially  a subset  of the single  way of
57 playing present in Neverball 1.4.0.
58
59 In 1.4.0, the game keeps track of "lives" or balls, preventing a level
60 from being retried once the balls run out, however, unlocked/completed
61 levels remain accessible in the menu at all times.  As a special case,
62 1.4.0  also records  a set  high-score (see  below for  information on
63 high-scores)  when all  levels  of a  set are  played  through in  one
64 attempt, with  the condition  that no successfully-completed  level be
65 restarted during the run.
66
67 To  address  some of  the  problems  with  this  mode of  playing,  in
68 Neverball 1.5.0  it was  split into two  separate modes:  the "normal"
69 mode and the challenge mode.
70
71 In   the   normal  mode,   no   track   of   balls  is   kept.    Each
72 unlocked/completed level is immediately  accessible and can be retried
73 and restarted mid-game as often as desired.
74
75 In the challenge  mode, the player is given a  limited number of balls
76 and starts  out at the  first level of the  set with all  other levels
77 locked.  The game ends once the balls run out or all levels in the set
78 are completed.  A set score is  recorded for a successful run.  Levels
79 cannot be restarted, but can be retried.
80
81 In addition to regular  1.4.0-style levels, Neverball 1.5.0 introduces
82 bonus levels: extra levels awarded  for playing challenge mode.  Bonus
83 levels can only  be unlocked by completing all the  levels before them
84 in  challenge mode,  however,  bonus levels themselves  are skipped in
85 challenge mode; after  they have been unlocked, they can  be played in
86 the normal mode as any regular level.
87
88
89 * USER DATA FILES
90
91 Neverball  creates a  directory in  which it  stores user  data files.
92 These files include high scores, replays, and configurations.
93
94 Under Unix, Linux,  and OSX this directory is  called ".neverball" and
95 is created in  the user's home directory,  specifically, the directory
96 set in the HOME environment variable.
97
98 Under Windows  it is called "Neverball"  and is created  in the user's
99 application  data directory,  the  location of  which  is obtained  by
100 inspecting the  APPDATA environment variable.   An easy way  to access
101 this directory is by typing  %APPDATA% in the Windows Explorer address
102 bar.  If the location could not  be determined, it is assumed that the
103 user has permission to write to  the game directory, and the user data
104 directory is created within.
105
106
107 * HIGH SCORES
108
109 The top  three fastest  times through each  level, the top  three coin
110 scores  and the top  three fastest  unlock scores  for each  level are
111 stored in the Scores directory within user data directory.
112
113 The top  three fastest  times and  most coins scores  for each  set of
114 levels are also stored.  To achieve  a set score, the player must play
115 through all levels of a set in challenge mode.
116
117 The total set time will  include time spent during both successful and
118 unsuccesful level  plays, thus  time-outs and fall-outs  count against
119 the total time.
120
121 The  total  set  coin  count  will include  only  coins  collected  on
122 successful  level plays.   This  prevents unbounded  coin scores  from
123 being collected on levels with more than 100 coins.
124
125
126 * REPLAYS
127
128 Neverball  includes a  mechanism for  recording and  replaying levels.
129 The player may enter  a name for each replay at the  end of the level.
130 By default, the most recent unsaved  level will be saved to the replay
131 file named "Last.nbr".
132
133 Replay files are stored in  the Replays directory within the user data
134 directory.   They may be  copied freely.   To view  a replay  you have
135 downloaded, simply move it to the Replays directory and it will appear
136 in the Replay menu in-game.
137
138
139 * CONFIGURATION
140
141 Game  settings are stored  in the  file neverballrc  in the  user data
142 directory.  This file is created  when the game exits.  It consists of
143 key /  value pairs.  Some of  these values are  configurable using the
144 in-game  options  screen.  Other  meaningful  keys  and their  default
145 values follow.
146
147     width  800
148     height 600
149
150         These keys determine the effective display resolution.  If for
151         any reason  the resolution you're looking  for isn't available
152         in the in-game settings, you can modify these values instead.
153
154     mouse_sense 300
155
156         This  key controls  mouse  sensitivity.  The  value gives  the
157         number of screen pixels the  mouse pointer must move to rotate
158         the floor  through its entire  range.  A smaller  number means
159         more sensitive.
160
161     mouse_invert 0
162
163         This key inverts the vertical mouse axis if set to 1.
164
165     key_camera_1      f1
166     key_camera_2      f2
167     key_camera_3      f3
168     key_camera_l      d
169     key_camera_r      s
170     key_camera_toggle e
171
172         These keys  define keyboard mappings for  camera selection and
173         rotation.   Key  names  are specified  using  SDL's  canonical
174         key  naming   convention  (for   a  mostly-complete   list  of
175         non-single-letter  key  names,  see  share/keynames.c  in  the
176         source archive).  The three camera behaviors are as follows:
177
178         1 - Strict  camera stays behind the ball by  cueing off of the
179         velocity of the  ball.  It is very  responsive,  but sometimes
180         confusing.
181
182         2 - Lazy  camera chases a point a set  distance from the ball.
183         It is seldom  surprising, but at times it  is not sufficiently
184         responsive.
185
186         3 - Locked camera  does not rotate  except by  player command.
187
188         key_camera_toggle toggles camera behaviour between 1 and 3.
189
190     mouse_camera_1      none
191     mouse_camera_2      none
192     mouse_camera_3      none
193     mouse_camera_l      left
194     mouse_camera_r      right
195     mouse_camera_toggle none
196
197         These   keys  match   the  respective   key_camera_*  options.
198         Accepted values are: "none" (for no mapping), "left", "right",
199         "wheelup",  "middle", "wheeldown"  or a  numeric  mouse button
200         index.
201
202     key_forward  up
203     key_backward down
204     key_left     left
205     key_right    right
206
207         These keys define keyboard mappings for tilt control.
208
209     key_pause escape
210
211         This  key defines  a  keyboard mapping  for pause  activation.
212         Before version 1.5.0, this mapping was hard-coded to the space
213         bar and Escape key was used  to immediately exit the game.  To
214         restore  this behaviour,  set  key_pause  to "space"  (without
215         quotes).
216
217     key_restart r
218
219         This key defines a keyboard  mapping for a mid-game restart of
220         the  current  level.   Handy  when  trying  to  record  a  new
221         high-score, this function isn't available in challenge mode.
222
223     key_score_next tab
224
225         This key  defines a keyboard mapping for  cycling through Most
226         Coins / Best Times /  Fast Unlock score tabs in the high-score
227         board.
228
229     view_fov 50
230     view_dp  75
231     view_dc  25
232     view_dz  200
233
234         These keys  define the view of the ball.  They give  the field
235         of view in degrees,  the height of the view point,  the height
236         of the view center,  and the horizontal distance from the ball
237         in centimeters, respectively.  (The ball is  50 centimeters in
238         diameter in most levels.)
239
240         The default values  for these keys changed with version 1.2.6.
241         Some players may be interested in using the  old values.  They
242         were as follows:
243
244             view_fov 40
245             view_dp  400
246             view_dc  0
247             view_dz  600
248
249     rotate_fast 200
250     rotate_slow 100
251
252         These keys control the rate of camera rotation.  Roughly, they
253         give  the rate  of lateral  camera motion  in  centimeters per
254         seconds,  so the  actual rotation  rate depends  upon view_dz,
255         above.  The fast rate is used when the Shift key is held down.
256
257     fps 0
258
259         This key enables an on-screen frames-per-second counter. Press
260         F9 to toggle this flag in-game.
261
262     nice 0
263
264         This  key  enables  a  delay  function  after  each  frame  is
265         rendered, forcing a context  switch and ensuring that the game
266         does not utilize 100% of the CPU.  0 is off, 1 is on.
267
268         If the  frame rate is not  fast enough for you,  or you simply
269         want to  test the  performance of the  game on  your hardware,
270         disable it.
271
272         Press F8 to toggle this flag in-game.
273
274     ball_file ball/basic-ball/basic-ball
275
276         This key determines the model used for the ball.
277
278     replay_name %s-%l
279
280         This  key specifies  the  format of  the  default replay  name
281         generated when saving replays.
282
283         The value  of replay_name  can include regular  characters and
284         special  character sequences  which act  as place-holders  for
285         certain "dynamic" text.  These sequences are recognised:
286
287             %s  current set identifier (such as "easy" or "mym")
288             %l  current level identifier (such as "03" or "IV")
289             %%  single percentage sign
290
291         Any  other sequence  starting with  % will  be reported  as an
292         error and skipped.
293
294         The resulting  replay name is  also suffixed by  an underscore
295         and  a unique  2-digit number  to avoid  name collisions  with
296         existing replays.
297
298     stats 0
299
300         This  key enables  print-out (to  standard output)  of running
301         statistics of  the current  frame time  and frames-per-second,
302         averaged over 250 milliseconds.  Most people won't need this.
303
304     uniform 0
305
306         This  key controls  the  frequency of  graphical updates  with
307         respect to physics updates.
308
309         When  uniform is  N, then  there  will be  exactly N  physical
310         updates per graphics update, regardless of the passage of real
311         time.  So for example, if uniform is 1 then you will see every
312         physics update  rendered exactly once.   The default is  0 and
313         the option is disabled.
314
315         A further functionality  is built atop the  uniform option: if
316         the  uniform value  is  negative  then the  game  will take  a
317         screenshot  at  each  frame.   This  may  be  used  to  record
318         high-quality movies of replays.  Set uniform to -3 and start a
319         replay using  the --replay command  line option, and  you will
320         find a 30FPS movie written as a series of PNGs.
321
322         On an unfortunate note: audio is handled in a separate thread,
323         and there is no support for outputting audio synchronized with
324         a movie created in this fashion.
325
326     screenshot 0
327
328         This key holds  the current screen-shot index.   The number is
329         incremented every time a new screen-shot is taken (by pressing
330         F10 or in  uniform mode) and it is appended  to the image file
331         name.
332
333     stereo 0
334
335         This key  enables quad-buffered stereo viewing  for those with
336         the hardware to support it.  It gives an angle in degrees that
337         determines the  interocular distance.  0  is normal non-stereo
338         viewing.  2 gives  a  good  stereo effect.   If  the eyes  are
339         swapped, give a negative value, like -2.
340
341     vsync 1
342
343         This key controls vertical  blanking synchronization.  1 is on
344         (and is the default), 0 is off.
345
346     multisample 0
347
348         This key enables multisample full-screen antialiasing.  Values
349         can be 2,  4, 8, etc., and can be  overspecified; in such case
350         the game  will search for  the highest level  of multisampling
351         supported by  your hardware.  (The best  value eventually gets
352         written to the config file.)
353
354     mipmap 0
355     aniso  0
356
357         These  keys  control  mipmapping  and  anisotropic  filtering,
358         respectively.
359
360         With mipmapping, smaller versions of  each texture are kept in
361         video  memory, and  are referenced  when a  texture is  viewed
362         from  a distance.   This  improves video  cache coherence  and
363         eliminates texture  "swimming" on detailed textures  when seen
364         from afar.  To enable mipmapping, set mipmap to 1.
365
366         Related to mipmapping is anisotropic filtering.  "Anisotropic"
367         basically means "not the same from all directions".  It refers
368         to  cases where  a texture  might need  to be  compressed more
369         vertically than  horizontally.  For  example, if a  texture is
370         applied  to a  flat surface  and seen  from far  away then  it
371         appears  much wider  than high.   Anisotropic filtering  takes
372         care of  this.  To enable  it, set aniso  to a small  power of
373         two.   If  you  have  weak hardware,  this  feature  won't  do
374         anything.
375
376     joystick 0
377
378         This key  enables joystick control.  0  is off, 1  is on.  The
379         game may still be controlled with the mouse even while gamepad
380         control  is enabled.   However,  random noise  from an  analog
381         controller at rest can disrupt normal mouse input.
382
383     joystick_device 0
384
385         This  number selects  which joystick  to use if  more than one
386         joystick is  found. 0 is the first  joystick, 1 is the  second
387         and so on.
388
389     joystick_axis_x 0
390
391         Joystick horizontal axis number
392
393     joystick_axis_y 1
394
395         Joystick vertical axis number
396
397     joystick_axis_u 2
398
399         Joystick axis number for view rotation control
400
401     joystick_button_a 0
402
403         Joystick menu select button
404
405     joystick_button_b 1
406
407         Joystick menu cancel button
408
409     joystick_button_r 2
410
411         Joystick counter-clockwise camera rotation button
412
413     joystick_button_l 3
414
415         Joystick clockwise camera rotation button
416
417     joystick_button_exit 4
418
419         Joystick exit button
420
421     wiimote_addr
422
423         This key  specifies the address  of your Nintendo  Wii Remote.
424         For more  information, see the  section on using  Wiimote with
425         Neverball.
426
427
428 * WIIMOTE SUPPORT
429
430 For information  on how to build  the game with Wiimote  support under
431 Linux, see instructions in the file INSTALL in the source archive.
432
433 To use it, first make sure you've set up all the Bluetooth mumbo-jumbo
434 in your kernel  and what-not.  Once this is done,  you'll need to find
435 out your Wiimote's address like this:
436
437     $ hcitool scan
438     Scanning ...
439             00:1B:7A:3E:45:7F       Nintendo RVL-CNT-01
440
441 This  hexadecimal   string  must  go   in  the  neverballrc   file  as
442 "wiimote_addr 00:1B:7A:3E:45:7F" so that the game knows that there's a
443 Wiimote to be used.
444
445 Now, when  you start the game  everything will proceed normally  but a
446 background thread  will place your Bluetooth  device into discoverable
447 mode.  You've got about  15 seconds to press 1 and  2 on your wiimote.
448 The Wiimote's LEDs will flash, and once the game makes friends with it
449 the Player 1 LED will be lit.  If you don't activate your Wiimote then
450 the  game  will  behave  normally and  the  Bluetooth  discovery  will
451 eventually time out.
452
453 From  there,  the  Wiimote  digital  pad works  like  a  joystick  for
454 navigating menus.  A and  B buttons are the A and  B buttons.  Home is
455 Pause.  Plus and  Minus are camera rotation controls.   Also, the tilt
456 sensor controls the floor.
457
458 The  Wiimote tilt  sensor is  a  surprisingly noisy  device, so  heavy
459 filtering is applied to the input.   For this reason, the controls may
460 feel sluggish.  This might improve with  an IR sensor bar, but has not
461 been tested.
462
463
464 Web: <http://neverball.org/>