In online multiplayer games, netcode refers to the networking infrastructure and code that synchronizes the game state and information between clients. Netcode is vital for ensuring smooth, lag-free gameplay across different internet connections.
Netcode plays a critical but often overlooked role in determining the quality of online gaming experiences. Well-designed netcode can make even the most chaotic multiplayer matches feel smooth and responsive, while poor netcode leads to frustrating lag, rubber-banding, and hit registration issues.
Understanding how netcode works and the different techniques developers employ can help explain why some online games “feel” better than others, even at a technical level. This article will explore the basic purpose, components and optimization of netcode, and how it impacts gameplay.
The Purpose of Netcode
The primary function of netcode is to synchronize the game state and information between different clients connected over the internet. This includes:
• Player positions and orientations
• Projectile trajectories
• Player health and status effects
• Environment state (objects, doors open/closed, traps activated, etc.)
• Inputs from each player
Netcode must gather all of this data, reconcile any differences, and deliver updated game states to each client at a fast enough rate to provide a consistent, real-time experience. This synchronization process is what enables online multiplayer games to work at all.
Components of Netcode
Netcode has two main components: the network protocol and update rate.
The network protocol determines how information is packaged, compressed and transmitted between clients. Common protocols include UDP and TCP.
The update rate refers to how frequently new game state information is sent from the server to each client. Higher update rates (e.g. 120Hz) generally provide a smoother experience but require more bandwidth.
Developers optimize netcode through:
• Smoothing and prediction algorithms to hide the effects of latency
• Compressing data packets to send more information per update
• Prioritizing important information (e.g. player positions) for faster delivery
• Increasing the update rate to synchronize game state more frequently
• Employing dedicated servers to handle all game calculations
The tradeoff is generally between bandwidth usage, CPU load and responsiveness. “Good” netcode aims for the optimal balance between these factors for a given game.
Impact on Gameplay
Well-designed netcode is nearly invisible during normal gameplay. Players can move and attack fluidly with few delays or hitches.
Poor netcode leads to frustrating issues like:
• Rubber-banding – Where players or objects suddenly jump back to previous positions
• Warping – Where remote players appear to instantly “teleport”
• High latency – Leading to delayed responses and actions not matching inputs
• Hit registration issues – Where shots and attacks don’t register properly
While netcode operates beneath the surface, it has a massive impact on the quality and “feel” of online multiplayer gameplay. Game developers must optimize netcode to accommodate the speed, chaos and full sensory experience of modern interactive titles. Players, in turn, have come to expect a seamless, lag-free online experience – a testament to how far netcode optimization has come.
Choosing the Right Netcode for Your Fighting Game
Delay-based or rollback? We explain the pros and cons of each for developers.
Fighting game developers face an important decision when designing the netcode for their titles: should they go with delay-based netcode or rollback netcode? Both approaches have trade-offs in terms of complexity, bandwidth usage, latency compensation and creating a smooth online experience.
Delay-based netcode has been the standard for years due to its relative simplicity. It works by artificially introducing a delay (around 100-200ms) between when a player inputs a command and when it is executed. This helps hide some of the latency caused by network lag.
• Simple to implement
• Requires less bandwidth
• Works well at low to moderate latencies
• Requires introducing artificial delay, hurting responsiveness
• Struggles at high latencies
• Can lead to “input dropout” if latency spikes
Rollback netcode simulates the game at the fastest possible speed and then “rolls back” to correct for latency when network data arrives. This provides a more responsive experience with lower perceived input lag.
• More responsive input feel with less artificial delay
• Works well at both low and high latencies
• Can correct for packet loss and latency spikes
• More complex codebase
• Requires more bandwidth
• Can lead to “rollbacks” visibly correcting action on-screen
While delay-based netcode was sufficient for many years, rollback has emerged as the superior option for fighting games – especially competitive titles.
The more responsive inputs and ability to handle high latency variations make rollback a much better fit for the rhythm and reflexes required in fighting games. Despite the complexity, rollback netcode is well worth implementing to provide the best online experience for players.
Most major fighting games in recent years have transitioned to rollback, from Mortal Kombat 11 and Killer Instinct to Guilty Gear Strive and Them’s Fightin’ Herds. Developers looking to create a thriving online community for their fighting game should seriously consider following suit.
Netcode refers to the networking code and protocols that synchronize game state and inputs between clients in online multiplayer games. It ensures all players experience the game in the same way despite latency.
Netcode is important because it determines how smooth and responsive online gameplay will feel. Good netcode can hide latency and latency spikes, while poor netcode leads to problems like rubber-banding, hit registration issues and overall lag.
The main types of netcode are delay-based and rollback. Delay-based netcode is older and introduces artificial delays to compensate for latency. Rollback netcode simulates the game at full speed and then “rolls back” to correct for latency, providing a more responsive experience.
Several factors affect netcode performance, including network protocol, update rate, prediction algorithms, data compression, prioritization of important information, and server infrastructure. Developers must optimize these to achieve the best balance for their specific game.
Netcode can be improved by: increasing the update rate to synchronize game state more frequently; compressing data packets to send more information per update; employing dedicated servers to handle all game calculations; and using more advanced prediction and interpolation algorithms. However, this often comes at the cost of increased hardware requirements and bandwidth usage.