Search Unity

Cost of implementing an MMO?

Discussion in 'Multiplayer' started by preymantisgame1, Sep 13, 2017.

  1. preymantisgame1

    preymantisgame1

    Joined:
    Dec 4, 2015
    Posts:
    4
    Hey all, I am wondering how much it would cost to implement an authoritative server with unet and if it's a feasible option. Let's say the person completed all the the scene models like level design, character controller, animation.
    But something like this needs to networked along with
    3 Factions system . Player can choose his name and be able to keep his name along with items he collects( lets say 5 slots total for inventory . A server that I would rent on hosting site and a sql database.Let's say 300 items total
    Character can invite other factions to his group/guild.
    Chat system:
    When you enter the scene the character can click on another character (prefab) and invite him into a group. In the group the UI displays everyone's health while being able to chat via typing and voice (option to turn it off)
    - group chat
    - world chat (/yell to talk to the whole zone)
    - load from one zone to another via walking into a trigger. From one server(zone) to another server(zone) all the while still keeping your name and any items you collected as well as group info like health if you invited a person into your group.
    -bullet synconization
    -health syn
    I have a 3d game with a FPS controller.
    Is their any good networking solutions that have these type of plugin or any net-worker here that has these types of skills.
     
  2. xVergilx

    xVergilx

    Joined:
    Dec 22, 2014
    Posts:
    3,296
    It is possible, but troublesome. And I bet it will cost a lot.

    Most of these I've implemented myself for our game, and it took me about 1 year without scene changing. Though it's not MMO. Yet. :D
    I bet proper MMO server achitecture implementation would took even more.
     
  3. Joe-Censored

    Joe-Censored

    Joined:
    Mar 26, 2013
    Posts:
    11,847
    I've been working on a UNET based MMO for a year. It is certainly possible to do, but expect a considerable investment in your development time dedicated to just the networking and planning out your server architecture. As far as costs for a single person to develop that already has a day job, expect it to take a couple years or more of all your spare time.

    Add onto that any custom models you need made (I paid around $5k to have a modeler develop the bulk of my game's models, which I'm offsetting the cost somewhat by selling many of them on the asset store in the mean time).

    I can't stress enough the importance of planning out your server architecture early, and including in that a plan to use multiple physical servers to help balance out the load. Then expect to pay monthly for virtual servers or dedicated servers. The best price I've been able to find for dedicated servers is at Joe's Datacenter (haven't used them yet, so can't speak to their service quality, and I don't work for them), where you can rent somewhat outdated servers with 12 Xeon cores and 16GB of RAM for about $65 per month each. I expect to need between 3 to 5 of these when going live. Comparable cores + RAM from a service like Microsoft Azure would probably be in the $2k per month range instead of $250 or so.

    You're also going to want a test server when developing, most likely on a separate machine than your desktop, running the OS you plan to run the servers on (plan on Linux unless you have a compelling reason otherwise) where your friends or other test users can hop on and help you test the game and give feedback.

    As an example, here's the server architecture I've been developing for my age of sail ocean based game, and is mostly implemented at this point. I'm detailing it to give you a starting point on the types of things you need to start thinking about. Your game will undoubtedly have different requirements, but may face similar challenges.

    * Game world is split up into approximately 300 "zones", each zone is a separate Unity game server instance. Zones that have no players will not be running for the purpose of reducing hosting costs (3-5 servers instead of maybe 15+ lol).
    * Launch master server, which launches the Database server and Login server, followed by any high traffic zone servers (these are country capitals, new player starting locations, etc)
    * Any server that needs to read/write to the database instead talks to the Database server, which is a Unity instance. This is so switching the database back end, from all in memory to MySQL to whatever else, doesn't require any code changes on the zone or login server and minimizes testing needs if I do make a switch. It also makes managing security on a MySQL database pretty straight forward if there is only 1 server that needs to talk to it.
    * All servers keep in communication via messages to the database server and the master server. The master server manages what zones are running and on what physical dedicated server they are running on, and powers down zones that no longer have any players running on them. Under a low running zone server count it lets them continue running for 30 minutes after all players have left, but under a high running zone server count it shuts them down much faster.
    * When a player moves across a zone boundary, the master server either provides connection details to the new zone if already up, or it spins up the zone if it is currently offline, then provides those connection details (IP address, port, etc). Player clients don't themselves ever talk to the master server.
    * I have a command console where I can connect directly to the master server to view and manage the state of the cluster, and take manual control of spinning up and down zones, etc.
    * I am planning my dedicated server costs around approximately 50 zones being active at any given time, with remote zones far from safe areas being only occasionally running and uninteresting zones such as in the middle of the Atlantic going up and down as players travel between continents. If the active zone server count goes above a certain threshold, the master server will to a point start overcommitting zones to the dedicated servers (players may experience some performance issues), and logs this so I can start work on adding more dedicated servers. If the count goes too high for the hardware available the master server will prevent new zones from starting.
    * I won't really know for sure the hardware requirements until I start seeing how spread out players end up being (Do they travel in groups like I expect for protection? Or do they mostly go solo into far out parts of the world to avoid other players? Don't know for sure.). This is an issue because in my testing it is far more hardware efficient to have more players in fewer zones than players spread out across a high number of zones, but due to the very large terrains needed to simulate the entire planet, and jitter when moving far from 0,0,0, I have to split up the world pretty significantly to use the scale I'm going for.
     
    Last edited: Sep 13, 2017
  4. preymantisgame1

    preymantisgame1

    Joined:
    Dec 4, 2015
    Posts:
    4
    Thanks for the sound advice from the both of you. My modeling has improved dramatically and If you need any modeling in exhange for networking, let me know. I can also pay for contract work if anyone here have these type of skills. https://alienantworld.itch.io/alienantworld is the demo of my game so you can get the feel of what it's going to be like.