[ENet-discuss] Limiting the channels

M. Rijks enet at forge.dds.nl
Thu Apr 8 04:32:27 PDT 2010

Hi all,

Apologies for the slightly long precursor, but I feel I need to make  
the issue clear.

I am in the process of designing a networking library for a particular  
game development system, and I am using ENet as the underlying  
'protocol'. The things I am building on top of it is a transparent and  
easy-to-use interface, player management, session management and all  
that jazz. I also wish to set up ENet-driven lobby server software  
which can host any game that uses this library, as well as instructing  
hosts to punch holes for connecting players.

The goal is that the interface for connecting to a game is about as  
simple as it was with DirectPlay: the end user / game developer need  
only one IP address and optionally port number to connect to. The  
remote end can either be a server for the game (the session) or it can  
be a lobby server. The communication is entirely the same: a list of  
sessions can be received (just one with a game server, many with a  
lobby server) and a session can be joined (immediately when connected  
with a game server; automatically connecting to the game server if the  
connection was a lobby server). Both the end user and the game  
developer should be oblivious to how this happens, as reconnections  
are handled by the library.

I'm quite confident with the architecture I have set up, but I do have  
an issue: It is up to the game developer to decide how many channels  
should be opened for the game. And as far as I understood Enet, it is  
the client that tells the host how many channels it wants to open.  
That's fine if clients directly connect to a game server, but not when  
a client connects to the lobby server. The lobby server doesn't need  
more than a single (guaranteed delivery) channel for its purposes, but  
clients may instruct it to open up to 255 channels. And since lobby  
servers can potentially service hundreds, even thousands of clients, I  
assume that they will reserve a lot of unnecessary resources.

Is my understanding of channel allocation between client and host  
correct? If so, is there any way to limit the number of channels used  
by a host? And if so, what will happen if a badly written game sends  
data on a channel that the lobby doesn't have?

Thanks in advance for any response!

More information about the ENet-discuss mailing list