A proof-of-concept app that tracks and displays player positions in real-time on an interactive web map.
demo.mov
- Real-time Tracking: Stream player positions via WebSocket connections
- Interactive Web Map: Visual representation of all tracked players
- Multi-Server Support: Connect multiple clients to different game servers simultaneously
- Configurable Polling: Adjustable update intervals (default: 0.5s)
- Low Server Impact: Distributed client architecture to minimize game server load
- Client: C++ with Socket.IO client
- Server: Node.js with Socket.IO
- Frontend: HTML, CSS, JavaScript (native)
- Dependencies: Managed via vcpkg
- C++ compiler (Visual Studio 2019+ recommended)
- Node.js (v16+)
- vcpkg package manager
-
Install C++ dependencies
# Install Socket.IO client (follow instructions at) # https://github.com/socketio/socket.io-client-cpp/blob/master/INSTALL.md#without-cmake # Install via vcpkg .\vcpkg install cpp-httplib:x64-windows .\vcpkg install nlohmann-json:x64-windows
Note: You can modify dependency paths in Visual Studio project settings if needed
-
Install Node.js dependencies
cd server npm install
-
Build the client DLL
cd client # Build your C++ DLL project
-
Start the server
cd server node server.js
-
Load the client DLL Load the compiled DLL into RDRMP
-
Open the web interface Navigate to
http://localhost:3000
in your browser
Configure the client when creating the RedCloud object in core.cpp
:
redcloud client
({
"localhost", // server
3000, // server port
"RedCloud", // game server name
"127.0.0.1", // game server ip
4674, // game server port
0.5f, // polling interval
true // debug mode
});
Modify settings in server/public/config.js
if needed.
- Proof of Concept: This project is designed for demonstration and testing purposes
- Code Optimization: Some parts are not optimized, such as the client panel display which recreates HTML elements on each update
- Server Load: Each client connects to separate game servers to distribute load
This project is licensed under the GPL 3.0 License - see the LICENSE file for details.