| name | steam-anticheat-integration |
| description | Integrate anti-cheat solutions with Steam games. Covers EasyAntiCheat (EAC), BattlEye, and VAC setup, Proton/Linux compatibility, Steam Deck considerations, and custom anti-cheat patterns. Use when adding anti-cheat protection to a multiplayer Steam game. |
| standards-version | 1.10.0 |
Steam Anti-Cheat Integration
Trigger
Use this skill when the user:
- Wants to add anti-cheat to their Steam game
- Asks about EasyAntiCheat, BattlEye, or VAC
- Needs anti-cheat that works with Proton/Linux/Steam Deck
- Asks about the trade-offs between different anti-cheat solutions
- Needs to configure anti-cheat in Steamworks
- Is troubleshooting anti-cheat compatibility issues
Required Inputs
- Game type - multiplayer mode (competitive, co-op, MMO, etc.)
- Target platforms - Windows, Linux, macOS, Steam Deck
- Engine (optional) - Unity, Unreal, Godot, custom
Workflow
1. Anti-Cheat Options Overview
| Solution | Type | Proton/Linux | Steam Deck | Cost | Best for |
|---|
| EasyAntiCheat (EAC) | Kernel + user mode | Supported (opt-in) | Supported (opt-in) | Free (via Epic) | Competitive MP, battle royale |
| BattlEye | Kernel + user mode | Supported (opt-in) | Supported (opt-in) | Paid license | Large-scale MP, MMOs |
| VAC | Server-side + client | Native support | Native support | Free (Valve) | Source/GoldSrc games, Steamworks titles |
| Custom | Varies | Developer-dependent | Developer-dependent | Development cost | Specific needs, lightweight protection |
| None | N/A | N/A | N/A | Free | Single-player, co-op, trust-based |
2. EasyAntiCheat (EAC)
Setup:
- Register at the EAC Developer Portal
- Download the EAC SDK
- Integrate the SDK into your game client:
#include "eac_sdk.h"
EOS_AntiCheatClient_BeginSession(AntiCheatClientHandle, &Options);
EOS_AntiCheatClient_Poll(AntiCheatClientHandle);
EOS_AntiCheatClient_EndSession(AntiCheatClientHandle);
- Configure in Steamworks Partner > Technical Tools > Anti-Cheat
Proton/Linux support:
- EAC supports Proton since June 2022
- Must be explicitly enabled in the EAC Developer Portal
- Go to EAC settings > Enable Linux via Wine/Proton
- Does NOT require a native Linux build — works through Proton translation
- Kernel-level features are limited under Proton; user-mode anti-cheat works
Steam Deck:
- Same as Proton support — enable Wine/Proton in EAC settings
- Test on actual Steam Deck hardware or Deck-like environment
- EAC + Proton is the standard path for Deck compatibility
3. BattlEye
Setup:
- Contact BattlEye for a license agreement
- Integrate the BattlEye SDK:
#include "BattlEye.h"
BEClient_Init(version, &callbacks);
BEClient_Run();
BEClient_Shutdown();
- Ship BattlEye binaries with your game
- Configure in Steamworks Partner
Proton/Linux support:
- BattlEye supports Proton since late 2021
- Must be enabled per-game by the developer
- Contact BattlEye support to enable Proton compatibility
- Once enabled, works automatically for Linux/Deck players
4. VAC (Valve Anti-Cheat)
VAC is Valve's built-in anti-cheat system. It's primarily used with Source engine games but can be enabled for any Steamworks title.
Setup:
- Enable VAC in Steamworks Partner > Technical Tools > Anti-Cheat Configuration
- Configure secure servers:
SteamGameServer()->SetSecure(true);
bool banned = SteamGameServer()->BSecure();
- VAC operates server-side — bans are applied by Valve after detection
Characteristics:
- No client-side SDK integration required (server-side detection)
- Bans are delayed (days to weeks) to mask detection methods
- VAC bans are permanent and tied to Steam account
- Works natively on all platforms including Linux and Steam Deck
- Less invasive than kernel-level solutions (no ring-0 driver)
5. Steam Deck Compatibility Matrix
| Anti-Cheat | Deck Status | Action Required |
|---|
| EAC | Works | Enable Wine/Proton in EAC portal |
| BattlEye | Works | Contact BattlEye to enable Proton |
| VAC | Works | No action needed (server-side) |
| Custom kernel-level | Blocked | Will NOT work under Proton |
| Custom user-mode | May work | Test under Proton; avoid kernel calls |
Critical: Kernel-level anti-cheat that has NOT been updated for Proton will prevent your game from running on Steam Deck. This is the #1 cause of Deck verification failure for multiplayer games.
6. Implementation Best Practices
Do:
- Enable Proton/Linux support from day one
- Test anti-cheat on Steam Deck before launch
- Provide clear error messages when anti-cheat blocks a launch
- Allow single-player/offline modes without anti-cheat
- Document anti-cheat on your store page (players expect transparency)
Don't:
- Don't use kernel-level anti-cheat for non-competitive games
- Don't block Linux/Deck players if your anti-cheat supports Proton
- Don't combine multiple anti-cheat solutions (conflicts, performance)
- Don't rely solely on client-side anti-cheat (always validate server-side)
7. Server-Side Validation
Regardless of anti-cheat solution, always validate on the server:
EBeginAuthSessionResult result = SteamGameServer()->BeginAuthSession(
authTicket, ticketSize, steamID);
if (result != k_EBeginAuthSessionResultOK) {
}
if (playerSpeed > MAX_ALLOWED_SPEED) {
}
Key References
Example Interaction
User: "I'm making a competitive FPS. I need anti-cheat that works on Steam Deck. What should I use?"
Agent:
- Recommends EAC as the primary choice (free, well-supported, Proton-compatible)
- Explains setup steps: register at EAC portal, integrate SDK, enable Proton
- Stresses: "Enable Wine/Proton support in the EAC Developer Portal immediately — this is opt-in, not automatic."
- Adds: "Combine with server-side validation. EAC catches client-side cheats; your server should validate all gameplay-critical data independently."
- Warns: "Test on Steam Deck hardware before launch. Anti-cheat issues are the most common Deck verification failure for multiplayer games."
MCP Usage
| Step | MCP Tool | Auth | Purpose |
|---|
| Verify app | steam_getAppDetails({ appid }) | None | Confirm game exists and check platform list |
Anti-cheat configuration requires the Steamworks Partner site and anti-cheat vendor portals — not available via MCP.
Common Pitfalls
- Not enabling Proton/Wine support for EAC or BattlEye — Linux and Steam Deck players are blocked unless you explicitly opt in via the anti-cheat vendor portal. This is a separate checkbox from Steamworks Deck compatibility.
- Shipping EAC without the correct redistributable files — the EAC service installer and
EasyAntiCheat folder must be bundled with your build. Missing files cause immediate crashes.
- Trusting VAC alone for competitive games — VAC is reactive (ban waves), not preventive. For real-time protection, pair it with EAC or BattlEye.
- Forgetting to test anti-cheat in dev builds — anti-cheat services often behave differently in debug vs release. Always test with the release configuration before shipping.
- Breaking modding support unintentionally — EAC and BattlEye block DLL injection, which some mods rely on. If your game supports mods, configure allowlists or provide a "modded" launch option without anti-cheat.
See Also