The largest release to date of Snipe server is now available for download from Github repository. This release brings the following additions and changes to the Snipe server platform:
- Room manager package. Used for creation and management of the player rooms on slave servers. Persistent rooms are supported.
- Leaderboards package. Manages the leaderboards updated in real-time.
- Basic user matchmaking package. Provides your project with server-side 1v1 matchmaking.
- Extended user matchmaking package. Further customization of basic matchmaking that supports any number of users matched against each another.
- Test messages package. Gives access to various client requests that allow measuring server performance and profiling important APIs.
- Kongregate login package. Kongregate network login API was moved into a separate package from the core.
- User session length stats package. Allows the collection and display of average user session length stats.
- Large amount of server optimizations. In particular, user login and registration were rewritten to support much heavier load (with minor breaking changes detailed below).
- Asynchronous database connections manager and API for asynchronous database queries. Used in the new user login and registration code.
- Live client migration between slave server threads with support for automatic migration on client login.
- Editor and server support for static tables.
- Various clan module additions and fixes.
- Macros for automating access to user attributes and variables.
- Ingame shop module item purchases stats collection and display.
- Editor support for stats dashboard.
- Debug server compilation flags.
New cache server configuration variables:
- “asyncDatabase.threads” - Sets the amount of async database manager threads (default: 1)
- “asyncDatabase.connectionsPerThread” - Sets the amount of database connections per thread (default: 1)
New slave server configuration variables:
- “server.compressionMinSize” - Sets the minimum message size for compression to work (default: 512 bytes)
- cache: ModuleCache.loginPost(), ModuleCache.registerPost() now have additional parameter - SQL query function and run from the asynchronous worker thread
slave: Module hook renamed: “core/user.register” -> “core/user.registerPost”, Module.register() -> Module.registerPost()
- All editor templates renamed with “core/” prefix in front. For example, “form.header” -> “core/form.header”, etc. To fix editor compilation, open “index.hxml” and add “core/” prefix after @ symbol on each line.
You may see the following error message during server start:
Called from sys/db/Postgresql.hx line 405 Uncaught exception - load.c(357) : Primitive not found : npostgres@np_set_non_blocking(2)
It means that you need to replace your old “npostgres.ndll” file with the new one from the core containing new functions for asynchronous database calls.