MATANZA - THE SLOGAN-LACKING GAME
- What is Matanza?
- Who did Matanza?
- How can I build and install Matanza?
- Running Matanza's server
- Playing Matanza
- The command line arguments
- Plans for the future
- WHAT IS MATANZA?
Matanza is a multiplayer game. In it, every player controls a ship cruising in space, aiming to destroy the other players (and, eventually, ships controled by the computer).
By the way, it is pronounced MATANGA, not Matanza.
Currently, the only way to play is through telnet. That's correct, telnet. Everything is rendered to ASCII art. Wonderful, isn't it? You only need to install Matanza in one Machine and you can then play from whatever machines you want, as long as a telnet client is available on them.
We are currently working to fix that, implementing the Matanza Machine Protocol into the server. It will allow clients to connect through a different protocol, to display everything using graphics. We've heard of people interested in creating clients using KDE, OpenGL, Java2D and a few other graphic libraries. Once they are ready, it will be possible to play using any of the different available clients.
For the moment, however, the only available option is the telnet client. Don't let that get you down, only very recently we thought about adding other clients, as we are very happy with the currently available. Just give it a try and see for yourself why other clients are just alternatives, not that important.
Up until version 0.11, the server only ran on Unix platforms. This version, however, will probably work on any Unix operating system plus a few others. So far, we have tested it and got it to work in the following systems:
- BeOS
- FreeBSD
- GNU/Linux
- Solaris
- Windows 2000
- Windows 98
- Windows NT
The game is free software, distributed under the terms of the GNU GPL License. Please see the file COPYING for more information. Yay, you gotta love free software. :)
It should be noted that the game should not be considered complete yet, as there are some issues we still have to fix and there are some features still missing. It should, however, be playable as it is. It should be very addictive too. Well, it tries.
Please check <http://bachue.com/matanza> for more information on new releases. You don't want to end up running this release for years. No. You want to be riding the wave, the BLEEDING EDGE. And you know it.
Finally, if you are in any way interested in Matanza, I invite you to subscribe to Matanza's mailing list. There you will find developers interested on listening of your experience with Matanza and any suggestions you might have. Friendly developers. We don't bite. Or not hard.
2. WHO DID MATANZA?
Matanza is being developed by Alejandro Forero Cuervo <http://bachue.com/alejo> of the Freaks Unidos <http://bachue.com>.
Information and beta testing for the port to BeOS was provided by Andrés Felipe Arguello <a-arguel@uniandes.edu.co>.
No other help, other than simple suggestions such as `make it possible to brake!' has been received.
I know you are going to find out lots of bugs and come up with lots of wonderful ideas to improve the game. I know you'll also end up wondering how come I am so clueless as to make this and that the way I did. Well, Luke, you can download CWEB <TODO: Cweb's URL should go here>, run your text editor on matanza.w and make all the changes your self, submitting me patches to receive full credits. That's right, CREDITS.
3. HOW CAN I BUILD AND INSTALL MATANZA?
This depends on what your platform is.
If you are using Windows, you might prefer to obtain the binary distribution. Otherwise, you will need a C/C++ compiler and you are on your own. The official binaries are generated using Microsof's Visual Studio. If this is a binary distribution, it is safe to ignore this section.
To compile and install Matanza in UNIX and BeOS, follow the instructions in the boring INSTALL file (hint: Standard GNU autoconf stuff).
Matanza needs functionality provided by the following libraries. If you don't have them installed, Matanza will still compile and run but some of its features will not work.
- libpng
libpng is required if you want Matanza to support PNG images. This is
strongly recommended, as the PNG format is the format used in Matanza
Universes.
You can obtain libpng at:
<http://www.libpng.org>
If this library is found in your system, the `configure' script will
tell you that the PNG format will be supported, in a message similar to:
Supported image formats: PNG.
4. RUNNING MATANZA'S SERVER.
You must run Matanza's server before anyone can play. This is as simple as typing `matanza' after it has been successfully built and installed (see previous section). The Matanza executable accepts some (okay, a lot of) command line arguments, use `matanza --help' to see a list of them.
5. PLAYING MATANZA.
The first thing you must do is connect to the server. You must connect to the TCP port `7993' (unless you specified a different port when you ran the server) of the host running the server. I won't tell you how to do this, Luke.
Umm.
Don't look at me like that!
Ok, you win. It's probably `telnet localhost 7993'.
Once connected, you'll see some nice (c'mon give us some credits) introduction. You must hit <RET> (that's <Enter>) to go to the game's main screen.
At the main screen, you must enter your name. That's right, it can't have more than 8 letters. Oh, and it can not begin with a number. Enter your name and hit <RET> a few times.
If you are in Windows' stupid telnet client, the widgets there will look awful. No colors or anything. We are going to fix that eventually, but... well, you'll have to learn to live with that for the moment. I'm sure you can, Luke. After all, you could stand it when that stupid kid at school used to beat you, remember?
But back to our game, you'll see a ship in the middle of screen. Yes, I said ship. Okay, I know it looks more like fire effects than a ship, but with a couple of practice it's going to look better. You just need to train your self to recognize it.
Or you could think of it as a big moth and of the bullets as moth-spit and the goal of this game would be to cover your enemies in your spit.
Now, that thing in the middle of the screen is YOUR ship. To control it you can use the following keys:
`h' and `l': Make the ship rotate. If you are wondering why I used `h' and
`l', get a life (in other words, learn to use Vi). It's a matter of
style. Actually, I got so many complaints from lukes like you that I
added support for arrow keys.
`+' and `-': These allow you to zoom in and out.
`j' and `k': Accelerate the ship. Yes, it can move! Yes, at different
speeds! Okay, `j' may not work (see --brake and --fly-back). More on
that latter. Again, arrows key works as well.
` ' (that's space, dude): Shot. Yay! Bullets! Or (depending on your point
of view) Moth-Spit! Sorry, dude, the telnet protocol doesn't support
sound so there's no BZZZING when you shot.
`b': Shot bullets backwards. Sometimes this doesn't work. More on that in
section 6.
`m': Do you see two little imperfections on your ship's wings? Those are
the MISSILES. You can shot them with `m'. They do a lot more damage
than the bullets, but you have only two, so be careful.
`n': You can also shot SMALLER missiles. You have ten of these.
<Ret>: If you hit <Ret>, you'll be able to write a message to send it to all
the other players. That's correct, you can use Matanza as a full
featured chat and all. You could even have net.sex using it, but don't
even get me started on the subject.
`z': Shows you stats about the game.
`c': Removes the last message from the list of messages.
`C': Cleans the list of messages.
`s': Swaps the position of the list of messages.
`p': Pauses the game.
`v': Toggles whether or not you see the messages. Sometimes you'll want to
disable them.
`i': Make your ship invisible! But beware, you may only make it invisible
for a short period of time, after that it becomes visible again and you
can't become invisible anymore.
`q': Quit the game.
Okay, those are all the commands. For now.
I know, it's kinda pointless to play alone. You'll need to turn your computer off, go outside and make some friends first. Try, it's not that hard. Umm. Eventually, Matanza will support computer-controled ships so if you find it way too hard to make some friends to play Matanza with them, you might modify the code and add this. Don't forget to send me a patch.
If you look at the border of your screen, you'll notice some characters and perhaps some asterisks and dots and stuff. Can't see them? Get some other players in the game. Still can't see them? Umm. Turn your monitor on. There you go. Yes, those! (If you still can't see them, see the `--no-radar' option in the next section.) Each character corresponds to another player in the game. If you point your ship in the direction of the character (or asterisk), you will reach one of the player's whose name begins with that character. If the player is too far away, Matanza will draw the character in lowercase. As it gets closer, it will use uppercase. Now, if you see an asterisk, it means the player is way to close so you must get your weapons ready to give the bastard a lesson.
Oh, two final words. Please don't miss your classes playing Matanza as much as we did programming it. And remember, it's pronounced MATANGA. Learn how to say it or the gods will punish you.
6. THE COMMAND LINE ARGUMENTS.
So you think it's very stupid to allow players to shot backwards? Would you like to increase the number of lives each player has? How about zooming out and making each ship smaller? What about making teams and having each player select a given team when joining the game? Is the world too big or too small? Do you want to get rid of the asteriods or perhaps add a few more? Allow the ships to fly faster? Let them fly backwards? It is all possible, using command line arguments when you run the server.
The following is a list of important command line arguments; this was last updated for version 0.12, though some are still missing.
--help
This shows the list of command line arguments and exits.
--version
Use this to know the version of the server.
--max-players=NUM
If you want to make it so the server will allow at most NUM players to
enter the world at any given moment, use this option.
--bold
This instructs the server to use bold characters when rendering images to
ASCII art. It improves the quality of the rendering (as of version 0.9
it still has some bugs).
--imgwidth=NUM
This changes the default image width (for the zoom). The default is 320.
--health=NUM
Use this option to set the maximum damage a ship can take before it is
destroyed. It defaults to 1000.
--mapsize-x=NUM
--mapsize-y=NUM
These options allow you to change the map size. If you make it smaller,
players will come across each other more often. On the other hand, if
you plan to have a lot of players, you might want to increase the size.
The default is 1200 x 1000.
--lives=NUM
With this option you can change the number of lives each player (or team:
see --no-share) gets at startup.
--angles=NUM
During its initialization, Matanza calculates rotations for all its
images (ships, missiles, asteroids, etc.). It uses 64 different angles
by default. You may change this number to increase its quality or
decrease its memory consumption.
--no-chat
If you use this option, you will disallow the chat feature. The only
reason I can think why someone would want to do that would be to keep
newbies from entering the chat buffer and becoming unable to control
their ships. Or perhaps to make some team games more exciting by
preventing the players to exchange information (though I know it would be
very easy to cheat).
--team=STR
If you want to play in teams mode, you will use this option once for
every team, specifing its name. Before joining the game, all players
must select the team they will play in.
--password[=STR]
You can instruct the server to only accept players who know the password.
This might be good for some tournaments.
--teams-safe
This option is only meaningful in teams mode. By default, bullets from a
given player hurt everyone, not only players from the other teams. This
option changes that behaviour and makes it so bullets from a given player
won't hurt players in the same team.
--no-share
This option is only meaningful in teams mode. By default, all the teams
have a pool of lives; when a player dies, he comes back to play and the
team has one life less. When this option is specified, the lives are no
longer shared so each player has its own pool of lives.
--ang-speed-max=NUM Maximum angular speed for ships (try 0)
--fly-back
If this option is specified, players will be acelerate backwards.
--brake
Players will be able to brake using `j' (or the down arrow).
--air
Ships' speed depend on their direction.
--speed-max=NUM
Set the maximum speed for the ships to NUM. A value of 0 makes this
unlimited.
--asteroids=NUM
With this option you can specify how many asteroids you want at a given
moment. If you use `0', you will disable this feature and the memory
requirements will decrease.
--limits Give the world limits; make it end
--no-radar When enemy is away, don't show the direction
--invisible=NUM Allow players to become invisible for NUM rounds
--ppc=NUM
PPC stands for Players Per Connection. With this option, you will be
able to set the number of ships each connection will have. For the
moment, the only supported values are 1 and 2. The keyboard bindings
change and those for a value of 2 are not yet documented.
--bg=PATH
PATH should be the path to a JPEG file. Matanza will load the
information in the file and use it as the background, rather than showing
the dots. This will only work if libjpeg was installed when you compiled
Matanza.
--mapsize-img
This option will be ignored unless `--bg' is also used. It tells Matanza
to set the map's size to be the width and height of the background image.
When used, the options `-x' and `-y' are ignored.
--ship-img=FILE
Through this option you can specify a file name for Matanza to load the
images for the ships from it. The format for the file is very simple,
consult ship.txt for more details.
7. PLANS FOR THE FUTURE
The following is a list of all the changes we would like to implement for future releases:
- Proxies
Using telnet as the protocol for Matanza uses a lot of bandwidth. To
solve this problem, we are designing a new protocol, MMP. Once it's
ready, we will be able to use proxies for connections.
For example, lets say Machine A and Machine B are only connected through
a slow modem connection. Player A, the owner of Machine A, runs the
Matanza server passing it command line arguments to have it listen on a
given port using MMP. Player B, stuck in Machine B, runs the server
telling it to act as a proxy to the world kept in Machine A. Then both
players connect to the servers running on their own machine.
- Termcap
We should use termcap rather than have the special control sequences
hardcoded.
Aritificial Intelligence
Make it possible to have computer-controled ships.
- Colors
Every now and then someone comes and suggest using colors. I am not so
sure about it.
The problems this might have is that for every character you must use
only one color while we are drawing exactly four pixels. This would
force us to give the same color to all of those pixels. I'm not very
happy about that.
But yes, as long as they are disabled by default, having this option
can't hurt.
- Collisions
When asteroids collide (and when asteroids and players collide), the way
their speeds are modified is very silly. I should get off my lazy ass
and come up with another algorithm.
And also, have something happen when playing in air mode (--air).
- Mods
Make it possible to make mods: sets of files that modify the way Matanza
behaves.
It should be possible, for example, to make a mod `Racer', one where the
players can't damage each other, they are just set on a given track
(crashing against the walls of the track) and their goal is to be the
fastest. Or a mod `RacerDead', a mod like `Racer' where players can
shot and kill each other as well. Or a mod `Labyrinth', where the
players are stuck in a labyrinth and must destroy each other. Or a mod
`CaptureTheFlag', where each team is supposed to steal the other team's
flag. Or a mod `DestroyBase', where each team is supposed to destroy the
other team's big ship (base). Or a mod ...
Multiple Universes:
Make it possible for one instance of the server to handle many different
universes.
Keyboard Bindings:
Make it possible to modify the keyboard bindings. Not globally but
per-player.
- Gasoline
Given a command-line argument, have the players run out of gas. There
should be some way for them to refill their ships (such as staying over
the gas machine).
Fix bugs with certain telnet clients:
I -think- the telnet-server code has its bugs (please, please, please
report them... I can't fix them if I can't find them). It won't work
with certain telnet clients. That should be fixed.
