Terug naar Blog

Marathon Input Issues Fix: PC-games architectureren tegen Overlay-conflicten

Gepubliceerd op 28 februari 2026
Marathon Input Issues Fix: PC-games architectureren tegen Overlay-conflicten

Elke multiplayer-ontwikkelaar kent het gevoel wanneer een perfecte netcode faalt door een Discord-overlay. Je optimaliseert maandenlang je server-infrastructuur voor sub-30ms latency, om er vervolgens achter te komen dat spelers hun schoten missen omdat een streaming-app de input-thread van je game verstikt.

Dit scenario speelt zich nu af bij de Server Slam van Bungie's Marathon. PC-spelers melden mouse lag en dropped inputs. Bungie wijst naar third-party utilities en overlays als de schuldigen.

Spelers zoeken massaal naar een marathon input issues fix. De tijdelijke oplossing: stream de hele monitor in plaats van het game-window en schakel overlays uit.

Voor developers is de vraag: waarom kapen overlays de input en hoe voorkomen we dit?

In deze deep dive analyseren we Windows input handling, OBS frame pacing issues en het ontkoppelen van input-threads.

De oorzaak: Hoe Overlays de Render Pipeline kapen

Apps zoals OBS injecteren een DLL in je game-proces en hooken in op de Present functie van DirectX of vkQueuePresentKHR in Vulkan.

De Swap Chain Bottleneck

Door de swap chain te hooken, moet de engine wachten terwijl de frame buffer wordt gekopieerd. Een frame van 16.6ms duurt dan ineens 24ms. Omdat de meeste engines WM_MOUSEMOVE op de main thread pollen vlak voor de render tick, vertraagt dit ook het input polling.

Architectuur: De Raw Input API

Gebruik de Raw Input API (WM_INPUT) op een dedicated high-priority thread om input te ontkoppelen van de render loop.

Raw Input in C++ (Win32)

void InitializeRawInput(HWND hwnd) {
    RAWINPUTDEVICE Rid[1];
    Rid[0].usUsagePage = 0x01; 
    Rid[0].usUsage = 0x02; 
    Rid[0].dwFlags = 0;   
    Rid[0].hwndTarget = hwnd;
    RegisterRawInputDevices(Rid, 1, sizeof(Rid[0]));
}

Unreal Engine: Smoothing uitschakelen

Schakel mouse smoothing uit in de PlayerController om input lag bij framerate-fluctuaties te voorkomen.

Client Lag vs. Server Rollback

Input lag zorgt voor vertraagde pakketten op de server. De server moet dan reconciliatie toepassen, wat leidt tot rubberbanding, vergelijkbaar met How To Fix Player Location Desync In Uefn And Unreal Engine Multiplayer.

Gebruik horizOn voor geoptimaliseerde servers met desync-bescherming.

5 Best Practices

  1. Ontkoppel Input van Rendering.
  2. Gebruik DXGI Flip Model.
  3. Implementeer een Hardware Cursor.
  4. Waarschuw voor Hook Injections.
  5. Gebruik Fixed Timestep Simulation.

Conclusie

Implementeer Raw Input en ontkoppel threads om je game responsive te houden. Gebruik horizOn voor je backend om desync-problemen te tackelen.