So, I have this rather big idea:
Having a gaming network which is essentially hosted BY the people playing the game!!
Of course, it'd only be the top 10% (by default) of the gaming network who would end up actually hosting the game, but that would be an improvement in either way we currently do it.
Right now, you can either have a centralized gaming experience, where the game is hosted on a main central server (Wow etc, or public games servers) and these take commands from your PC, take where you are and only gives you the information that you need (so locally within a certain in-game distance). This is good because there's low bandwidth used from the client PC's and provided the server can handle the bandwidth, it only deals out what's needed to each server.
BUT this comes at a price - you need the moola to get the bandwidth.. You need the moola for the server to be able to handle that many people concurrently.. You need to moola to store these somewhere, for the electric, for the IP address, etc.
Then there's games like Unreal Tournament etc. They can REALLY test the network to see where contention is, and stress the network to it's best.
This is because each PC, broadcasts what it's doing to all the others on the network. This means you get a flood of packets coming from each PC, and then each one needs to get that, look at it and see if it's relevant at all.
The cost here is that the more PC's you've got, the more packets have to be sent to tell everyone of the updates, and so you need a very wide bandwidth.
My idea: have 10% of the people playing the game, actually host it. This is given by the speed of the network (latency etc - I don't quite know how I'd do that), and then organise it so that the map is split into two whenever it gets busy.
So the main map on one server gets too busy - it get's split in half so one deals with one map-grid area, and the other map-grid area gets assigned to the next-fastest PC in a list (list is updated every 30 minutes speed-wise.. Logging-off removes them from the list). Then if that one's too busy then that one splits in two also, and this organises itself so that the busiest area's are immediately sorted out, rather then relying on some central numbering system.
The grid-areas are duplicated and load balanced - so for every area there is in fact 2 servers which need to keep each other updated on what's actually happening (so that almost doubles the bandwidth required by these servers) - this is so that you can't loose a server and have people loose where they were etc.
If that does happen, then it becomes stale and another server replaces it. Once it comes back, it'll be told that it's been replaced and it'll redirect any attempts to the replacement (shouldn't really be necessary because each of these 'servers' will be updated with a new list once a server is 'created').
Now comes the only down-part I can see: the fact the players can alter, or potentially create bogus users, alter their users details, alter OTHERS' details, and get to the top of the 'network speed' list by faking details.
So you can cheat and there's nothing I can really do about it.
On my mind right now is time-based encryption involving MD5 sums, continually rolling files, and shadow-node verification when a user moves from grid-area to grid-area.
To me this seems a very good idea from a software point of view, it lessens the money the game creator needs to generate to keep the game going - but maybe not from a corporation's point of view (making money).
And the main reason I'm putting it up here? .. Is because I have no-one who I can actually bounce these idea's off of, so if some poor soul comes across this and has an opinion, give us a shout!
Sunday, December 23, 2007
Subscribe to:
Posts (Atom)