Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice

Early Scoping Excercise

Discussion in 'Multiplayer' started by robsandbach, Jan 27, 2009.

  1. robsandbach


    Apr 3, 2008
    Greetings all,

    I'm hoping to receive significant funding from a regional development agency from a pitch I delivered recently. The pitch was for an independently developed, persistent FPS title with an infrastructure built on virtual computing. The idea in its simplest form is to have our level servers spawn on virtual machines, which are expanded as the servers become busier during peak times, then contract during the quieter times. Clearly this represents a highly beneficial cost model which scales with player counts.

    Although a business model has not been finalised, an option we're exploring is releasing the game for free and drawing revenue from sponsorship and advertising revenue (both in game and on site). The latter stream should scale linearly with player counts. If we can ensure that the revenue from advertising is greater than the scaled cost of hosting the players then we have a sustainable business model with very low overhead/fixed costs and a flexible infrastructure to cope with the download and player spikes a free game is likely to incur.

    </Business Talk>

    At this stage I'm exploring middleware options to build into the business plan. The concept was prototyped with the Torque Game Engine Advanced but in it's native form it doesn't support the streaming needed for a seamless world, and a single level can hold perhaps 300 players - for the early stages of the game this is likely enough, but as we expand we're looking for an engine which better fits a scalable solution.

    I'm posting in the networking forum as my primary concern is to understand where we would begin with Unity Pro. Clearly I'm not looking for one click, out-of-the-box support for scaling from 10 to 1000 players; but my main worry is that without source access we'd struggle to develop a coherent solution for our requirements.

    Any comments on the general topic are welcome and desired but specifically I'm interested in:

    1) Confirmation that the existing networking infrastructure supports seamless transition across a large game world.

    2) An understanding of the current supported server infrastructure. Can I add more machines/instances of Unity/shards to help handle processing as player counts increase. If not is this possible without source access?

    £) Your general feel about how the concept of "adding more machines as the server gets more players" fits into the networking infrastructure of Unity out of the box.

    For reference I'm not envisaging thousands and thousands of players for an independent game. Perhaps 800 to 1000 players in a game world before we started to consider launching parallel worlds. The game would be an FPS, requiring a high frame rate and low latency. Physic aren't a large issue for me beyond the basic of collision basic gravity. Players and vehicles would be the only "dynamic" items, all level models and scenery would be "bolted down".

    Thank you in advance for any insight you can offer. I appreciate it's very difficult/impossible to speculate accurately, but your thought and opinions would be highly valued,

  2. Dreamora


    Apr 5, 2008
    1. if all is in one scene, no problem there

    2. That depends on your server side. Unity does not have any server side stuff, its purely client side. Using unity for the server is not an option if we are talking about anything that even has slightly to do with mass online gameplay (128+ with action oriented networking). You would be writting the server in C++ and design or not design it to be scalable.
    Unity has currently no headless mode on windows, only on OSX

    3. Unity networking is single server, multiple clients only, no multi server. so not scalable by just using unity
  3. MikeHergaarden


    Mar 9, 2008
    In addition to dreamoras answers:

    There is also the ability to open multiple scenes in one level(Application.LoadAdditiveLevel). Unity added this to support seamless worlds (will be seamless streaming worlds if you combine this with assetbundles)

    Don't forget that in an MMO alike game you can scale up the world by dividing the world over several unity servers. I've implemted my virtual online world like this and it's pretty scalable (since you can have one physical server run multiple- or just one location(s). I linked this with one loginserver, which will redirect users to the right gameserver.
  4. jashan


    Mar 9, 2007
    I'd say that the requirement for being able to seamlessly connect across a large game world from the networking perspective is connecting to multiple servers simultanuously. Unfortunately, that's currently not supported by Unity's networked multiplayer features, so you'd have to roll your own - or talk to UT about getting a source code license (it's possible, but I don't know how much that costs - but if you have investors, that might be an option for you). Or use some tricks (there are a few threads about things like that on the forum, me thinks ;-) ... one recently where Leepo posted about having "dedicated clients" which provide "server services", another older one which is about using a custom MasterServer).

    From the "client-perspective", it's easy and fully supported (FusionFall uses these features and it is a seamless MMO-world where Unity was used to implement the client - it has been launched very recently and is fun to play ;-) ): You can stream levels and you can have multiple, seamlessly connected terrains. But I think that's not what you were asking.

    I guess there are possibilities - but to get it super-optimized, you'd probably be most comfortable with a Unity source code license. The MasterServer source code is available publicly, which might give you a start; search for "Raknet" on the forums, and you'll probably find a wealth of information that should be useful for you.

    Currently, I would say it doesn't really fit with Unity's infrastructure "out of the box". The networked multiplayer features of Unity currently are really designed more towards making it easy for people who want to do small-scale multiplayer. You can be creative and maybe find something that works smoothly and conveniently, but it's just not designed for that "out of the box".

    However, Raknet (which is what Unity uses in the background) shouldn't limit you to the end, so it might be that it's not *that* far after all.

    Sunny regards,
  5. robsandbach


    Apr 3, 2008
    Thank you all for your (amazingly fast!) replies!

    I've been doing a bit of research in the few hours since posting, particularly around the C4 engine and the NetDog library. NetDog looks very interesting. I suppose the next step is to see how well it would integrate with Unity as compared to C4 and determine which has the better tools/pipeline/client capabilities. Unity certainly seems to be ticking a lot of boxes in terms of usability and friendliness which I think it's easy to underrate if you're a coder / "learn it all" people . If your artists (particularly remote ones) can drag, drop and play on their own I imagine you free up a lot of development time. One to think on.

    Thanks again to everyone, community certainly isn't an issue!