View Single Post
  #1  
Unread 13th November, 2016, 09:55 PM
AnthraX's Avatar
AnthraX AnthraX is offline
Super Moderator
 
Join Date: Jun 2004
Location: Ghent (Belgium)
Posts: 1,376
Default ACE: Status, Plans, and Test Build

*** STABILITY ***

This build should be relatively stable.

*** STATUS UPDATE/BORING TECHNICAL DETAILS ***

As you may have noticed, I've had some time to work on ACE recently (after a 5 year hiatus). Lots of things have changed so I want to start with a status update first. If you're not interested in the status update, then just scroll down to download the v1.0e package but install it AT YOUR OWN RISK!

You may remember that pre-0.9 versions of ACE were plagued with connection issues. People playing over WiFi or connections with packet loss were particularly impacted by this. This was not easy to fix because ACE's communication requirements don't fit nicely into Unreal Engine. To fix the problem, I designed a new networking layer that was separate from Unreal Engine. This new layer was stable in v0.9e, but that version had some new issues, which is why it was never publicly released.

The biggest problem of all was (and is) getting ACE to work well with the Linux server binaries. The Linux server binaries were built using some very old tools (gcc 2.95) and the only way to get ACE to work on Linux servers is to build it using those same tools. GCC 2.95 has a lot of known bugs and it lacks a lot of useful features (no sanitizers, no stable C++ support, ...), which makes it very hard to create a stable version of ACE for this platform. As a (hopefully temporary) solution, I've split ACE's server side into two components: the "Player Manager" and the "Connector". The Player Manager contains the bulk of the server-side logic. It runs as a separate program, which is why I can build it using modern tools. The Connector is a small library that takes care of the communication between the game server and the player manager. This component runs inside the game server process, which is why I have to build it using the old tools. This solution is ridiculously complex, but it has the advantage that it should be relatively easy to stabilize ACE's server side. The down side is that some game server providers might explicitly prevent you from running additional processes alongside the game server.

The current build, v1.0e, seems relatively stable. There are some known issues, though (see below).

*** PLANS ***

I want to merge the server components back together, but this will not be possible unless we get updated server binaries. I've asked Epic for this. Last time we spoke, they said it might be possible. More news about this soon (hopefully).

I also want to gradually open source all of the non-security critical components. Some components have already been open sourced (GitHub link available in the README). I've also given Higor (the creator of XC_Core/XC_Engine) access to the NPLoader source code.

*** CHANGES ***

A lot of things have changed since the last official release. The most notable changes are:

- New networking layer. This one works better for players with bad connections.
- ACE now stores its client-side settings in ACE.ini and remembers its settings even when the client gets updated.
- The file whitelist/blacklist is now a plain text file. This means that server admins can now allow new renderers themselves, without having to wait for me to update the official list.
- Support for Windows 10
- Support for TO 3.40 (untested! might require a filelist update)
- ACE can now check up to 255 UPackages
- Fixed a lot of false positive detections
- Added several new protection/detection routines
- ACE now supports checking of skin textures (you really have no excuse to still run AnthChecker now!)
- ... and of course, a whole slew of bug fixes and performance improvements

A full changelog will be made available at http://utgl.unrealadmin.org/ACE/changes.txt

*** INSTALLATION ***

Basic installation instructions can be found in the INSTALL.txt document which is included in the ACE package.

*** CONFIGURATION ***

An overview of configurable settings is available in the SETTINGS.txt document which is included in the ACE package.

*** KNOWN ISSUES ***

Installation Issues: Some other testers have reported issues installing the server files. Most of these are caused by outdated system libraries. Please note that you will need glibc 2.15 or later on Linux. Linux distributions released before 2012 might have older versions of glibc.

A second problem seems to occur for certain admins running x86_64 Linux servers. These admins might see the following error message:
Code:
Path to the PlayerManager: /data/ut-server/System/PlayerManager/ACEv10e_M
ACE: ERROR - Communication with PlayerManager failed - poll errno: 4 Interrupted system call
ACE: ERROR - PlayerManager Connection Failed
[ACEv10e]: ERROR: ACE could not spawn the PlayerManager.
[ACEv10e]: ERROR: ACE is now disabled.
ACE: ERROR - PlayerManager Connection Shutting Down!
This is most likely caused by a corrupted PlayerManager file. Please make sure that you upload the files in binary mode rather than text mode!


Timeouts during check spawn: Some people have reported timeouts that are caused by ACE using the wrong network interface. To debug these issues, please add the following lines to your server.ini:

Code:
[ACEv10e_S.ACENICHelper]
bDebug=1
Kick logs that say "Not kicking because bStrictSystemLibraryChecks is set to false": This is not technically an issue. ACE v1.0 has some very aggressive detection routines that detect a lot of legitimate external programs (e.g. Fraps, Display Drivers, ...). If you see this kick status, just ignore the log. The player will not be kicked.

*** DOWNLOAD LINK ***

http://utgl.unrealadmin.org/ACE/ACEv10e.zip

Last edited by AnthraX : 29th January, 2017 at 02:03 AM.
Reply With Quote