Download The Bub's Brothers



Step 0. Introduction

Sorry, these instructions are a bit long and tedious. At some point we will maybe make a nice full-featured auto-installing single-click release. Or if someone would like to do it, it would still be better :-)

The Bub's Brothers is a network, client-server game. It does not mean that you cannot play it alone, on a non-networked computer, but that will just be less fun. The game is written in the Python programming language.
The server doesn't display anything. Only one client should be run per machine. Put the server either on one of these machines or on yet another machine; a single modern processor should not have any trouble handing both a client and the server.

Step 1. Prerequisites


Step 2. Downloading the code

You can get the game in one of the following ways:
  1. By downloading a File Release from the project page.
  2. By getting the latest CVS tree.
  3. If you are not familiar with the command-line cvs program, you could try CVSGrab.

Step 3. Starting a server

Python code need not be compiled, but there are a couple of C extension modules that you may want to compile in the situations specified in the sequel. You need a working C compiler for this, but note that you need to compile on each specific platform only the C extensions (if any) that are meaningful for the usage (client or server) of that machine, as specified below. For example, a MacOS Pygame client does not need any C extension to be compiled. On the server side, you can optionally enable the Clock bonus (try it, it's fun!) by compiling the C extension module statesaver in the bubbob directory with the following command:
   cd bubbob
   python setup.py build_ext -i
This should create a file called statesaver.so or statesaver.dll on Windows.
To start a server, enter that bubbob directory and run bb.py with the name of the level file (level files are found in the bubbob/levels subdirectory):
   cd bubbob
   python bb.py levels/scratch.py
or:
   cd bubbob
   python bb.py levels/RandomLevels.py
You can also use the levels of the original MacOS game Bub & Bob. They must be uncompressed and put in the levels subdirectory in MacBinary mode (e.g. via the Fetch FTP transfer tool of MacOS9). I will add a couple of these original levels on this site if their original authors allow me to do so.
There are a couple of options that you may want to use when starting a server, most notably to start at a different level within the level file or to skip levels.

Step 4. Starting the clients

Note that client machine not acting as a server will not use the bubbob directory at all, but only the display and common directories (unless you are using the Java client, which requires absolutely nothing; skip to the end of this paragraph).
  1. To run the Pygame client, run the script pclient-pygame.py on the top-level directory (see below for options):
       python pclient-pygame.py
    
  2. To run the X Window client, first compile the required Python extension module:
       cd display
       python setup.py build_ext -i
    
    Then you can run pclient-xshm.py on the top-level directory (see below for options):
       python pclient-xshm.py
    
    The client tries to use the SHM extension of X Window, which will not work if your DISPLAY points to a non-local display or if the X Window server just doesn't support it. In this case it should revert automatically to the plain X protocol. For troubleshooting you may want to try pclient-slow-X.py which does not even try to use the SHM extension.

  3. To run the Java client, all you have to do is figure out the correct URL to type in your browser. It is the URL that the server prints when it starts:
       HTTP Java server: http://xxx.yyyy.com:8000
    

Server selection for the Python clients

Troubleshooting



That's it. You can e-mail any question you may have to me, arigo, at users.sourceforge.net, or join our IRC channel #ima on irc.freenode.net.

Armin Rigo and the IMA connection