I'm no expert in this networking nonsense (I took a cisco networking class at one point but it was the very basics...), but I was experimenting with raknet a while back (w/ C++) and it seemed to work alright...

For this compo I think I'll be trying boost.asio, since it's nicely cross platform-like and it doesn't look that hard to get some simple packets thrown about.

Riley: Boost.asio is really conceptually cool and feels so natural to program but debugging it is deep hell.

My advice: Go ahead and use it, but whenever you create a new callback, document somewhere (just write down in a file or a comment or something) who issues the callback and who consumes it and why. Asio makes it easy to wind up in the debugger staring at the inside of a bind()ed function, and just sort of lost trying to remember "who called this again?". Also: I hope you are very comfortable with the use of smart pointers.

I don't know much about developing networked games, but I do have a suggestion/concern.Perhaps games requiring use of some ports to be standardized (all using the same port number) or configurable (can change the port number to what ever the player/host desires), that way players don't have to forward a different port for each game on their router.

C/C++ guys:RakNet - RakNet is easy as fuck and will get you going in no time. The indie licence for 3.x is free (you can get 3.x versions from the forum). Examples are plain and simple, you should take a look at the chat client/server example to get the idea. Getting this to work is basically 15 lines of code, no matter whether you're doing client or server. ALSO, it's P2P architecture, so whether you want client/server or p2p or both is up to you. I use it every day in work, and LOVE IT!

JavaScript/Canvas guys:PusherApp - this let's you interface via network with just several lines of JS code, It's also free and the beta just ended. Guys making this are cool and prone to support.

I don't know much about developing networked games, but I do have a suggestion/concern.Perhaps games requiring use of some ports to be standardized (all using the same port number) or configurable (can change the port number to what ever the player/host desires), that way players don't have to forward a different port for each game on their router.

Seconded. This would be nice.

Thirded. I'm planning to roll my own solution and let the host pick the port, but if we decide on a standard, I can default to that for simplicity.

I use Player.IO for my Flash games, and it works great! If you're working on a game in Flash CS or Flex, Flixel/FlashPunk, and are having trouble getting it up and running, just gimme a ping and I'll help ya out.

It's got great online documentation and tutorials, though, so make sure to tap that!

I'll be sure to keep that in mind, Chevy, thanks :3Seeing as I have NO IDEA how ANY of this works.

I'm no expert in this networking nonsense (I took a cisco networking class at one point but it was the very basics...), but I was experimenting with raknet a while back (w/ C++) and it seemed to work alright...

For this compo I think I'll be trying boost.asio, since it's nicely cross platform-like and it doesn't look that hard to get some simple packets thrown about.

Riley: Boost.asio is really conceptually cool and feels so natural to program but debugging it is deep hell.

My advice: Go ahead and use it, but whenever you create a new callback, document somewhere (just write down in a file or a comment or something) who issues the callback and who consumes it and why. Asio makes it easy to wind up in the debugger staring at the inside of a bind()ed function, and just sort of lost trying to remember "who called this again?". Also: I hope you are very comfortable with the use of smart pointers.

Thanks for the heads up, I'm aiming to keep it pretty simple and I'll definitely document everything, so hopefully I won't end up with too much in the way debugging headaches... (heh, probably wishful thinking, but ah well it'll be a learning experience).

Worst comes to worst I'll use raknet, which seemed to get the job done. Speaking of; Raknet peoples: Does it work on OSX? (I know it supports win/linux officially, but I think it might also be possible to compile on OSX?)

On second thought, I may just use raknet, documentation/examples outside of the boost site are a bit scarce for asio... if I can get rak to compile under OSX I'll probably just use it (*boots into hackintosh...).

I just want to say that using raw sockets is really not that scary. Once you get over the initial hump of setting it up, which really is like 10 lines of C, it feels really good to have your own low level connection stuff going. It's more like prediction and compression stuff that gets hairy, but most network libs don't really take care of that fully anyway.

I've begun to dig in to Player.IO, and god damn all of this latency state updating nonsense is just NOT fun.

Yup, latency is hell. I started this thread with the hope that some best practices for dealing with latency will bubble up. HOWEVER, I do encourage people who want to make fast-paced games to just do it offline. I agree with Ivan in the rules thread, I would be disappointed if hardly anyone made any offline multiplayer games for this compo.

I just want to say that using raw sockets is really not that scary. Once you get over the initial hump of setting it up, which really is like 10 lines of C, it feels really good to have your own low level connection stuff going. It's more like prediction and compression stuff that gets hairy, but most network libs don't really take care of that fully anyway.

I just want to say that using raw sockets is really not that scary. Once you get over the initial hump of setting it up, which really is like 10 lines of C, it feels really good to have your own low level connection stuff going. It's more like prediction and compression stuff that gets hairy, but most network libs don't really take care of that fully anyway.

If you're in C it's almost the easiest way to do things.

Just push some structures through. No serializing or deserializing.

These days you can probably even get away with ignoring endianness.

I sorta like the idea of boost.asio, but my first impressions aren't the best... I built a couple of the examples, ran, had no way of exiting, ctrl-z'd and then it said the address was already in use and I had to reboot to run them again... though I'm probably doing something really stupid...

raknet compiled okay on win/osx/linux so I'll probably just end up using it, since I have some past experience with it...