×
DX11 Engine
View on GitHub
How my project structure looks right now.
Networked Tank Game
This project walks through implementing a simple networked multiplayer tank game with features like prediction, interpolation, delay compensation, and network debugging tools.
I am currently developing it.
I am using
ASIO for networking as it is cross platform.
Jolt for Physics.
Cap'n Proto for Serialization.
My Engine my own graphics engine. More control
FBXSDK for model loading (later) with maybe unity or UE for model export to JSON using nlohmann.
🛠️ Development Process
🔌 Networking Basics
- Configured a simple TCP/UDP server and client setup (authoritative or not).
- Established basic client-server communication.
- Implemented a handshake/login system.
- Decided on message structure and serialization format.
🎮 Core Gameplay Loop
- Built a game loop to send tank positions to the server.
- Implemented server-side state management (authoritative/semi-authoritative).
- Synchronized player movement across clients.
🕹️ Prediction & Interpolation
- Will add basic interpolation for smooth movement.
- Implement input prediction on the client.
- Handle motion delay compensation.
🔫 Shooting Mechanics
- Send input events for shooting.
- Handle projectiles on the server and synced them with clients.
- Add basic physics (custom or using a physics lib).
- Implement collision detection between bullets and tanks.
- Synchronize point/projectile positions over the network.
💥 Health & Combat
- Implement a health/damage system with notifications to clients.
- Enhance motion smoothing using interpolation/extrapolation.
- Improve hit registration using delay compensation techniques.
🌐 Network Optimization
- Simulate latency and jitter for testing.
- Optimize packet rate and size.
- Add tank explosions and death handling.
- Add respawn logic and a simple win condition.
🧪 UI & Polish
- Create UI elements for health and status.
- Add sound and visual feedback for combat.
- Build network debugging tools (packet logs, latency graphs).
- Playtest to catch bugs and edge cases.
- Finalize UI polish and game feel.
- Optimize physics and mesh code for better responsiveness.
×
To be added:
I will add some of my school game projects and more snippets from my programming methology soon!