Arganium is a cooperative hacking shooter. It blends old-school first person shooting and modern hacker CTF. In this repo you'll find everything you need to get started playing, building, and modifying Arganium. More extensive information on the gameplay, design, and components is located in the wiki.
- artwork: various artwork related to the project.
- assets: all game assets created for Arganium. This directory is the source for the arganium.pk3 archive that's used to launch Arganium.
- certain: contains the Zandronum wrapper Certain which allows control of a Zandronum game server.
- challenges: contains off-the-shelf Challenges built for Arganium.
- gloom: contains the Rails-based web interface Gloom which Arganium uses to interact with Certain.
- levels: submitted levels for Arganium. These all have to follow the conventions in the documentation but are otherwise ready to play.
- scripts: scripts for usage with Arganium. Includes finishscripts, client scripts, and more.
- Clone this repository
- Configure system according to the Development Environment guide.
- Place all desired challenges in the
challenges
directory and place desired levels in thelevels
directories. - Change into the Gloom directory.
- Run
./setup
to configure your game- Alternatively place a YML configuration file in the Gloom directory.
- Run
./setup <configname>.yml
to set up the Rails server. - Run
SECRET_KEY_BASE=$(rails secret) rails server -b 0.0.0.0
to start the server. - Have Control team players connect to http://[server socket]/ with their web browsers.
- Have Marine team players connect to the Zandronum server with the appropriate level wad (supplied in
levels
directory) and arganium.pk3 (supplied in theassets
directory). - The game is live! Gameplay is detailed in the wiki.
This repo contains a Docker image for simpler, portable deployment.
To build the Docker container, follow the following steps:
docker build . -t frozenfoxx/arganium:latest
To build with custom challenges (preferred for competition) you'll need to copy your challenges into the tree and build a custom container:
cp -rp [custom challenge dirs] [repo base]/challenges/
docker build . -t frozenfoxx/arganium:latest
Before running Arganium the Gloom server will need to be configured for play. You can generate this by running the following:
docker run -it \
--rm \
-e CONFIG_FILE="/data/configs/config.yml" \
-e MODE="setup" \
-v /Path/To/Configs:/data/configs \
--name=arganium \
frozenfoxx/arganium:latest
When completed it will save the configuration file in the mounted location for /data/configs
.
The following will run the Arganium Gloom server with the configuration file built in the previous step:
docker run -it \
--rm \
-e CONFIG_FILE="/data/configs/config.yml" \
-p 8080:8080 \
-p 10666:10666 \
-v /Path/To/Configs/:/data/configs \
-v /Path/To/WADs/:/data/wads \
--name=arganium \
frozenfoxx/arganium:latest
If some challenges are being run out of the container directly (NOT RECOMMENDED) or if you simply need a simpler deployment you may wish to run in host
mode for networking.
docker run -it \
--rm \
--network host \
-e CONFIG_FILE="/data/configs/config.yml" \
-v /Path/To/Configs/:/data/configs \
-v /Path/To/WADs/:/data/wads \
--name=arganium \
frozenfoxx/arganium:latest
Arganium is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Arganium is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.