[GNE] GNE NAT traversal and bandwidth performance
Brought to you by:
gillius
From: Bradley A. <gen...@gm...> - 2007-03-26 17:33:14
|
Hello. I'm the new maintainer of the www.globulation2.org project, and I'm giving serious consideration to using GNE for our networking engine. There has been allot of talk on our development mailing list about remaking the network code that already exist because allot of it is adhoc, c-style, and not particularly maintainable, and we have allot of troubles with it as well. In Globulation 2, it is essential that every packet arrive intact and in order. Every machine must remain 100% synced for every frame. So, every frame (it runs at 25 fps constantly), sends a small packet indicating what order the user has given for that frame. An order would be like constructing a building at (x,y) or increasing the number of units assigned to a task. If an order is not recieved for a frame, the engine can not move ahead, because the clients will be instantly desyncronized elsewise. The game is not suited for a constant-update system used in many FPS's. Instead, it runs the game logic on every client, and just transmits user input over the network. Before I finalize my decision to use GNE for our game, I have a few questions: 1) Can GNE do NAT traversal techniques like UDP hole punching? This is very important for a game like this. Can GNE do other techniques as well? Perhaps the high level API could have functionality that systematically covers all of the possible UDP NAT traversal techniques when trying to establish a connection. 2) What is the bandwidth overhead of GNE? As I already explained, Glob2 requires TCP like stability with all of its packets. What is the overhead in network bandwidth for using GNE in such a manner? 3) Can GNE do things like automatically searching a LAN for people who are hosting games? Is this planned for future releases? Other than those 3 issues, I quite like the current design of GNE. And event driven and multi-threaded interface is exactly what I was planning if I couldn't find a pre-existing engine. And the use of libraries like Boost for smart pointers is equally within my domain, as I use Boost frequently in my own coding. -- Really. I'm not lieing. Bradley Arsenault. |