So currently i’m making a multiplayer game, which requires a data base to save the current inventory when the player logs out so that when they log back in it knows what
they had last time. After some thinking i thought, could the following work/what are the complications; I currently have the server doing ALL the calculations thankfully
and the client just calls server rpc’s to move etc, could i just add WITHIN a server rpc to fetch “steam name’s” inventory data on begin play (server -> database).
is that a good method? if not what would work better?
Is it bad to fetch data based off of steam name or steam id?
P.S. I have no current knowledge on php or sql but i will learn it if i have to. Thanks.
I guess “MMO Game” means something like WoW. If that’s the case: I hope you are aware that the UE4 dedicated server isn’t capable of serving hundreds/thousands of players simultaneously. And there are other limitations concerning large open multiplayer worlds.
Anyway, to your question:
You can modify the server to connect to a database or some web service (there is even a plugin called VaREST for connecting to RESTful services using blueprints). But you will need to write some (C++) code.
You can have have more per server then 64. Look at the MMOKit they have tested with 400+ players per dedicated server. Also look at Ark, there are 150+ player Ark servers. So no UE4 Dedicated servers are not limited to 64 players only.
You can’t generalize the Player Limit like this guys.
If you have a game with only a few replicated things and poor graphics, then it can take up a lot of Players.
But if you start building a really large MMO where tons of data is shifted and replicated + good graphics, then we reach the player limit pretty fast, since it shrinks down
You should also be aware of Dedicated servers no being able to have more than 1 map open at a time.
Sure you can work with streaming levels, but if you have dungeons with instances, then the servers already reached their end.
They are not designed to be used as MMO servers. If you want to build a good and stable MMO, you will most likely write your own Server application sooner or later.
Why does client-side graphics rendering affect a server?
Why does having more replicated data lower the player limit, i thought that if the server hardware can handle it it should be fine?
Also not to be rude or anything but i thought epic are/should be making the best of the best? (Next-gen etc…) why are developers forced to write a server application to bring it up to high standards?
(again, not firing shots or anything. but from a noob standpoint it kind of looks that way, would you be willing to explain why this is the case)
you are confusing ‘high standards’ with ‘specialized’. An MMO server is a highly specialized type of server archetecture. You cannot, for instance expect to take an FPS engine and tell it ‘just stitch these levels together with 10x the players’ and expect it to work as they are 2 very different use cases with respect to replication strategy and synching strategy. UE has done a good job at a generic server arch that serves a pretty wide variety of games. IMO the best post on the subject is: Atlas MMO Framework? - Feedback for Unreal Engine team - Unreal Engine Forums
read what Tim Sweeney spoke of especially '1. Implementing a completely custom MMO back-end framework handling all gameplay logic including object movement, and interfacing it with UE through networking: The client purely runs in UE, and the server purely runs outside of UE, and they are coordinated through a custom networking layer using either UDP or TCP. This approach is generally best for MMOs looking to support thousands of players per server, where UE’s high-precision approach to player movement and collision are overly-expensive compared to tile maps and other simplified techniques.
Using UE’s built-in functionality for implementing both the client and server components of an MMO, and extending the networking and level streaming code to support new features such as simultaneous connections to multiple servers responsible for separate streaming levels, and coordination between servers to allow seamless movement of actors between them.
NCSoft took approach 1 with Lineage 2 and various other projects, while Sigil Games took approach 2 with Vanguard. For a small project, I’d recommend approach 2, as it’s easy to get up and running in a prototype prior to making engine-level improvements needed for scalability.’
if you played (or tried to play) Vanguard with the lag, you will see why its generally not a good idea to use the ‘standard dedicated server’ with an mmo.
This is not entirely 100% true with the 65 Player Limit. We have easily got upwards of 400-450 players without any networking changes in the unreal engine.
Of course if you just replicate everything then you are going to run into a networking limit but that does not put a hard cap on how many players you have.
There is zero hard cap on how many players UE4 can handle. The .ini config file has a number that you can easily put at anything you want… You could set it to 100,000 and then you are literly limited by nothing more then the hardware you have the server running on.
UE3/UDK had a limit of 64 players but long gone are them days. So lets please not give out false information about a hard limit of 64 players. This is just pure silly ness. I am look at the MMO Kit using stock everything in blueprints and there tests pushed 400+ players on a server. There is no hard set limit.
Also as far as the one map open on a dedicated server that is true. But there are many MMO’s that use zones and having just a single map per dedicated server is not a problem if you go this approach. (GW2, EQ2, EQ1, just to name a few all use the zone based approach and that works just fine with stock UE4 setup)