Skip to main content

A minimalist TPS game with fast-paced action

Project description

Brutal Maze is a third-person shooter game with fast-paced action and a minimalist art style.

The game features a trigon trapped in an infinite maze. As our hero tries to escape, the maze’s border turns into aggressive squares trying to stop him. Your job is to help the trigon fight against those evil squares and find a way out (if there is any). Be aware that the more get killed, the more will show up and our hero will get weaker when wounded.

Brutal Maze has a few notable features:

  • Being highly portable.
  • Auto-generated and infinite maze.
  • No binary data for drawing.
  • Enemies with special abilities: stun, poison, camo, etc.
  • Somewhat a realistic physic and logic system.
  • Resizable game window in-game.
  • Easily customizable via INI file format.
  • Remote control through TCP/IP socket (can be used in AI researching).


Brutal Maze is written in Python and is compatible with both version 2 and 3. The installation procedure should be as simple as follows:

  • Install Python and pip. Make sure the directory for Python scripts is in your $PATH.
  • Open Terminal or Command Prompt and run pip install --user brutalmaze.

For more information, see Installation page from Brutal Maze wiki.

After installation, you can launch the game by running the command brutalmaze. Below are the default bindings, which can be configured as shown in the next section:

New game.
Toggle pause.
Toggle mute.
Move left.
Move right.
Move up.
Move down.
Right Mouse
Move the hero using mouse
Left Mouse
Long-range attack.
Close-range attack, also dodge from bullets.


Brutal Maze supports both configuration file and command-line options. Apparently, while settings for graphics, sound and socket server can be set either in the config file or using CLI, keyboard and mouse bindings are limited to configuration file only.

Settings are read in the following order:

  1. Default configuration [0]
  2. System-wide configuration file [1]
  3. Local configuration file [1]
  4. Manually set configuration file [2]
  5. Command-line arguments

Later-read preferences will override previous ones.

Remote control

If you enable the socket server [3], Brutal Maze will no longer accept direct input from your mouse or keyboard, but wait for a client to connect. Details about I/O format are explained carefully in Remote control wiki page.


Brutal Maze’s source code and its icon are released under GNU Affero General Public License version 3 or later. This means if you run a modified program on a server and let other users communicate with it there, your server must also allow them to download the source code corresponding to the modified version running there.

This project also uses Tango color palette and several sound effects, whose authors and licenses are listed in Credits wiki page.

[0]This can be copied to desired location by brutalmaze --write-config PATH. brutalmaze --write-config alone will print the file to stdout.
[1](1, 2) These will be listed as fallback config in the help message (brutalmaze --help). See wiki for more info.
[2]If specified by brutalmaze --config PATH.
[3]This can be done by either editing option Enable in section Server in the configuration file, or launching Brutal Maze using brutalmaze --server.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for brutalmaze, version 0.8.0
Filename, size File type Python version Upload date Hashes
Filename, size brutalmaze-0.8.0-py2.py3-none-any.whl (7.2 MB) File type Wheel Python version py2.py3 Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page