This page was made by AI.My games aren't.I write them by hand.Hi, I'm Jannik.Portrait of Jannik Sonntag

Senior games programmer, about ten years in the industry. Founder of Team Warriors.

Now: Royal Revolt Survivors

Royal Revolt Survivors key art with the game logoRoyal Revolt Survivors gameplay: a hero fighting a horde in a snowy village, with damage numbers

The game

A roguelite survivor game with fast combat in co-op. It runs cross-play, and local and online co-op mix in one session.

Simulation

The core gameplay simulation runs on its own thread at a constant 60 fps, in parallel to the visualisation. Its data structures are designed for lookup speed, and certain unit types skip update cycles entirely. I profiled and optimised the systems for unit stats, weapons and AI. It holds 60 fps with thousands of active units.

Netcode

The netcode is integrated into the simulation, with an interchangeable backend per platform. The host is authoritative. Clients extrapolate and predict ahead, so even a few seconds of message delay mostly go unnoticed. Hundreds of units and ability effects stay in sync.

Rendering

The Unity visualisation is inter- or extrapolated to the target frame rate. Instanced animation carries assets that were never meant for that scale. A separate system lowers VFX quality or culls effects by importance and frame rate.

Pipeline

A build pipeline takes the game from Unity to Steam.

  • Unity
  • C#
  • Steam API
  • Lockstep multiplayer
  • Build pipeline

The swarm at the top of this page runs on the same ideas: a fixed 60 Hz simulation, rendering interpolated to your display, and a governor that trims effects when frames get expensive. Press ` to see it.

Career

  1. FounderTeam Warriors

    Feb 2025 – today

    Royal Revolt Survivors.

    • Multiplatform online multiplayer
    • Lockstep simulation with network sync
    • Multithreaded performance optimisation
    • Unity-to-Steam build pipeline
  2. Gameplay ProgrammerKeen Games / Upright Games

    Feb 2017 – Jan 2025

    Mobile game development.

    • Monsters With Attitude Rust, C++, Scala

      Multiplayer lockstep robust enough for mobile data, an entity component system, a collision system.

    • Royal Revolt II C++, Scala

      Long-term live service.

    • Royal Revolt: A Trader's Tale Unity, C#, Scala

      Lead programmer: mentoring a junior, payment provider integration, client/server architecture.

  3. LecturerSAE Institute Cologne

    Oct 2014 – Feb 2017

    Teaching programming.

    • Graphics System Programming (C++, DirectX 11)
    • 2D Programming (C++ on my own DirectX 11 framework)

Education

  1. B.Sc. (Hons.) First ClassSAE Institute

    Sep 2012 – Sep 2015

    Graphics programming with DirectX/C++, data structures and algorithms, Unity 3D, game design basics.

  2. Computer SciencePaderborn University

    Oct 2011 – Oct 2012

  3. Abitur

    2011

    Mathematics and computer science as majors.

Roots: engine & graphics

2014–2016. Before shipping games, I built the things games run on.

Physically correct rendering of water as an image effect

Ray-traced water against a terrain shorelineOpen water with sun reflections beside a gridded test wall

The water is ray-traced per pixel as a post-processing effect, with no geometry, and fits into deferred shading.

Light absorption is physically based per colour: red is absorbed after about 4.5 m, blue only after about 300 m. Reflection, refraction and caustics complete it.

It costs about 2 ms per frame, 10–15 % of a 60 fps frame, with the vertex shader nearly idle. In a survey it rated slightly better than NVIDIA's Island tessellation demo, except for caustics.

C++ · DirectX 11 · HLSL

Savage3D

Tessellated voxel terrain with a wireframe band

Tessellated terrain on a 3D voxel grid with procedurally mapped textures, 2D rendering for text and images, and a layer-based GUI library with WPF-style controls.

Under it: keyboard, mouse and controller input, audio, an MPQ-like file system, low-level memory management and profiling, and graphics device management.

C++ · DirectX 11 · HLSL

TimeShift

TimeShift: a sci-fi office with the main menu on a monitor and the logo on a laptopTimeShift: the hero on a staircase in a dark sci-fi facility

A 2.5D side-scrolling puzzle platformer whose hero projects objects from past timestamps into the world.

I led the project and its programming, and built the procedural level-background mesh, the door and platform mechanics, and the post-processing effects.

C# · Unity 3D · Cg

Voxel sandbox

Voxel sandbox: a blocky forest with grass and a hotbar at the bottomVoxel sandbox: another view of the blocky forest

A C++ OpenGL 4.3 renderer with resource loading, dynamic instancing, batching by material and texture management.

C# gameplay on top, over C++/CLI: multithreaded world generation, physics and raycasts, mesh generation.

C++ · OpenGL 4.3 · C# · C++/CLI

Particle system

Particles simulate on the CPU and render on the GPU. Each effect is built from initializers, emitters and updaters.

C++ · OpenGL 4.3 · GLSL

How I build

Portrait of Jannik Sonntag
  • Technical challenges motivate me. I flourish where software development is pushed to its limits.
  • I build solutions tailored to the specific problem, within the budget there is.
  • I want systems that are smart and robust, and mechanics on top of them that are great.

Beyond code

Dota 2, climbing, mountain biking, music, reading.

Languages

German (native), English (business fluent).

Write me