Feasibility of a Persistant Poly-Server Steam RPG

D

damijin

Guest
Hello, I've had this idea in my head for quite some time now, and I was wondering if any of the minds over here could tackle it. It has to do with the feasibility of a persistent RPG run through Steam with both a master server with a database of information, and smaller servers that could talk with the master server but could be run by other people, and vary in size.

The idea came to me when I noticed the persistence of things such as leader boards and stat trackers on CS:S servers which connected to web sites and other sources to display your information. I began to think, would it be possible to create an RPG with persistant stats? Well.. of course it would. I mean, it's been done half-assedly with some CS:Source minimods.

But could I take it to the next level? Would it be possible to create a server network that would allow for both multiple maps of exploration, and expansion potential to make the game larger over time?

My theory on paper was that you could create a mod which would be similar to a modern day online RPG, you kill things, you gain levels, whatever that part isn't terribly important. What is important is that your persistent character be saved to a database on what I would call a "Master Server". The master server, or perhaps master servers, would be the parents of a network of smaller servers which I would call "instance servers". An instance server could be anything from a serious business 64 player server, down to a home pc with support for only 4 players. The instance server would spend most of it's time sitting there in an idle state waiting for communication from the master server.

So lets take a step back and pretend we're playing this RPG on steam. We're playing with some friends, and we discover that there is a cave up ahead. We walk up to the cave, but it does not exist on this map so we can not simply walk in. Instead, a trigger is sent to, what I imagine would have to be custom written back end software. It would say something like "4 players wish to enter the Cave of Destiny". The software would then look out to the available instance servers and locate one that is not in use and can support 4 players, and ideally is a smaller server so that it does not occupy a 64 player server with this little 4 person party.

Upon having located a suitable server, it would tell the instance server to load map "Cave of Destiny", and anticipate receiving the following Steam IDs (the 4 players). The instance server will deny any attempts to connect by anyone with the wrong Steam ID so as to prevent people teleporting into instances without traveling through the world.

The players will adventure in this instance server, gain some loot, gain some xp, whatever, and the whole while the instance server will be sending this data back to the master server to be recorded in the database.

The reason I really enjoy this theory of an online RPG is because of it's expansion potential. People get bored of killing monsters? Create a soccer map and let them kill each other wile playing soccer. Or capture the flag, or a castle siege. You could create dozens of new types of maps and simply string them together through instances, or add entrances to them from the primary map that is played on the master server.

I hope I have explained the concept with enough detail for the question I am about to ask, and if not, feel free to ask questions.

Is this concept feasible? As a programmer are you relatively certain of it being possible? If not, why? If so, would it be so much work that you personally would not invest yourself in such a project, or would it perhaps be easier than it may seem for grand of a concept that it is?
 
Verdict: Supremely difficult. It'll take a bit of capital to get the master server running, too.

Also, no (sane) coder is going to take up this project without other coders to back them up. So learn how to code, or be prepared to try to find a small group of them.

-Angry Lawyer
 
I'm not extremely interested in the idea of actually doing it, just interested in the possibility.

Thanks for the answer though.

Edit: and by "supremely difficult" are you speaking from strictly a coding point of view or are you adding in other elements such as the difficulty of running servers and whatnot? I'm only interested in the actual coding point of view at the moment. Having written client and server communication software before, I am actually quite a bit suprised that you would rank it as "supremely" difficult. I had figured it would be labor intensive, but I do not equate that with difficulty.

So perhaps a bit more detail is in order. While I do not see this as a realistic goal at the moment, I do see it as a real possibility in the future of Steam, and something worth understanding.
 
"Hello, I've had this idea in my head for quite some time now, and I was wondering if any of the minds over here could tackle it."

Stopped reading there. Not saying this at all to be an asshole, but, as a coder, that's how I respond. Coders generally don't like to answer to anybody elses ideas. Unless you have something as significant as code to contribute, a coder likely will not listen to you.
 
That's cool, I'm used to programmers being self-absorbed dicks. While I haven't made a career out of code, I can recurse my way out of a wet paper bag too. I have a year or two of comp sci under my belt, and that alone seems to have been a factor in making me a dick. So that's cool.

How's this for code to contribute:

FamilyMember whitfieldsmother = new FamilyMember ("mother", "whore");

if(whitfieldsmother.isWhore())
{
whitfield.set******ry(true);
}

Now please go getCancer() while(i.rapeYourSlutMother())


*java is an inferior language for reasons x y z, and c++ is superior because it makes your underoos get tight when you think about it, but you'll just have to deal with it, cancerboy.
 
You are funny and make me smile.

- Pax
 
That's cool, I'm used to programmers being self-absorbed dicks. While I haven't made a career out of code, I can recurse my way out of a wet paper bag too. I have a year or two of comp sci under my belt, and that alone seems to have been a factor in making me a dick. So that's cool.

How's this for code to contribute:

FamilyMember whitfieldsmother = new FamilyMember ("mother", "whore");

if(whitfieldsmother.isWhore())
{
whitfield.set******ry(true);
}

Now please go getCancer() while(i.rapeYourSlutMother())


*java is an inferior language for reasons x y z, and c++ is superior because it makes your underoos get tight when you think about it, but you'll just have to deal with it, cancerboy.

while(pDamijin->IsAlive())
{
pSelectedAngryLawyer->SetFistVelocity(GetDirection(pDamijin),500);
}

I was going to offer a bit of advice, but I've decided against it after that little outburst.

-Angry Lawyer
 
that's cool, I entertained myself. we'll all live happier lives.

(500 is kind of fast! show mercy :()
 
Wow. *puts on asbestos suit*

Anyways... I'd say it's not that big a challenge to implement. You have the usual problems of performance and making it scale up, but otherwise there aren't too many really tricky problems.

The hardest one is making sure that stats data or the like isn't spoofed or a cracked server isn't used to artificially boost the XP or whatever of a player. That's a tricky problem with no immediately obvious solutions.
 
Just for kicks, I'll flesh out the idea a bit more to address those issues.

Imagine this system not as a system to support one single persistent world, but several persistent worlds of varying size (both physically and population wise). With only one server you can start a world. Get some people to donate more servers and your world gets bigger.

The thing that prevents, or, fights against, stat manipulation by rogue servers is that each server in the cluster would need to be approved by the person (or people), who operate the world. So if someone does misuse a server, then they have abused the admin's trust, and should probably be banned.

The difference, of course, between the attitudes of these types of worlds and your modern day online RPG (where cheating is winning), is that you would have several choices between very similar worlds. If people are cheating on one, and the admins do nothing about it, pack up and move somewhere else where the operators care about their world.

(p.s. whitfield, I'm sure your mother is a lovely woman. I was just a bit :frown: at your response to my post, because I felt like you were calling me ignorant, in a fancy "i'm a coder, you're not lawl" way. I'd like to believe that I have a sufficient understanding of programming limitations, and I even worded my post in a way so that you could understand what I meant on a programming level. What I do not have sufficient knowledge of is Half Life 2's code and it's ability to interact with other software outside of the game, hence my coming here. If you accept my apology we can be BFFs. :cat: )
 
Half-Life 2's code is easy to learn. Just open it up and have a read, and it becomes really simple. I'm pretty sure having it send data to another piece of software wouldn't be too hard, although I've never really looked.

The difficulty is in logistics. How can you get that many servers? People donate, maybe, but then they'll want it to be stable before they commit. Problem - you can't test it easily with only one server. Also, how do you stop exploits?

-Angry Lawyer
 
now that I'm actually playing around with the HL2 SDK it's not so bad...


not nearly as easy as unrealscript though..
 
Which I'm kinda glad about. Most of the people unwilling to learn coding for Source are the ones who want to make a new Counterstrike. It's like a natural selection thing.

-Angry Lawyer
 
It's kind of sad that the HL mod came to mind before evolution did.

-Jangry Nawyer
 
The difficulty is in logistics. How can you get that many servers? People donate, maybe, but then they'll want it to be stable before they commit. Problem - you can't test it easily with only one server. Also, how do you stop exploits?

logistics schmlogistics imo.

Like I said, I don't plan on acting on this concept, and ideas are cheap, so here's a free one. Maybe some guy does have those logistics worked out, or can figure out a way.

Edit: oh and I actually have some logistics worked out :D

See, half of the concept is that those smaller instance servers can be either large or small, with the goal being that a home PC could run a relatively decent 4-8 man server with non-game-breaking lag. The game may have to be designed in a way that is less "twitchy" to compensate for lag, but most RPGs do that anyway. As the creator of the concept you would try to get yourself and the dev team to chip in to start the initial world server and keep it online, perhaps partially paid for by donations or ads on the official site. Next, you would try to convince early adopters to run instance servers on their home PCs to help keep the game alive.

Exploit prevention was discussed in an early post of mine in that you would only allow servers to be a part of your "world" with permission. Coupled with this the game would ideally have ways to track items, money, and stats of players and keep a record of when they change and *where* they change to discover any abused servers. And if the game is abused anyway? Ban the users.

I'm not sure if you are familiar with how the MUD (text based online RPG) scene operated in the 90s, but it wasn't like the MMOs of today. They were often corrupt, but it frequently didnt matter because the communities were tight knit and about social aspects moreso than hitting the max level and raiding for phat loots. And if corruption did matter? You would just go to a different MUD that was less corrupt, with probably the exact same content or some minor alterations.
 
Back
Top