Changelog History
-
v1.0.0 Changes
December 02, 2019๐ Release Notes
๐ Piqueserver has hit 1.0.0! This release has been around a year in the making and is accordingly jam-packed with new features:
TOML config
0๏ธโฃ JSON is hard to write and doesn't support comments. Many beginners had lots of issues with the strict syntax of the JSON format and we could not show useful comments describing the options directly in the config file. We've switched the default config to TOML, which is an
.ini
inspired format that is easier for humans to read and work with.๐ JSON is of course still supported, but only recommended if you are using another program to generate piqueserver configs.
๐ New config engine
โ๏ธ We've added a new config engine that allows you to declare options and sections in code, then automatically fetch and validate the values. Declaring options in advance also allows us to tell you about options which are unused, helping you catch typos.
๐ฒ Logging with log levels
๐ฒ Piqueserver's logging was always a pain when debugging the server or scripts. Piqueserver now emits low-level debug messages for things such as grenade throws, player spawns, etc.
0๏ธโฃ Since these messages are not of interest to most users, they are turned off by default. You can enable them with:
[logging] loglevel = "debug"
Time Values in Config
๐ Piqueserver now supports setting time values with time units, instead of opaque values:
tips_frequency = "5min12sec"
๐ Lots of Windows fixes
๐ While Windows was theoretically supported before, support should have improved a lot now. Please report any bugs in our issue tracker!
๐ Removal of python2 support
๐ As announced previously, this is the first version will not support python2.x. We are also removing support for python3.4 in this release. This is also the last release to support python 3.5.
๐ Improved docs
๐ Our docs at https://piqueserver.readthedocs.io have improved a lot. Instead of only being useful for devs, they now contain documentation for all config options, scripts and of course setting up Piqueserver. Have a read!
Multi-threaded map generation
๐ People on lower-powered hardware have complained about map generation taking too long and timing out players. We've moved those to a new thread for a smother experience switching maps.
HELLOLAN
๐ HELLOLAN is an AoS 1.x feature that allows you to auto-discover servers on your LAN. It is currently only supported by BetterSpades
GeoIP2
๐ Piqueserver now supports the new GeoIP2 format, the downloads for the old format were shut off. It is also now downloaded and checked securely. Thanks @bieito98!
โก๏ธ Data saving on world updates
โก๏ธ While not intended, it is possible to save bandwidth when sending out world updates by only sending updates for players that are actually connected. We now do this. We have tested this, but it might occasionally cause issues with Voxlap. If you have issues with players moving to weird positions after this update, let us know!
๐ Release Notification
๐ A big thing we wanted to add before a full release is release notifications to ensure all users of piqueserver are made aware when a new release is available and can upgrade soon. Update notifications will be displayed on login and on the console.
๐ UTF-8 Support
๐ OpenSpades' UTF-8 support allowed sending unicode in chat messages between players, but the server wasn't able to send any unicode itself. This has now been fixed. Thanks @MuffinTastic !
Infiltration
๐ง Infiltration can now be configured via the regular config, in the
[infiltration]
section:[infiltration] # Attackers get attacker\_score\_multiplier points for taking and capturing# the intel.attacker\_score\_multiplier = 10# Defenders gain 1 point for every defender\_score\_interval seconds that the# intel remains untouched.defender\_score\_interval = "30sec"# The ratio of attackers to defenders. Be aware that setting this# incorrectly might prevent players from joiningattacker\_ratio = 1.6
โก๏ธ Updated Push
โก๏ธ @1AmYF Updated the push game mode to the latest version, as well as enabling it to be configured in your piqueserver config.
๐ Extension Support
๐ Piqueserver will now query any client that isn't OpenSpades <= 0.1.3 for it's extension support. This will, allow extending the protocol with new weird and wonderful things.
๐จ Refactoring
As always, a lot of our work goes into improving and renovating the insides of piqueserver. This does not affect users, but is always prerequisite to making more changes in the future.
Misc
--copy-config
will now not fail if the directory already exists. Instead, it will attempt to create any files that don't yet exist- ๐ค farbuild exploit mitigation is improved and less susceptible to latency
- ๐ fixed several DOS exploits (crashes caused by malicious players)
- โก๏ธ updated status server to new bootstrap version
- the status server now returns the correct MIME type for the overview
- no longer make all users admins if no passwords are given
- โ add development dockerfile
- โฌ decrease size of docker container
- 0๏ธโฃ the
analyze
script is now part of the default distribution - the
commands
command lists available command - more commands now have a help message
- ๐ a bug was fixed that prevented joining the spectator team on ARM
- โ add `--version' option to view installed version
- you can now use asyncio in piqueserver in addition to twisted
- ๐ fixed
afk.py
kicking users accidentally - ๐ log the kick reason when kicking and log performance of map advances
- ๐ show voxlap in
/client
command - Inspired by recently found crashes, piqueserver can now be compiled with AddressSanitizer and UndefinedBehaviourSanitizer using the
USE_UBSAN
andUSE_ASAN
environment variables.
-
v1.0.0.rc1 Changes
April 03, 2019๐ Release Candidate
๐ This is the first release candidate for RC1. We have a few more things we want to get into this release, but are tagging the current state as a preview of what's to come and to allow people to test it easier.
๐ This prerelease can be installed via pip directly from git:
pip install git+https://github.com/piqueserver/[email protected]
๐ Release Notes
๐ Piqueserver has hit 1.0.0! This release has been around a year in the making and is accordingly jam-packed with new features:
TOML config
0๏ธโฃ JSON is hard to write and doesn't support comments. Many beginners had lots of issues with the strict syntax of the JSON format and we could not show useful comments describing the options directly in the config file. We've switched the default config to TOML, which is an
.ini
inspired format that is easier for humans to read and work with.๐ JSON is of course still supported, but only recommended if you are using another program to generate piqueserver configs.
๐ New config engine
โ๏ธ We've added a new config engine that allows you to declare options and sections in code, then automatically fetch and validate the values. Declaring options in advance also allows us to tell you about options which are unused, helping you catch typos.
๐ฒ Logging with log levels
๐ฒ Piqueserver's logging was always a pain when debugging the server or scripts. Piqueserver now emits low-level debug messages for things such as grenade throws, player spawns, etc.
0๏ธโฃ Since these messages are not of interest to most users, they are turned off by default. You can enable them with:
[logging] loglevel = "debug"
Time Values in Config
๐ Piqueserver now supports setting time values with time units, instead of opaque values:
tips_frequency = "5min12sec"
๐ Lots of Windows fixes
๐ While Windows was theoretically supported before, support should have improved a lot now. Please report any bugs in our issue tracker!
๐ Removal of python2 support
๐ As announced previously, this is the first version will not support python2.x. We are also removing support for python3.4 in this release.
๐ Improved docs
๐ Our docs at https://piqueserver.readthedocs.io have improved a lot. Instead of only being useful for devs, they now contain documentation for all config options, scripts and of course setting up Piqueserver. Have a read!
Multi-threaded map generation
๐ People on lower-powered hardware have complained about map generation taking too long and timing out players. We've moved those to a new thread for a smother experience switching maps.
HELLOLAN
๐ HELLOLAN is an AoS 1.x feature that allows you to auto-discover servers on your LAN. It is currently only supported by BetterSpades
GeoIP2
๐ Piqueserver now supports the new GeoIP2 format, the downloads for the old format were shut off. It is also now downloaded and checked securely. Thanks @bieito98!
โก๏ธ Data saving on world updates
โก๏ธ While not intended, it is possible to save bandwidth when sending out world updates by only sending updates for players that are actually connected. We now do this. We have tested this, but it might occasionally cause issues with Voxlap. If you have issues with players moving to weird positions after this update, let us know!
๐จ Refactoring
As always, a lot of our work goes into improving and renovating the insides of piqueserver. This does not affect users, but is always prerequisite to making more changes in the future.
Misc
--copy-config
will now not fail if the directory already exists. Instead, it will attempt to create any files that don't yet exist- ๐ค farbuild exploit mitigation is improved and less susceptible to latency
- ๐ fixed several DOS exploits (crashes caused by malicious players)
- โก๏ธ updated status server to new bootstrap version
- the status server now returns the correct MIME type for the overview
- no longer make all users admins if no passwords are given
- โ add development dockerfile
- โฌ decrease size of docker container
- 0๏ธโฃ the
analyze
script is now part of the default distribution - the
commands
command lists available command - more commands now have a help message
- ๐ a bug was fixed that prevented joining the spectator team on ARM
- โ add `--version' option to view installed version
- you can now use asyncio in piqueserver in addition to twisted
-
v0.1.3 Changes
March 01, 2018๐ Changes
๐ This is a bug-fix release, so don't expect any grand new features.
๐ Move Command
๐ The
/move
command and/goto
command have long done very similar things. Thanks to @esplemea and @Perpolo, these have now been merged into one. All possible syntax placements are:/move A4 # Move yourself to sector A4 /move 256 256 30 # Move yourself to specific coordinates /move targetPlayer A4 # Move targetPlayer to sector A4 /move targetPlayer 256 256 30 # move targetPlayer to specific coordinates
This is the first of a number of changes made by Students of the KTH Stockholm as part of their studies.
--copy-config
Enhancementsโก๏ธ In the past,
--copy-config
would fail if you already had a directory in that location. Now it will create a backup and update the folder structure instead.๐ Bugfixes
๐ A few very old bugs allowed users to do fun things like crash the server and teleport to random locations. These bugs have been fixed. We will be keeping a lookout for more of those.
Other Small Things
- Scripters can now more easily add new packets
- The status server now shows the client version
Python 2
๐ This is the last ever release for python2, which makes us very very happy. If you need any assistance in moving your servers or scripts to py3, or for anything else really, you can always talk with us and we'll help.
Installation from PyPi
Python 2.7 or 3.4+ and
pip
are required.โ To install the latest version using
pip3
:$ pip3 install --upgrade piqueserver # Installs latest piqueserver from PyPi
๐ณ Installation with Docker
๐ Please see our wiki page about Docker.
Installation from the source code
Python 2.7 or 3.4+,
pip
andvirtualenv
are required.๐ To build:
$ virtualenv -p python3 venv && . ./venv/bin/activate # Activate virtualenv session(venv) $ pip install -r requirements.txt # Install requirements(venv) $ python setup.py install # Build and install piqueserver(venv) $ deactivate # Deactivate virtualenv session
(replace
-p python3
with-p python2
if you intend to run piqueserver in Python 2)โ Running
โ Running pique is a easy as:
$ piqueserver # OR$ piqueserver -d YOUR\_CONFIGS\_FOLDER\_LOCATION
๐ง The default configuration directory location is
~/.config/piqueserver/
.๐ง The configuration directory for any piqueserver instance can always be specified using the
-d
option, thus allowing for per-instance configurations. -
v0.1.2 Changes
January 25, 2018๐ Changes
๐ This is a bug-fix release, so don't expect any grand new features.
Arena Gamemode
- Players are now restocked on round start, which enables you to spam the hell out of your weapons during the caged period without losing any ammo when the round truly starts
- Respawn time during the cage period will be set to 0, which allows you to switch weapons/teams without risking not being able to spawn when the round begins
Dead Players Are Now Dead (when joining a server)
AoS 0.75 protocol has no way of informing the client a player is dead on server join, leading to some very confusing situations on arena.
As a workaround, we tell any newly connected clients that all players that should show up as dead just committed suicide ยฏ_(ใ)_/ยฏ
๐ Web Documentation
๐ As part of our effort to make script writing easier, we have set up automatically generated documentation for piqueserver. You can find this documentation on readthedocs. We don't currently have a main page yet, so you will need to click on "module index" to get to the list of pages.
We'll be incrementally improving this over time.
Other Small Things
- Strip ascii control codes from player names
- ๐ Show nicer errors when adding an invalid map to the config
- Try sending client version handshake as soon as possible instead of only after map load (which is useful for client feature detection)
- ๐ Fixed bug where using
/god
in the console would cause an error - Fxed bug where using
/client
without target would cause an error - ๐ Fixed error when handling error creating new config directory on python2
aimbot2.py
now outputs proper CSVs- --copy-config now works properly again
Python 2
๐ Python 2 is reaching its end of life, so we will drop support for it right after the next release. If you haven't already, switch your piqueserver to Python 3 as soon as possible.
If you need any assistance in porting to py3, or for anything else really, you can always talk with us and we'll help.
Installation from PyPi
Python 2.7 or 3.4+ and
pip
are required.โ To install the latest version using
pip3
(orpip2
for Python2) :$ pip3 install --upgrade piqueserver # Installs latest piqueserver from PyPi
๐ณ Installation with Docker
๐ Please see our wiki page about Docker.
Installation from the source code
Python 2.7 or 3.4+,
pip
andvirtualenv
are required.๐ To build:
$ virtualenv -p python3 venv &&. ./venv/bin/activate # Activate virtualenv session(venv) $ pip install -r requirements.txt # Install requirements(venv) $ python setup.py install # Build and install piqueserver(venv) $ deactivate # Deactivate virtualenv session
(replace
-p python3
with-p python2
if you intend to run piqueserver in Python 2)โ Running
๐ง You can specify the location of the configuration directory using the
-d
option. This allows you to have multiple configurations for different instances of piqueserver.0๏ธโฃ The default location is
~/.config/piqueserver/
.To run:
$ piqueserver # OR$ piqueserver -d YOUR\_CONFIGS\_FOLDER\_LOCATION
-
v0.1.1
December 28, 2017 -
v0.1.1.post1 Changes
December 28, 2017๐ Changes
๐ Python3 Support!
โ Piqueserver now has full Python3 support and has been tested on a small scale. This is a big milestone on our path of making piqueserver a modern AoS server. Once we are comfortable with dropping Python2 support, this enables us to use the large number of features added since Python2.
โ While the base server and included scripts have been tested, some third-party scripts might be broken by this, and we will gladly help you with porting them over. Nonetheless, we will be maintaining Python2 support for at least another one or two versions to help the transition.
๐ Python3 support is also a big step since it means we now have...
๐ Windows Support
๐ง With Python3 support comes Windows support. Since we now have a developer that actually uses Windows, we can certify that piqueserver does in fact work on Windows with Python3. There are still some quirks, like an unintuitive folder name, but it should work just fine. Since most of us are on Linux or OS X, we are reliant on your support to find problems with piqueserver on Windows, so please do test it and report back!
โ Default Scripts Have All Been Tested
โ All scripts included with piqueserver have been reviewed and tested to ensure they can work out of the box with both Python 2 and Python 3 without any obvious bugs. If you do find any bugs we have missed, please report them!
๐ Some scripts are no longer supported:
fbpatch.py
: is now included inside piqueserver's code- ๐
query.py
: added support for an query protocol that we believe no uses, so it was removed nosharp.py
: is no longer necessary since piqueserver allows players to be kicked by id even if their names begin with a#
(tip: id always take precedence in player-related commands)platform.py
: was too big to maintain (2k lines of code) and might be replaced with a simplerplatform2.py
version inpiqueserver-extras
in the future- ๐
commandhelp.py
: help for commands is already included in piqueserver, although it needs some polishing. stats.py
: the server used here is not available anymore
๐ All of the unsupported scripts have been moved to the
piqueserver-extras
repository, inside theunsupported-scripts
folder.Gamemodes now have their own folder
๐ง This requires some changes to existing configurations:
- create a
game_modes
dir in your config directory ๐ 2. move the game mode scripts you use from the scripts dir into the game_modes dir
โก๏ธ If you were using the full module specification eg. (
piqueserver.scripts.push
), you'll need to update to (piqueserver.game_modes.push
).Manhole Server
๐ A long-broken and rarely-used PySnip feature has been fixed. The Manhole SSH server can now be enabled again to allow SSH access to the python console of the server. In addition, syntax highlighting has been added.
ip_getter
IP getter (a.k.a.
ip_getter
) is the service that piqueserver uses to discover your public IP address when the server runs behind NAT routers. Previously, it was hardcoded, but now you can set it with theip_getter
setting in your config file. Additionally, it was tamed to not spit undecipherable errors at you when something goes wrong and provide a helpful error message instead.Commands
๐ Comands such as
/lock
can now use team names as a parameter instead of only acceptingblue
,green
orspectator
. For convenience, the1
,2
, andspec
aliases will also be available.Now
/godsilent
will let you know if you have quit godmode instead of misleadingly always tell that "You have entered god mode". Furthermore, now when/godsilent
is used to silently turn someone else in godmode, the receiving player will be informed of it.Also:
/version
now returns the correct version/client
doesn't requires a target player anymore/fog
now accepts hex color codes (e.g.#efefef
or#00ff00
)
Other Small Things
- ๐ Some documentation was added in the code to aid developers
- Name colisions are no longer treated differently for "Deuce" players
- The server
aos://
link is now displayed in statusserver (e.g. https://piqueserver.walladge.net/ has a link to aos://764867901:32887) - ๐ง
pyenet
now has wheels for linux, vastly improving the installation time on the platform - The
random.txt
map now works in Python 3 - ๐ Console input has been fixed (although not on Windows yet)
- โ piqueserver now prints a warning in the console if being ran with an unsupported version of Python (e.g. 2.6)
- ๐ Various small fixes and improvements
Instalation from PyPi
Python 2.7 or 3.4+ and
pip
are required.โ To install the latest version using
pip3
(orpip2
for Python2) :$ pip3 install --upgrade piqueserver # Installs latest piqueserver from PyPi
๐ณ Installation with Docker
๐ Please see our wiki page about Docker.
Installation from the source code
Python 2.7 or 3.4+,
pip
andvirtualenv
are required.๐ To build:
$ virtualenv -p python3 venv &&. ./venv/bin/activate # Activate virtualenv session(venv) $ pip install -r requirements.txt # Install requirements(venv) $ python setup.py install # Build and install piqueserver(venv) $ deactivate # Deactivate virtualenv session
(replace
-p python3
with-p python2
if you intend to run piqueserver in Python 2)โ Running
๐ง You can specify the location of the configuration directory using the
-d
option. This allows you to have multiple configurations for different instances of piqueserver.0๏ธโฃ The default location is
~/.config/piqueserver/
.To run:
$ piqueserver # OR$ piqueserver -d YOUR\_CONFIGS\_FOLDER\_LOCATION
-
v0.1.0-rc.1 Changes
September 04, 2017๐ Installing this release
๐ This pre-release can be installed with
git clone
(see README.md) or via pip:pip install git+https://github.com/piqueserver/[email protected]
๐ Changes
๐ง Configuration Enhancements
๐ง You can now use the
piqueserver --copy-config
option to copy the default config to your configuration directory.โก๏ธ Scripts can now be loaded from the PYTHONPATH. This enables the installing and updating scripts with a single command, directly from pypi or github. No more abandoned scripts and lost patches! The goal is to make this even simpler next time.
Built-in Version Detection
๐ Piqueserver now supports built-in version detection. It does not currently support enhanced version detection though.
Players can access version detection via the
/client <username>
command.Scripters can access version detection via the
connection.client_info
dictionary.๐ Support for OpenSpades Popup Messages
๐ OpenSpades supports new popup messages. These can be sent via the following functions:
connection.send\_chat\_notice(message) connection.send\_chat\_warning(message) connection.send\_chat\_error(message) connection.send\_chat\_status(message) protocol.broadcast\_chat\_notice(message, team=None) protocol.broadcast\_chat\_warning(message, team=None) protocol.broadcast\_chat\_error(message, team=None) protocol.broadcast\_chat\_status(message, team=None)
Command System Rewrite
The commands system has been rewritten from scratch.
This is mainly a thing visible to script authors, but we managed to sneak in a few new features too:- commands will now return a helpful error message when used incorrectly. No more "Invalid Command".
- commands taking player names will now refuse to work if multiple players match. No more accidental kicks of the wrong person.
- commands now accept "yes", "no", "on", "off" in addition to "0" and "1"
The new command interface can be used like this:
from piqueserver import [email protected]()def do\_thing1(connection): do\_thing1()@commands.command("name", "alias", "another\_alias", "even\_more", "wew", "stop")def do\_thing2(connection): do\_thing2()
Other Small Things
- 4-8x increase in map download speed
- ๐ merge several scripts into the base server (dynfog, bugfix.py, etc.)
- ๐ native support for bots
- ๐ merge changes from github.com/infogulch/pyspades
- โก๏ธ update dependencies
- now uses
pyenet
pypi package - now uses
ipaddr
pypi package
- now uses
- ๐ various small fixes and improvements
๐ง Some users have managed to get piqueserver running under windows, but due to lack of testers and demand, we currently only have official support for Mac OS X (Darwin) and GNU/Linux. If you are a Window user please feel free to help us change this!
Instalation from PyPi
Python 2.7 and
pip
are required.โ To install the latest version using
pip
:$ pip install piqueserver # Installs latest piqueserver from PyPi
Installation from the source code
Python 2.7,
pip
andvirtualenv
are required.๐ To build:
$ virtualenv -p python2 venv &&. ./venv/bin/activate # Activate virtualenv session(venv) $ pip install -r requirements.txt # Install requirements(venv) $ ./setup.py install # Build and install piqueserver(venv) $ deactivate # Deactivate virtualenv session
โ Running
๐ง You can specify the location of the configuration directory using the
-d
option. This allows you to have multiple configurations for different instances of piqueserver.0๏ธโฃ The default location is
.config/piqueserver
.To run:
$ piqueserver # OR$ piqueserver -d YOUR\_CONFIGS\_FOLDER\_LOCATION
๐ณ Docker support
๐ Please see our wiki page about Docker.
-
v0.0.1 Changes
January 19, 2017We are excited to announce the first alpha version of piqueserver!
The main highlights are:
- ๐ PyPi packaging support (piqueserver can now be easily installed using
pip
) - ๐ณ Docker support (requires 64-bit operating system)
- Simplification of the overall file structure
- ๐ Improvements and simplification of the build process
- โฌ๏ธ Upgrade to latest upstream enet (v1.3.13)
- โ Addition of the
-d
option to easily change the configuration directory
๐ This release is available for Mac OS X (Darwin) and GNU/Linux only.
Instalation from PyPi
Python 2.7 and
pip
are required.โ To install the latest version using
pip
:$ pip install piqueserver # Installs latest piqueserver from PyPi
And in case you're trying to install this specific alpha version from
pip
and a newer one is available:$ pip install piqueserver==0.0.1 # Installs piqueserver 0.0.1
Installation from the source code
Python 2.7,
pip
andvirtualenv
are required.๐ To build:
$ virtualenv -p python2 venv &&. ./venv/bin/activate # Activate virtualenv session(venv) $ pip install -r requirements.txt # Install requirements(venv) $ ./setup.py install # Build and install piqueserver(venv) $ deactivate # Deactivate virtualenv session
Known issues
๐ง If you installed piqueserver from
pip
, the default configuration files were not downloaded with it.๐ง If that's your case, please download the
configs.zip
file attached below and extract its contents where you want you configuration folder to be created.๐ง Otherwise, you can find the default configuration files in your source directory, inside the
configs
folder.โ Running
๐ง You can specify the location of the configuration directory using the
-d
option. This allows you to have multiple configurations for diferent instances of piqueserver.To run:
$ piqueserver -d ./piqueserver/configs # OR$ piqueserver -d YOUR\_CONFIGS\_FOLDER\_LOCATION
๐ณ Docker support
๐ Please see our wiki page about Docker.
- ๐ PyPi packaging support (piqueserver can now be easily installed using