Announcement

Collapse
No announcement yet.

Networking question, MMO architecture.. kinduva long story

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Networking question, MMO architecture.. kinduva long story

    So hello everyone, first and foremost.
    For 2 months now, I've been working on a game called Warriors for Unreal 4.
    We've been through ups and downs, been coding and animating like mad over the past few weeks, debated a lot over what we can do with what we currently know and what we realistically can achieve.
    For the past couple weeks though, we seemed to have hit a 'wall'. We're gonna use either one of these two "architectures" (for lack of a better name):

    -Large seamless world (single server I think?), engine displays only what's within the player's line of sight to reduce traffic between server/client.
    -Map divided into much smaller "zones", each being a server in its own right. Don't have to worry about coding the line of sight thing into the client, but lose seamless world functionality.

    What's better? I'm mostly worried cost. I also don't know if there's a server large enough to hold, what, at least 5-10k people? I think that might be too expensive. Might be better to just rent a lot of tiny little ones. I'm going to rent a server. We don't realistically have the money to buy anything.

    Also, how complex would it be for the client to receive the data within the player's line of sight from the server and display it, from a c++ coding standpoint? I mean I have an idea of how I'm going to do it in the server-side, but not how to do it in Unreal. Do I just load the map with the client and tell it to display whatever it receives from the server? It sounds somewhat reasonable, at least.

    Ideas anyone?
    Thanks
    Last edited by issler; 07-19-2014, 05:53 PM.

    #2
    To be blunt, MMOs are usually terrible project ideas.. it's the perfect way to never finish.

    So my suggestion is just get it working assuming one server for now. That way if you need to scale back your plans, you haven't invested time for nothing. All the work you are doing to get it working assuming you will use a single server will be required anyways if you attempt multiple servers (which I'm pretty sure UE4 has absolutely no support for.)

    Comment


      #3
      To be blunt too, you're not really in a position to judge what constitutes or not a good project idea. Oh, and you haven't answered my question.

      Comment


        #4
        He is actually right. MMO's are very hard to get started if you aren't a big triple-A company. However, if you want it:
        You shouldn't use the standard server of ue4, only use it client side, it's not suited for so much players. So:
        1. Think about must have functionality of your game (positions of players, actions etc.), and write a server on your own.
        2. Make the game in zones, for example squares, but still make it seemless. One server can operate more than one zone, if some zones have no people on them, even 1000 of the mcan be on one server. If the zone get's more populated, like a part of the biggest main city where everybody trades, it will be just one zone on the server. And jsut stream zones in and out, so when the player get's near to a seam, stream the other zone in, and he won't notice.
        3. Save items, progress etc, and even maybe position, in one big database, and only read from there if a zone needs it.

        Comment


          #5
          MMO is such a pain to work with, and building it is not the worst part but securing it. I would choose the multiserver architeture to avoid lag, also if theres one problem in a server you can work with it and not take down the entire game, isolate the problem, so people from other zones can still enjoy. But there will be lots and loads of ppl trying to hack or take down your servers, using techniques you wont even imagine. Also when they suceed you will be facing issues with your host provider, since the attacks most likely will affect their other clients. If i ever work with multiplayer again, i will allow the player to create his own server within the game so he will be able to accept his own guests, ill never be responsible for serving again.

          I am not trying to take you down or anything. Even with pain i guess you could learn a lot from working with it. Good luck.
          Last edited by Inspector; 07-20-2014, 12:46 PM.

          Comment


            #6
            As allways, the classic "im gonna make a MMO".
            Sorry, but its not going to happen, ever. Look at the internet, how many people have said they are working on a mmo or planning to do so, find me at least 1 or 2 indie MMOs, and this is in all this years.
            Making a MMO is stupidly hard and needs a enormous amount of money, if big studios spend hundreds of thousands of $ to make an MMO and barely break even, what will you do?
            If you still really really want to, you could try making a MORPG(not Massively), in wich you can invite people to the server or something like that, a cooperative RPG, for a few people, not hundreds at the same time and place. If you get successful with that, you could do version 2.0, this time with real money, to make it work massively, instead of just a few people.
            UDK and UE4 programmer and Unreal engine 4 betatester. Currently working on commercial VR games for PSVR.
            Deep knowlegde of C++ and blueprints. Open to freelance work.
            Games released, Deathwave(Steam), VRMultigames(Steam), DWVR(Steam,Oculus,PSVR):
            http://store.steampowered.com/app/463870
            http://store.steampowered.com/app/500360
            http://store.steampowered.com/app/520750

            Comment


              #7
              Originally posted by issler View Post
              To be blunt too, you're not really in a position to judge what constitutes or not a good project idea. Oh, and you haven't answered my question.
              He's trying to help you out. People can tell when other people are in over their heads. Your original post has half a dozen clues pointing to you being woefully inexperienced. A lot of people will be kind and try to point you in a general direction. But in this case being direct is probably the best course.

              And instead of taking it to heart, you acted in a way that only told people he was right.

              Comment


                #8
                let him try and fail if he wants.
                if this was still UDK I'd jump into the bandwagon of "you'll fail" comments but we have a community with source access now. an MMO architecture project/plugin might become a possibility if enough people are interested and work on it, so why not have someone start, try, and share his newfound knowledge and experience?

                on the other hand, 5-10k people in the seam realm is just not going to happen.
                and on a similar manner, I'd advise you not to design a game for 5-10k because if you only ever get 300 players it'll feel horribly empty. start as a small MOG (not massive) and make sure it scales up properly. it's usually easier to scale games up than down.
                Follow me on Twitter!
                Developer of Elium - Prison Escape
                Local Image-Based Lighting for UE4

                Comment


                  #9
                  Originally posted by Chosker View Post
                  let him try and fail if he wants.
                  if this was still UDK I'd jump into the bandwagon of "you'll fail" comments but we have a community with source access now. an MMO architecture project/plugin might become a possibility if enough people are interested and work on it, so why not have someone start, try, and share his newfound knowledge and experience?

                  on the other hand, 5-10k people in the seam realm is just not going to happen.
                  and on a similar manner, I'd advise you not to design a game for 5-10k because if you only ever get 300 players it'll feel horribly empty. start as a small MOG (not massive) and make sure it scales up properly. it's usually easier to scale games up than down.

                  It's not that I think I'm gonna have that many people right away, I do plan on starting out small. It's just that I want to have a proper plan in place, if it ever does expand.

                  Originally posted by Inspector View Post
                  MMO is such a pain to work with, and building it is not the worst part but securing it. I would choose the multiserver architeture to avoid lag, also if theres one problem in a server you can work with it and not take down the entire game, isolate the problem, so people from other zones can still enjoy. But there will be lots and loads of ppl trying to hack or take down your servers, using techniques you wont even imagine. Also when they suceed you will be facing issues with your host provider, since the attacks most likely will affect their other clients. If i ever work with multiplayer again, i will allow the player to create his own server within the game so he will be able to accept his own guests, ill never be responsible for serving again.

                  I am not trying to take you down or anything. Even with pain i guess you could learn a lot from working with it. Good luck.
                  Thanks. It's these kind of messages that motivate me to push forward. You took the time to actually answer the question and you're being honest, not just spewing the usual "you can't make an mmo" vitriol. My biggest concern right now is indeed security, or how to write a secure server rather. I won't be using UE4's networking kit, only the graphics client. That said, I have no idea where to start.

                  I've been reading this guide http://www.ibm.com/developerworks/library/ar-powerup1/ , think I'm gonna try to do something like that.

                  Originally posted by vblanco View Post
                  if big studios spend hundreds of thousands of $ to make an MMO and barely break even, what will you do?
                  "I'm throwing money at the screen but nothing happens!"
                  Attached Files
                  Last edited by issler; 07-21-2014, 05:56 AM.

                  Comment


                    #10
                    Answer to your pm, so anybody can read it :Basicly, a zone is like a chunk in mineshaft, just a square of your world. Your server software should be able to operate dynamic counts of zones on them. So you can change the amount of zones played on one machine depending on player load. Let's say you have a zone with 500 players on it, and simulating it costs you 4gb ram. You also have other zones, and there Is one with 200 players, costing 2gb, and two with 100 players each,costing 1gb each. The are also much more zones. But you have a server machine with 8 gb ram. It can simulate all those zones, however if more players come, to, let's say the 100 players zone, and there are 200 now, it costs you 1gb ram more than this machine can hold, so you just move the simulation of this zone to another server, and this machine takes a more light weigh task,because it now has 1 gb free.

                    Comment


                      #11
                      I wouldn't stream other players based on line of sight. While this sounds good in principal you are forgetting about instantiate and destroy cost every time a player comes into sight or leaves it.

                      Have a set radius in which the client will be aware of nearby player's and stream those players in. When the players leave that zone (or leave an even bigger secondary zone), you can then remove that player from the client.

                      You also need to factor in what sort of information you want to stream in and send to the client. If the player is within the streaming radius, but occluded or very far away, you don't need to send constant updates, or send every animation state update or what their actions are.

                      There are loads of articles on the web on effective MMO network programming and post-mortems, I'd suggest you read a few of them.

                      To answer your question in short. Keep it simple with a single server instance, and get that working well.

                      Comment


                        #12
                        Originally posted by Meltdown View Post
                        I wouldn't stream other players based on line of sight. While this sounds good in principal you are forgetting about instantiate and destroy cost every time a player comes into sight or leaves it.

                        Have a set radius in which the client will be aware of nearby player's and stream those players in. When the players leave that zone (or leave an even bigger secondary zone), you can then remove that player from the client.

                        You also need to factor in what sort of information you want to stream in and send to the client. If the player is within the streaming radius, but occluded or very far away, you don't need to send constant updates, or send every animation state update or what their actions are.

                        There are loads of articles on the web on effective MMO network programming and post-mortems, I'd suggest you read a few of them.

                        To answer your question in short. Keep it simple with a single server instance, and get that working well.
                        To be honest, I'm trying to read I can get my hands on atm.
                        Click image for larger version

Name:	server.png
Views:	1
Size:	21.5 KB
ID:	1052838
                        How do I go about setting up that single server instance? Do I have to write a custom protocol to communicate my client with a server, or will TCP/IP be enough?
                        To communicate the server with the WebSphere I know I'm gonna use TCP/IP, but I'm clueless about client/server networking. I took this architecture from one of IBMs tutorials, if you pay attention you'll see they have "TGEA client/server networking" dashed in blue, from the client to the server and vice-versa. That's IBM though, TGEA is the name of their engine I think. Does Unreal 4 have similar client/server networking or w/e? Is it robust enough to handle a MMORPG, keeping true to the scheme's architecture?
                        Well, I know that's a lot of questions, it's just that they seem to pile up ..
                        Thanks anyway

                        Comment


                          #13
                          Check out raknet. You will usually use UDP for gaming.

                          Comment


                            #14
                            Few answers for you:-

                            Regardless if you do a seamless world or zones with a loading screen, you will need multiple servers. Each server will work for an area or zone, to coordinate movement (replication in UE speak). Seamless will be a better experience but harder to implement. On top of that other things will need to be separated into different services. Things like ingame Mail, chat systems don't need to be implemented in the main server code.

                            You will need to add C++ code to unreal there isn't a blueprint or addon way to do what you are asking.
                            Check out Photon Server SDK as well as the UE4 example to see how this sort of thing is done in UE4.

                            If you haven't read this article check it out, it will give you some idea of what is involved.
                            http://www.wildstar-online.com/en/ne...t_servers.php/

                            Comment


                              #15
                              I will never understand why people with no experience in doing a MMO or game at all choose an engine that is not suited for that at first. Seriously this can only lead to a fail, take an engine that is suited for MMO instead of UE4. That way you will get result faster, maybe even a game that could be released as free to play and will learn a lot during the process. After that if you want to make something more professional and have learned all the stuff required you could try doing it in UE4

                              As for free MMO engines, I haven't looked that much but I know that Ryzom is open source, just do a search for Ryzom Core or look for other engines that might be available for free

                              Comment

                              Working...
                              X