← Back to Docs

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/FCompuonFloat

Operation Tiers

TierOperationsCostMethod
0+, -, scalar *, <<~200nsDirect proxy update
1=, *, /, %, >>, &, |, ^~7usFull refresh
2==, !=, <, >, <=, >=~0nsCached value comparison