Skip to content

Sarabanda97/Raycasting_Game

Repository files navigation

HeistLink — Distributed Co-Op Heist Simulation

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.

Core Concept

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.

Operator

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.

Current Stage (Core Version S1)

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.

Level Layout

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.

Technical Design

Rendering Pipeline

  1. Raycasting engine computes wall intersections per vertical column.

  2. Each ray samples from the corresponding texture map (64×64) stored as a NumPy RGBA array.

  3. Doors and interactable objects are dynamically altered at runtime — open doors gradually “slide” by offsetting their texture sampling and eventually become non-blocking cells.

  4. Floor and sky colors are filled using vectorized operations for performance.

Input & Physics

  • 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.

Interaction System

  • 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.

Future Development (Planned Extensions)

Planned additions will expand HeistLink into a distributed two-player experience with procedural complexity:

  1. AI Guards using A* pathfinding for patrol and chase logic.

  2. Fog-of-war / flashlight effects for immersive lighting.

  3. Alarm and detection system triggered by failed hacks or movement noise.

  4. Dynamic mission generation for replayability across multiple heist types.

  5. 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)

Educational & Research Context

HeistLink was developed within the context of Distributed Systems and Game Engineering coursework, with a dual focus:

  1. Building a functional raycasting engine and interactive 3D environment entirely in Python.

  2. 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.

Conclusion

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.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages