]> Dogcows Code - chaz/yoink/blob - doc/yoink.6.in
e712ef24ddb2f845297b50d42901ef62fabdeb5a
[chaz/yoink] / doc / yoink.6.in
1 .\"
2 .\" Copyright (c) 2009, Charles McGarvey
3 .\" All rights reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions are met:
7 .\"
8 .\" * Redistributions of source code must retain the above copyright notice,
9 .\" this list of conditions and the following disclaimer.
10 .\" * Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
13 .\"
14 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
15 .\" IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
16 .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
18 .\" CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 .\" EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 .\" PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 .\" PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
22 .\" LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23 .\" NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24 .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 .\"
26 .hy
27 .TH YOINK 6 "July 24, 2009"
28 .SH NAME
29 Yoink \- An alien-smashing action game.
30 .SH SYNOPSIS
31 .B yoink [-h|--help] [-v|--version] [OPTION=VALUE]...
32 .br
33 .SH DESCRIPTION
34 .PP
35 Leap tall buildings! Crush stupid robots beneath your feet! Wield your
36 extra-terrestrial powers in the defence of humanity, and send those alien
37 invaders back from whence they came! This is Yoink.
38 .PP
39 You play the part of a flying alien heroine who must defend her home on Earth
40 from other airborne alien invaders. The game draws inspiration from classic
41 arcade games like Joust, Bombjack, Rampage, and Defender--simple, fast-moving
42 action. Basic arguments include:
43 .TP
44 .B -h, --help
45 display this help and exit
46 .TP
47 .B -v, --version
48 output version information and exit
49 .br
50 .SH TIPS
51 .PP
52 To attack, you must dive on the enemy at high speed. If you're going too
53 slowly, you'll just drift harmlessly by. Diving from above gives different
54 results from swooping in and hitting them from the side. If you're too close to
55 attack, try to build up speed by running away and bouncing off a nearby
56 building!
57 .PP
58 By charging your special alien powers, you can throw fireballs. The orange bar
59 at the top of the screen represents your power level--at maximum, you can
60 destroy almost anything. Aiming can be tricky, but with a little practice it's
61 quite easy to launch them in the right direction. Try doing a little swoop or
62 circle in the air to line yourself up before releasing your fireball.
63 .PP
64 The heroine has limited energy, measured by the blue bar at the top of the
65 screen. When it runs out, it's game over! She can regain lost energy by
66 picking up bonuses dropped by enemies.
67 .PP
68 To complete the current attack wave, you must destroy all the enemies. Hunt
69 around, especially in the sky, if you can't find the last few.
70 .br
71 .SH OPTIONS
72 .PP
73 There are a plethora of options available for tweaking various aspects of the
74 game. All options can be set either from a configuration file or by passing
75 them as arguments. Some of the more common options can be set from within the
76 game.
77 .PP
78 A
79 .B yoink
80 configuration file ("yoinkrc") consists of key-value pairs organized in a
81 logical hierarchy. The format of the file is human-readable, so you can get in
82 there with your favorite text editor if you like to work under the hood.
83 .B yoink
84 looks for configuration files and loads them in this order, with the options in
85 prior configuration files taking precedence over the same options if they exist
86 in multiple configuration files:
87 .TP
88 1. $YOINKRC
89 This is an optional environment variable you can set to point to a configuration
90 file.
91 .TP
92 2. $HOME/.yoinkrc
93 This is a specific user's personal configuration file.
94 .TP
95 3. /etc/yoinkrc
96 This is the system-wide configuration file.
97 .TP
98 4. @DATADIR@/yoinkrc
99 This is the base configuration file which should be considered read-only. Look
100 to this file as an example of the format used for configuration files.
101 .PP
102 Options that are passed as arguments take precedence over options loaded from
103 the configuration file(s). This mechanism is good for running the game with a
104 temporary setting which you do not intend to retain. Keep in mind that if you
105 edit and save options in-game, any options you have passed as arguments during
106 the invocation of the game will be saved to the
107 .I $HOME/.yoinkrc
108 configuration file. You may have to go into that file and remove any options
109 you didn't intend to set. When passing options as arguments, you must use the
110 fully qualified name of the option if it exists in a subgroup. For example:
111 .PP
112 .TP
113 yoink video.fullscreen=true
114 Set the option
115 .I video.fullscreen
116 to true. This will run the game in full-screen mode.
117 .TP
118 yoink video.maxfps=60
119 Set the option
120 .I video.maxfps
121 to 60. This will cap the display rate at 60Hz.
122 .PP
123 You can also set options with array values. Arrays can be passed on the command
124 line by surrounding all the parts with square brackets and separating each part
125 by a comma. For example:
126 .TP
127 yoink video.mode=[1024,768]
128 Set the option
129 .I video.mode
130 to an array with numbers 1024 and 768. The video size will be 1024x768.
131 .PP
132 Here is a list of some of the options available:
133 .TP
134 .B engine.rngseed
135 The number value used as a seed for the random number generator. Set this to
136 make the game more predictable. This is typically only useful for debugging.
137 .TP
138 .B engine.timestep
139 The amount of time in seconds between each update of the physics state. A value
140 of 0.01 or lower is ideal for accurate physics approximations. Values that are
141 much higher cause the CPU to do less work, but accuracy will suffer. Errors
142 could be introduced in the game with extremely high values.
143 .TP
144 .B game.detail
145 The level of detail. Possible values are high, medium, and low. This effects
146 the number of objects drawn to the screen. A high level of detail will draw
147 everything but could cause poor frame rates if the graphics driver can't keep up
148 with the load. Lower levels will omit certain details which aren't crucial for
149 playing the game with the benefit of higher frame rates. See the Notes for more
150 ways to get good performance.
151 .TP
152 .B input.grab
153 Takes a boolean (true or false). If true, the cursor pointer will be "stuck"
154 within the area of the window, and many key combinations which would otherwise
155 be handled by the window manager will instead be dropped. This is a low-level
156 option of limited usefulness.
157 .TP
158 .B video.colorbuffers
159 This takes an array of four number values which represent the number of bits to
160 use for red, green, blue, and the alpha channel. This is a low-level option of
161 limited usefulness. The default value is almost always preferable.
162 .TP
163 .B video.showcursor
164 This option effects the visibility of the cursor while it is "hovering" over the
165 window. If the value is true, the cursor will be visible. Otherwise, the
166 cursor will be hidden.
167 .TP
168 .B video.doublebuffer
169 If true, double-buffering will be used to render animations with minimal
170 distortions. Otherwise, a single buffer will be used. The recommended value is
171 true.
172 .TP
173 .B video.fullscreen
174 If true, the window will capture the display and render the game in full screen
175 splendor. A value of false means the game will run in a window.
176 .TP
177 .B video.maxfps
178 The maximum number of frames to be drawn per second. A value of 50 is pretty
179 good. If your computer is pretty old, can get away with decreasing this value
180 and still have reasonably smooth animation. You can set this to a very high
181 number to effectively render as many frames as is possible, but the actual rate
182 could be limited by vertical display synchronization, depending on the X11
183 driver and settings used. You should not set this option higher than the point
184 where the vertical synchronization effectively limits the draw rate or else the
185 game may not be able to update the physics on schedule which could actually
186 significantly lower the quality of the animation.
187 .TP
188 .B video.mode
189 The resolution or size of the window. The value is an array with three number
190 elements representing the width, height, and bits per pixel that make up the
191 video mode. A typical value is [800,600] for a size of 800x600 pixels with
192 millions of colors (the third number is optional).
193 .TP
194 .B video.multisamplebuffers
195 The number of multisample buffers used.
196 .TP
197 .B video.multisamplesamples
198 The number of multisample samples used.
199 .TP
200 .B video.printfps
201 If true, the current number of frames being draw per second will be printed to
202 the console. This is usually off by default, but you can set this to true if
203 you're interested in the draw rate you're actually getting.
204 .TP
205 .B video.resizable
206 If true, the window will be resizable by the window manager. This option is
207 meaningless if the game is drawing to the full screen.
208 .TP
209 .B video.swapcontrol
210 If true, drawing will take place at a time which will minimize distortion caused
211 by the vertical refreshing of displays. The recommended value is true.
212 .br
213 .SH ENVIRONMENT
214 .PP
215 .B yoink
216 responds to some variables in the environment:
217 .TP
218 HOME
219 If set to a path of a valid directory (presumably a user's home directory),
220 .B yoink
221 will look for a file at
222 .I $HOME/.yoinkrc
223 and load it as a configuration file. Saving options within the game will cause
224 this file to be over-written with the new options, unless the
225 .I YOINKRC
226 variable is set.
227 .TP
228 USER
229 .B yoink
230 uses this variable to guess the user's nickname, for a high score entry or
231 whatever.
232 .TP
233 YOINK_DATADIR
234 If set to a path of a valid directory,
235 .B yoink
236 will look in this directory first when it is loading game assets. Set this
237 variable if you move the game's assets to another directory or perhaps want to
238 load your own custom assets rather than the defaults.
239 .TP
240 YOINKRC
241 If set to a path of a valid configuration file,
242 .B yoink
243 will load the options from that file, and those options will take precedence
244 over options loaded from other configuration files. Any in-game saving will
245 cause this file to be over-written by the new options rather than the
246 .I $HOME/.yoinkrc
247 config file.
248 .br
249 .SH NOTES
250 .PP
251 Yoink may or may not be playable with acceptable frame rates without a hardware
252 accelerated OpenGL driver installed and working, depending on how fast your CPU
253 is. Yoink is really not all that heavy on graphics, but it doesn't take much to
254 overload a software implementation. If you're stuck without hardware
255 acceleration, there are some things you can do to get better frame rates:
256 .PP
257 1. Decrease the resolution with the
258 .I video.mode
259 option. Due to the nature of the graphics in the game, you can go as low as
260 320x240 and not notice a large reduction in image quality. You can take
261 advantage of this by decreasing the resolution and running full-screen (so the
262 window is not so itty bitty on your monitor). This will help out a lot. Try
263 this:
264 .TP
265 yoink video.mode=[320,240] video.fullscreen=true
266 .PP
267 2. Decrease the level of detail with the
268 .I game.detail
269 option.
270 .PP
271 On the other hand, if you already get high frame rates, you may also want to cap
272 the rate so that your computer doesn't do more work than it really needs to.
273 This may be useful when you run
274 .B yoink
275 on your production server at work. You can get reasonably smooth animation at
276 around 30fps, but you can probably tell a difference between that and a higher
277 rate like 50fps. The latter will look noticeably smoother and nice, while the
278 former is just "acceptable." See the
279 .I video.maxfps
280 option.
281 .br
282 .SH BUGS
283 .PP
284 No sound yet.
285 .PP
286 The pixelated graphics are actually intentional. It adds to the old school
287 charm of the game, don't you think?
288 .PP
289 Send bug reports, patches, and love notes to:
290 .br
291 Charles McGarvey <onefriedrice@brokenzipper.com>
292 .SH AUTHOR
293 .PP
294 Neil Carter was the original creator of Yoink, his winning entry in the
295 uDevGames 2003 Mac game development contest. Charles McGarvey restored the game
296 and is the current maintainer.
This page took 0.042552 seconds and 3 git commands to generate.