For my concept, I need a lot of involvement with other players, these can be AI or real players.
There must be other real players, but I was thinking, I could tone down the amount of players required by having a bunch of AIs. What I was wondering is, is it more difficult to code a network that accommodates hundreds of players in a map, or is it easier to code to have lets say 30 - 50 players, and then 200 - 300 AI roaming it?
In terms of how the client sees AI vs Players, is one better than the other in terms of FPS, ping etc?
Let’s say this is on a 4km by 4km map, riddled with forests, mountains and 2 cities with a few smaller camps.
Let’s say I need 500 people to make it seem alive and realistic. Would it be easier to code it so that 500 online players can be on this map at the same time. or would it be easier for it to have 100 online players and 400 AI.
That’s what I don’t get, I used to work with a private server that I later on realized was illegal, but either way, the server was run on a 150$ dedicated server, and could easily handle 2000 people online at a time… with barely any lag. It is an old game too, called “Shaiya”.
How does such a cheap game originally designed in Unity run 2000 players easily, and with a proper server over 20,000 players and I can’t even have 500?
From the looks of it Shaiya doesn’t use any server side collision, ray casting or hit detection. The combat is calculated by the server in turns. Meaning the AI isn’t doing anything exceptional. The game uses a predetermined number to find out if you are hit or not. It isn’t running a physical simulation or relying on extensive data from the client.
It’s essentially a 2D game that looks 3D, a lot of MMORPGs are like this.
It’s a really hard question to answer without knowing what type of game you are making and what you expect. If you are making a game where the combat relies on a number in a database, you are going to be able to fake more. If you want something that relies on player interaction and skill- that’s going to be much harder.
There is a reason there are not a lot of FPS games with more than 64 players in a single environment.
You could remove those elements or tone them down but it would take significant work, most likely an engineer with knowledge of the source.
Well considering there is a buddy AI system in my concept. As in each player has up to a squad of 5 AIs by their side. I only need around 30 - 50 players in 1 environment fighting, since that can end up with up to 150 - 250 people (but AIs will rarely be there, so most likely only up to 100 people) fighting.
I am wondering though, for things like main cities etc, to be alive they need to have a lot of players in them, in ESO, Shaiya etc, you can easily seem to fit 100+ people into a town, sometimes it seems more like 200 - 300 inside of a larger town. How do I do that?
Learn C++ or hire a network programmer to change the limitations. Aggressive culling of player models and lods. Is the short answer. There is no plug and play solution. There is no tutorial or secret switch. To do what you are talking about will take a few engineers who really know their **** to pull off plus some technical artists who also know their ****.
UE4 is a great engine but the further you push it from what it was built for the harder it is going to be to accomplish that goal.
I understand that, I am also wondering, is there a way to see what other games have done in terms of networking using emulators? Not to “steal” anything, just to have a peak. I would be interested, ESO, GW2 pull it off quite well.
Of course custom coding it from scratch is impossible. I am talking about using 3rd party plugins/softwares, and several thousands of $ to get it done as well as possible. The more players can play the more revenue/realism it adds.
FPS is affected by the number of objects that need to be gone through, the materials on those objects, how the LOD is set up, etc. All of these are well understood problems and solvable by you.
Ping depends on how your server network connections are setup, how many hops between the server and the client, and how much data needs to be sent to the client each frame. While some of these things are under yoru control, a lot are not. If someone is running a torrent client on the same subnet as your player, his ping is going to be all over the place and there is nothing you can do.
It really depends on how complex the interactions are. If all 500 players are sitting around playing checkers, the amount of new information that goes from server to client is small and all 500 can be real. If they’re playing a complex game with lot’s of interaction and real-world physics, like the Arma series or Dayz, the number of players that can play on a server goes down to the 50 range.
On the other hand, “realistic” AI is an impossible problem today at almost any level of game development today. Players quickly recognize when a avatar is computer controlled vs player controlled so replacing 400 players with AIs may or may not work for you. AiGameDev provides a lot of information about what’s current in the Game AI world
The only real answer is to run tests and see what really works. Between the new landsacpe model, FP and TP samples and other tools, you already have enough to put together a basic template of your game and try things out.
Thanks, that’s true. I don’t understand how a game like Shaiya can have so many people in 1 place, probably because it doesn’t have a lot of complex interactions like you said. If I wanted interactions on a RUST level I hope I can fit a fair amount of people.
I mean it has 256 on 1 server which is run by the client, so hopefully if you have a good server budget I can fit that many onto a map.
Can your afford the technical talent needed to implement something like Rust or Shaiya? These aren’t coded with off-the-shelf middleware, they have talented people working on the engine, AI and networking code to make this happen and talented game programmers don’t come cheap.
There simply will not be an easy plug and play solution to networking hundreds of players. Paradigm shifts like that in development don’t come fast. They come very slow if at all. I can’t think of any development area that has been outmoded, most of them have become more complex if anything.
My advice- contact some programmers and ask them for quotes on implementing something like Raknet with the UE 4 source to create a dedicated server that can handle hundreds of connections and player interactions in one place. You’ll have your answer then.