Jetpack Joyride – Multiplayer Clone

About

This 3-week project was a multiplayer recreation of Jetpack Joyride developed in C++ using SFML. The twist? All gameplay logic, movement, and collisions were handled server-side using manual socket programming (write/read/poll) to ensure synchronization and prevent cheating.

As project leader, I worked on both the client interface and core server-side gameplay logic, managing our 3-person team through rapid development sprints while solving network and synchronization challenges.

📂 GitHub Repository: https://github.com/ArthuryanLoheac/Jetpack


Project Info

  • Role: Project Leader & Developer (Client Rendering + Server Gameplay)
  • Team Size: 3
  • Time Frame: 3 weeks
  • Language: C
  • Graphics: SFML
  • Networking: Custom socket communication with write, read, and poll

🎮 Introduction

Players connect to a shared server and land in a lobby interface where they can toggle their ready status. Once all participants are ready, the game launches automatically.

The game loop:

  • Players fly through the level while dodging static electric traps
  • Each run is generated from a text-based level map (e = trap, c = coin, . = empty)
  • They collect coins, see others in ghost mode (semi-transparent), and try to outlive one another
  • The last survivor wins the game

⚡ When a player hits a trap, an electrocution animation plays and their death is broadcasted to others.


🧠 Key Systems & Features

Server-Side Simulation

  • The server owns the simulation: obstacles, player positions, and collision detection
  • Clients receive state updates to render animations and UI
  • Prevents cheating and maintains synchronized behavior

Obstacle & Coin System

  • Levels generated from a map text file parsed by the server
  • Coins (c) increase the player’s score
  • Traps (e) instantly kill players on contact

Multiplayer Visuals

  • Players see:
    • Their own jetpack animation and coin counter
    • Other players in transparent form
    • Live leaderboard of all scores
    • Game-end state when all others die

UI

  • Live score display
  • Real-time rankings
  • Smooth player death feedback and restart conditions

📤 Source Code

👉 GitHub Repository:
https://github.com/ArthuryanLoheac/Jetpack


📚 What I Learned

  • Designing a low-level multiplayer game architecture using raw socket communication
  • Building real-time server-driven gameplay logic in C
  • Managing frame-based simulation with consistent synchronization
  • Integrating SFML for animated sprites, input handling, and UI
  • Debugging freezing issues caused by poor socket management, and refactoring the server loop to restore fluidity

💡 What I’m most proud of: getting a smooth multiplayer loop to work with animations, collisions, and leaderboard syncing, all fully controlled by the server and without engine support.