A distributed Pacman game implementation with a Qt/C++ client, a C++ server,
RabbitMQ message queuing, and Google Protocol Buffers for event serialization.
🎮 Built a distributed Pacman game from scratch — C++ server, Qt OpenGL client, RabbitMQ + Protocol Buffers over the network.
The idea started simple: take a classic OpenGL Pacman game and split it into a headless game server and a remote viewer. The server runs all the ghost AI and physics at 60fps, serializes the full game state using Google Protocol Buffers, and publishes it to a RabbitMQ fanout exchange. Any client that connects gets a live stream of the game and can send keystrokes back.
Stack:
→ C++ server (no Qt, no display)
→ Qt 6.4 + QOpenGLWidget client with legacy fixed-function OpenGL
→ RabbitMQ (Docker) as the message broker
→ Google Protobuf v3.21 for binary serialization
→ Custom blocking TCP handler for AMQP-CPP (no Boost/libuv)
→ CMake + MinGW on Windows
The build journey was its own adventure — MinGW ABI mismatches, protobuf abseil dependency hell, Winsock header ordering, and PATH conflicts between three different gcc installations. Hard lessons learned about keeping compilers consistent across all dependencies.
Code on GitHub(link below)
#CPlusPlus #OpenGL #Qt #RabbitMQ #Protobuf #GameDev #DistributedSystems #ComputerGraphics
Note: some paths are hardcoded so it won't clone-and-run immediately, but the architecture and all source files are there.


No comments:
Post a Comment