Howdy!
This is my first post in a series of blog posts that I will be writing over the next ten weeks documenting my development of an exploratory project into the world of network programming in games. At the end of this project, my goal is to have gained a deeper understanding of how networked multiplayer games function as well as what strategies developers employ to ensure that the game runs as smoothly as possible for all players.
I have divided the project into three logical steps that I feel will help me achieve that goal:
Network Architecture in Games
For the first couple of weeks of the project, I plan to take time to research the various network protocols and architectures that are prevalent across the games industry. This analysis will include why certain games choose certain network models over others and the pros and cons of each of these approaches. Additionally, I will take a look into the network frameworks of popular game engines (Unity and Unreal) to compare and contrast how these engines handle networking.
Latency Mitigation
Following that analysis of how game networking works at a larger scale, I will do a deep dive into what techniques games use to handle their biggest hurdle when it comes to gameplay networking: latency.
Custom Latency Mitigation Solution for an FPS For the remainder of the project, I will take the information I have learned from researching common game networking architectures and latency mitigation strategies to write a custom implementation for latency mitigation for a first-person shooter.
I chose a first-person shooter specifically because I feel that this style of game poses some unique challenges when it comes to latency and creating smooth gameplay for all players.
This implementation will begin with a naive approach to latency mitigation and I will continue to iterate on the implementation using the techniques I gathered throughout my research in the previous weeks. Throughout this iteration process, I will be testing the implementations using Unreal's Network Emulation settings to simulate varying levels of latency and packet loss. These tests will serve to compare and contrast the efficiency of my iterations.
I plan to use Unreal Engine's Lyra starter game as a foundation for this in order to avoid having to create my own first-person shooter from scratch but I will be writing the lag compensation solution myself in C++.
And that about summarizes the extent of this project, I'm looking forward to diving in and I hope you stick around to learn with me!
Comments