Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411507 Posts in 69379 Topics- by 58435 Members - Latest Member: graysonsolis

April 30, 2024, 01:20:18 PM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)How do MMORPGs store their users data?
Pages: 1 [2] 3 4 5
Print
Author Topic: How do MMORPGs store their users data?  (Read 18998 times)
OneMoreGo
Level 3
***

Stop looking at my chest


View Profile
« Reply #20 on: July 04, 2013, 04:10:39 AM »

The fun and pain of game dev  Evil Cheesy
Logged
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #21 on: July 04, 2013, 05:26:17 AM »

Oh by the way, OneMoreGo, what are you using (language?) for your game server?
Logged

Vitali Kirpu
Level 1
*


reach your potential


View Profile WWW
« Reply #22 on: July 04, 2013, 06:01:24 AM »

My first mmo game when i was 16 years old used ini files as a database, works like a charm if you have like 200 users playing. Load Data on login and save data on logout.
Logged

Working on the game and trying to help others on the way!

If you ever need tips let me know! I will gladly help
Dacke
Level 10
*****



View Profile
« Reply #23 on: July 04, 2013, 06:23:29 AM »

I know my previous recommendation was to use Go (it's a very cool language). But supporting 10 players doesn't require too much speed, so you could use pretty much anything.

So if you're comfortable with some other language you should probably use that, at least for the prototype. You should also consider picking a framework rather than a language. There are ready-to-use MMO Server frameworks out there than you may benefit from.
Logged

programming • free software
animal liberation • veganism
anarcho-communism • intersectionality • feminism
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #24 on: July 04, 2013, 06:42:07 AM »

I know my previous recommendation was to use Go (it's a very cool language). But supporting 10 players doesn't require too much speed, so you could use pretty much anything.

So if you're comfortable with some other language you should probably use that, at least for the prototype. You should also consider picking a framework rather than a language. There are ready-to-use MMO Server frameworks out there than you may benefit from.

For the time being, I will stick with Go. I have already spent the whole day trying to get a grasp of it.
Oh, also, I didn't say that I would have max. 10 players online. I just predict that I won't be able to get more, but if I am, I'd like to be able to handle them.

Do MMO frameworks work out good for small projects? I am not sure Crazy
Logged

Dacke
Level 10
*****



View Profile
« Reply #25 on: July 04, 2013, 06:46:03 AM »

Learning the ins-and-outs of a language can take months. Don't get locked in by a day's worth of research if you find something better later. But if you're set on learning Go there are some good lectures online that explain concepts like concurrency and channels in detail.

I have absolutely no idea if any of the frameworks are any good, I just know they exist Shrug
Logged

programming • free software
animal liberation • veganism
anarcho-communism • intersectionality • feminism
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #26 on: July 04, 2013, 06:51:53 AM »

But, well, nobody has mentioned anything else than Go here that might be useful for coding a server, and that's what I rely on for now. I trust that Go should be my pick.. Althrough, maybe I am wrong?

Gah, no idea

PS. I have 11 days to have some basic prototype done, that's why each day counts  My Word!
« Last Edit: July 04, 2013, 06:58:11 AM by kamac » Logged

Dacke
Level 10
*****



View Profile
« Reply #27 on: July 04, 2013, 06:59:22 AM »

Go could be a great choice. But there are lots of other great choices too. Do some more research!

Here is a random suggestion: Node.js. It's mostly used for web servers, but I have seen people using it for game servers too.

Node.js is a server-side software system designed for writing scalable Internet applications, notably web servers. Programs are written on the server side in JavaScript, using event-driven, asynchronous I/O to minimize overhead and maximize scalability.

My main advice is to spend a day or two looking for suitable frameworks. They don't have to be MMO specific, just general game server frameworks may be of help. As I mentioned before I will be using Go for my game server and I think it's a good fit. But you should probably do more research before you jump to that conclusion, based on a couple of off-hand forum comments Wink

edit: Oh, you need a quick prototype? Then you should definitely not learn a new language and write something from scratch. Use whatever language you know best and/or use an existing framework.
Logged

programming • free software
animal liberation • veganism
anarcho-communism • intersectionality • feminism
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #28 on: July 04, 2013, 07:13:30 AM »

Okay okay, here's the whole situation Durr...?

1) I need a prototype to be done within 11 days, then I can spend as long as I want on it
2) I should/need to learn Erlang (job), and have 17 days for that

Now the choice should be obvious - I could use Erlang for coding server, as it's a common choice - but does it fit? I could both find a language that I can code my server in, and learn Erlang at the same time. BUT DOES IT FIT? Till now I have been reading that Erlang is used for web-based things like chats and such..

And if not Erlang, then what? I could pick some language I know and all, but my main language is C++. It's tough to code a server with C++, and I have to make it work for linux and windows (I test my server on windows, but run it on linux. Could spare some time to run both server, mySQL and website on my Ubuntu, but I am worried I don't have time for that). So that'd exclude C++ for now, it's a pain to get things working on both linux and windows (while I am not really experienced with linux, it's even bigger pain).
That would leave Go on the battlefield, which I do not know too much, but from what I have seen, it's easier to get things running with it, and would somewhat prepare me for Erlang (both have similar coding style).

For example, if I would use C++ (somehow), I'd need libraries for TCP/UDP networking (not yet decided, but I bend towards TCP), mySQL driver, and maybe HTTP. And I could even go with enet for networking; I have seen some mySQL driver for C++; could use libcurl for HTTP... But those are all libraries, and I have 0 experience with enet, 0 with mySQL driver and some with libcurl.

Well, after listing all these things, C++ is definitely not a way to go. Atleast it seems like that.

Besides C++ I know ActionScript 3 at a moderate state, Javascript | PHP at a moderate state... But those do not fit for the job.



Right.
Logged

Dacke
Level 10
*****



View Profile
« Reply #29 on: July 04, 2013, 07:27:40 AM »

I think you're overestimating what you need from a language.

For example Node.js would be fast enough for a prototype. It's easy to set up and works cross platform (just like Go). But it's in JavaScript so it's even easier to do prototyping/hacking in it.

Minecraft uses Java servers and it can handle dozens (if not hundreds) of people.

etc.

Pretty much any language will do for a prototype. So the main question is: what language/framework gives you the greatest head-start for a prototype? Language-wise Go may be the best choice. But a specialized framework in some other language would probably be faster to work with.
Logged

programming • free software
animal liberation • veganism
anarcho-communism • intersectionality • feminism
Daid
Level 3
***



View Profile
« Reply #30 on: July 04, 2013, 07:48:18 AM »

Okay, so that means mySQL is the way to go there, right?

Also, Daid, does that mean a minimalistic MMO should have a database server, a game server (that the whole thing runs on), and a website server? That's quite a bit of servers.  Waaagh!
Or I did not get that right?
Are we talking about physical machines? Then you could run all on the same machine. I have run a MMORPG with about 200 players online on a single server (grid based realtime MMO, high speed action), where the server also ran the game, webserver and database server processes. But the setup was so that you could run those on separate machines. Which is good if you need to scale up, have performance issues, or want to split security. If you do run it all on the same machine, running it as different users helps a bit on the security. And database-backups are vital for any MMO.

(Actually, the game could also run the game server on multiple machines, where each machine handled different areas in the game, but that was very complex to setup. And the game login could be handled by a different machine then the actual game running. It was quite a complex setup, which was highly over-engineered)


As for a prototype, I would keep everything as simple as possible. One machine, handles it all. You might just want to create some kind of hack to create usernames+passwords and keep all data in the memory of the server. For small scale this shouldn't be an issue. Kinda depends on what you are prototyping, there is the server side and the client side that you need to make. All takes considerable amount of work.
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Singleton
Level 0
*


View Profile
« Reply #31 on: July 04, 2013, 07:53:04 AM »

If you need a networking library that works on Linux and windows, try Raknet http://www.jenkinssoftware.com/index.html

Logged
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #32 on: July 04, 2013, 08:16:22 AM »

Oops. Seems that word 'prototype' was not the right match here. By 'prototype' I ment a state where you can connect & move around the map / chat - with technology that will be continued to be used later on. Basically, I ment that I need to have the game at that early state done within 11 days.

Singleton, yes, I've seen it but:
- Didn't like it's design
- Don't like that you gotta pay them if your game earns x dollars (even if I never reach that, I still don't like that feeling)

I have now already decided that website & database & game server will run on the same machine, all that's left is to pick the right language for the server.
Logged

mychii
Level 0
***


View Profile
« Reply #33 on: July 04, 2013, 08:29:42 AM »

Short question though, but, are you doing a web game or desktop game?
Logged
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #34 on: July 04, 2013, 08:38:10 AM »

In fact, it can be both desktop and web, because I am doing it in ActionScript 3, but in theory, let's say it's desktop.

@EDIT

Hm, after a little bit of research, node.js might come under my consideration, too. After all, I know javascript at some degree, and node.js would work cross-platform, as I suspect.

@EDIT2

This is interesting
http://jaxbot.me/articles/benchmarks_nodejs_vs_go_11_5_27_2013

@EDIT3

... But in the end, it doesn't matter..  Facepalm
I must make up my decision, time's running by.

@EDIT4

God damn it, Erlang, Go or node.js Cry?
I've got no idea, in the end.
« Last Edit: July 04, 2013, 09:47:48 AM by kamac » Logged

OneMoreGo
Level 3
***

Stop looking at my chest


View Profile
« Reply #35 on: July 04, 2013, 10:04:15 AM »

If you want to get something working quickly and know PHP I would go with PHP first. If you need to know Erlang for your job though and that is your highest priority then go for Erlang, it all depends on what you want.

I don't think performance is worth worrying about, but *your* time is.  You could easily spend a day just wrangling with your DB queries, so you wouldn't want to spend that learning a new language as well.

Mine is a mix of Java, Javascript and Go with some Perl depending on what it is and how long ago it was written. At a rough guess Go is about 10x faster than PHP or Perl and Java is somewhere inbetween.

What will your client tech be?
Logged
comma
Level 0
**

Magnus


View Profile
« Reply #36 on: July 04, 2013, 10:08:01 AM »

Mhmm... I think that MySQL isn't the best option ever for big databases, there are powerful DBMSs like MS SQL Server which will be good for this activities.

 Coffee
Logged

It\'s me Magnus!
Daid
Level 3
***



View Profile
« Reply #37 on: July 04, 2013, 10:10:23 AM »

You'll have 11 days to make a framework for an MMORPG in a language you have to learn?  Who, Me?

Erlang is quite a different beast I think from Javascript or GO. Depends on where your priorities lay, making a better MMORPG framework? Or learning a new language?

(GO looks a bit like python with a C-like syntax IMHO)
Logged

Software engineer by trade. Game development by hobby.
The Tribute Of Legends Devlog Co-op zelda.
EmptyEpsilon Free Co-op multiplayer spaceship simulator
Dacke
Level 10
*****



View Profile
« Reply #38 on: July 04, 2013, 10:20:16 AM »

Yeah, it does sound like an insanely overambitious project. Even if you're going to keep working on it, it's probably a good idea to prototype something fast and rewrite as needed later. Refactoring/rewriting is a part of code development.

If you are set on writing stuff from scratch in a new language, just use Go. It's fast, modern, clean and made for this kind of thing. It's a choice that won't bite you in the ass later (while Node.js may be too slow later). Go is also pretty C-like ("Go, from the people who didn't bring you C++") so you'll probably feel mostly at home. But again, if you can, find an existing framework.


Mhmm... I think that MySQL isn't the best option ever for big databases, there are powerful DBMSs like MS SQL Server which will be good for this activities.

Haha, lol, what? Use a non-free Microsoft thing for server stuff?

MySQL is also used in many high-profile, large-scale websites, including Wikipedia, Google (though not for searches), Facebook, Twitter, Flickr, and YouTube.

Of course there may be benefits to using something different than MySQL. For example a NoSQL database or MariaDB/PostgreSQL if you want to avoid Oracle. But Microsoft... heh heh.. no.
« Last Edit: July 04, 2013, 10:28:18 AM by Dacke » Logged

programming • free software
animal liberation • veganism
anarcho-communism • intersectionality • feminism
kamac
Level 10
*****


Notoriously edits his posts


View Profile
« Reply #39 on: July 04, 2013, 10:30:12 AM »

Quote
You'll have 11 days to make a framework for an MMORPG in a language you have to learn? 

Server side language, yes.

But I don't need to have my framework done within 11 days.

Quote
Oops. Seems that word 'prototype' was not the right match here. By 'prototype' I ment a state where you can connect & move around the map / chat - with technology that will be continued to be used later on. Basically, I ment that I need to have the game at that early state done within 11 days.

In short - I am not making a MMO in 11 days Tongue

My two choices now are Go and Erlang, of which I must bend towards Go (seems easier, has almost all libs I need in one place, even adding new libs isn't that hard). The only thing that worries me is it's weird syntax. Really *ugh*.
I will probably go with Go, since Erlang is not neccessary for my future job, only optional. (Maybe I'll have some time to study on it separately)

Well, that'd do it.


PS.

Why do I always have that dumb feeling that if I stick to languages that aren't C++ for a longer time, without using C++, I'll completly forget how to use it, and will lose all my skills? Facepalm
Anybody else? Who, Me?
Logged

Pages: 1 [2] 3 4 5
Print
Jump to:  

Theme orange-lt created by panic