HeistLink is a multiplayer cooperative first-person game that merges 3D raycasting rendering, networked communication, and interactive world mechanics within a distributed systems environment. Inspired by the dynamics of cyber-physical operations, the game explores how two specialized agents collaborate to complete a high-stakes digital-physical heist.
The project serves both as a technical demonstration of real-time 3D rendering and distributed synchronization, and as a conceptual exploration of teamwork between asymmetric player roles.
Two players operate in the same mission, each with a distinct perspective and set of abilities:
Assaulter
Immersed in a 3D raycasting environment, the Assaulter navigates the target building (bank, datacenter, or secure facility).
Executes tactical objectives: planting jammers, stealing digital or physical assets, evading guards, and unlocking restricted zones.
Relies on the Operator for external guidance and remote system access.
Controls a 2D command interface from a van outside the building.
Solves small CTF-style puzzles to open doors, disable cameras, or trigger distractions.
Maintains UDP-based voice communication and network synchronization with the Assaulter.
Monitors environmental stress, system load, and “caffeine” levels represented through humorous spectrum-like visual effects.
Together, both players must coordinate actions, balancing stealth, timing, and communication to complete the heist and escape successfully.
The first playable version focuses on a minimum viable environment for the Assaulter role. The current implementation includes:
-
3D Raycasting engine built from scratch in Python using SDL2 and NumPy.
-
Textured wall system supporting real-time collision detection and per-column rendering.
-
Interactive animated doors, controllable via key input (E) with smooth opening and closing mechanics.
-
Dynamic player movement including mouse-based camera control, vertical pitch (looking up/down), and sprinting through double-tap input.
-
Optimized rendering pipeline using a direct NumPy framebuffer and streaming texture updates to SDL for high frame-rate performance.
These systems together create a responsive and immersive indoor environment forming the foundation for the cooperative experience.
The current map (prototype bank layout) is represented below, inspired by the top-down schematic you provided:
-
Grey border – external map walls and collision boundaries.
-
Red zones – main bank interior structure.
-
Purple tiles – interactive elements such as doors or triggers.
-
Green area – vault or money storage room.
-
Yellow tile – restricted access door (controlled by the Operator).
-
Blue/Light-green – player and vehicle starting positions.
This structure demonstrates how the raycasting engine maps 2D grid data into a 3D navigable world with texture-based rendering and per-cell semantics.
-
Raycasting engine computes wall intersections per vertical column.
-
Each ray samples from the corresponding texture map (64×64) stored as a NumPy RGBA array.
-
Doors and interactable objects are dynamically altered at runtime — open doors gradually “slide” by offsetting their texture sampling and eventually become non-blocking cells.
-
Floor and sky colors are filled using vectorized operations for performance.
-
Full WASD + mouse look movement system.
-
Smooth mouse motion via exponential filtering.
-
Sprint mechanic (double-tap W) for speed boost.
-
Collision handling prevents clipping through walls while maintaining smooth sliding along edges.
-
Doors are stored as data objects with continuous state (open_amount ∈ [0,1]).
-
The environment updates each frame, interpolating door movement for natural animation.
-
Player interactions are event-driven and proximity-based.
Planned additions will expand HeistLink into a distributed two-player experience with procedural complexity:
-
AI Guards using A* pathfinding for patrol and chase logic.
-
Fog-of-war / flashlight effects for immersive lighting.
-
Alarm and detection system triggered by failed hacks or movement noise.
-
Dynamic mission generation for replayability across multiple heist types.
-
Operator UI enhancements including real-time stress indicators, terminal overlays, and visual “signal interference” effects.
| Component | Technology |
|---|---|
| Rendering Engine | Python, SDL2, NumPy |
| Audio/Voice | UDP sockets (planned) |
| Networking | Custom socket protocol (planned) |
| Assets | Custom textures and 64×64 industrial materials |
| Engine Architecture | Modular (engine, world, assets, systems) |
HeistLink was developed within the context of Distributed Systems and Game Engineering coursework, with a dual focus:
-
Building a functional raycasting engine and interactive 3D environment entirely in Python.
-
Demonstrating how networked synchronization and communication can merge system engineering with creative game design.
The project combines low-level graphics programming, asynchronous input handling, and interactive simulation to bridge technical and creative disciplines.
HeistLink represents the foundation of a cooperative cyber-heist simulator built around distributed interaction, modular systems, and a fully custom 3D rendering pipeline. While the current build focuses on the Assaulter’s environment and world interactions, the next iterations will integrate the Operator role and real-time multiplayer synchronization, turning this prototype into a cohesive distributed co-op experience.