Completely rework body rotation mechanism
[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     Chase Camera (default)
23     F2     Lazy Camera
24     F3     Manual 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 - Chase  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 - Manual 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 300
250     rotate_slow 150
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.  1 is on, 0 is off.
337
338     vsync 1
339
340         This key controls vertical  blanking synchronization.  1 is on
341         (and is the default), 0 is off.
342
343     multisample 0
344
345         This key enables multisample full-screen antialiasing.  Values
346         can be 2,  4, 8, etc., and can be  overspecified; in such case
347         the game  will search for  the highest level  of multisampling
348         supported by  your hardware.  (The best  value eventually gets
349         written to the config file.)
350
351     mipmap 0
352     aniso  0
353
354         These  keys  control  mipmapping  and  anisotropic  filtering,
355         respectively.
356
357         With mipmapping, smaller versions of  each texture are kept in
358         video  memory, and  are referenced  when a  texture is  viewed
359         from  a distance.   This  improves video  cache coherence  and
360         eliminates texture  "swimming" on detailed textures  when seen
361         from afar.  To enable mipmapping, set mipmap to 1.
362
363         Related to mipmapping is anisotropic filtering.  "Anisotropic"
364         basically means "not the same from all directions".  It refers
365         to  cases where  a texture  might need  to be  compressed more
366         vertically than  horizontally.  For  example, if a  texture is
367         applied  to a  flat surface  and seen  from far  away then  it
368         appears  much wider  than high.   Anisotropic filtering  takes
369         care of  this.  To enable  it, set aniso  to a small  power of
370         two.   If  you  have  weak hardware,  this  feature  won't  do
371         anything.
372
373     joystick 1
374
375         This key  enables joystick control.  0  is off, 1  is on.  The
376         game may still be controlled with the mouse even while gamepad
377         control  is enabled.   However,  random noise  from an  analog
378         controller at rest can disrupt normal mouse input.
379
380     joystick_device 0
381
382         This  number selects  which joystick  to use if  more than one
383         joystick is  found. 0 is the first  joystick, 1 is the  second
384         and so on.
385
386     joystick_axis_x 0
387
388         Joystick horizontal axis number
389
390     joystick_axis_y 1
391
392         Joystick vertical axis number
393
394     joystick_axis_u 2
395
396         Joystick axis number for view rotation control
397
398     joystick_button_a 0
399
400         Joystick menu select button
401
402     joystick_button_b 1
403
404         Joystick menu cancel button
405
406     joystick_button_r 2
407
408         Joystick counter-clockwise camera rotation button
409
410     joystick_button_l 3
411
412         Joystick clockwise camera rotation button
413
414     joystick_button_exit 4
415
416         Joystick exit button
417
418     wiimote_addr
419
420         This key  specifies the address  of your Nintendo  Wii Remote.
421         For more  information, see the  section on using  Wiimote with
422         Neverball.
423
424
425 * WIIMOTE SUPPORT
426
427 For information  on how to build  the game with Wiimote  support under
428 Linux, see instructions in the file INSTALL in the source archive.
429
430 To use it, first make sure you've set up all the Bluetooth mumbo-jumbo
431 in your kernel  and what-not.  Once this is done,  you'll need to find
432 out your Wiimote's address like this:
433
434     $ hcitool scan
435     Scanning ...
436             00:1B:7A:3E:45:7F       Nintendo RVL-CNT-01
437
438 This  hexadecimal   string  must  go   in  the  neverballrc   file  as
439 "wiimote_addr 00:1B:7A:3E:45:7F" so that the game knows that there's a
440 Wiimote to be used.
441
442 Now, when  you start the game  everything will proceed normally  but a
443 background thread  will place your Bluetooth  device into discoverable
444 mode.  You've got about  15 seconds to press 1 and  2 on your wiimote.
445 The Wiimote's LEDs will flash, and once the game makes friends with it
446 the Player 1 LED will be lit.  If you don't activate your Wiimote then
447 the  game  will  behave  normally and  the  Bluetooth  discovery  will
448 eventually time out.
449
450 From  there,  the  Wiimote  digital  pad works  like  a  joystick  for
451 navigating menus.  A and  B buttons are the A and  B buttons.  Home is
452 Pause.  Plus and  Minus are camera rotation controls.   Also, the tilt
453 sensor controls the floor.
454
455 The  Wiimote tilt  sensor is  a  surprisingly noisy  device, so  heavy
456 filtering is applied to the input.   For this reason, the controls may
457 feel sluggish.  This might improve with  an IR sensor bar, but has not
458 been tested.
459
460
461 * HILLCREST LABS LOOP SUPPORT
462
463 For  information on how  to build  the game  with Hillcrest  Labs Loop
464 support on all platforms, see  instructions in the file INSTALL in the
465 source archive.
466
467 To use a loop  to control the game, it must be  plugged in at startup.
468 If  the  loop  is  plugged  in,  it will  be  chosen  as  the  default
469 controller.   Hold  the  loop  upright,  and tilt  it  left/right  and
470 forward/backwards to control the  game.  Occasionally the sensors will
471 get miscalibrated;  to fix  this, simply  set the loop  on a  table or
472 stable surface for about 5 seconds, and the controls should be back to
473 normal.
474
475 When  not in game  mode, the  loop will  act like  a mouse  to control
476 menus.  When the  game is playing, the left  and right buttons control
477 the camera and the middle button will bring up a pause menu.
478
479 Web: <http://neverball.org/>