Pro / cons of the various kind of MMOs ?

Discussion in 'Game Development (Technical)' started by Jack Norton, Mar 24, 2010.

  1. tolik

    Original Member

    Joined:
    Sep 20, 2004
    Messages:
    1,407
    Likes Received:
    0
    Screw up other people? Sounds like a plan. Golden rule of any succesfull free to play mmos (not social) is "NO CONFLICT = NO MONEY".
     
  2. Game Producer

    Moderator Original Member

    Joined:
    Jan 13, 2006
    Messages:
    1,418
    Likes Received:
    2
    Possibly there's "outdated" ideas and suggestions that doesn't perhaps make sense... but I found out that there was tons of stuff for beginners. First of all, the book gives a pretty good Big Picture about what goes into developing an mmo - it's not just mmo engine. There's tons of things to consider. The book gives some insight also on economy, mentions persistent vs non-persistent stuff. It also helps with "how to do changes in game" (and how people will react to those).

    I think it's somewhat a must read for any MMO developer. Of course it's just one source, but right now I don't know a better book on mmo dev (please feel free to suggest) and was somewhat an eye-opener to me.

    (It sort of helped with non-mmo game dev as well).

    Of course nowadays people talk about "social mmos/games" (whadda hell those are anyway :D) and this book isn't directly about that stuff. When the book was written, FB was not in every mom's computer.

    Anyway. Nexic of course has much more experience on MMO dev than me so I'll just leave this out as "my 2 cents". :)
     
  3. wazoo

    Original Member

    Joined:
    Jul 27, 2004
    Messages:
    519
    Likes Received:
    0
    I just wanted to add "keep going" on this thread!

    Great stuff so far!

    I'm finally making some breathing room on my plate to tackle a project like this and am still learning how to structure it.

    I bow to your deeper brain pools of knowledge.
     
  4. zoombapup

    Moderator Original Member

    Joined:
    Nov 25, 2004
    Messages:
    2,890
    Likes Received:
    0
    Conflict within the confines of the games design (as in planned-for conflict) is fine by me. But griefing where one group of your players simply makes it impossible for the majority to have fun isnt. Which is what I meant.

    But I'm more interested in the social space right now design wise, although it feels like most social games arent really (for very good server design reasons) all that social beyond gifting and using the content of a users FB data to scrape some friends to spam with "social" gifts.

    I'd actually be happy to NOT have a "hit" game. Hearing about the scaling out of Zynga makes me realize that a smaller game would do fine by me. They were talking about scaling out over 1 million players in a single week. Or around 30 million over the course of 6 months I think it was.

    I'd be happy with 100,000 or so over a few months I guess. Rather a smaller loyal playerbase than a huge one. I view it more like the guy who created garfield (i.e. dont create a hit because hits are based on fashion and fashion changes too quickly, rather build something that has core value that people can live with for a long time).

    Anyway, made me feel far better about using Flash+php+mysql to develop with. Need to maybe add in memcache in the loop there and consider not scaling table-wise but row-wise (still not quite figure how that works, striping across mysql servers surely causes data loss if one of them fails).

    All fun stuff mind you.
     
  5. zoombapup

    Moderator Original Member

    Joined:
    Nov 25, 2004
    Messages:
    2,890
    Likes Received:
    0
    Oh and while we're at it and for posterity's sake. In terms of backup solutions, it feels like taking a snapshot of the database and sticking it on an EBS (amazon elastic block store) would be viable.

    Rob mentioned three monitoring tools also. One was an in-house written thing, another was called Munin and the third was called Nagios or Nagius. Which is a linux monitoring thingy. He also mentioned using business logic as much as server status to monitor the games health (so you might alert someone if currency suddenly starts being generated over a given threshold etc).

    What I found weird in his talk, was that they dont use transactions on the database end. He kind of mentioned that the transactions were basically handled at the app (in this case php code) and using memcache as the mutex for the transaction. I guess thats where we get into a lot of detail he couldnt cover in his talk. Stuff like how to ensure that you have a proper commit for things that REALLY need it, like anything the player buys/sells is pretty important. Apparently doing the locking for transactions is just too heavy on the db servers which are the first servers to die (and man I can speak from experience there).

    It really is a distributed systems problem, which luckily is what my degree was about. Just need time to really sit and prototype the gameplay side of it.
     
  6. wazoo

    Original Member

    Joined:
    Jul 27, 2004
    Messages:
    519
    Likes Received:
    0
    Nagios. I use it at the current "day job".

    It's funny / annoying that the bits of detail you REALLY need out of a presentation always seem to be tackled last...thus almost guaranteeing it to be cut short due to time restrictions.

    But interesting idea with respect to memcache handling vs. a db lock!
     
  7. trinistry

    trinistry New Member

    Joined:
    Mar 27, 2009
    Messages:
    12
    Likes Received:
    0
    A common thing to handle these "transactions" are eventhandler, which is basically a php script running in an endless loop which handles all transaction and serialization things. (So kind of a basic php-made gameserver.)

    But you might get away without it - for instance a strategy game where you build things that complete after a certain time which will increase or decrease your production, or your neighbours can rob your resources after the time their troops "travelled" towards you (...) would need an eventhandler while a simple character based game, where everything happens right after your click could only use some kind of locking mechanism.
     
  8. zoombapup

    Moderator Original Member

    Joined:
    Nov 25, 2004
    Messages:
    2,890
    Likes Received:
    0
    Just wanted to say before I forgot, flash builder 4 (aka flex builder) has a "free standard version for unemployed developers". No idea what qualified someone as an unemployed developers, but thought I'd mention it.

    I tried using the new flex4->php stuff today. Interesting but its using some pretty hefty zen stuff to use RPC calls via a faked AMF message. Basically NOT the way to do things I think. Mostly you would want to be using get/put operations. I'll have to explore that later.
     
  9. Nexic

    Indie Author

    Joined:
    Nov 5, 2004
    Messages:
    2,437
    Likes Received:
    0
    zoombapup:
    I think you're worrying about scaling a little too much. Having multiple machines handling the same database can get really ugly so once you hit a size that maxes out a single DB machine it's probably best just to start different instances of the game (ie world 1, world 2, or even split by location like US West, Europe etc). That doesn't mean you need to make each game world small though, with DF's current setup we can handle 4000 concurrent players online per server world. That's using EC2's 8-core instance as a DB machine and then using 2-8 small instance webservers that auto switch on/off depending on users online.

    Also, my server costs are about 3% of the game's revenue. Really not worth worrying about too much.
     
  10. justkevin

    justkevin New Member

    Joined:
    May 22, 2009
    Messages:
    28
    Likes Received:
    0
    Really interesting thread. I have some comments and questions.

    I'm currently working on my own project which is progressing pretty well. It's a top-down 2D game of space exploration. Client is Flash connecting to a Java server using tcp sockets.

    Advantages of sockets to java server vs http to php:
    Very low response times relative to http. (The game wouldn't be playable with latencies much over a second)
    Much more efficient bandwidth utilization.
    Low database usage (the java server maintains most state and only serializes "major" game changes).

    Disadvantages:
    More difficult to implement
    Non-http traffic may be blocked by corporate firewalls
    Can't just be put up on a shared web account.

    Currently, I estimate that a low-end dedicated server could probably support somewhere between 600-1200 concurrent users before topping out the CPU. (It's a very rough estimate because simulated clients aren't real clients.)

    Questions:

    What do you think the ratio of active players to max concurrent typically is? In other words, if you had 1000 players who are active (play at least once a week) what is the most you would expect to find online at a given time?
     
  11. Jack Norton

    Indie Author

    Joined:
    Jul 28, 2004
    Messages:
    5,130
    Likes Received:
    0
    I agree that worrying about resources/bandwidth of server is totally useless. Like the people that worry about the buynow page design when they have yet to start making a downloadable.
    Even EQ and the BIG multi-million companies just split the world in server/shards or call whatever you want them, so that won't be a problem.
    The real problem will be coding the MMO and making it fun :eek:
     
  12. zoombapup

    Moderator Original Member

    Joined:
    Nov 25, 2004
    Messages:
    2,890
    Likes Received:
    0
    In general I'd agree with you guys. But in this case, youre in a situation where if you have even a moderate hit on facebook terms, youre server will be instantly and irrevocably slashdotted. Unless youre design is built to scale out or up from the get-go.

    Nexic: 4000 concurrent is good, but I'm not designing a system that allows that kind of play, so I'm aiming for far far higher numbers than that. I'm just trying to make the right decisions and being informed right now. If there are examples of systems that have scaled out when they got a big hit, then I'll follow them.

    Its kind of funny, I was writing some flex stuff to use php yesterday and it really was pretty easy, but the "easy" way is so unbelievably bloaty and slow. So doing the simple get/put method is far and away a better choice as Rob mentioned.

    I'm a bit rusty with some of this architecture stuff, so its fun to revisit it.
     
  13. tolik

    Original Member

    Joined:
    Sep 20, 2004
    Messages:
    1,407
    Likes Received:
    0
    Web MMO games with realtime PvP interactions = mostly Java/other C daemons and either sockets or polling or some hacky persistent connections. Every year complexity of the code will reduce server performance by 25% - e.g. you start with 4k per server and in 3 years will go down to 1k per server thanks to all the cool features
    Sharding is OK

    Web MMO games with async world interactions
    Any scripting language - asp.net, PHP, perl, rarely C daemons for some bottlenecks. Sharding is OK

    Social games.
    5k concurrent per server, 15k concurrent per single DB node, PHP+memcached+MySQL.
    Sharding heavily depends on core game mechanics, mostly NOT OK and exists when async MMO games open their shards for seamless facebook connect integrations and in few other very rare cases.

    I agree with zoombapup - I wouldn't develop a game that doesn't scale to 100k concurrent in few weeks. Boutique MMO is the same excuse as making niche indie games - it's an escape from reality and denial of mainstream.
     
  14. zoombapup

    Moderator Original Member

    Joined:
    Nov 25, 2004
    Messages:
    2,890
    Likes Received:
    0
    I dont think there's anything wrong with boutique MMO to be honest. Its just a different market than I'm designing this for.

    Rob in his talk did mention some sharding stuff for MMO's but inherently if you're players are all doing synchronous actions then you are going to hit a barrier to the scale of interactions pretty quickly.

    Async play is far easier to see how to scale out. But it does compromise the design some (have to make sure that players have no direction interactions but more indirect ones). Make it feel like theyre interacting by reading from their facebook data etc.

    Theyre essentially singleplayer games, with persistant data plus the ability to gift their mates. The gifting is the only real interaction, but you can ration that out so that it doesnt bind up the whole system.

    As a distributed systems problem is actually pretty easy, but the reality of actually developing it and keeping it running has lots of stupid little gotcha's doesnt it. These things always do.
     
  15. Jack Norton

    Indie Author

    Joined:
    Jul 28, 2004
    Messages:
    5,130
    Likes Received:
    0
    OR not everyone has 50-100k or a full team to invest in a big project :) BTW some niche games make more than "mainstream" casual ones.

    Anyway, thanks for the info but it's true that is really complex to make a MMO...:(
     
  16. tolik

    Original Member

    Joined:
    Sep 20, 2004
    Messages:
    1,407
    Likes Received:
    0
    Once again, there's no such term as "casual" in MMO.
     
  17. wazoo

    Original Member

    Joined:
    Jul 27, 2004
    Messages:
    519
    Likes Received:
    0
    who knows?

    maybe Reflexive's new gameplan is to get out of the download market all together and go exclusively social.

    Instead of trying to fight for the same crumbs that Amazon is gobbling up, they're just going to new pie.
     
  18. Jack Norton

    Indie Author

    Joined:
    Jul 28, 2004
    Messages:
    5,130
    Likes Received:
    0
    I found this today:
    http://www.ape-project.org
    seems interesting (more interesting to me than flash for sure), going to try it :)
     
  19. Nutter2000

    Original Member Indie Author

    Joined:
    Jul 27, 2004
    Messages:
    993
    Likes Received:
    3
    There is no Reflexive... only Zuul! (...I mean Amazon ;) )

    Wrong thread perchance? :)
     
  20. tolik

    Original Member

    Joined:
    Sep 20, 2004
    Messages:
    1,407
    Likes Received:
    0
    Rule #1 - never use some unknown obscure technology. With the same luck you could use http://www.reddwarfserver.org/ or any other lame things out there.
     

Share This Page

  • About Indie Gamer

    When the original Dexterity Forums closed in 2004, Indie Gamer was born and a diverse community has grown out of a passion for creating great games. Here you will find over 10 years of in-depth discussion on game design, the business of game development, and marketing/sales. Indie Gamer also provides a friendly place to meet up with other Developers, Artists, Composers and Writers.
  • Buy us a beer!

    Indie Gamer is delicately held together by a single poor bastard who thankfully gets help from various community volunteers. If you frequent this site or have found value in something you've learned here, help keep the site running by donating a few dollars (for beer of course)!

    Sure, I'll Buy You a Beer