scp-fs2open / scp-fs2open/fs2open.github.com

proposal: decentralized checksum verification for multiplayer.

Open
#4,519 2 comments 0 reactions 0 assignees View on GitHub
discussion multi
Dominant language
C++
Stars
487
Forks
184
Avg merge
3d 9h
Merged PRs (30d)
44

Description

As I understand it the current system for multiplayer file verification requires a file-mod association database to be maintained on pxo, requiring action from both admin and modder to keep up to date. This is not really practical for in-development mods, especially with revitalized multiplayer interest leading to people outside of primary mod teams working to get things into multi. The effects of this can be seen recently where chronic issues with multi stability were eventually traced to one player having the screencam script in their data path, not having found it because none of their games had been with mods set up for file verification.

Most heavily moddable multiplaer games I am aware of handle things very differently. I don't know the guys but to the best of my knowledge they do a checksum of either all the gameplay-effecting resource files or the resultant game state and compare checksums between all the clients. A short, generally around five character alphanumeric string is displayed clearly on the game menus so users can immediately compare states without even entering a game, and joins with the wrong checksum will be rejected or at the least loudly announced.

This isn't strictly speaking an effective anti-cheat, as a cheater with much ingenuity at all would be able to make an fso build that just lies about the checksum. But it is a very effective stability tool for friendly games, and I think that is a much higher priority.

The checksum process seems conceptually simple, but making sure all relevant data/state is included is definitely no small task. But even limited coverage could likely be effective in avoiding many user headaches.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.