Skip to content

matslindh/crashparty

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crashparty - A memory monitor for Wreckfest servers

This is no way affiliated with Wreckfest, Bugbear Entertainment or THQ Nordic.

Motivation

When Flatout 2 was popular we had our own internal scoring system that kept track of our own Flatout 2 records, scoring and tournaments. Since Wreckfest doesn't have the same support for exporting game results after finishing a race, a different strategy had to be used.

Solution

The easy solution would be for the Wreckfest server to have a verbose logging format that logged all events to the server log, allowing our monitor to tail the server log file and parse the events as they happen. The executable does however not support that (.. and I weren't able to find any hidden support for it either).

Instead we're now parsing the structure describing the current state of the game, and detecting changes to "last lap" times, car selections and player status ("Selecting car", etc.). This is not perfect by any means, but it actually works.

State of the project

It's hacky. It's in progress. It's not very user friendly (if at all).

It does nothing more than promised (if even that), and it's hard to get it to work. You currently have to give it the process id (pid) of the Wreckfest server manually, and use Cheat Engine (or a similiar memory scanner) to find the location of where the information structure starts in memory. Insert the values into monitor.py before running it.

Another issue is that the project uses memorpy, and the current source version of memorpy doesn't run under Python 3. To fix this I've patched memorpy to be Python 3 compatible under Windows. This pull request can be found here:

n1nj4sec/memorpy#20

Unless these patches has been applied to the main memorpy tree, you'll have to check out my branch and install it manually with pip in your virtual environment to get a memorpy version that supports Python 3.

The current version also depend on flask_sse (and thus Redis) to push Server Sent Events to a web frontend that shows the current state of the game. This web frontend is not implemented except for outputting log data when an event occurs.

You'll also need to install flask and flask_sse (the latter should automagically download the former).

Web Frontend

Does not display any information yet. It only logs events it receives to the console.

Start the flask frontend with:

set FLASK_APP=server.py
flask run

.. assuming you have a virtualenv set up with flask in your path (which happens automagically if you've activated it).

License

The MIT License. See LICENSE.

About

A server monitor for Wreckfest

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published