Search Unity

Stress test using unity as server

Discussion in 'Multiplayer' started by clauxdatia, Jun 16, 2021.

Thread Status:
Not open for further replies.
  1. clauxdatia

    clauxdatia

    Joined:
    May 19, 2021
    Posts:
    3
    Hi, I have a question about Unity, im testing with Unity creating a build as server to windows, but curiosly just can i create 350 gameobjects (using fixed update to move and physics) with stable 60 fps, when create 400 gameobjets i get 42 fps, with 500 gameobjects i get less fps, but fixed update stable in 50 and my pc was just using 14% of my cpu and low memory RAM.

    So, Why can i created just 350 limit gameobjets if im not using render in my build, how can create server with more than 1000+ gameobject(Characters) like WoW or others.

    In other test, i ran this build with 350 gameobjects, but i ran other same build with others 350 gameobjects and other with 350 gameobjects too, and all was at 60 fps, all used 14% cpu each and same low memory RAM x3.

    My big questiong its, how can i create only one build with 1000+ gameobjects with 60 fps stable or what im doing bad.

    Sorry for my english and I appreciate your answers
     
  2. ep1s0de

    ep1s0de

    Joined:
    Dec 24, 2015
    Posts:
    168
    You probably send data of 350 objects, but you need to send them that have changed, and besides, you need to send data of objects that the client can see and not all at once
     
  3. clauxdatia

    clauxdatia

    Joined:
    May 19, 2021
    Posts:
    3
    Yes, that helps but does unity only support 350 gameobjects? can't I do anything about it? cuz if u think that in a game like wow there are not only characters, they also have mobs and npc, i want to know if that's the limit o we can do something special in a GameServer build.

    this video show how they have 500 - 1500 characters at the same time, and explain that they have a instance to each map (independant), that's a something to do, but idk how they comunicate characters information between servers, becouse u going to create those game objects on both servers no?

    However, it helps what you said, I think I can create more than 350, maybe 500 at most, but if they all move the server will crash. Thank you very much for your comment.
     
  4. Oh boy. I'm sorry that I have to say this, but if you're planning to make a high-scale MMO, you will need at least one person on your team who does know what they're doing. Which means they have experience with high-scale MMOs.
    There is no way around it.

    On what you're seeking: GameObjects aren't cut out for this, it is mostly using only the main thread.
    If you want high-scale simulation, then you will need to look into DOTS and use as much parallelization and memory-planning as possible.
    Also you probably won't make a high-scale MMO on UNET or Mirror or MLAPI. They aren't made for this. No matter what the authors of those libraries say.
     
    clauxdatia likes this.
  5. clauxdatia

    clauxdatia

    Joined:
    May 19, 2021
    Posts:
    3
    Thanks Lurking we have experience in online multiplayer, we know that Mirror, MLAPI and others of this will not work, we are creating the architecture and researching more about Unity and Unity GameServer, to create a solid core for a project that can expand to more features.
     
  6. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    This is impossible for you (with gameobject pattern) to achieve without a ton of money or vast experience in DOTS and networking, sorry.

    Why not try a proof of concept to get 100 players moving? this is sufficient for the world's best battle royale titles and will teach you the challenges of just 100.
     
    clauxdatia likes this.
  7. mischa2k

    mischa2k

    Joined:
    Sep 4, 2015
    Posts:
    4,347
    One of the MMOs made with Mirror had quite a lot of CCU when it launched, I think it was Inferna.
    They split the map into separate server instances, with around 200 CCU limit per map.
    I would have to look it up again, but I believe they achieved around 1000 CCU per world this way at times.

    There's also a very old video of us trying 480 CCU worst case, all in one place like your video. It's laggy as hell, but the server survived just fine.

    Both Inferna and the 480 CCU video use old Mirror & Unity versions. We've had years of improvements since then, both for Mirror, Unity and server hardware.

    We still have plenty of optimizations to squeeze out of Mirror, with another CCU test planned afterwards around the end of this year.

    Keep in mind that your game's complexity is also a huge factor. A 3D physics movement MMO like WoW will be way harder to scale than a 2D click-to-move MMO. For an Indie developer, 2D is really worth considering. It's way cheaper, way easier to make and scales way better due to less complex physics/meshes etc.

    At the end of the day, there's definitely a limit to what we can achieve in MonoBehaviour world.
    For 1500 physics movement players like in WoW, you would definitely need DOTS or a server that does not run in Unity.

    Imho Unity & MonoBehaviour is still a good option. Better to release even a 500 CCU MMO with 250 CCU per instance, than never release a 1500 CCU MMO :)
     
    Last edited: Jun 17, 2021
    Split3 and clauxdatia like this.
Thread Status:
Not open for further replies.