The Best way to make my game multiplayer

Hi guys, i have done a game in ruby using gosu, its a side scrolling
game, i want to make it multiplayer, well, i hope make it a mmorpg some
day, so, now im caring about the network, need be something safe but
consume low bandwidth as possible because of the server.

I dont have any exp doing this, can anyone post web with the basics or a
tuto or something to give me a start XD?

What is best to work? UDP? TCP? Can i use DRb?

thxx alot :slight_smile:

路路路

--
Posted via http://www.ruby-forum.com/.

You have two sets of considerations: gameplay and network utilisation.

The gameplay concern is about making sure that one or more players aren't cheating so you will probably want to encrypt your traffic. Take a look at the Ruby OpenSSL library.

If you're looking at rolling your own protocol I'd recommend doing it on top of RUDP as this is more efficient than TCP/IP with lower latencies, or if you can afford to lose packets go for UDP.

Another attractive option would be to use the Rinda library which is built on top of DRb as that will make your code very simple to follow, but if I remember rightly DRb runs over TCP/IP so you may take a performance hit.

For a very simple example of using OpenSSL encryption as part of a client-server application in Ruby take a look at the code portions of my Semantic Networks presentation at http://slides.games-with-brains.net/\.

Also be aware that whilst Ruby is a very easy language to code this stuff in, if you need high performance you may need to migrate portions of your network stack to a C extension. I'm thinking here primarily of any MMORPG server you may have in mind in the future - for a half-dozen clients it would be serious overkill.

Ellie

Eleanor McHugh
Games With Brains

路路路

On 11 Mar 2008, at 20:18, Diego Bernardes wrote:

Hi guys, i have done a game in ruby using gosu, its a side scrolling
game, i want to make it multiplayer, well, i hope make it a mmorpg some
day, so, now im caring about the network, need be something safe but
consume low bandwidth as possible because of the server.

I dont have any exp doing this, can anyone post web with the basics or a
tuto or something to give me a start XD?

What is best to work? UDP? TCP? Can i use DRb?

----
raise ArgumentError unless @reality.responds_to? :reason

Hi,

The gameplay concern is about making sure that one or more players

aren't cheating so you will probably want to encrypt your traffic.
Take a look at the Ruby OpenSSL library.

If I'm not mistaken, encrypting traffic isn't likely to prevent cheating, is
it? Any player could modify the source.

Arlen

Arlen Cuss wrote:

Hi,

The gameplay concern is about making sure that one or more players

aren't cheating so you will probably want to encrypt your traffic.
Take a look at the Ruby OpenSSL library.

If I'm not mistaken, encrypting traffic isn't likely to prevent
cheating, is
it? Any player could modify the source.

Arlen

yea, its to prevent hacking.

Ellie, thx alot, you helped alot :slight_smile:

Hmm, the last question, there is any RUDP library to ruby? if not, im
gonna try to make one :slight_smile:
About the speed, im making it a 2d sidescroller so i think at least in
the client dont gonna have any speed problem, about the server i dont
know, only the time gonna say XD

路路路

--
Posted via http://www.ruby-forum.com/\.

By itself no, and arguably with programs in Ruby where the source code is automatically available to all players then any one of them can change it. However whatever measures are taken in the game engine to prevent cheating are likely to involve including data calculated at runtime in the protocol and as sniffing protocols is trivial it's a good idea to encrypt the traffic.

Ellie

Eleanor McHugh
Games With Brains

路路路

On 12 Mar 2008, at 09:38, Arlen Cuss wrote:

Hi,

The gameplay concern is about making sure that one or more players

aren't cheating so you will probably want to encrypt your traffic.
Take a look at the Ruby OpenSSL library.

If I'm not mistaken, encrypting traffic isn't likely to prevent cheating, is
it? Any player could modify the source.

----
raise ArgumentError unless @reality.responds_to? :reason

There isn't an RUDP library as such, but if you look at the bit-struct library you'll find examples of how to roll your own protocols and then it's a question of opening a raw packet socket. Details of that vary from platform to platform. You'll get best performance by implementing RUDP as a C extension, which should be similar to the standard library's UDP and TCP/IP libraries.

Ellie

Eleanor McHugh
Games With Brains

路路路

On 12 Mar 2008, at 17:18, Diego Bernardes wrote:

Arlen Cuss wrote:

Hi,

The gameplay concern is about making sure that one or more players

aren't cheating so you will probably want to encrypt your traffic.
Take a look at the Ruby OpenSSL library.

If I'm not mistaken, encrypting traffic isn't likely to prevent
cheating, is
it? Any player could modify the source.

Arlen

yea, its to prevent hacking.

Ellie, thx alot, you helped alot :slight_smile:

Hmm, the last question, there is any RUDP library to ruby? if not, im
gonna try to make one :slight_smile:
About the speed, im making it a 2d sidescroller so i think at least in
the client dont gonna have any speed problem, about the server i dont
know, only the time gonna say XD

----
raise ArgumentError unless @reality.responds_to? :reason