The most people with FPS mechanics in the same space at the same time was probably MAG (Massive Action Game) for the PS/3. I think they topped out at 256 players. Just rendering that many animated characters is a significant tax on a GPU and CPU; the game design was such that it was generally a bad idea to try to push too many people into the same physical area, so you never actually saw that many at the same time. MAG was made by Zipper Interactive, which was … 50+ people? Something like that. Certainly if you include the support they got from Sony.
Going to 1,000 people on the same server at the same time would probably be technically possible today, assuming you know how to farm physics simulation across multiple cores efficiently. (That’s actually a hard problem – doesn’t come for free with most of the current physics packages.) Then you need to network all of that data, which may be a problem for players on smaller network pipes. Then you need to render it all, which really will be a problem, unless you design the game to not actually require that many people, all in one place, at the same time.
So, developing ultra-optimized character rendering, server physics simulation, and network optimization, each of them at a technology level that’s leading the industry today, is a pre-requisite for what I hear about this game idea. Add a large roaming open world, which in itself is a large undertaking (not the least of which is all the art you need!)
Telling one person, who has never developed a game before in their life, that they can do this, is not doing anyone any favors.
“Can” it be done? Yes, probably, for sufficiently low bar values of “can.” Would 1,000 people actually want to play it when it was “done”? Signs point to “no.”
That’s like saying “I’ve never exercised in my life, but I will run a Marathon today! And it will be OK, because I will just break it up into 400 separate 100-meter dashes!”
The way to mastery goes through deliberate practice. Achieving big goals requires much more grit and postponed rewards than it requires back slaps or strokes of genius.
1,000 players, wont happen. Not in a default unreal engine. Don’t pretend it will, it wont. You would need to drop so much money on a server/network solution it would be equal to the cost of the rest of the game. You would also need a fully dedicated server for this, and, again, thats certainly NOT going to happen (and be scalable). Lets say you have 50,000 people playing your game, thats 50 of “todays” best server hardware available and all 100% dedicated to JUST your project. Its, well, not impossible, implausible.
World size via streaming can be infinity km … level streaming is what you want. That’s 1% of what you need to know tho. I don’t want to sugar coat this and make it seem like this is an easy task.
As for the rest of all the questions, not to sound like a snobby jerk here … but, you obviously have about an hour spent with unreal engine. If your asking how to place foliage, then, you need way way way more experience. Please, for the love of god, dont make an “open world multiplayer game” for your first project. If you do, hire me, so, i can soak hundreds of thousands of $$ of funding before you realize this is a much bigger task then you are ready for.
What you need:
min 50k of money to toss in the trash. Yup, 100% ready to lose that money, because, you will. Either in completion of 1/10th of what you wanted, or, just ending the project due to scale.
Want to save yourself some money? Get your own mapper, blueprinter, c++ coder, environment designer, sound producer … what else …there is a lot more i cant think of off the top of my head, but thats a good start. Don’t forget, tell them they are all working for the next year for free. The hope is the project takes off and someone gets paid.
You will also need countless hours … i mean, thousands of them, to complete this. This will be your full time job. Also, you wont be getting paid, so, keep that in mind. Or, get a full time job to cover bills, like the rest of the team, and spend an hour or 2 per day working on it.
That’s just the tip of the iceberg. Again, I, unlike some, will not sugar coat this for you and be like “oh yeah totes doable!!!”. You wont get that from me. I know because for the last year, i have been doing this. All the above, I am doing. Its working for me, but, I got VERY lucky… after being very unlucky for the last year. Whats saved me is ppl in my life dumping hundreds of thousands of $$ into this project for me for a % cut in the end … with stipulations of no payout on fail. Only reason I am able to do this is being they are friends of the family.
Do yourself a massive favor … start small, linear, single player … if that takes you 3 months to make something, even if its not for a market, at least your learning.
“It takes 10,000 hours to be an expert at anything”. Keep that in mind. As ppl have stated, we see kids come here all the time and say “i have just installed UE4 and now i want to build World of Warcraft!” and, because we know, its a bit of a laugh. We all want to, but, we know the realistic side of it.
Don’t think its impossible, but, remember, companies spend millions not just because they want to over charge for programmers and all that, but, because that is what it costs. Oh, last thing, ignore the marketplace, because, you will NEVER use stuff from there to build a legit game. Maybe the ideas and functionality behind some things … but … if anyone has tried to tie together like 3 or 5 things from there, haha, nightmare.
Holy thread necromancy! Too bad the thread wasn’t declared as UObject, it would have been garbage collected by now.
A server is not a magic feat of amazing million dollar companies. The capability of a server, on a high level, depends on a few very simple factors:
The routing leading into it
Since 2 is a dime / dozen in 2016, that leaves 1 and 3.
This is your responsibility. The only things servers on that scale should be doing are movement (very simple, not full-on replication of 1/20000 radian) and action requests by players.
You need to have pipes well-organized and large enough to get the data for 1. in and out.
Of course there are many other niggling factors, but those are the main ones for a server.
The stock UE4 server is incredibly powerful if you use it right. Whenever people post saying “some optimizations” etc. They are mainly referring to the high level of precision that the UE4 server is by-default geared to do. For something on an MMO scale, you really only need to replicate a few types of things. For example the UE4 server and clients will automatically load all connected characters. This obviously needs to be changed. You’ll probably want to at some point bundle the netcode into a special, lighter packet. Nothing too insane there. You’ll want to dumb down the movement replication of characters. This can be done by avoiding UE4 builtins entirely or modifying them via plugin.
I guess I have to say that hyperbolic assumptions are a bit unnecessary in a forum dedicated to creation and dreams. If they want to make a giant open world game, who are we to stop them? They will learn by trial soon enough the cost of allowing so many users to talk to one box. I’d pin the stock UE4 server, with conservative replication code at about 250-300 users on a solid dedicated server. After that you’ll need to start making some changes.
As an aside: Pretty sure we’re all theory-crafting here friend. As for anecdotal experience… I’ve built servers outside of UE that handled well over 10k concurrent, so I do have experience there, and some of the pitfalls.
It’s easy to think that “server performance is a dime a dozen” today, but there exists a brick wall where you will basically not be able to climb it, no matter the amount of money you have.
For anything that is single threaded, once you hit the maximum single-threaded performance achievable, nothing you do will let you run faster than that. There are parts of Unreal Engine that are single-threaded.
For anything multi-threaded, but using shared memory (single process,) once you saturate your memory bus or L3 cache, no amount of money will allow you to run faster than that.
Do you think that the fastest available Xeon CPU today will be able to run physics for 1000 people in the Unreal Engine? Note that physics, worst case, scales like N-squared, because when all the players want to be in the same auction house / city square, they are all potentially colliding with each other, and you get up to 1,000,000 player/player intersection tests.
If you can separate your workload into multiple, smaller, servers, then scaling out is really cheap. But, unfortunately, shared-instance Unreal Engine games (or shared-instance any games, really) aren’t one of those use cases.
If you can buy a really fast server and cram everybody into that, and it keeps up, then you’re in luck! You have a solution! All you need to do is to find a co-location facility, buy a couple of that servers (for backup,) wire up a commercial ISP, and you’re in business!
If not, then you need to re-architect your physical simulation to be shardable across systems, which will add literally millions of dollars to your development cost once you’re all done and shipped.
Large companies have lots of overhead (legal, HR, admin, etc.) But, the leaders of those companies are not stupid. The reason large games need all that overhead is that development overhead scales close to N-squared with number of people/groups involved, because each group needs to interact with each other group (QA with code with art with design with localization with audio with …)
Saying that you can develop a game as big as GTA V cheaply “because you’re indie” simply doesn’t work. Those saying you should ignore this fact and believe in your dream, are like those kid’s show sparkly unicorns that think schoolyard bullying can be solved by respectful dialogue.
I understand, and, i dont mean to be argumentative in the conversation, i just wanted to make a clear “line in the sand” for expectations. I have built several server that hold thousands as well, just, not in UE. From my understanding, and, seeing trials there of, that’s a number that has yet to be reached, or even near that number.
If you try to do ~ real ~ physics in an MMO you have bigger problems than server management ;). Deterministic physics with inputs only sent is really the viable choice, and UE doesn’t have deterministic equations by default iirc.
The approach I’ve been taking is a custom node.js server cluster for different mutually exclusive data sets (and transaction locking for linked types), and a movement server per zone with cross-connect master-slave periods and eventual handoff.
I’d say a large part of AAA mmo’s budget goes to QA and initial networking yes. (Though if you look at breakdowns in recent years tons of money is wasted on core system redesigns and technical oversights that are pretty face-palmable)
Yeah, by default I still stand that it could probably do 250-300 with conservative netcode - but it really depends on how much you are asking the server to do.
This also largely depends on your authority method. If you are client trusted (even with a warden) its very breezy to do alot of physics. If you are server-authority on all replication, and not just parroting vetted data, then the cost is much higher
Having spent a fair bit of time building just that in a past life, I would disagree. I would not do it that way again.
There are a host of problems with deterministic simulation in the context of a MMO:
Late joiners! They need to know the state of the objects in the world to be able to deterministically simulate. And in an MMO, everybody is a late joiner.
Latency management! To be 100% deterministic, you need to delay all command execution until you have received commands for all other players, or you run into:
Player/player interaction! Entities on your machine are delayed compared to server time; your player pawn is ahead compared to server time. Managing this leads to:
Lots of sever memory for entities! Keeping a long log of all the state of each entity ends up eating through the ol’ RAM. Interactions at some step number in the past means pessimal cache behavior. And you can’t use:
Global constraint solvers for physics! The “big matrix” solver doesn’t work, because each entity has a different point of view of time, and the server and client need to agree on what simulation for time step T looks like.
If you send position/velocity/state updates, rather than doing deterministic simulation, and do simple wall-collision and speed-of-travel checks on the server, that seems to be the sweet spot for MMOs.
This also means that MMOs need “click to target” mechanics, not first-person-shooter mechanics, to use that mechanism.
If you do a FPS, you will end up with a model somewhere in the Unreal - to - CounterStrike spectrum, using server-side physics, and some kind of latency compensation, but NOT deterministic simulation.
Unreals main problem, IMO, is the non-fixed tick/frame rate. If physics and input ran at a fixed rate (144 Hz or whatever) and display ran at whatever-speed-can-be-achieved, you would have a bigger set of chocies for how to network your game using native Unreal physics/netcode. As it is, you get what you get.
Deterministic simulation is great for RTS games, and probably a good choice for click-to-act action RPGs with a small number of users. Also, could work for space ship sims, where the controls are naturally laggy, because of inertia, and where there is almost always clear spearation between the entities (actual player/player collisions are very rare.)
Just a quick question on this, as it was my understanding java only is able to do single core and not able to multi-thread. Is that the case, or, is it the case but it acts differently in UE ? Maybe it wouldn’t matter in this application for needing more then 1 core to deal with anything … not sure …
Node.js is a lightweight pseudo-js language that maps pretty directly to C++. Yes, it multi-cores just fine and is extremely scalable. It’s been a go-to for years now for custom servers. Remember Node.js != Java - they are two separate things.
Iam a former Chief Creative Officer at UBI. We have people who working 24/7 only on maps and placing foliage. Other people are just placing environment, and than others include NPC and the daily routines. 1 person CANT create a open world game with AAA quality. Sorry to say but without budget, and man power you should stick to crossy roads (even that took 3 guys).
What about “Lost soul aside” , Yes given, It is not a MMO, but his approach was to build his own game solo, spent 2yrs working on it, released a video of it and “BAM!” dudes got a team and sponsorship from Sony, He had a dream, committed to it, and look where it got him… DREAM BIG PEOPLE. Corporate world holds you down, If I had listened to my teachers in school, I would be working for some design firm with a boss instead of freelancing right out the gate, anything is possible. Enjoy life, take it by the horns, work hard at what you want to do, and never give up. Now I will say, an MMO, is pushing it but either way, do what you do, have fun, try hard, fail at things, learn stuff, move on and good luck.
Humm well the idea of having an open world that supports 1000 players out of the box is assuming that there will be 1000 players to begin with and more important able to keep the player base after the shinny wears off.
As an example of a complete and utter failure just look at what happen to No Man Sky
In theory you can build as large as an environment as you wish, progressive loading is an option?, but the back end costs are going to be massive. The electric bill alone would bankrupt ya.
Archeage is to have 500k plus/ What I read and when you play the world there no load screens. I play it. Now to the fact if %00k plays at one time that I doubt but they have a higer input than ESO cause the in game war is a beast not lie ESO and I been there at ESO the opening days before released and that was a night mare. Archeage when opening too snout a month to get in lol I heard Rush the game is the Largest land based game out. But think about it. The term Largest grows into a sand kernel compared to No man sky and Eve and may others.