1 October 2005
Ultrono Arena (version 1.1)

* Installation *

Unzip the contents of ua.zip with folder options enabled to
a directory (e.g. c:/ua/).  Make sure freeglut.dll is in
%PATH% or the ua directory.  Run uacl.exe.

If you want to play a local game, run a server and then
a client.  Use escape, uparrow, downarrow, backspace, enter
to navigate the menu.

If you want to host, run a server and forward port 15050 if
necessary.

If you just want to play, run a client and use the
multiplayer menu to find a server to play on.

You can either set your controls directly in autoexec.cfg,
or use the menus.  The default controls use wsad, space, and
mouse1-3 for the main binds.

Most of these docs were written before I implemented a menu
system, so they might be a little outdated.

* Gameplay Notes *

Ultrono Arena is an online multiplayer first person shooter.
Its gameplay is inspired by Quakeworld and Quake III Arena,
combining my favorite elements from those games along with a
few new twists.

There are three weapons: rocket launcher, lightning gun, and
railgun.  Players spawn with all weapons, but limited ammo.
When a weapon's ammo is depleted, it fires blue projectiles
and deals reduced (1/3) damage.  Hence players always have
the opportunity to pull off cool combos with interesting
weapons, yet a freshly spawned player is still at a great
disadvantage since all but the first few of his shots will
do very little damage.

The rocket launcher is like Quakeworld's, but faster.  The
lightning gun is like Quakeworld's, but smoother, more
responsive and more damaging.  The railgun is like Quake
3's, but it fires faster and does less damage.

There are five items, represented by colored spheres.  While
an item is respawning, it appears much darker than usual.

color       item
--
blue        health +200
red:        armor +200/100
orange      rocket +10
green       rail +5
purple      lightning +40

The colors of the items correspond to the colors of their
counters on the HUD.  Ammo respawns after 10 seconds, armor
after 20, and health after 30 (60 on uamap3).

There are no footsteps.  The equivalent of walking is simply
moving without jumping.  The key to effective movement is
the wall jump.  To perform a wall jump, one must be in the
air and next to a wall, and must then accelerate away from
the wall and press jump.

I've included demos that show some of the common jumps.
Look inside the tutorial submenu.

* Client Notes *

The easiest way to get started is through the menu
system, which is toggled with escape and navigated with
uparrow, downarrow, backspace, and enter.

Players may issue commands to the game through a command
line interface which is toggled with the tilde (~) key.

The main settings are all documented in autoexec.cfg.  The
most commonly used commands are:

quit
refresh
connect, disconnect, reconnect
spec, play, vote, ready, notready
record, stop, demo
writecfg
admin, rc

Using the "help" command one can view documentation in game
for all commands, and see a listing of all variables.
A client may use "vote" to issue the following commands.

mode [ffa|1v1]       request ffa/1v1 mode
map [mapname]        request map change (e.g. map uamap3)
timelimit [time]     request timelimit change
fraglimit [score]    request fragimit change
kick [id]            request player kick (see cmd "lp")
start_health [val]
start_armor [val]
start_slugs [val]
start_rockets [val]
start_cells [val]

It is highly recommended that one switches the mode to
"1v1" before playing a 1v1, as this sets the appropriate
ammo settings.

I repeat, before you play a 1v1, type "vote mode 1v1".

The default executable uses GLUT for its windowing, which
means it doesn't change your screen resolution in fullscreen
mode, and you can't bind some keys (like shift, ctrl, ...).
There is also a ua_sdl.exe, which allows for a true
fullscreen mode (which can be changed by providing it
command line parameters e.g. ua_sdl client vid_height 1280
vid_width 1024 vid_fullscreen 1), allows you to bind all
keys, has slightly longer startup/shutdown times, and polls
the network in a separate thread between screen refreshes
which might result in an occasionally lower ping (on the
order of 8ms). Otherwise they're identical.

One client side command that isn't documented is the fakelag
command.  If you want to even the playing field with another
player who has a higher ping, by typing "set fakelag 50" or
whatever, you'll raise your ping 50ms.

If your fps seem low (they're displayed in the lower right),
it's because they're capped by your screen refresh rate.

* Map Notes *

'uamap1' is small, fast, and control-based.  The center of
control is the two-way teleporter, which provides the
easiest access to the armor.

'uamap2' is a recreation of my favorite Quake3 map,
"hub3aeroq3" by Hubster, which was itself inspired by the
Quakeworld map "aerowalk" by Preacher.  I never really
bothered to texture it even half-decently, but whatever.
There are two armors that give +200 and +100.

'uamap3' is large, but with enough interconnections to tie it
all together, and great for tricking.  The mega spawns every
minute and armor only gives +100.

'classic' is a very small arena-style map.  Try "vote
start_health 999" on it.

* Server Notes *

One may set server parameters on startup by running the
program with the command line format:
ua.exe server key1 value1 key2 value2 ...
(e.g., ua server sv_name "my server" sv_adminpass rfdg1234 g_map uamap3).

Alternatively, one may place the key value pairs as lines in
server.cfg.

Server administration is provided via the "rc" command,
similar to Quake's "rcon".  A client first obtains
administrator privileges by typing "admin password", where
"password" corresponds to the server variable sv_adminpass.
If sv_adminpass is left as "", admin mode is disabled.

By default, servers listen on port 15050.  To change this,
set net_port to something else via the command line as
above.  To host behind a router, one must forward the post
on which the server is listening to the host computer.

Servers periodically ping a master server, which clients
query with the "refresh" command.  To change which
master they ping, change the net_master parameter on
startup, as above.

* Other Notes *

The sounds are obviously taken from Quake3 and copyrighted
by id Software.

* Contact *

cK-czm on irc.quakenet.org #ultrono, pnelson@Princeton.EDU

* FAQ *

Q: How do I invert mouse?
A: Menu.Setup.ToggleVerticalInvert or change the sign of
sens_pitch.

Q: How do I fire different weapons?
A: see autoexec.cfg or Menu.Setup.CustomizeControls.Weapons.

Q: I outping my friend by 50, how can we have a fair game?
A: In console, enter "set fakelag 50".

Q: If I toggle the console while moving I keep moving?  Why?
A: This is intended, to disable use ui_nocondowninput 1
(it's somewhere in the menu too.)

Q: How do I check my FPS? A: 'fps' console variable, or just
look in the lower right corner of the HUD.

Q: What's wrong with my FPS?  A: Probably your refresh
rate is low at whatever resolution you're playing in.  For
custom fullscreen resolutions you have to either set your
desktop resolution low or use the SDL version (e.g. ua_sdl
client vid_fullscreen 1 vid_width 800 vid_height 600).  If
you have framerate problems only when a lot of rail trails
are on the screen, try raising vid_particlesparsity above
its default value of 1.0.

Q: Can you alt-enter?
A: No, but in the non-SDL version use downarrow/uparrow
to switch between window and full (vid_fullscreen).

Q: Why can't I use the SHIFT (or whatever) key?
A: You need to use ua_sdl.exe (see Client Notes).

Q: Why do I have to press 'c' or 's' every time I start?
A: You don't, make shortcuts to "ua.exe client" and "ua.exe
server".

Q: I would like to customize the hud_* settings.  What is the format?
A: hud_* "xpos ypos xscale yscale r g b font justify"
