Asteroids3D - a first person game of blowing up asteroids
Copyright (C) 2000 Stuart Mark Pomerantz
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
3935 Stonecliffe drive
Monroeville, PA 15146
Welcome! Thanks for trying out asteroids3D. This program is known to compile
without error on Red Hat GNU/Linux 6.0 & 6.2 . The program requires the mesa3d
graphics library available at http://www.mesa3d.org . This game will
probably not compile on a sparc without a little hacking. Certainly, the
sound will have to change. I will try to do this in the future.
Thank you to my girlfriend Colleen for her support, and never failing
to say "oooh, cool". Thank you to Lee Beatty for his enormously helpful
artistic suggestions. He's got a great eye for how things should look.
Thank you to everyone on the internet who emailed me with suggestions
and kind words!
Thanks to Rob R. for the patch and graphic. You can find them in the contrib
The latest copy of Asteroids3D can be found at:
Unfortunately there's no configure script for this program yet. If you
have installed mesa3d in some place other than /usr/local/opengl, you should
edit the INC and LIB lines of the make file and change them appropratly.
Other than that, A3D should compile without a problem. Type make.
If you want to install the program somewhere else, copy the asteroids3D
binary, *.ppm, and *.ub to a directory of your choice.
The object of the game is to stay alive and destroy all the asteroids in the
To view the available command line options type:
The mouse rotates your ship up, down, left, and right. The left
mouse button fires your torpedo.
ESC - exit the game immediately
a/A - turn on my debugging axes ( not very interesting for playing )
r/v - slide forward/backward
d/g - slide left/right
e/t - slide up/down
f - hit the breaks!
b - target asteroid in center of crosshair
<tab> - target smallest asteroid in field
p - pause the game
<space> - fire a torpedo
[ - activate/deactivate headlight
(best with keypad)
4/6 - rotate about the ship's y axis
7/9 - rotate about the ship's z axis
8/2 - rotate about the ship's x axis
these keys are like toggle switches now and are mapped across the top of the keyboard
+ - activate/deactivate crosshair
_ - deactivate/activate tracer
) - activate/deactivate shield effect
( - activate/deactivate dust effect
* - activate/deactivate torpedo lens flares
& - activate/deactivate asteroid textures
^ - activate/deactivate nebula textures
% - activate/deactivate torpedo texture
# - activate/deactivate sound
! - swap mouse x direction
@ - swap mouse y direction
The position of your mouse is represented by a green dot.
The purple dots on the left represent torpedo slots. As you fire
they will dim, letting you know that you have fired and a slot is
reloading. You have 5 torpedos.
The number at the top center of the screen tells you how many
asteroids are in the field.
The shield indicator at the bottom right of the screen tells you
the strength of your shield indicator. When you are hit by an asteroid,
the shield will automatically come on and you will bounce elastically off the
asteroid. The amount your shield will decrease depends on the momentum
of the asteroid, which depends on the speed and mass of the asteroid. Avoid
getting hit by big asteroids if you can.
The collision warning indicator is at the lower center of your screen, there
are four arrows representing above the ship, below the ship, to the left of
the ship, and to the right of the ship. The oval represents directly behind you.
If the dim red arrow ( or the oval ) lights up, then you know that an
asteroid is near you on that side. For example, if the right red arrow lights
up, then an asteroid is near you on your right side. It is good to move at
a ninety degree angle away from close asteroids.
Finally, a group of numbers on the lower left corner of the screen represents
your velocity vector (x,y,z) in m/s. Although this looks cool, it may not be of much
use to you. You will be able to see if you're moving, though.
When you lock on to an asteroid:
The spot where your torpedo will
be in the time it will take to reach the asteroid is reprented by
either a yellow ( out of range ) or red ( in range ) dot.
The spot where the asteroid will be in the time it will take your
torpedo to reach the asteroid is represented by either a
yellow ( out of range ) or red ( in range ) circle. The target
circle grows and shrinks with distance to the target so that you
have a more accurate idea of how big a target you need to hit
at a given distance.
There is an outer circle with hash marks which turns right as you
shorten the distance between the ship and the asteroid and left
as the distance between the ship and the asteroid increases. The
outer circle will give you a good idea of your rate of closure
with the target.
Put the dot inside the circle when they're both red and voila', you hit.
There are a small number of cases where the aspect angle of the
torpedo on the target is such that you'll miss. And unless you're
close enough, the torp may fizzle out before it hits.
The targeted asteroid is boxed in green, and has a green line pointing
in the direction it is travelling ( its vector ).
COMMENTS and SUGGESTIONS
I welcome all comments and suggestions. Please remember that this game
is A WORK IN PROGRESS. I don't consider it finished or completely debugged.
The version number is meant to reflect that.
If you have a comment or suggestion, please email it to me at firstname.lastname@example.org.
If you have a criticism, I'd like to hear it as long as its constructive.
"This game sucks" criticisms will be ignored and put in the trash.
I'm giving this away to thank the GNU community of developers for all
the wonderful software they've given away to me for free. I thank you
all for your generosity. I hope you like this game.