About

HLStats consists of a Perl script (the HLStats logging daemon) and a set of PHP scripts (which generate the statistics Web pages). HLStats provides player and clan rankings for Half-Life servers.

HLStats collects log data using Half-Life's "logaddress_add" facility (which sends log data as UDP packets from the Half-Life server to an arbitrary remote address), and inserts that data directly into a MySQL database. This makes it easy to maintain the data by eliminating the costly process of scanning large numbers of log files to regenerate statistics, and allows virtually limitless potential for customisation on the front-end. It also has the benefit that the statistics are updated in "real-time" -- if a player makes a kill, they can immediately view the statistics and see that kill reflected in their player details.

Additionally, because HLStats collects data using "logaddress_add", it can receive data from multiple diverse Half-Life servers simultaneously, compiling the data into a single set of statistics. Adding another Half-Life server to the statistics is simply a matter of configuring HLstats to accept data from the server's address, and then configuring the server to send log data to the HLstats logging daemon using the "logaddress_add" command.

How does it work?

Here is a diagram to illustrate:

HLStats configuration diagramm

Logged events are sent as UDP data packets from the game servers to a web server. The HLStats logging daemon (hlstats.pl) running on the web server parses this data and saves relevant information to a MySQL database. The PHP pages (Apache) then access that database and dynamically generate HTML pages for delivery to web clients.

What are some of HLstats Features?

Which games are supported?

Here is the overview of the supported games and some important notes about.