Quick Start
Get Compuon running in your project in a few minutes.
1. Create a project & build your SDK
Sign up at compuon.dev/dashboard and create a project. Then click Build SDKto generate your unique SDK package. Each build contains a cryptographically unique binary — no two customers receive the same library.
Dashboard → Your Project → SDK
Build SDK → wait ~3 min → Download (Linux / Windows)
Package contents: compuon.h, types.h, platform.h + compuon.lib (Win) or libcompuon.a (Linux)
2. Add to your project
Unreal Engine (source integration)
// YourGame.Build.cs
string CompuonPath = Path.Combine(ModuleDirectory, "ThirdParty", "compuon-core");
PublicIncludePaths.Add(Path.Combine(CompuonPath, "include"));
PublicDefinitions.Add("COMPUON_STATIC");
PublicAdditionalLibraries.Add(
Path.Combine(CompuonPath, "lib", "Win64", "compuon.lib"));Custom C++ Engine (CMake)
add_library(compuon STATIC IMPORTED)
set_target_properties(compuon PROPERTIES
IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/third_party/compuon/lib/libcompuon.a
INTERFACE_INCLUDE_DIRECTORIES ${CMAKE_SOURCE_DIR}/third_party/compuon/include
INTERFACE_COMPILE_DEFINITIONS COMPUON_STATIC
)
target_link_libraries(YourGame PRIVATE compuon)Important: Always define
COMPUON_STATIC and ship Shipping builds without PDB files. This enables LTCG inlining and prevents symbol exposure.3. Protect your variables
Unreal Engine (FCompuon types)
#include "CompuonTypes.h" // Before: float Health = 100.f; // After: FCompuonFloat Health = FCompuonFloat::Make(100.f); FCompuonInt Ammo = FCompuonInt::Make(30); // All operators work the same: Health -= FCompuonFloat::Make(Damage); // Tier 0: ~200ns Ammo.Set(30); // Tier 1: ~7us bool bDead = Health <= FCompuonFloat::Make(0.f);
Custom C++ Engine
#include <compuon/compuon.h> using namespace compuon; // Anti-cheat mode (default) — plaintext cached, tamper detected: Compuon<int> hp(100); Compuon<float> speed(5.5f); hp -= 25; // Tier 0: ~200ns speed = 7.5f; // Tier 1: ~7us bool dead = (hp <= 0); // reads cached value
4. Initialize
Unreal Engine
// UCompuonSubsystem initializes automatically with the game module. // Handles frame_tick and key rotation. No manual setup required.
Custom Engine
#include <compuon/compuon_c.h> // Session seeds are unique to your SDK build. // Use your own seeds or receive them from your server. compuon_init(session_seed, rotation_seed); // Call each frame: compuon_frame_tick();
5. Verify integrity
Each protected variable carries an integrity proof. Query it at any time to detect tampering — locally or via your server.
// Client-side integrity check: int64 verified = Health.VerifyIntegrity(); int32 current = Health.Val(); bool tampered = (verified != compuon::encode_for_crypto(current)); // Server-side spot check (export proxy for server verification): uint8 proxyBuf[1026]; int32 len = Health.ExportProxy(proxyBuf, sizeof(proxyBuf)); // Send proxyBuf to your integrity server for independent verification
Shipping Checklist
✓ Build with
COMPUON_STATIC defined✓ Use Shipping configuration (no debug symbols)
✓ Remove all
.pdb files from the package✓ Verify:
strings exe | grep compuon returns 0 results✓ No
BlueprintType on FCompuonInt/FCompuonFloatOperation Tiers
| Tier | Operations | Cost | Method |
|---|---|---|---|
| 0 | +, -, scalar *, << | ~200ns | Direct proxy update |
| 1 | =, *, /, %, >>, &, |, ^ | ~7us | Full refresh |
| 2 | ==, !=, <, >, <=, >= | ~0ns | Cached value comparison |