Search Unity

Having a hard time finding tutorials, guides, or server-solutions for an MMO.

Discussion in 'Multiplayer' started by TheBraxton, Mar 6, 2014.

  1. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    I'm an indie developer, currently on my own (amazingly talented friends are too dug into their career work to help until I actually get going). Right now our small group of friends/colleges have been spinning in circles with standard indie developer issues (spinning in circles, getting excited about a new technology only to be shot down by lack of funding, etc etc).

    So, my goal currently is to get the groundwork started so our team can form around that and move forward.

    The Problem:
    -No real decent tutorials that can be found with google (perhaps we're just awful at using google?) on getting started and then hooking it into Unity.

    -Searching for existing server solutions only ends up with cloud-hosted solutions (not realistic for serious MMO releases), or incredibly expensive Server solutions that don't really tell you much about how customizable they are, their limitations, or expected concurrent user count given a specific type of MMO in mind using non-instancing and non-zoning technologies.

    -I am aware of SmartFoxServer (unrealistic given the current information out there), and PUN (Photon) however PUN has stated itself not being usable for Seemless MMO design.


    Are there examples out there that i'm missing for the following items(?):

    -Procedurial Terrain Generation (even a basic Minecraft copy-cat example would be fine. I could just really use an example of procedural voxel generation/handling)

    -Load balancing examples?

    -Seemless-World object tracking examples? (NPC, Player, and World Objects like walls, trees, etc)

    -Zone-Cell Tracking (Similar to how SWG handled its playable areas and allowed real-world housing) <===not sure this is applicable anymore given newer play-area techniques and/or zone transitioning. However, it may still be the best method for open-world housing to keep private housed items from being tracked by the world server constantly.


    If Photon is essentially what I'm looking for then I obviously misread their approach and overall design. However, after reading quite a bit about SmartFoxServer it just doesn't seem to be a usable Server solution for a seemless open-world MMO design.


    Thanks guys
     
    Biell2015 likes this.
  2. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,616
    I assume its probably because if youre creating a MMO, you should already know what youre doing and shouldnt really need a tutorial (ie. youve created a handful of networked games and already understand the technical challenges).

    Chances are, if you need a tutorial, youre not ready.
     
  3. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    This horribly flawed logic is the reason why people consider it "near-impossible" to create an MMO from an indie perspective. My understanding is that the Unity community is supposed to be above all of that? A networked multiplayer game is FAR different from an MMO. The way communication over the internet is handled may be the same, but the overall core and build up is vastly different. I have many friends of mine whom I've known over the years whom do MMO development work for big houses, but they work so much that they do not have time to go over the meat of it all. Most of their advice is simply "go look for tutorials, there's bound to be some!".

    The hardest part is planning out the meat of the MMO. How the structure of the server itself is setup is really the hardest part. How are you supposed to learn if none are willing to teach, or even go over a rough outline?

    You can say "well it's really hard, perhaps you should try something else" all day but at the end of it you're not really giving advice, you're just typing fluff to discourage that person :/.
     
    Biell2015 and Tea_Man88 like this.
  4. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,616
    Most ppl consider it near impossible, because IT IS near impossible for an indie to create one, not because its 'flawed logic'. Unity community is above all what? Supporting people with (*insert not enough development experience*) creating an MMO... WHO WOULD HAVE THOUGHT!? What a bunch of killjoys we all are pointing out the obvious.
     
    KyleOlsen and VoidFletcher like this.
  5. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    No, I've seen 3-man teams make huge progress in under 6months that others (or you) would say was impossible. They got some tutoring from someone else whom they knew and took off like a rocket.

    You're trying to replace Experience with what books are for in education. How am I to learn without a place to start from? Making a multiplayer game will not move me towards learning how to create the core of a Server solution for an MMO. They're entirely two different beasts.

    Also, yes, it was my impression that the Unity community was more interested in helping others than simply discouraging people because they're not "Experienced Enough".

    Let me ask you: "How do you get Experience if you're turned away for lack of Experience?"

    Though, to be fair one person being a negative nancy isn't the community's fault. Hopefully someone will come along :)!
     
    Biell2015 likes this.
  6. Muber Gaming

    Muber Gaming

    Joined:
    Jan 24, 2014
    Posts:
    48
    lol, yup,
    unfortunately most of the time people have no idea of what they talking about.
    and their first response is discourage people to do what they want.

    they think making an mmo is out of this world for an indie team.

    and the very wrong reason why they think like that is because most of the known mmos outhere are made by a giant studio companies who can afford to do such a long term project.

    and i dont blame their ingenuity because they have never tried to do such a task.

    what they dont know is what makes an mmo hard to achieve is not creating the mechanics and servers etc... since nowadays they are a lot of servers capable of doing the heavy lifting.
    but what makes a large scale mmo hard to do is the actual content creation, levels, large worlds, dungeons, chars, nps, textures etc...........
    that is what makes a large scale mmo so undertaking and time consuming, not because it is impossible to do, but because is undertaking creating all content of the large scale world.

    but if a small indie team focuses in a small scale mmo, it is very doable since like i say before with todays tech already outhere for mmos, ie:
    bigworld, hero engine, and for unity uLink, smartfox, photons etc... all the heavy lifting is already done for you.

    so do not get discouraged by people who dont even have a clue on creating mmos.

    because an mmo is just a multiplayer game like any other multiplayer game but tailored for a large scale audience, so all you have to do is find the right server tool that can escalate to support large ammount of ccu like: smartfox, ulink, photon can work for unity, or if you want an out of the box mmo capable engine, try bigworld engine or hero engine.
     
    Last edited: Mar 7, 2014
    _FLX likes this.
  7. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,616
    1. Near impossible is not impossible.

    2. If you think creating a MP game wont help, you're a fool.

    3. Who's turning you away because you don't have experience, oh that's right... your friends.
     
    VoidFletcher likes this.
  8. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,616
    got a link to your mmo then muber?

    Keen to see what someone who 'knows' what they're doing is actually capable of, because based on some of the comments in your post, it sure doesnt seem like you have a firm grasp.
     
    VoidFletcher likes this.
  9. lockbox

    lockbox

    Joined:
    Feb 10, 2012
    Posts:
    519
    @TheBraxton - Have you seen these tutorials?

    http://www.gamertogamedeveloper.com/gtgd-series-1

    http://www.burgzergarcade.com/hack-slash-rpg-unity3d-game-engine-tutorial

    Yeah, you'll get a lot of sh*t from peeps about trying to build the next WoW, but just ignore them.

    I haven't read this book, but you might find it helpful..
    http://www.amazon.com/Wizards-Warriors-Massively-Multiplayer-Creation/dp/1598638513

    And finally,.... while Unity is very capable and there are networking add-ons to help people make mutiplayer games, you may have to spin your own client-server piece to get what you want.. Not that easy to do, but not impossible either..

    Good luck :)
     
  10. JamesLeeNZ

    JamesLeeNZ

    Joined:
    Nov 15, 2011
    Posts:
    5,616
    Incidentally,

    How many years have you been programming, how many games have you finished, how many were networked?

    If any of those are less than 3, you're probably not ready.

    What would I know though, im just a negative nancy.
     
  11. Muber Gaming

    Muber Gaming

    Joined:
    Jan 24, 2014
    Posts:
    48
    lol and more lol,
    such a hata brotha.


    anywhow
    i really recommend the GTGD tutorial, i went thru it twice all the way awesome to get you started in unity networking.
    once you master the essentials of unity networking, you can switch to uLink backend since it is pretty much the same technique so you can escalate your server for larger scale audience since uLink is capable to to support large scale ccu's
    and youll be on your way for a good journey
     
  12. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    As far as I know, there is not a particularly good set of pre-existing server tech for MMO games - this is why Rust for example most likely was not made as an MMO.. and many Unity based MMOs seem limited. The good news is, I have been working on commercial server tech to address this and just a couple weeks ago after noticing how many MMOs and MMO-like games used Unity have decided to swerve in that direction. The bad news is, having to learn the workings of and common usage patterns of Unity and figure out how to best support it is lengthening my development cycle significantly and I probably wont have core functionality ready for even public testing until June at the very earliest.

    The other good news to some, is I have already come across and looked into Playmaker and intend to support it from day 1 as using their FSM pattern is a good fit for rapid development of server-authoritative MMO games. I will probably be polling the community for desired features soon, but I saw your post and one-world MMO server w/client convenience plugin is exactly what I am working on.
     
  13. Glader

    Glader

    Joined:
    Aug 19, 2013
    Posts:
    456
    When writing an Mmorpg don't expect to find tutorials. Expect to read academic papers related to MOGs.

    You'll likely want to consult stuff like this and many others: http://gram.cs.mcgill.ca/papers/boulanger-06-comparing.pdf

    Mmorpgs are massive projects. Their completion should come with a medal of honor. Good luck.

    Absolutely everything in an Mmorpg is an illusion. Every last bit is faked to make it appear as though you're in a massive world. So much must be known and proficiency in topics, some of which some us might not even have heard of, is required.

    The saying "Mmorpgs are hard to write" is not some non-sense people spout. The proof is in the fact that you will find almost no mmorpgs when you compare it to the whole subset of games.
     
    Last edited: Mar 7, 2014
    VoidFletcher likes this.
  14. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    First of all it depends on what you mean with MMO, if you mean MMO in the classic sense, like world of warcraft, lineage 2, etc. then I would say straight out of the gates that no, there is no way you can ever build that. And to the people who say yeah but "indies" can do a lot of things given enough time/dedication/whatever, well... yes. Here's a list for 2014 of the most wanted Indie MMOs: http://www.mmorpg.com/showFeature.cfm/loadFeature/8105/The-Most-Wanted-Indie-MMOs-of-2014.html All of them are made by industry veterans pretty much, that have at least one (or more) MMOs under their belt.

    And most importantly, the people who are building these games are not on the Unity Networking forum asking for tutorials. If you are here, asking for tutorials on MMOs. You simply do not know enough, and you need several years of experience in several different areas to even come close to the level of knowledge you need.

    This is simply because "writing an MMO" is a topic so huge that it's not something that can be streamlined into tutorial format. The closest thing I have found akin to a "complete" tutorial for an MMO is this over at 3dbuzz: http://www.3dbuzz.com/training/view/mmo-developement IMHO it is complete crap, but it's start if you know next to nothing.

    Photon can be used, you can't use "PUN" as it's targeted at simpler games, but you can use the Photon Server + Photon Client libraries to build an MMO (iirc, the family guy mmo was built on photon).

    Be above all that? huh? I'm sorry reality and your dreams are not the same thing. I would also love to be able to build a big-ass MMORPG that I can mold to my own liking and craft with love and care which people will rejoice over and drool over for months before it's released. The simple fact is that, I will never be able to do this.

    I'm sorry, how do you know what the hardest part of building an MMO is? Have you built one? no.

    If you want real advice, it would be this: Learn enough network programming so you can build <= 64 player games. Then get hired by a big developer which is working on an MMO as a junior network engineer there, then learn from the people who actually are building these things. That's how you learn this.

    Come again? If you need experience then go out and get it, start building something by hand, read up on all the stuff about networking there is out there already. Have you? I doubt it.

    I was going to reply to the rest of the posts in this thread also, but honestly I can't be bothered. Of course it is possible to build an MMO on Unity with a small team, and there are people who are doing it. But let me re-iterate this point again: They are not here, asking for "tutorials" on how to build their game.
     
    KyleOlsen likes this.
  15. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Thanks to the positive responses so far :).


    Yea, I'd seen those tutorials, and weren't having an issue with them. The thing that I really need is a starting point for creating my own dedicated server for the MMO itself.

    As for games like WoW, Lineage II, etc, those games are NOT impossible for Indie developers in today's market in their truest most basic form. What you're talking about being impossible is the fact that those are classic Themepark based MMOs. Themepark MMOs suffer from the requirement of Developer-Driven static content that needs to be made for players to "burn" in order to progress.

    Sandbox is easier on indie developers who are heavy into procedurally generated content such as terrain, monsters, etc. This is why "Sandbox" is the future currently as it has shown itself to be much cheaper, however several times more complex to undertake because of all the logic needed for procedural generation.

    That having been said, the only experience I currently lack is developing stand-alone server software that will handle the MMO itself. Everything else i'm fine with. I love learning and am simply asking for starting points on creating my own server from scratch or if anyone knew of something similar to Photon but isn't so heavily limited. Anything open-source would be appreciated but not required to learn from.


    As to those people posting saying that "If you're asking, you don't have the experience and shouldn't even try" I'll simply respond by saying that I'm not trying to insult YOUR personal experience and how hard it must have been for you to be where you are now. It seems like you guys are coming off as having been insulted by someone simply because they asked for a starting point you never had. I can tell you that's not what i'm doing nor how the world works. If the world worked that way we'd never be as advanced as we are now.


    Cheers all, guess the Unity forum isn't precisely where I should have targeted this specific question (even though we're in the networking sub-forum?). Looks like I may need to go ask more server-oriented forums rather than a game developer forum.


    Kind Regards,
    Braxton
     
  16. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    So everything that is hard about an MMO (or any large scale server software) then.

    Can you please show me a successful sandbox indie MMO?

    We are? Stop putting words in our mouths
     
    Last edited: Mar 7, 2014
    VoidFletcher likes this.
  17. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    A couple things.

    First, theme park MMOs are actually much easier than sandbox mmos currently, from a technical and planning perspective. You can herd the player with artificial boundaries to limit your max theoretical "technical cost" in server resources at a given point. Dealing with emergent behavior on a large scale is much harder. This is at least part of the reason we have not seen much in the way of sandbox MMOs compared to theme park MMOs. The other of course being EQ1, and then Daoc, then WoW making lots of money in their prime and the big corporate money chasing the known quantity.

    The reason sandbox can be "cheaper", or at least is viewed as such - is because Minecraft and then Terraria showed everyone that gameplay > graphics. The primary reason those classic theme parks were so expensive is the sheer amount of content that took literally armies of animators, modelers, scene scripters, etc

    Second, when it comes to server programming - the games industry is years behind, at least in regards to the patterns useful for open world sandbox types of games. Without spending too much time elaborating, the long and short is to find a clue - you need to look at sectors where large scale low-latency data crunching is a "thing". Big Data, Cloud infrastructure, High Frequency Trading, etc. Then translate the thought and programming patterns into tools useful for MMOs. Currently the multiplayer networked game paradigm for client/server has changed very little at its core since Quake1.
     
  18. Uncasid

    Uncasid

    Joined:
    Oct 5, 2012
    Posts:
    193
    The problem here is content. You think you will be able to develop it, but will you be able to do it well? Like I have told others before, you aren't an artist programmer. I have only met a handful. The fact that you are asking about how to build one shows that you aren't a programmer in the sense of networking. If you had taken the time to do networking for a smaller game, you would understand what it takes to build something huge and scalable. Here is a tip, sit down and think about it. Think about how you will handle users, how you will handle content, etc. Then do some math and see if you can handle the bandwidth (hint, you cannot afford the servers / connections). What will you do if a server breaks?

    Sorry to point this out, but I don't think you know much about procedural content. You think "Oh, sweet. I can make a bunch of random worlds using just one seed"... doesn't work. You will run into problems with the users getting bored because everything is the same. How will you handle roads? how will you handle vegetation? How do you plan on handling story generation? Missions, etc. How will you make sure that your algorithms don't bug out? Procedural content development IMO is harder than building an MMO networking system. You better be DAMN good at math to make it work.

    Photon isn't heavily limited. They have a really decent platform for you to build on. YOU need to add the logic that is highly specific to your game, and your play style.

    No one is saying to not try. They are trying to point out that it isn't even remotely as easy as you think it is. They aren't insulted, they are trying to save you the forthcoming irritations, which you seem to already be encountering.

    hahaha! You would be better off asking more targeted questions, like how other users handle interest management.

    Btw, here is a tip on how to build a large mmo networking system:
    1. Reduce traffic as much as possible, then reduce it by 20% more.
    2. Ensure low latency for users, high latency makes games suck (this is the expensive part)
    3. Make sure servers are redundant.
    4. START SMALL!!!!!!!!

    Think about the above, it is better to plan things out before you program. Which I have a feeling you already started programming (another big mistake of yours)
     
    Last edited: Mar 7, 2014
  19. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Thanks for taking the time to make such a drawn out reply :)!


    My problem here is really getting started library wise. Not really the hard-core programming aspect of it, but the direction I should be going in terms of schools of thought.

    I know I want a UDP based server for the MMO. However, there's very limited examples online from which to spring from (there's that old programmer addage, why re-invent the wheel if someone else has done it 1000 times?). I know the core concepts, but I'm more interested in seeing if there is something out there that is already at a point I can build from the ground up while learning more of the specific aspects as I go.

    My current, more directed, question is: Are there any UDP Game-specific networking libraries out there that you would suggest starting with? I can make my own from scratch, but again why re-invent the wheel?

    I've so far found RakNet, and Lidgren Network. However, both are really from 2008-2010ish and was wondering if there was anything more recent (within the past year, or two) that have really caught fire that you have access to the source for custom work or just to learn from? If not on the access to the source, any libraries in general that I can build from the bottom up with?

    My current goal, which was one from the beginning, is the following (guess I should have listed this in my OP?):

    1st) Create a UDPbased Client-Server Chat package. A Client that can connect to a remote Server that allows multiple clients to connect up and talk to each other.

    2nd) Start storing conversations, and connection histories, in a database. (Preferably SQL, since I believe MySQL is not robust enough for a minimum of 1000 concurrent players at a given time?)

    3rd) Research into how to connect up a CryEngine or Unity based client to the remote server for chat purposes only.

    4th) Get player movement being handled by the server and meta-data being saved properly, and then retrieved properly on login, by the Server talking to the Database.

    5th) Once I have player movement/chat nailed down I'll start planning out the Architecture for the Server needed for my MMO.



    I've been planning this stuff out for quite some time, and many of you don't understand that there are tutorials out there for almost every piece of what I need (save for the Architecture, of which I have saved interviews, books, and open Q&A's from blogs detailing the subject).

    My problem is more with getting examples of code or at the very least a springboard for how to connect up, code-wise, the Engine for the Client-Side up with a custom Server I wrote myself using best practices, rather than stumbling around on my own in the dark with normal coding practices that aren't suited for an MMO's requirements that are already known about, but I just didn't ask about (the purpose of this thread).


    Again, these forums are meant for asking questions and getting advice :). That's what I'm here for, and I don't believe all of the negativity I've gotten so far is warranted. If you believe that someone wishing to learn how to start on an MMO is impossible then please move on. I'm interested in individuals whom have working advice that could be helpful (not directed @ you Uncasid in particular) :D!


    ps: I mentioned CryEngine as apparently with the newest FreeSDK release it has become much more Indie-friendly in terms of use for MMO development. However, currently since I have not nailed down either Unity or CryEngine they're both valid choices (also done tons of research into the validity of both).


    Thanks,
    Braxton
     
  20. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    In fairness to the OP - I think he was being specific, and asking about seamless non-sharded non-instanced sandbox MMO architecture - not just about "how do I make an MMO". Which is a totally different beast than your typical recent MMO.

    Though he probably should not have clouded the issue with multiple queries, regarding terrain and such.
     
  21. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    I thought I was being specific about what the Server has to be able to keep track of in terms of WorldData, PlayerData, CreatureData, etc etc. I don't want to use something that has limitations on these issues that are known about, and i just didn't ask the right question :)!
     
  22. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    mySQL is plenty robust.Make sure you use InnoDB for row level locking not table level. I recommend avoiding MS SQL because then you are tied to Windows and expensive licenses for no particularly good reason. If you need to use SQL use mysql or postgres. Though to be honest you might want to look at Cassandra. SQL is hard to scale and not really suited to MMO class projects - it can and has been done, but be prepared to become a full time DBA. Plus, you are going to want to be doing your gameplay from memory only as much as possible - disc access is slow. I recommend thinking about what you need committed to disc and why, and the why should only really be "in case it blows up and I need to restart the server".
     
  23. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    See this is the kind of discussion i was looking for :D!

    Yea, I didn't think mySQL would be hardy enough, connection-limit wise, to use for a server that will have up to 1000-2000 concurrent players at any given time (thinking down the road, planning ahead).

    If mySQL can do that, with rowlocking using InnoDB i'll totally go that route. I certainly didn't want to do MS SQL by choice due to the reasons you already pointed out :3. I was under the impression MySQL has issues with limiting connections to the DB or something like that?


    As for networking libraries specific to gaming. Any suggestions? From what I understand Photon isn't strictly a networking library that I can use for my Server's networking needs, but a Multiplayer Server Solution in general right?

    Like I said before, I've found RakNet and Lidgren Network but i'm unsure yet on their limitations or if there is anything better that can be used Network Library wise that would be better to facilitate communication between a Client and Server for an MMO.

    Keep in mind I plan for multiple different Daemon services to be handling things per Game Server. So like I'd have a Daemon Service for NPCs, Players, Login-Daemon, etc. That way I can work on load-balancing later down the road and handle hardware resource allocation easier.
     
    Last edited: Mar 8, 2014
  24. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    Well just because 1000 players are connected to your server should not mean that there are 1000 connections to your database. You want your CRUD ops handled by DAOs and your game objects should be talking to your DAOs not directly to the DB. As far as performance goes, well I am sure there are inherent differences between SQL flavors but I dont recall any benchmarks off the top of my head. MS, MY and PG all are currently in use in demanding environments at companies across the globe. At the end of the day, really it comes down to how you use it and the underlying hardware.

    I mentioned Cassandra earlier because its good for large concurrent writes, and a MMO should be writing DB far more than reading DB.

    Networking is very subjective here, Raknet is, I believe, baked into Unity already. If you want to do UDP messaging Lindgren should be fine. There are a billion ways to skin a cat, which knife you choose comes down to you. Without knowing more about how you plan to work/build your server its hard to recommend a best network layer, because used correctly for the proper job, many approaches are workable.

    For your server itself, what style are you looking at? Any particular languages/patterns/toolkits you are looking at?
     
  25. BFGames

    BFGames

    Joined:
    Oct 2, 2012
    Posts:
    1,543
    Looked into Photon or uLink?
     
  26. Dabeh

    Dabeh

    Joined:
    Oct 26, 2011
    Posts:
    1,614
    I'd suggest Photon over uLink. uLink still hasn't brought out uServer and their Pikkoserver is apparently very expensive.

    Rust has only 200 players on one server and they're not only struggling with the technical limitations of uLink in Unity but also the security flaws.
     
    Last edited: Mar 9, 2014
  27. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    I would second this recommendation, if you really have to try to build your own MMO. Photon is probably the best you can get. I have used both Photon Cloud (not applicable in this scenario) and Photon Server extensively and their whole product line is rock solid.
     
  28. BFGames

    BFGames

    Joined:
    Oct 2, 2012
    Posts:
    1,543
    Well never tried uLink my self just heard good things about it.

    But yes Photon is amazing, worked with both the Photon Cloud and Photon Server, amazing solutions.
     
  29. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Thanks for the advice on Photon Server :). I've had some RL friends whom work for local game companies tell me that as an indie it's probably better to try and find something free that is proven rock solid. The problem is generally anything i've found that is "completely free" really isn't proven.

    I also had heard that Photon Server has problems with Seamless open-world MMOs. So i'm a little hesitant on that.


    Thanks :)


    edit:

    A quote from tobiass: "Photon Unity Networking does not provide any persistence on the server side whatsoever."
     
    Last edited: Mar 10, 2014
  30. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    You can extend Photon Server and add your own persistence, plus PUN and PS are different. Right now any widely available package is going to have problems with seamless open-world type environments on a large scale. If you want to achieve that you are going to have to use something like Spark as your base or design your own scalable server that can handle player activity on the edges of your server nodes - because you wont be able to fit thousands of players on one box let alone one process. Managing that type of large scale activity concurrently is actually pretty hard, I have seen many a developer go "oh piece of cake" and go on to struggle for weeks with race conditions and even record locking issues just for B2B webapps with a few dozen users.

    If your expertise does not lie in that area, I highly recommend just working on your gameplay... and abstracting the networking portions from your core client code - create a network access object and have that object interact with whichever server package you choose - so you can switch later if a better solution becomes available more easily. Then work on your project "in the small" , and if no better solution arrives - then split up your world into zones like most games have to do.

    There are plenty of ways to maintain an "open world" feel , even though you are technically split into different zones.
     
  31. Dabeh

    Dabeh

    Joined:
    Oct 26, 2011
    Posts:
    1,614
    For a seamless open world MMO, you'll probably be wanting multiple photon instances(node/shard/region) with gateway(s) between the client the nodes/shards/regions There isn't really anything in Photon to make this a problem, just nothing that gives you a huge helping hand.
     
  32. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    Thats how most games work. Its not technically seamless at that point, but it usually "good enough".
     
  33. SweetBro

    SweetBro

    Joined:
    Jan 14, 2013
    Posts:
    69
    I have to agree with this fella.

    There's a good quote:

    Q: "Herr Mozart, I am thinking of writing symphonies. Can you give me any
    suggestions as to how to get started?"
    A: "A symphony is a very complex musical form, perhaps you should begin with
    some simple lieder and work your way up to a symphony."
    Q: "But Herr Mozart, you were writing symphonies when you were 8 years old."
    A: "But I never asked anybody how."

    Conceptually speaking if you have a good enough working knowledge of networking, you already know how to make an MMO. At worst, you're looking for some middle-ware tools to help cut down on the work-load. If you however, find yourself in need of a tutorial, even if you finish the tutorial and make an MMO: How exactly do you plan to support and maintain it, when S*** goes wrong, if you don't understand the fundamental systems which it's built upon like the back of your hand?

    That being said. If you really want to try and make an MMO.

    1) Forget about Unity for a few months.
    2) Get a FoxServer
    3) Program all basic server logic
    4) Test with something simple like JS
    5) Once basic networking architecture is finished, create a unity project
    6) Configure your unity project to interface with FoxServer
    7) Now you have a dedicated server-client setup. Now go and program the MMO.

    No, there are no further tutorials past this point because asking for a tutorial on how to program an MMO is like asking for a tutorial on "how do I program a game". It's a matter of creating your functionality server-side and displaying it client-side.
     
    Last edited: Mar 10, 2014
    KyleOlsen likes this.
  34. Mr.MMORPG

    Mr.MMORPG

    Joined:
    Jan 5, 2013
    Posts:
    14
    I actually asked them when they would make PikkoServer available for indies. They apparently want at least 3 titles using it before they release it to the masses. I believe they have one or two at the moment, so we might be getting uPikko very soon. I certainly hope so. And you actually CAN make an MMO with just uLink and uZone, but then you'd have to face the root of all evil in the world: loading screens.....
     
  35. DeridMetari

    DeridMetari

    Joined:
    Feb 27, 2014
    Posts:
    9
    Pikkoserver actually looks very promising, they have the right conceptual idea. Its very similar to what I am working on, except they are using Erlang where I am using Akka.
     
  36. Dabeh

    Dabeh

    Joined:
    Oct 26, 2011
    Posts:
    1,614
    I never suggest to plan on future technology or some promises that may never come to fruition. Focus on the now. Right now its kind of unproven, the only thing I've seen from it was the "1000 player" thingy that I never got to first hand experience because I couldn't connect. If I listened to their promise of uServer one to two years ago I'd be nowhere right now.

    Yeah it sounds great.
     
    Last edited: Mar 11, 2014
  37. RickyJack

    RickyJack

    Joined:
    Oct 10, 2014
    Posts:
    51
    I feel you... The span between your question and here sounds like garble for the most part... I am looking at the same issue pretty much... I did manage to write a multiplayer script to host from a virtual server but never got beyond that... At this point i am unsure unity is even worth the hassle(especially the forums)...

    But it all seems to go back to client/server architecture.... https://insidethemagicshop.wordpress.com/2012/05/17/basic-mmo-architecture/

    But even after researching all that more issues come up... Then more issues and people argue like rabid animals and forget the question/problem within the team and every where on the web... (speaking from experience)

    In my project i have found that using a game engine period limits my general design... So now it is more of a learning experience to build the game and a engine around it... It is the only way to create a truly custom game... It also opens a giant can of worms and nightmares... Cause then your looking at programming everything and learning the entire architecture systems of it all... The long hard road... Just looking at all the programming languages gives me a headache alone... Seems the basic way of looking at it is first there is binary then C and C++... anything thereafter is a derivative and uses ide's like widows visual that can leave holes in the code creating piles of errors in C# or even unity C#... At least this is my understanding at this point...

    Also there is a lot of ways to use code to build a mmo architecture... Like WoW and Eve are built entirely different using their own architecture... So i would suggest looking at how your game design can be architecturally setup and start building from the base up... There is certainly a lack of tutorials out there it seems... But if you google more specific things like spatial hashing, then you will find tutorials out there for just that piece of architecture... Unless of course you go back to the very beginning and take a heavy crash course to pioneer what you need...

    Also to note i said a custom game engine... Omg... Can't wait for all the impossible comments on that as well... Actually a custom game engine isn't very much at all if your game is simplistic... Unity on the other hand is more of a tool for artist's and non malicious script kiddies to play in, rather than for a real developer as it was designed by real developer's and engineer's..... How and why it makes so much money... (yeah i just said that and go look in the script kiddie/artist asset store ROFL).... Though Unity can be a helpful tool for aspiring people... I personally am tired of staring at the limits it has for my projects and i refuse to change my game design... So i am off in exploration in a pioneering sort of way.... Anything is possible if your willing to dive in and keep treading... Don't let the forum droog's drag you down by saying impossible, as odds are most of them have very little understanding of developing or engineering. If they do then when they looked at the question, then miles of data went through their mind and said to themselves impossible to explain it all... Just keep digging and learn everything you can about network structuring. I posted a link to a basic concept of it and i recommend exploring the each individual component of the architecture system there...
     
    Last edited: Jan 11, 2015
  38. RickyJack

    RickyJack

    Joined:
    Oct 10, 2014
    Posts:
    51
    Some more information regarding these topics... Hope these information sources help you...

    http://www.cs.ucf.edu/~jmesit/publications/scsc 2005.pdf

    http://forum.unity3d.com/threads/tutorial-procedural-meshes-and-voxel-terrain-c.198651/
     
    Teila likes this.
  39. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Lot's of jerks here, and some of them are names I recognize. Not good advertising for their products on the asset store I should say. If you can't help someone, just say nothing. It makes you look so much better.

    Braxton, good luck to you. If you find friendly forum, post it here. I will join you there. While I will tell you that it is hard and that it will take a lot of work, I won't tell you it can't be done. We have our server ready, terrain almost done, character creation done and are now adding all those wonderful bits and pieces and making them work on the server. It took us a long time and we still have a lot to do...and we are not a one person team. But I know at least a half dozen guys who are going it alone and they are making amazing progress.

    Will their games compete with AAA games? No, probably not. But I am sure they realize this. RickyJack, nice links and good to see someone help. You are right, lots of garble on this thread from folks who should know better.
     
    Knightmore likes this.
  40. YoungDeveloper

    YoungDeveloper

    Joined:
    Jun 28, 2013
    Posts:
    64
    The problem with "looking for tutorials & guides" is that most are searching for ready 101 solutions, code snippets or projects. Instead you should be searching for information in abstract level, where industry professionals share their experience in overall thoughts. Rest is up to you as a programmer, to create those structures.
    While there might be tons of tutorials for unity daily problems and popular project types (such as fps), there's still that unwritten line, where you are on your own, and nobody will help you (even a little bit). None of the real MMO experts will fully share or create 100 series spoon feeding tutorial (in level of 10 year olds) on how to make one. That line has to be drawn somewhere, and I'm glad It's where it is.

    What comes to FoxServer, there's more than enough information to start you going. While the examples they provide aren't the best from optimization perspective, they will give you the idea.
    Personally, i never even programmed in Java before FoxServer, plus, It's very API based, so that will naturally give problems in first 2-3 weeks.
     
    jonkuze likes this.
  41. AustinRichards

    AustinRichards

    Joined:
    Apr 4, 2013
    Posts:
    321
    All right all right. I am developing a large scale mmorpg right now. I can help you. I just released my networking system, specifically designed for my mmorpg (but useful for non mmos as well).

    http://forum.unity3d.com/threads/my-networking-system-here-for-all-of-you-to-use.291204/

    You need a decent amount of coding knowledge to make an mmo, so you should be able to understand my networking system. The trick is to learn what data to send to the clients, etc. If you need any help, just ask me! I'm willing to help. I'll even give you my skype if you need it. (AustinGarrettRichards)
     
  42. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Sorry for the late reply, but I had essentially abandoned this thread since last year after all the negative garble that started coming through from people I expected different responses from.

    Luckily enough I started a new job recently that put me in direct contact (he sits 3 rooms away from me) with someone who has around 4 MMOs under his belt that he's worked on.

    Essentially, having numerous several hour conversations on the subject have re-sparked my drive to re-learn and start work again on my project. His advice was to ignore all the negative garble (easy to say to yourself, but harder to follow, when on your own), and to press on looking and researching. He's also given me some very good tips regarding my approach towards the architecture that I hadn't considered before (and never got from online conversations on the subject).

    People immediately see "tutorial" or "guide" and think that person wants everything handed to them when in fact they're simply looking for starting points or different "takes" on an approach. After more than a year of research I've come to about 3 or 4 different "psuedo" methods but no real concrete approach. It's all been, more or less, blogs of industry giants sharing their thoughts and opinions but no real solid path to take. It's easy to say "I'd split it into 5 or 6 different helper processes each passing connections and manager zone/cell management", but when you actually need to implement such an approach the code side falls apart.

    The problem lies with people whom respond either immediately take the ground of "if you have to ask you can't do it", or try to shut you down entirely without any positive feedback. One thing i've learned since I started this thread is that people whom take the first approach are actually the people you never want to ask because they've immediately dismissed the idea in question, and are essentially insulting them before a conversation can even start.

    When someone asks "How do I build a wheel?" having an answer akin to "If you don't know how to start you have no business asking" is by far the most toxic and unhelpful way to respond to someone. It simply shouldn't be said to begin with. That's not how people learn nor is it how new ideas are created and shared.

    In the end it comes down to stubbornness and perseverance. Eventually you'll get there, or you'll discover the answer somewhere somehow.

    I'm still in the process of researching the network side of things as I don't wish to write myself into a corner because I didn't plan ahead accordingly for most of the caveats I will most likely run into. I have however managed to solve every other issue that I've come across since then (art, animations, game design, business model, etc) leaving me with the network architecture of the server itself still in limbo.

    The problem, as you can painfully see from this thread from last year, is that people are unwilling to give useful feedback when they themselves are either under-qualified to even start responding, or have already made assumptions about your ability to understand the scope of your project before even trying to make a real approach towards a response. I've tried to proof-read this reply to remove any "arrogant" sounding statements, but at the end of it all there's so much frustration surrounding the server architecture & design for an MMO that it is easily palpable.


    TLDR; If you're in the same boat as me from a year ago simply press on, ignore all negative responses, and try to find useful information that starts answering pieces for your planned project. You won't find this topic to be a very positive one to ask questions about in most game-development communities especially the Unity forums.


    Cheers :)
     
  43. AustinRichards

    AustinRichards

    Joined:
    Apr 4, 2013
    Posts:
    321
    If you need help, or any1 else needs help with MMO Development, just ask me. I'll help any1 out. Skype: AustinGarrettRichards
     
  44. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Last edited: Apr 14, 2015
  45. snacktime

    snacktime

    Joined:
    Apr 15, 2013
    Posts:
    3,356
    TheBraxton's post is basically what I would say.

    The reason you often hear of mmo's being so difficult, is that server tech in general is just not a forte of the game industry. It's not that they don't have smart people, they just have very few that focus their time in this area.

    Which is key to knowing where to look for information. Generally speaking, server architecture in general is what's most valuable to know. It's a lot easier to learn the things that are specific to multiplayer games then it is to learn the fundamentals of databases, concurrency, etc..

    The main thing that is different between games and say a typical web app, is that games are stateful. The practical implication here is that database requests are commonly 50/50 read/write, whereas most web stuff is 90% reads. Choosing the right database is one of the few 'big' decisions that if you get wrong, can cause all sorts of pain. Even with a good caching layer, you can't really fix a bad choice here once you hit any real scale.

    There are also certain architectures that have proven to work well for stateful applications. Currently the most common approach is messaging systems, with the most common and proven implementation being the actor model that was made famous in erlang. Most modern distributed computing systems use this approach. Anyone can write a single server architecture that performs well, and no one cares if you can do that. But take that and scale it out to even a few servers and it changes everything. So starting with a good architecture is key.

    FYI the networking portion of all this, a relatively minor part, and one of the easier problems to solve.

    From there it's really just a few things that are specific to games that any good developer can pick up on quickly, and are not really part of any of the core architecture.

    The best advice I can give is assume that every bit of what you want to create, is a solved problem. I've worked with this stuff at scale and am the author of an open source platform for running mmo type games at scale. Guess how much of the core architecture was my own implementation? Under 3%, if that. And while I do have some years of experience with this stuff in a production environment, there is nothing I know that you can't find on google.
     
  46. BFGames

    BFGames

    Joined:
    Oct 2, 2012
    Posts:
    1,543
    People need to distinguish between the aim and type of the MMO, which is really important.

    Do you aim to have a single server with 100-200 people on it? Fine, that is actually not that difficult.
    Do you aim to have multiple high population servers? Not that easy?
    Do you aim to have multiple high population servers in a fast paced FPS MMO? Pretty hard.
    Do you aim to.....

    Researching what you want to do is always a good idea!

    However from a personal point of view, then i learned most of what i need to know from smaller networked games. Even a online game with 4-12 players per session gives you great insight in the basic knowledge of networking AND what limitations you might hit when doing an MMO. I am not saying people should create X amount of networked games before trying their hands on an MMO, but at least do a few prototypes to test how far you can get and to gain some insight.
     
  47. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Our server was not the biggest obstacle. Making the content to fill a world takes time and making sure all game play syncs properly. There is so much more to a game with 100s or thousands of players on at the same time, all doing different things and all needing to be entertained. That said, it is fun. I know several single developers who are making MMO's and doing quite well with it. It takes time and it is nice to have a team, but it can be done. I have watched these guys go from nothing to what will soon become an actual game. I do recommend being realistic with your options though. A huge WoW type game might be beyond what a small team can handle.

    Thanks for the great links above. I enjoyed reading them.
     
  48. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    uNet coming soon... we're all very hopeful about that. especially phases II and III which are designed specifically for server/multiple client scenarios. Fingers crossed it doesn't disappoint.
     
    Teila likes this.
  49. TheBraxton

    TheBraxton

    Joined:
    Mar 6, 2014
    Posts:
    98
    Not finding much information on uNet other than it being the official attempted solution for supporting MMO server development for Unity.

    However, I'd be hesitant to throw all my eggs in that basket and simply wait given the amount of time it seems they're going to take (haven't heard since May 29, 2014?).

    I know the design I want to go with now for my server, but starting the code has been difficult without a "best practices" example :p. I suppose I'll just be guessing and revising what I do as I go :eek:.
     
  50. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    uNet Phase 1 is in the current 5.1 beta. It looks great! I believe the guesstimate public release is June/July. Phase 2 is geared towards dedicated servers (more suited to an MMO), and I've not heard anything about dates for that (but I'd love it to be out, even in beta, in the autumn).