Skip to content

connellr023/paintgame

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

377 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

paintgame

A real-time multiplayer brawler game built in C with a focus on systems programming, networking, and graphics.

C Objective-C OpenGL RayLib CMake

Note

This is a learning project, not a polished commercial product. The focus is on implementation depth and understanding, not feature completeness. However, the core gameplay is fully implemented and works very well.

Overview

This is an educational game project exploring core concepts in systems programming, real-time applications, networked multiplayer systems, and graphics programming. Networking is implemented using ENet (reliable UDP), and rendering is handled by Raylib (OpenGL-based). The game features a fully functional local multiplayer experience over the network with robust client-side prediction to ensure responsive gameplay.

Features

  • Real-time Multiplayer Networking — Host a game server on any port and connect up to 5 players remotely via IP and port number
  • Client-Side Prediction & Reconciliation — Ensures responsive, low-latency gameplay while maintaining consistent server-authoritative state
  • Physics & Collision Detection — Real-time physics simulation with bullet and player collision handling
  • Particle Effects System — Dynamic visual feedback for gameplay events
  • Tile-Based Map System — Structured level design with collision support
  • Custom OpenGL Rendering — Hardware-accelerated graphics with custom shader support and tile rendering
  • Input Handling & Player State Management — Smooth player movement and action input
  • Status & Info Overlays — Real-time game state and player information display

Technology Stack

  • Language: C (with platform-specific Objective-C for macOS)
  • Graphics: OpenGL + Raylib (rendering library)
  • Networking: ENet (reliable UDP networking)
  • Build System: CMake
  • Platforms: Linux, macOS, Windows

Building

Prerequisites

  • CMake 3.10+
  • A GCC or Clang C compiler (with C17 support)
  • Libraries: OpenGL, ENet, RayLib (automatically fetched by CMake)

Build Instructions

Initialize the CMake build directory:

cmake -B build

For Windows with MinGW:

cmake -B build -G "MinGW Makefiles" -DCMAKE_C_COMPILER="<path to MinGW clang/gcc>"

Configure options with the interactive CMake GUI:

ccmake build

Build the project:

cmake --build build

Run the game:

./build/paintgame

Learning Topics

This project serves as a practical exploration of:

  • Low-level networking with UDP and socket programming
  • Real-time state synchronization across distributed systems
  • Client-side prediction techniques for responsive gameplay
  • Physics simulation and collision detection
  • Graphics programming with OpenGL and custom shaders
  • Memory management and performance in systems programming
  • Cross-platform development in C

About

A real-time multiplayer brawler game built in C with a focus on systems programming, networking, and graphics.

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages