Game Of Bases
Goba is a remake of a classic game Flash
Attack.
The freshmeat project page is here.
Rate me there!
Game idea
There are (at most) 4 players. Each player has a base and four tanks.
The tanks may move, lay mines and fire at other tanks. The base can use
a laser beam and launch bombs attacks. Annihilate the enemies!
The first version
678 laser
773 menu
773 bombing
821 walls
Binaries are available for Linux (Compiled in Ubuntu 6.06 (Dapper) with Godi, I noticed the binaries from Dapper work also with 6.10, maybe even in other platforms). Here is the Debian/Dapper package for it.
Source is available, too. The
software is written in Objective
Caml, and has successfully been compiled with these dependencies (NOTE: version 891 requires more recent compiler (3.10.x) version and new releases of some libraries, such as sexplib):
- Ocaml 3.09.2 (earlier versions probably work too). Available in Ubuntu as package ocaml-nox .
- Findlib 1.1.2pl1 (earlier versions probably work too). Available as ocaml-findlib in both Ubuntu and Debian.
- Ocamldsort 0.14.3. Available in Ubuntu and Debian as package ocamldsort .
- SDL 1.2. Available in Ubuntu as packages libsdl-image1.2-dev libsdl-mixer1.2-dev libsdl-ttf2.0-dev libsdl1.2-dev .
- OcamlSDL 0.7.2. Available in Ubuntu as package libsdl-ocaml-dev .
- Sexplib 2.8.2 (earlier versions probably work too). Not available in Ubuntu or Debian.
- PCRE 5.12.2 (earlier versions probably work too). Available as libpcre-ocaml-dev in both Ubuntu and Debian.
- Imagemagick for cropping some bitmaps for tile graphics. Available in Ubuntu and Debian as package imagemagick . You could just use the pre-extracted images in the binary package, though.
For the meta-server support you will need the following packages:
- OcamlNet (for Netclient, which is the component used for conversing HTTP). The component is available as package libnetclient-ocaml-dev in both Ubuntu and Debian. Note that the Ubuntu version has a bug that prevents the program from linking. Workaround: install these libraries (disclaimer: they worked for me, I guarantee nothing about them working anywhere else).
In addition, these might be helpful if you want to modify certain
aspects of the game:
- Blender 2.43, if you want to modify some of the graphics.
- Gimp 2.2.13, some of the bitmaps are in this format.
- Lmms 0.2.1-1.1, some sounds were generated with this
- Audacity 1.2.4b, and postprocessed with this
- Xemacs 21.4.19 - the editor of choice, with Tuareg-mode
I haven't tried Godi
out, but it may be worth the trouble using it for those Ocaml-based
packages, in case your distribution doesn't support any of the packages
out-of-the-box. Atleast findlib, sdl-bindings and sexplib are available
with it.
- Added an automatic way to drive vehicles by pointing and
clicking - does this take too much away from the game?
- Fixed a fatal problem in gfx.ml: it kept on opening font.ttf
until file descriptors run out. Thanks for the bug reports!
(Just kidding, there weren't any.)
- Graphics enhancements
- Replaced some texts with graphical symbols,
- Fixed object wobbling in the tank view (however the tank itself wobbles now a little..)
- Tanks and bases are now composed of two parts, to allow better colorifying of them.
- Tank health is now displayed with a green/red bar instead of numbers.
- Gameplaying enchancements
- Tanks may now build walls with T.
- It can now be seen whether a player is dead or alive, by looking at the colored signal lights.
- Capability to switch between fullscreen and windowed with alt-return.
- Other
-
- Reduced memory consumption by not keeping non-cropped bitmaps in memory,
- Added Debian-package.
- Added support for local sexplib-package, for the ones who don't have have system-wide access. (Put sexplib-2.8.2.tar.gz to the same directory, and it does the rest.)
- The many graphics files are now packaged into a single tar, which is read at runtime (memory-mapped), to reduce latency in loading bitmaps.
- Graphics enhancements
- Rerendered tank and base graphics: better lighting, smaller tanks
- Added broken base graphics
- Better mountain graphics
- Bomb-attacks now have better graphics and sound
- Guide lines for changing laser angle/bomb distance
- Grass patches have softer edges
- Gameplaying enchancements
- Tanks now have more ammo
- Added fake bases: your tank may build an object that looks like the base! Use G to build one.
- Other
- Map generator is satisfied with less space for players - no more errors starting server
- Number of base bombs is now properly maintained between client connects.. As is the base laser angle and bomb attack distance.
- Replaced some pngs with jpegs, to reduce size
- Optimized cpu consumption by cropping excess emptiness from mages after loading
- Support for not using metaserver (--nometa) in both client and server
- Added meta-server support. (Currently uses hardcoded http://modeemi.cs.tut.fi/~flux/update.cgi.) Note: this means that without compiling the binary yourself, both the client and the server will attempt to connect the web site.
- Server can now be started in any port.
- Added capability to connect to any server (and port) from within the game UI.
- Added graphics for the bases, mines and projectiles.
- Added startup image and background image.
- Added crosshair-graphics to bombs.
- Fixed laser network behavior.
- You can no longer restore full health/ammo/etc by reconnecting the client :-).
- Base can now launch a bomb attach! (angle+distance)
- Changed the way base laser works. Now, instead of fixed number of charges, it continuously recharges up to 10 seconds of blast time. The best performance of the laser can only be reached by using it continuously for atleast three seconds.
- Driving causes (very slight) damage to grass - enough to see common traffic patterns.
- Perhaps fixed mines not going away properly after detonation.
- Main view now displays relatively where the tanks are, when they are not visible in it.
- Bases now have lasers! Aim with P, shoot with L.
- Added end-game view, where the player can view the whole map (after their base has been destroyed).
- Player can now join the game even if their base is destroyed.
- Also, bases can now actually be destroyed..
- Moved sound files into their own directory.
- Larger mine explosions with a nicer explosion pattern.
- Create slightly larger maps (100x100 instead of 80x80) with different parameters. MapGenerator can sometimes fail to find space for four players, in which case the server must be restarted (it'll bail out with an exception).
- It's easier to destroy mountains.
- Handle compile time dependencies better..
- Fixed bug regarding turning tank too much counterclockwise
- Better tile graphics (added lousy mountains, added softer
edges around grass patches, added grass that covers tanks)
- Internally better (server uses object classes for maintaining object state).
- Tank orientation is now passed to server (looks better)
- Tanks are now controlled by turning and adjusting motor speed, not by pointing to the direction you want them to do. Similarly firing is now relative to tank orientation.
- Some performance improvements (created bitmaps are cached already in the map structure, not only via their construction pattern which requires doing a hash table lookup)
- Fixed not being able to shoot enemy base (or rather, destroy it) (Source/binaries
- Tank view flashes red on damage
- Fixed network jerkiness-effect
- Added (some) tile graphics
- Better internals (bitmap composition, uniform object identification for map elements and objects, better extracting and feeding back of state for objects, dropped redundant protocol messages..)
- Flashing mines (randomly)
- Bigger tank views, smaller base view
- Better graphics
- Fixed bug that caused the game to increase cpu usage continuously
- Fixed some write error cases in server
- Apparently introduced some jerkiness to network play..
- Maps are now generated on server startup, instead of being loaded
from map.txt (map.txt-support is gone at the moment)
Playing
First you start the server. It starts to listen in port 61753. The
option 'Start server' in the game actually does nothing :).
Second you start the game. If your host doesn't match the ones
hardcoded in the game (localhost and jolt.modeemi.cs.tut.fi)
you'll need to enter the host name in the command line, as the
first argument.
Now you're set to go! F1 provides keyboard help. The game doesn't
yet say who's won or died, so you'll need to figure that out
yourself..
Notes
- Enemy units cannot be destroyed if the enemy client is not
connected.
- If you build from the source, you want to build and run the
optimized version (goba.opt) of the game binary.
- Bug reports are appreciated. Especially helpful the bug reports are if you
- Build the binary yourself
- Use the byte-code binary (not the optionally produced .opt-variety)
- Put OCAMLRUNPARAM=b to the environment
to produce backtraces, in the event the bug manifests itself via an uncaught excaption.
Erkki Seppälä
Last modified: Sun May 4 12:11:29 EEST 2008