ProudNet Function
Last updated
Last updated
Data Coalescing Instead of sending the same amount of data in small, frequent messages, ProudNet collects data simultaneously and transmits it in a single batch. By applying a unique ID, this approach significantly reduces network traffic.
Fragmentation Messages can be split and transmitted based on the MTU (Maximum Transmission Unit) size.
Congestion control Excessive UDP communication can lead to network congestion. ProudNet prevents this with built-in UDP congestion control functionality.
Reliable Unreliable Messaging Protocol In gaming, it is widely understood that while UDP is unreliable, its low traffic overhead and speed make it ideal for transmitting rapid events like character movements or machine gun fire. For other types of messages, the reliable TCP protocol is typically used. Using UDP for messaging via socket APIs is straightforward but lacks the reliability guarantees of TCP. Moreover, UDP is more susceptible to hacking and may be less stable in diverse network environments. Despite these limitations, its speed and simplicity offer unique advantages for fast-paced action games. ProudNet's unreliable messaging protocol provides significantly better stability than standard UDP.
QoS Features at the Engine Level Games can generate high network traffic, latency, and connection issues. These challenges are easily addressed with ProudNet’s Quality of Service (QoS) or network rate-limiting features. In particular, the QoS functionality is highly effective for managing in-game voice chat.
WIFI Handover
ProudNet’s network detection feature ensures seamless reconnection when switching to a new network. It also recovers messages sent during the disconnection period, maintaining uninterrupted communication.
P2P communication is utilized for features like voice chat and character movement synchronization, reducing server load and improving responsiveness.
Robust P2P Transmission Capabilities
Effectively leveraging P2P communication reduces server load and enhances game responsiveness.
ProudNet supports P2P for both server-to-server (S2S) and client-to-client (C2C) communication, allowing the selection and use of a superpeer when needed.
ProudNet simplifies P2P implementation with streamlined APIs for client-to-server (C2S) and client-to-client (C2C) connections. This eliminates the need for complex tasks such as monitoring connection wait times or handling disconnections in unstable network environments.
ProudNet also features built-in hole-punching and relay functionality, all handled automatically within the framework.
With no connection latency, ProudNet’s P2P communication enables instant game starts for lobby-based games and supports both C2C and C2S communication for world synchronization in MMORPGs.
Traffic Control
While P2P works well in high-bandwidth internet environments, issues can arise in countries or regions with speeds below ADSL2+, such as China and Southeast Asia.
Low P2P communication speeds can lead to problems, including network delays and even issues with NAT routers.
To mitigate these challenges, ProudNet offers the following features:
Server Relay Usage: Automatically switches to server relay when transmitting data above a certain threshold.
Packet Reduction: Implements packet reduction to optimize communication efficiency.
Unreliable & Reliable Messaging Support between P2P
Sending P2P messages over UDP is simpler than using TCP, but UDP is inherently unreliable—it does not guarantee message delivery or order. As a result, some messages may be lost during client-to-client chat.
ProudNet addresses this issue by implementing an ARQ (Automatic Repeat-reQuest) mechanism, similar to TCP, to ensure reliable message delivery.
Hole-Punching Upkeep
Hole punching is essential for reliable P2P communication, particularly in networks with many P2P connections and high traffic. Maintaining hole punching over an extended period is crucial.
For instance, in internet cafés in China where hundreds of computers are connected to a single router, a large volume of P2P traffic can fill the router's port mapping entry list, causing disconnections. To prevent this, ProudNet offers the following technologies:
Just-in-Time Hole Punching: Ensures that hole punching occurs exactly when needed.
Port Mapping Reuse: Reuses existing port mappings to reduce the need for new entries.
Duplicate Port Mapping Prevention: Prevents the creation of redundant port mappings.
Automatic Switching Between Hole Punching and Relay
Hole punching for P2P connections can suddenly fail due to network traffic or changes in the state of the NAT router. If not handled properly, this can lead to interruptions or issues for players.
ProudNet detects the status of P2P connections and automatically switches between hole punching and relay to prevent such problems.
Even if hole punching is unexpectedly interrupted, only a brief delay occurs, and the connection remains intact.
Just-In-Time Hole Punching
ProudNet supports stable P2P communication with the following technologies:
Just-in-Time Hole Punching
Port Mapping Reuse
Duplicate Port Mapping Prevention
Remote Method Invocation, RMI
Instead of writing numerous switch-case statements to determine the type of received message, ProudNet solves this with its RMI (Remote Method Invocation).
By defining messages with PIDL (ProudNet Interface Definition Language) and compiling them, ProudNet generates the code to send (proxy) and receive (stub) messages.
Developers can easily include and register this code in server or client objects, allowing messages to be sent as simply as function calls.
Encryption/Compression
When exchanging critical data, encryption is essential. ProudNet offers two primary encryption methods.
Fast but Weak Encryption: Offers lower security but extremely fast encryption/decryption speeds.
Strong but Slow Encryption: Utilizes the trusted AES algorithm for higher security.
In cases where reducing traffic by compressing messages is more beneficial, even when server load increases, ProudNet provides an easy-to-use compression feature.
ProudNet supports strong encryption for both client-server and client-client (P2P) messaging.
It also includes built-in mechanisms to prevent packet sniffing, copying, and tampering.