MMO RPG DATABASE HELP!!!

Okay so i am making a game called Omuni Online© search it on youtube if u like,

and i was just wondering about database and networking… how would one set up a database and get it working and also what do i do first make my game an RPG then work on the MMO database and network? if so would i have to change any of my RPG scripts to work online i really need help

For any MMO
Step 1) Begin by selecting your database type:

PostgreSQL

MySQL
http://www.mysql.com/about/

Oracle

DB2

SQL

Rocket
http://www.rocketsoftware.com/u2/

Step 2) Hire a DBA, server optimization is crucial
Step 3) Learn the language of the database system or hire a programmer who knows it
Step 4) Determine your network backbone, example RakNet, Photon, Lidgren, pure .NET

Now that step 1 through 4 are done, code a component on the network to handle the database transactions, you don’t need Unity installed to do this step, and frankly you won’t need Unity either. This is pure code and business logic, will sit on a server that will handle all database transactions. The client will never handle any database component, ever.

Once you have gotten this far, install Unity, develop your game to play, there you have an MMO.

1 Like

Is it possible to develop the single player part of your game first? What is the best database for mmorpgs? Are database for games that need information held, for example would a simple multiplayer shooter game need a database, or just something complex that holds information? What is the best network backbone for action mmorpg?

the best is oracle cause its the fastest but I doubt you have the money for it, so mysql is the best one cause its a $0 budget solution

but if you want to use it in single player, sqlite is the only option as all other require a distinct server which is not acceptable for single player

Is it possible to develop the single player part of your game first?

YES, and probably a good starting point because this is a good point to storyboard all of the components you will need in your game, sometimes storage is an afterthought, usually done in teams though with one team working on the backbone, one working on the database, one working on the storyline, you get the picture.

What is the best database for mmorpgs?
Oracle

Are database for games that need information held, for example would a simple multiplayer shooter game need a database, or just something complex that holds information?

You would want a database even for an FPS, this is where you store your assets, like guns, armor, stats, anything that you want to change on the fly so that the next use has the new value when it loads from the database. So if you have a sniper rifle defined, the player buys it, you change the stats in the database, announce a push to the player systems, they get the new stats, no new install needed on the client and they now have the new stats.

What is the best network backbone for action mmorpg?
My vote is on Photon with Unity, easy to work with, but if you own the Unity source, full RakNet since you can recompile ad-hoc any C++ code you do. I just like Photon personally now that I have used it for a long while. Raknet is UBER powerful, very strong system, but requires C++ knowledge and frankly at this point Unity source to be able to expand upon it.

EDIT:
note, per dreamora’s post, sqlite is great for single player, however it is broke in Unity 3, doesn’t work

What do you mean Oracle is the fastest? Fastest to code in or fastest networking or what? Im somewhat noob at the db. What would be the speed difference between Oracle and MySQL and are there any commercial mmorpgs today that use MySQL?

I just wanted to clarify action mmorpg so we are on the same page. A game like Tera Online or Mortal Online, not something like Everquest or World of Warcraft.
Photon can handle something like that?

I know of no current MMO’s using MySQL, only because no one annonces what they use, the few systems that I do have back end knowledge to use Oracle, all fo them, and they have player base in the 100’s of thousands. SQL and Oracle are transaction based systems and Oracle is very well optimized, especially when you run it on Unix, it freaken screams!

The coolest systems I have played with running Oracle on are crays:
http://www.cray.com/Products/XE/CrayXE6System.aspx

Those are swank! Those are real MMO server hardware, when you run Oracle as the database engine on them with the business logic running on them, just brings a tear to my eye from the sheer joy.

Edit:
Unitrix, yes, Photon can handle that type of information, it is more of a question of hardware performance really. Photon as a backbone would work great, but if you have poor server hardware, it won’t matter what you are using as the network backbone.

Looking at the price range for Oracle here:

Obviously enterprise is their best product and expensive but what could you get away with using? For example could you use the Personal Edition for mmorpg?
Also if so would a lighter version of Oracle still be better then MySQL?
Also wouldnt more people know how to use MySQL since its free?
Wouldnt it also be easier to find someone then to help you with the db programming part of things?

Fastest as in shortest query times, smallest traffic overhead, best optimization for massive datasets.

Its the by far strongest technology but thats also reflected in its price.
I doubt too many indie MMOs really use it.

For low budget hybrid architectures are often common. The reddwarf server shows that with using a sql connection for interserver but berkley for local server persistance caching and stuff like that.
also cloud memory storage like TerraCotta and similar are gaining more and more interest because they help to reduce the load on the database cluster (and yes in an MMO we really talk about a database server cluster, not only a game server node cluster)

So basically what does this mean to someone who has no vocabulary in this language you speak lol?
Would that mean for example faster login times?
Faster responce when asking for an items information?
What exactly does that mean in terms of gameplay?

Back to what RJ said, what scripts exactly from the single player version of you game / client would you need to convert to server client? Would it mostly be everything? I keep hearing you cant trust client with anything? So what exactly do you script on the client side and what is done on server side?

All game logic, for battle results, sequences and such, all on the server. You need a packet monitor built in to protect against a burst “sendmessage”

The client is just a window, it is where you show the player what is going on, the player can move around as if they are in a single player game, but all other items that are not “static” are controlled by the server. NPC’s do not run nor are controled by any single client. All game logic runs on a server (bank of servers actually), a player client sends the player actions to the server and receives the results of those actions. Best way I can describe it.

Problem then is, a ‘smart’ player, meaning some lazy kid who knows how to program bots, creates a program that monitors for received messages and based on those messages shoots back a message to the server mimicing a real human through “sendmessage”, this is an artificial way to play your game.

Transactions are just that, they are the bits of information going to the server and coming back, so you send a login transaction, this is passed to the login server who in turn asks for login permission from the business logic server, who in turn looks up the player in a database and returns the login results. If allowed, sends back data so that you can send them to XLevel at XPosition with blah blah inventory etc.

Bit much to go into in the threads really, always too much to really discuss.

Think of the client as a shell, the server as the gears that make it all work and fill the shell with happy happy joy joy things. Make sense?

In terms of gameplay nothing, in terms of scaleability, performance and flexibility you have a lot.

And the login times are really your very smallest problem. those are a single query.
But anything after that will be tens to hundreds of thousands of queries per game session depending on how the architecture is built and what features your backend cloud technology is capable off.
Don’t forget that NPCs are heavily data driven too

Everything thats not rendering and input handling. The rest is server controlled

dreamora
what about

?

I know this might sound like a simple answer to that question, but, decide based on expected transactions.
The fewer transactions, the simpler the database system, the more complex and amount of transactions, scale up to stronger database systems.

Could you give an example of fewer transactions in mmorpg vs one that has alot? It will just help me get my head around this.
I dont know if I exactly understand what you mean by tranasactions I just want to clarify, I really appeciate your guys help!
Im not sure if the game I have in mind has lots of transactions or a little.
I honestly just assumed every mmorpg has tons of transactions and the better db would be better anyway, but if I can get away with the simpler db that would be good :slight_smile:

Just wanted to clarify on this:

If you learn the language of the database system do you still need to hire a DBA? Is that short for Data Base Administrator? Must you do step 2?

I would give DB2 my vote as the best database, not Oracle.

That being said Eve Online runs off of Microshaft SQL. I always thought that was a joke, as recovery or rolling back a journal entry was a nightmare anytime I’ve seen it done. The poor PC people were always sweating when it came time to test disaster recovery. But I guess for them support was a greater consideration than speed and maintenance.

I think other than speed there are three things important for your MMO database.

  1. Async access.
  2. Commitment control.
  3. Journaling.

Having a database allow a duplicate, or a header record without a detail is something you can’t really do in an MMO. It’s not like your EOM reports just get delayed a few hours while someone tries to roll back the entry in the journal. Your forums flood with angry users!

hrm, well depends on your programming ability and knowledge of what you want to send vs have to send

A game like Mafia Wars on Facebook could use PostgreSQL or MySQL, although there are tens of thousands of players, each player is only sending a single request at a time, attack, purchase, etc then the client is waiting on the response of that request before continuing.

A game like Counterstrike that has < 50 players per game only reads from a cache of information because once the server starts, all items are predefined in the system and only have to be read/cached 1 time, so that would even work for MySQL.

A game like Everquest would have to run on Oracle or SQL server (seriously I wouldn’t use SQL server for something like that though). It has on average 2000 players per server cluster reading and updating data in the databases, although on intervals, it still would require a strong transaction based system.

Player information is stored on average no more than once a minute, all of which are using stored procedures to do the work.

Games like FarmVille for instance, can run on MySQL because player data is only stored in intervals and triggers. What you store and how much you store will determine how often you store, same goes for retrieval.

So if you were to use say oracle for an mmorpg like everquest then what could you get away with using from this list:

Would you have to have the enterprise or could you use the Personal Edition for a game like eq, since its alot more affordable?
Any thoughts?

Oh what also is the easiest database to learn with the biggest amount of tutorials/ resources to learn it and what has the biggest community/following?

The personal edition is practically as powerful as the enterprise edition, they license in several ways and you need to read the license carefully. If you want to get started learning Oracle and playing around with it and Unity, I would recommend starting with the free version.

One major aspect to all of these systems is the licensing, read them all carefully before making any decision for purchasing.