OpenArena Message Boards

OpenArena Contributions => Development => Topic started by: Smithamax on October 21, 2008, 12:04:37 AM

Title: serverless muliplayer
Post by: Smithamax on October 21, 2008, 12:04:37 AM
Hey, haven't been here in a while but I come up with an idea I thought would be cool,

Would it be possible to make OA serverless, and by that i mean make it peer to peer / distributed like torrents and stuff like that.
My idea was that if you could make it peer to peer It would be easy(ish) to make an open source alt to the upcoming quake live

you would be able to make a social web interface were you could challenge people or set up tournaments and then launch the game
via a link.

having it peer to peer would eliminate the need for one person to host and also possibly help prevent cheating if implemented correctly.

you could have the site host but that would require a lot of resources.

this might be engine stuff that the ioquake team would need to deal with but i thought i would ask here

Title: Re: serverless muliplayer
Post by: Cacatoes on October 21, 2008, 04:38:19 AM
Heavy task you ask for.
OA is indeed modifying network code, by incrementing network protocol version number :D Don't expect much more from here ...

If you want to deal with a "peer to peer FPS" or a "peer to peer MMO", you're right, see engine-side of some experimental project :P I'm not aware of any, but that could be interesting ...

Title: Re: serverless muliplayer
Post by: andrewj on October 21, 2008, 04:55:13 AM
Distributed FPS doesn't work, because you need at least one computer to
have the "true state" of the game world, hence you need a host.

The alternative is like Cube, trusting each computer to have the "true state"
for only the player on that computer.  This leads to much worse cheating
since you can modify the engine to let your player to absolutely anything
(ignore damage and be invincible, pass through walls, unlimited BFG ammo).

Title: Re: serverless muliplayer
Post by: Smithamax on October 23, 2008, 03:43:50 PM
@ andrewj: as far as people cheating by going through walls this is no different from a client server model, Instead of having the server check if someone has broken the rules you would simply need some other players in the server to do it. The true state is however a big problem, Lag would become abigger factor without some sort of rework in how it is handled.

I don't know how much security sv_pure provides for the game, but im guessing its very breakable, ( I think its just some kind of hash check, am I right?).

anyway maybe ill start by trying to make my web interface work with client server and just have the challenger host

not now though because I should be studying for exams

Title: Re: serverless muliplayer
Post by: Al on March 27, 2009, 05:30:01 AM
Ive been pondering this question for some time.. not your exact question but one very similar..
my current plan is a mix between Cacatoes two "experimental" ideas.. a "peer to peer FPSMMO" but there are many complications..

lets start with why you cant compare a server to a torrent :P
Peer to peer works with file sharing because torrents are a simple push pull system.. file sharing is just a different system to a game

I considered a this difference for a while, and for a long while I considered grid computing (grid networking) as the programmatic alternative to peer to peer file sharing. This technology allows sharing of CPU and memory usage throughout a distributed network. This is available in multiple languages in multiple varieties.. I may still use some features of Sun Grid Engine (dont worry, its built with Ant but its a c project :P).

Grid technology is great - closest thing there is to peer to peer programs, however it wont work for a FPS or any decent game for two main reasons. One was mentioned earlier, there would still need to be a "true state" as andrewj put it. I believe he meant that there needs to be one definition of the world in which calculations should be made. Calculations made client side improve ping, but at the loss of accuracy - there needs to be one real definition of the universe in which most calculations can be made.
The other reason is ping, if a client talks to a grid server, calculations would have to pass through multiple servers - in most grid architecture an entry server and a cloud of servers - this takes longer to respond than one machine.

Again I considered this.. I will not go into the MMO side of things quite yet (though am happy to discuss it mainly involves networking these servers) as Im still working on the important side, creating a server with a larger capacity for players working across multiple computers (the closest to P2P i could come up with).

My current theory involves splitting tasks into seperate servers to reduce load on the 'primary' server with the 'true state' of the characters and involves pvp and firing weapon calculations. You would then have an AI server, a PVE (PVNPC?) server, possibly a team speak server, maybe an npc or an item server allowing unique items.. you get the idea and im hoping someone that already knows the code might have more ideas :D.
The client would talk to two servers - one with location and any weapon dmg and another which would distribute tasks. Perhaps these less important servers could run as grids hooking up 100 computers as the AI server and 1million bots could join a game :P  Anyway, the idea is that with reduced load on the server - each part of the server could run on a part of a client machine allowing more players to join than using any just one. Peer to Peer server :D

After going through a small amount of this code though (and being rusty in c), I have a lot of work ahead of me..

btw this is my first post to the forum so..
Hi  - Ive been reading the code for a short while (Attempting to understand the vectors and matrices has been making my head spin) and figured I should drop by the forums.  :D

oh, ps as Cacatoes said - increasing protocol efficiency helps too. I have not had a look this part of the code yet, but itd be interesting to see if a faster protocol that can reroute to an alternate server based on delay length could improve ping speed (itll be necessary with my MMO design anyway)

Title: Re: serverless muliplayer
Post by: 0kelvin on March 27, 2009, 06:23:05 AM

Title: Re: serverless muliplayer
Post by: Al on March 27, 2009, 07:19:50 AM
p2p sharing isn't really server-less, torrents have their trackers, other p2p network have their index servers, so on.

By reading AI's post I remembered of instanced dungeons in mmorpgs, it's said that instanced dungeons reduce the server's memory load by not having to handle hundreads of players in the same dungeon. I have no idea what or how exactly it is done, but what comes to my mind is instanced maps, one server being able to run more than one map at the same time.

There is a new service called onlive, which its creators claim that is able to run any game remotely, a farm of servers run the game for you, the hardware burden is moved from the player's side to server-side, with the drawback that a lot of bandwidth is required to play that way.

onlive sounds cool. Does this service require a fee - I might look into it. But the advantage of the system I am attempting to create would be that you would not need to pay for a remote server, all but a primary database, and auth server and hopefully not much more than that would need to be hosted.

My MMO design takes advantage of instance based dungeons, but how awesome would those instances be with 50-100 players in a FPS :D The plan I described would be one of those instances. *I should not quote figures before anything has been put to the test.. or built :P

Oh - trackers and index servers.. those are required for MMO but dont necessarily have to be hosted.. maybe.. anyway I planned on using some grid code to do some of the tracking and indexing.. I should leave the MMO discussion for another thread

Title: Re: serverless muliplayer
Post by: Case on March 27, 2009, 07:41:59 AM
I'm calling bs on the streaming video game service before they even launch.