Skip to content

SectorAlpha/AlphaGSM

Repository files navigation

AlphaGSM

This is the Sector Alpha Game Server Manager.

This tool runs game servers using screen to manage the sessions and provides tools to control them in a consistent way and to manage many servers at once. This also contains code to share downloads and if possible the actual files between multiple installs.

In short, setting up and installing a game server is as easy as

alphagsm mymcserver create minecraft

alphagsm mymcserver setup

alphagsm mymcserver start

Setup

For a single user configuration AlphaGSM will run out of the box. Simply download the code, copy alphagsm.conf-template to alphagsm.conf and run the alphagsm executable. Edit alphagsm.conf if you wish to alter the default setup.

Be sure to check out the dependancies and to look at the examples below to get your first game server running.

For changing users on multi-user setups, sudo is used so all protected permissions are controlled using sudo.

The public script is alphagsm. This can either by run using it's full or relative path or for ease of use can be installed in bin/ (or ~/bin/) using a symlink (It can't be physically moved as other paths are resolved relative to it's true location).

For help using it run alphagsm --help or see the examples below.

For help editing and contributing see the documentation in the source code or the pydoc output, especially for the modules "server.gamemodules" and "downloader.downloadermodules".

Project hosting

The project is currently hosted at https://github.com/SectorAlpha/AlphaGSM.

Community

If you have a question for the community and developers, you will always be welcome to contact us by these various means of communication.

The plans are also being discussed on discord and within this github repo

Dependencies

Main dependancies

python3 screen crontab python3-crontab sudo (for multi user/shared downloads support)

SteamCMD dependencies

lib32gcc1 or libstdc++ or libstdc++.i686

e.g ubuntu, ib32stdc++6

for Ubuntu/Debian, redhat/centos and redhat/centos 64 bit respectively (pick one). see https://developer.valvesoftware.com/wiki/SteamCMD#Linux for more details.

Examples

Example of setting up of a Minecraft vanilla server

alphagsm mymcserver create minecraft setup

alphagsm mymcserver start

Example of setting up a CS:GO server

alphagsm mycsgo create csgo

alphagsm mycsgo setup

alphagsm mycsgo start

Example of updating the CS:GO server (A specific command for updating the server files). These commands are not specific to all game servers (e.g Minecraft).

alphagsm mycsgo update

alphagsm mycsgo update -v -r

Where the -v flag requests the validation of files, and -r will restart your server once the update has been done.

This will create a new minecraft server called mymcserver and set it up asking you for which version and port to use and any other info it needs. The second command will (assuming the setup succeded) start the server.

There are various servers available "minecraft" defaults to vanilla minecraft which has the full name is minecraft.vanilla. There is also minecraft.custom and minecraft.tekkit and many more to come including Terraria, Steam games and team speak

To stop the server

alphagsm mymcserver stop

To backup

alphagsm mymcserver backup

which will use the default backup settings for the server. For details of how configure backups and setup regular backups please see the full help by running alphagsm --help.

Legal

Liscence

Licensed under GPL v3.0. See the LISCENCE file for details.

Copyright

AlphaGSM Copyright (C) 2016 by Sector Alpha.

Credits

Developed by Cosmosquark and Staircase27. See the CREDITS file for the full list of contributors.

Developers

Development

We're working on improving the clarity of the comments on the code. We have also included a file "technical_introduction.txt" which gives a quick start guide on how to develop for the code.

Adding New Game Severs

So long as a game server is downloadable via steamCMD or over http, adding a new game server is possible with the AlphaGSM code. An overview of the commands are given in "server/gamemodules.py" of which are common for all game servers. "gamemodules/minecraft/vanilla.py" is a doccumented example of how to download a game server over URL and additionally allow for variations/mods of the same game (e.g tekkit). "gamemodules/teamfortress2.py" is a doccumented example of how to download a game server via SteamCMD.

In each gameserver module, you are either adding new commands to the server object as described in "server/server.py", or overriding existing ones to be more suitable for the game server of choice. Esse ntially you are extending "server/server.py".

The methods in particular that require the most attention in a game module are 'configure', where one defines the game server configuration (e.g port, startup map, game server properties file). The other method is "get_start_command" which defines the executable command to startup the game server (e.g in minecraft this is "java -jar minecraft.jar").

If you need to develop a new downloader, "downloader/downloadermodules.py" contains doccumentation for developing this.

A tutorial is on the TODO list, but we hope for now that the game server modules that already exist act as a good starting point.

If you are interested in adding a new game server and would like help, raise an issue or a discussion on this github page

You can also contact cosmosquark on our discord server https://discord.gg/8audc8Ukaq

Developing AlphaGSM

Read over the infomation provided in "technical_introduction.txt" to get an overview of how AlphaGSM works and look at the files associated with the software. This is currently in development.

Contact

Any queries? Contact us on Discord https://discord.gg/8audc8Ukaq