Block Arena
Home -->
Computer Games -->
Block Arena
NOTE THAT THERE IS ANOTHER GAME CALLED BLOCK ARENA ON STEAM
BUT IT IS NOT THIS ONE.
The Block Arena on this page is mostly from 2008-2012.
Download Block Arena 0.91 (Windows Binary)
Block Arena is a multiplayer
action game (an FPS game)
but where the levels
are "block worlds".
NOTE THAT THERE IS ANOTHER GAME CALLED BLOCK ARENA ON STEAM
BUT IT IS NOT THIS ONE.
This project was started around 2008.
The project is a continuation
of the (never fully finished) Infinifrag 2 project
that Zach Barth and I made together
as undergrads at RPI (so some of the code is quite old)!
Once Zach left RPI I took my code from Infinifrag 2
and used it for the creation of Block Arena.
Block Arena is not a finished game.
It was a project that I worked on
where I developed my own engine
and in the process I learned a ton.
Much of the code I wrote for Block Arena
(and Infinifrag 2)
I moved over for the new
Fractal Block World
in 2012,
and that IS a finished game available on Steam.
The idea behind Block Arena is that
a block map is easy to build by hand
(or procedurally generate),
which greatly simplifies level design.
The maps themselves are intended to be
similar to those in Unreal Tournament or Quake.
The block building mechanic is more
for the purpose of level design,
but this may change when the engine
becomes more sophisticated.
This project was basically a vessel to
develop my engine.
Areas that I worked on were
efficient rendering
(using the
Quad Algorithm),
lighting (creating shadow maps),
collision detection,
player movement,
displaying Quake 2 MD2 models,
an environment (for variables that the user can change),
a command system,
and more.
How To Play
To start the server, CD into the main
directory and run the following command:
"./BlockArena.exe -s GameParams/server_params.txt".
As a default, the server uses port 3456.
To customize the server
(including setting the server password,
which is highly recommended),
edit the text file
GameParams/server_params.txt.
In order to create and destroy blocks,
the variable debug.level_editor_mode
should be set to true.
To start the client, CD into the main
directory and run the following command:
"./BlockArena.exe -c GameParams/client_params.txt".
Client parameters are set in the text file
GameParams/client_params.txt.
Make sure to set the variable
SERVER_IP to the IP address of the server.
The most important variable in the
file client_params.txt is
DISABLE_COMPILED_MAPS.
If this is set to true
(and the server variable
debug.level_editor_mode is set to
true), then blocks can be built.
If DISABLE_COMPILED_MAPS is set
to false, then blocks cannot be built
but shadow maps are used for lighting.
Currently, blocks should only be built
when a single user is using the
program because of network issues.
Credits
I have not created any of the sounds:
they are primarily from
www.freesound.org.
I have not created the cross hair
texture, the particle texture,
or the font texture.
I have only included one
Quake 2 character model
(which I found by digging around online)
in order to save space.
The code, on the other hand,
has all been written from scratch.
I have created the ammo box
textures as well as many of the
block textures.
Special thanks to Zach Barth
for many stimulating conversations
during the development of Infinifrag 2.
I am also very grateful for
Jon Brandvein for numerous
comments about
the software architecture.
Advanced
In order to customize the client and server,
within the client press the "grave" (tilde) key to
bring down the terminal.
In the terminal, various commands can be entered.
Some of the very important commands are
help,
get,
set,
cd,
pwd and
ls.
The command help describes what
specific commands do.
The commands get and
set can be used to
get and set environment variables.
The commands
cd,
pwd, and
ls can be used to
navigate through the environment
(the environment variables are
stored as if in a file system).
Compound commands can be entered
as LISP style "S expressions".
To connect to the server,
type "server" into the terminal.
Once connected to the server,
you must enter the password
of the server.
For example, if the password
of the server is foobar,
then enter the command
"password foobar".
To go back to client mode,
type "client" into the terminal.
Feature List
* The server is started by running the following
command from the top directory of BlockArena:
"./BlockArena.exe -s GameParams/server_params.txt".
If you want, you can specify a different server parameters file.
* Within the server parameters file
(by default, "GameParams/server_params.txt")
you can set important environment variables for the server.
For example, "metagame.port" stores which UDP port the
server will try to bind to.
Also, "metagame.pw.password" stores the password that
is needed to access the server from the clients.
* The client is started by running the following
command from the top directory of BlockArena:
"./BlockArena.exe -c GameParams/client_params.txt".
If you want, you can specify a different client parameters file.
* Within the client parameters file
(by default, "GameParams/client_params.txt")
you can set important environment variables for the client.
For example, "server.ip" and "server.port" need to
be set correctly in order to access the server.
Also, the screen width and height should be set to
appropriate values
(that of the desktop, for example).
* The standard output of the server is redirected to
Output/ServerOutput.txt.
The standard output of the client is redirected to
Output/ClientOutput.txt.
Neither the client nor the server should output
anything to stderr.
* The engine of Block Arena uses
an internal environment for variables
as well as a simple LISP-style
command system.
The user can access the command system
from within the client by using the terminal.
The terminal can be toggled by hitting the '~' key.
That terminal can also be used for accessing
the server as well.
* When the server starts up, by default
the script "GameParams/Scripts/s_startup.txt"
is processed.
Each line should be a command for the terminal.
Whenever a new game starts, by default the script
"GameParams/Scripts/s_begin_game.txt" is run.
Similar scripts exist for the client.
It is recommended that you modify these scripts
to customize your setup.
* After starting up the server first and then
running the client to connect to the server,
you should spawn into a map.
You should be able to move around.
* Keyboard keys can be bound to different actions.
To change what pressing the 'w' key down does,
for example, modify the environment variable
"bind.i.KEY_W.down".
Alternatively, one can use the "bind" command.
* You can change the appearance of the crosshair
by changing the environment variables that start
with "view.crosshair".
* To enable debug mode, set "engine.debug" to true.
This will dislay the quads the are rendered in
randomly chosen colors.
* Within the client, you can toggle the
terminal by hitting the '~' key.
Within that terminal, you can switch
back and forth between entering commands to
your client and entering commands to the
server (assuming you have permission to
access the server).
Use the command "ls" to list
environment variables.
You can use tab completion.
Green means it is a "name directory".
You can use the command "set" to set
an environment variable, and "get" to
get its value.
You can use the command "let" to create
environment variables, but they must begin
with "home.".
The command "ls" can also be used
to display the value of environment variables
by using the "v" option.
You can use the command "help" to list
all of the commands.
By typing "help COMMAND", you will get
information about the command COMMAND.
You can read all of this help information
in an anto-generated html file.
In fact, you can generate this yourself
by running the command "gendoc".
This can be done in both the client and the server.