MMORPG datastorage

Started by
27 comments, last by hplus0603 14 years, 8 months ago
Quote:Original post by samoth
The principle is the same as with Hashcash: A 10 year old PC can easily send out 1000 spam emails per second without even impacting system performance, and that is what spammers do with a few dozen (or even hundred) hijacked machines.
Let's assume that ISPs simply drop every mail that has no Hashcash, and that calculating a Hashcash takes half a second (you can tune parameters any way you want, so that's easily attained). Now an average computer can send out at most 2 spam emails per second (spambots most likely have much fewer resources).
For a legitimate user, it doesn't matter at all -- you never send more than 2 messages per second anyway, and if you do, it doesn't matter if it takes a second longer. For the server, it doesn't matter either, as it can verify the hash in a few hundred cycles, and it will just drop the mail if it isn't good.


Ok I was a bit confused at first, but i googled hashcash and got schooled.

This seems really cool, also as it reduces the amount of spam mail going through all the mail servers, it will free up resources for verifying the hashes. Not that they take alot of time to begin with it seems...

Where do I sign up heh? =)



-=[Megahertz]=-
Advertisement
Might I offer some advice here?

Go and write the thing without worrying too much about this stuff.

You're fretting about DOS attacks, performance with a million players and security.

Your first game is so unlikely to be successful enough to need that sort of worry that you just don't need to bother about. Sorry and all that.

By the time you come to write your third game[1], you'll have enough experience to know how to make all of these things upgradeable for when you need to. And THAT game is one that people might be interested in playing in enough numbers that you'll need to.

Your first project does not need to be, and is unlikely to end up being, your magnum opus..





[1] Your second game will be so monumentally over-reaching you'll abandon it before you complete it. This is so common an occurrence, it's actually called the "Second System" problem.


Understandable reply to this posting. I'm less concerned with this game having millions of players (or even 10) than I am about learning how to solve the more difficult issues of networking (security, dos attacks, data structures, millions of records). I have no allusion that this game will EVER have anyone interested enough to play more than while I'm online to humor me. I'm pretty familiar with a standard low physics simulation single player. So for this, I'm working on a "Never see the light of day" project so I can learn and maybe be useful to a company that has issues with millions of records and security for an open network.
Quote:Original post by Katie
You're fretting about DOS attacks, performance with a million players and security.
Your first game is so unlikely to be successful enough to need that sort of worry that you just don't need to bother about.
I beg to differ. If you have a million subscribers on a few dozen shards running a farm of 1200 servers in 3 geographical areas, then you need not be afraid of a DDOS attack.
The worst thing to happen is that a shard or two go down, and heck... so what!

However, if you only have 300 subscribers and recurring bills to pay, and a single abusive idiot is pissed for being banned from game, and he happens to enough of a r0x0r h4x0r script kid to hijack 10 unsecured machines (or use some PCs at school/university) then he'll run a DDOS that can be a real issue for you if you aren't prepared. It can break your neck if 100 of your 300 customers go away because they couldn't play for the third time in two weeks.
"if you only have 300 subscribers and recurring bills to pay"

A first bash at an MMORPG is going to be *exceptional* if it manages that.
Harsh, but true. The first go is a practice.

I do agree, but its a moot point.

I've written little games with the separate elements of an MMO minus the massive login structure. It seems logical to learn the only part that differentiates an MMO from a standard game. Which is the datastructures and the network protocols.

On the other hand, I give up, I'm going to get these responses (even though I have written just about every piece of an MMO) until I have a working MMO posted on my profile here. Fine, I'll accept that.

A side note on the last couple of posts though. A lot of programmers who have a good understanding of their next project, even if its the first time they take on that type of project, will have security, expandability, and reusability of code for later projects, in mind.

Experienced game developers have a different mentality about that than most application developers I know. And that is, theres a curse on you finishing your first couple of MMOs (or any game for that matter). So fine, one thing I've learned about programming is to listen to the experienced people in the new thing I'm learning. So, I'll be back in a while with my crappy first MMO...

My guess is the next poster will say "We'll never see him again" haha
Quote:Original post by bhamric

A side note on the last couple of posts though. A lot of programmers who have a good understanding of their next project, even if its the first time they take on that type of project, will have security, expandability, and reusability of code for later projects, in mind.


This reminds me of a payroll application...

One of the consultants came up with the problem of transgender employees. After much deliberation, and lots of meetings, it was determined that a certain set of benefits differs for males and females.

As end result, gender of each employee was stored as a list (date/gender tuple). As a consequence, all calculations had to take into consideration date range of gender.

But the kicker - due to this type of nonsense the application was so delayed, that by the time it was deployed, EU switched to Euro, but this is something that was not supported by the application, since in the time it was started, this wasn't a concern yet. Final results were then manually converted into EUR based on CSV exported from app, imported into Excel and multiplied into proper units.

Government-backed IT, the fun never ends....

Edit: My point is - until you get some hands-on experience, it's incredibly hard to guess which part will matter and which won't. Just like in this case, too many people involved simply misunderstood what will matter in the end.

Examining options is always good, but at the end of the day it's often better to just try several approaches quickly and see what works.

[Edited by - Antheus on August 14, 2009 9:57:56 AM]
From personal experience, I wouldn't recommend using XML files to store player data or any data that is subject to immense change.

Storing things such as NPC templates, Item templates, Quests templates and such in XML would be just fine. But player data, such as Character appearance, inventory, friends list, ect... should not be stored in XML files, and here is why.

1) You would not be able to implement clustering without making a way to send that information over the network, which there is no point in reinventing that wheel.

2) Its smarter to have your data stored on a remote PC. MySQL provides features that will also allow you to backup your information to another PC.

3) Backside tools will be able to access player data with less headaches. (Once again, you will have to implement some way of sending that data over a network. Again, you will be reinventing the wheel where a SQL-based server has already treaded on and optimized.
Antheus, I agree, I'll do that and get back to this post in a few weeks.

lordcorm, I was thinking about going along those lines, except I'm probably going to be using a c# wrapper of sqlite just to make this quickly.

As a quick question. Anyone suggest anything better than a c# wrapper on sqlite? I didn't find any ports of it and I haven't seen any other options besides it for SQL.

Then again, sql express is portable enough. Not sure why I'm not going with that option, but nonetheless.
The priorities in making (not running) a MMO are, in rough order of importance (highest to lowest):

1) Getting the eyeballs and attention to get people to try your game.
2) Getting the funding to actually pull through with the project.
3) Having a game mechanic that is actually sufficiently different and fun that people won't just say "meh" and go back to WoW.
4) Developing and balancing all the game content (art, quests, etc) to support a massive playerbase.
5) Building a system that can scale between large and small player bases economically (typically, this means using commercial cloud providers).
6) The stuff you talk about: networking, login, databases, yadda yadda.

I probably missed some thing that goes between 1) and 6), too, but I hope you get the idea.

If you're not aiming for > 1,000 players in a shard, and either the ability to have multiple shards, or the ability to put an ever-growing number of players into a single world instance, then what you're doing is not MMO.

It may be that there really are three kinds of online games:

1) Your typcal "deathmatch" games, where player counts over 16 or 32 really aren't common at all. Call them "online games."
2) Your typical "MMO" games, where 1,000s of players interact per shard, and the game likely has many shards. Call them "MMO games."
3) Something in-between. You can get between 50-500 players in the game, but it's not designed to support thousands in a single world. The world would be over-crowded, customer service couldn't support it, etc.

What's a good name for 3? As far as I can tell, that's what most "indie MMO RPG" creators really are shooting for. Call them "MOG" perhaps, for Multiplayer Online Games? Or is that too close to "online games" to be confusing?
enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement