Archived

This topic is now archived and is closed to further replies.

Novalis

Looking for input on a new networking "library"...

Recommended Posts

Novalis    122
Salutations... I''m working on a cross-platform networking API designed for games with a few fairly radical twists in it. Right now I''m looking for some input from you networking gurus about things you''d like to see in it, and things that I plan to have in it already. If more then one or two people are *really* interested in this project, maybe we can collaborate on some sort of design specification online. I''ve got the coding pretty much handled myself though (much of the underlying structure is already complete actually). So here''s where I ramble a little bit about why I''m doing this instead of using one of the current APIs: This library is designed to run games over a peer-to-peer network instead of the more traditional client/server model. It doesn''t preclude a client/server approach in terms of handling game data though. It is perfectly acceptable/almost necessary for one "node" to have total control over the game world, but not all clients will be directly connected to the controlling node. One of the biggest goals of this library is to form a "gnutella like network" for gaming where lots of different games can be played over the same network. My reasoning behind this is to solve the age old problem of locating other players online. For amatuer developers it isn''t practical to run a dedicated server like battle.net, and peer-to-peer systems only work when you reach a certain "critical mass" of peers. This system will allow lots of different games to run on the same peer-to-peer network. So now, even if you only get ten people to download your game, there will always be a network for them to connect to (assuming lots of other programmers use the library!). Am I making any sense? Another goal of this library is to solve yet another big problem in the gaming world today: Patch/MOD distribution. I intend to build into it a robust/secure method of distributing "authenticated" game MODs, patches, and maybe even entire games. I''m sure we''ve all run into the problem of waiting hours to try and get into an FTP server to download the latest CounterStrike/Diablo/UltimaOnline/etc patch the day of the release... So, how am I implementing this right now? Well, basically I''ve written a gnutella client that will go out and attach itself to a network and attempt to "grow" a good set of peers to communicate with. Instead of getting lists of files from other peers though, it gets lists of games that its peers know about. It does this all completely transperantly to the programmer using the API. It then allows the user to select a game to connect to, and once connected, passes the game specific data (defined by the programmer using the API) across the network. For simplicity, it uses TCP right now, but if speed seems to be an issue I don''t believe it would be much of an issue to change over to UDP. Well, I could keep going on and on (like mentioning the possibility of "advertisement packets" being sent across the network...) but I think that should be enough to get the general idea across and started a good heated debate Thoughts anyone?

Share this post


Link to post
Share on other sites