Is it hard to write a MMORPG?

Is it hard to write a MMORPG?

Attached: wow_original.0.0.jpg (1600x900, 162K)

Making a generalization, it's probably the most complex genre of video game to create, but single people have made MMOs before

the simplest game that qualifies as an MMO is a MUD which can easily be written by one person

>multi-user dungeon is the same as MASSIVELY Tip top

you can build a MUD with a server that is designed to scale to 1000s of users
reminder that the game in OP pic isn't even "massive" anymore because everything is instanced off into groups of a few hundred players max

>reminder that the game in OP pic isn't even "massive" anymore because everything is instanced off into groups of a few hundred players max
You sure about that?

Attached: asmonbold.jpg (1185x674, 316K)

The technical problems to making it work are well-solved by now. What's difficult is:
>scaling to more than a few tens of thousands of concurrent users
>making all the graphics, content, art, etc
>stopping cheaters

that IS only a few hundred players

Cheaters in MMOs shouldn't be a problem, it's a strict client-server model with the server handling everything important

I think by cheaters he means bots

Oh well that's just a game design problem, they should stop making braindead MMOs that can be played by computers

Bots are only an issue if your game is badly designed.

Your picture proves the other guy's point. If you'v been watching Asmongold you know he's been talking about sharding forever.

The hardest part is preventing hacks WHILE still delivering optimal performance

all the wow emulators are up on github/gitlab

>Making it sound like wasting time watching some loser play video games is remotely desirable

What's there to write? If it's a grindfest like classic WoW you just need some flavour text via quests to fill out the world and let the players do the rest.

Well I think writing a networking stack and operating enough infrastructure is a large task itself.
So is creating content designed to be addictive and engaging to keep people playing the game for sustained periods of time. It takes a long time to create large digital worlds with lots of things to do.

It's difficult to do anything well and proper.

Having lot of CCU nowadays is not that hard anymore, just use Erlang, and enjoy your 100k CCU. The hardest thing of the networking task is avoiding all case of crash, connection drop, deadlocks, etc, transport part is pretty easy imo

The rate in which you deliver data to those concurrent users also matters, it's not like typical webdev

You're absolutely right, but with all the current documentation about it, in 2~months you can have a """perfect""" transport (if you already have some knowledge about it anyway)

It's not that it's hard to program, it's that the hardware can't handle it
handling concurrent users is an n^2 operation for an MMO, because each user also has to know about every other user

(Oh, and just don't be a dick by wanting to use UDP/RUDP, this is bullshit)

What you're talking about is more about the highest part of net stack, not the transport, and yup, it takes way more time to design, because everything need to be perfect. But your statement is wrong. For example, the position of a user is not needed for players who are not close of him, and he should be the only one to be able to get data from its inventory.

Design it wisely, and everything should be daijoubu

I never said anything about "transport"
Players who aren't close to each other effectively don't matter, they could be on a different server
What matters is the worst case scenario, when all players are within sight of each other, which they have the power to do seeing these are human controlled players who can walk anywhere they want
I remember one of the first WoW events was a server-wide gate opening event and they all crashed because they couldn't handle that many players together, I stopped playing WoW ages ago but they didn't do anything like it since
Not sure how many people together our connections can handle today, modern MMOs are all gay instanced shit and not really massive in any way

>handling concurrent users is an n^2 operation for an MMO
False
Stop being retarded

And there are many ways to avoid hardware issues, such as load-balancing, or even using different server per zone. The most important is to make believe your users that they are in a big open world

That isn't easy or cheap to do though. It's actually quite difficult.

Worse case scenario is they're all standing next to each other and the software has to cope with that. If they're not permitted to do so then they aren't exactly concurrent users

Well, first you don't have to update everything everytime. Nowadays the main issue with worst case scenario is more about graphics, how could your client displays a big amount of player?
For networking part, just don't update everything everytime + pack everything. Put data packets together, don't process useless things, use interpolation, etc.

My bad if you misunderstood, I was talking about CCU on the same server, not about the worst case. For sure, worst case is wayyy harder to handle.
Transport is pretty easy, highest part of the netcode isn't at all

>Nowadays the main issue with worst case scenario is more about graphics, how could your client displays a big amount of player?
A client can draw way more players than you can transmit, a client can draw thousands and thousands of players, depending on the detail of their character. People get the wrong impression here because World of Warcraft doesn't handle this very well. In RTS games you handle big piles of units by just transmitting the orders the player makes, in MMOs you can't do that because each unit is a player and each unit has partial information so you have to inform every player about every other player they can see

8tism
You ever heard of the concept of TICKS?

What does that have to do with anything?

The problem with MMO is not the software itself but the infrastructure it requires.

Well, we're talking about realistic MMORPG, not if it's possible to make a new super-MMORPG

MMORPGs run into problems with concurrent players in real life though, or at least they did

Never said you could handle worst case with only 5ms ping, but atleast you can handle it somewhat

No one can even make a lol clone.

Trust me, LoL uses ENET, which is pretty shitty (atleast for i/o), so it wouldn't be that hard

>Clients send updates to server
>Server processes information and calculates new values
>Server only sends the calculated values X times every second to clients
How in the fuck is this n^2?

If 4 players exist, each player needs to know about the position of all 4 players. 4*4 player updates are sent. If 20 players exist, 20*20 player updates are sent, and so on

But why the fuck would you send their position every second?

I never said anything about the update frequency, it's not a factor here

>But why the fuck would you send their position every second?
that has nothing to do with O(n^2). It is also a stupid question because if they are moving and you are not sending at least one report per second it is going to be one of the shittiest simulations that has ever existed.

idk, maybe you should email this guy and ask

Attached: 1537938964516.jpg (320x348, 18K)

Depends if you consider physics too or no.

Anyway, if you're making a MMO and you're at the point where you're asking yourself "how could I make the perfect movement system to handle hundred of players at the same time at the same place", then I think you're already rich thanks to your game and can enroll people who knows a lot about it.

>4*4 player updates are sent
It's all one state. Not sure why you would needlessly separate relevant information up into 4 parts, it'll just thrash cache on the receiving client and also induce IO overhead

Taking the limits of your network hardware into consideration is probably the first thing you should do when building an MMO
It's not something you can really solve, you're just limited by what the hardware allows
the "solution" is just providing less detail to the player which gimps the game experience

I didn't say anything about the amount of packets sent, I'm talking about the total amount of data that needs to be transmitted. How you divide up the packets is irrelevant

CORRUPTION
REDEMPTION
CORRUPTION
REDEMPTION

gib moni pls

Planetside 2 can handle up to 2000 people on an instance and had over 1000 in an single battle with more complex physics than the vast majority of MMOs before it, it's a solved problem. Most MMOs have virtually no physics anyway, it's just collision for players. Not like they have complex projectile simulations or a massive variety of vehicles relying on internal physics to simulate boat thrasing on a tide or jet propulsion

It's still one state. Not sure why you think each player gets some special personalized update, that basically makes the game logic non-deterministic

So how does Planetside 2 do it? Magic?

>Not sure why you think each player gets some special personalized update
Because each player is only sent data about other objects within their radius, if the player knew everything that was happening on the entire server that would be a massive amount of data to transmit

>that basically makes the game logic non-deterministic
As far as the client is concerned, it is

Each additional player is another socket which must receive an identical report of state changes from the server.

Sending the state to more and more and more clients in the same timeslice is exceedingly difficult. Think about a server sending 20Hz reports. That means the whole state has to be calculated within 20ms AND sent to all players on the server. Easy when it's 10 to 20.

At some point you could saturate your whole time slice with nothing but networking, with no time for the server to even advance the simulation. Just due to the amount of networking usage.

No, good software engineering and modern hardware that eats up compute like candy. It's not 2006 anymore. Most of a modern game's CPU load is just issuing commands to the GPU, which is why consoles can run BFV on a 6 jaguar cores at 1.6ghz. it's literally less than 1/4 the power of a 6-core zen 1, much less an 8 core zen 2

No rules stop all players from collecting in one area where they will all be in proximity to each other.
You cannot always just divide the problem away to different instances when everyone is in the same location at the same time.

That's correct, which is why this is an n^2 problem
But in reality most players are usually scattered all over the place, and NPCs are scattered all over the place too which also need to be transmitted to players, so you only give each player info on what is happening in their radius

For any given world instance processed by the same server, it is responsible for the whole area even if that area is larger than the players receive updates for.

Which means the server is still having to process the simulation and send updates to every single connection. It is O(n^2) In worst case scenario when all players are all within relevancy. Best case it is O(n) Where all players are isolated. You don't program for best case though.

The relevancy isn't a magic bullet because again, it is under the players control not the servers control.

You're absolutely right, never said it was impossible, I even say the opposite since earlier. But it's definitely a lot harder with physics

yeah I agree, I'm not sure what we're arguing about

>Because each player is only sent data about other objects within their radius, if the player knew everything that was happening on the entire server that would be a massive amount of data to transmit

This is a completely different operation that's resolved by a search for entities against the player based on coordinates, not some sort of personalized update for each player against each player.

>As far as the client is concerned, it is
No it's not. That's not even what non-deterministic means. It means it should be perfectly repeatable so that it reaches the same state every time. if clients each got different states you'd have different clients scoring different kills. That's not how games work, they have to be deterministic otherwise you have player A and player B killing each other on their own screens with two different states coming from server. The reason why multiplayer games have almost 0 logically relevant physics is because it's not deterministic, which is also why GPU physics is just a gimmick. Games like Battlefield, the "destruction" logic is all scripted, all of it, the physics of debris is for show, it's not consistent between clients and has no impact on the gameplay. You can't have different clients getting different states from the server, the point of the server is to resolve any differences and maintain one state for everyone so everyone plays the same game

>That's correct, which is why this is an n^2 problem
Everything gets an update if it changed. The only difference is in reporting. You're not updating n^2 times. I'm not sure what you're thinking would be updated n^2 times

Each player recieves a personal update based on their immediate surroundings. I'm not sure what you're trying to say
In a client/server model, the only thing that matters is what is happening on the server. From the clients perspective, what is going on is completely non-deterministic, it may receieve correct updates from the host, corrupted updates, delayed updates, or none at all, the client just does its best with what it's given

Just discussing it then. It is an impressive problem to solve. The internet is full of latency, dropped, and disordered packets. It's amazing how well it can be swept under the rug and hidden.

Interpolation, Extrapolation, Dead reckoning, recording inputs and replaying unacked inputs back to the server to re-sync the client position without rubber banding. I'm working with an engine trying to improve the network because under packet loss and latency it rubberbands the shit out of you, when I know it can do better and make it feel much smoother.

It's really tough just to make it feel smooth, even when not worrying about scale at all. There is nothing easy about networking except giving up.

I'm talking about reporting. That's the network bottleneck. Updating entites on the server is trivial

Yes, easily and in 1 afternoon and it can support at least 1k people. Having it be a AAA rated video game that can support 100 people on the other hand.....that is fucking difficult. You need to scale your own goal accordingly.

Attached: tomenet-review-online-roguelike.jpg (1273x747, 670K)

One client is connected.
The server receives input from 1 client and sends updates to 1 client.
100 clients are connected. The server receives input from 100 clients and sends updates to 100 clients.

Thinking about this more, it is O(n) It scales linear with the amount of clients The server is not p2p and clients only send inputs, the server tracks the complete state and sends pertinent updates to clients for their local approximation simulation.

O(n*2) is still just O(n). You are right.

It's as hard as pissing on your two fingers. In other words: it's piss easy.

Attached: vlcsnap-2017-03-30-23h09m17s220.thumb.png.931833a758b4def4498cdefc757913f7.png (500x281, 202K)

>Each player recieves a personal update based on their immediate surroundings
This literally doesn't happen. It's one update for all objects that need to be updated.

>From the clients perspective, what is going on is completely non-deterministic
Non-deterministic doesn't mean error free due to external factors retard. Jesus Christ am I talking to a rock? If the input is the same the algorithm returns the the same output every time, that's already accounting for errors from external corruption Simple physics actually will work, what won't work is stuff like physx because it's parallel and asynchronous, so the DESIGN cannot be counted on. You're not going to say basic integer math, 1+1 isn't non-deterministic because memory could be corrupted. Same goes for flaoting point that adheres to a standard. But you could say that floating point math that doesn't adhere to a standard could possibly be non-deterministic.

Infrastructure may be a problem but the software is a MASSIVE problem.

>This literally doesn't happen. It's one update for all objects that need to be updated.
Not true. Network relevancy is used all the time with a simple radius distance check.

You don't receive updates to objects much too far away from you. In an open world game with kilometers of world, you only receive updates in a radius relative to yourself.

Its not too hard, the problem is how hard is it to write an efficient MMORPG? In this case, its hard.

The server/client is simple. Optimization is hard. Art/Modeling is hard. Sfx/music is hard. Story/voice acting is hard.

I think you are confusing what I mean by "update". I meant update as in, the host sends the client an update throught the network on the game state. Non-deterministic means you can't determine something. The client can't determine what the host is going to do, it can only predict with heuristics. You don't sound like you're an expert on the subject so maybe you should try to understand other people first

>Story/voice acting is hard.

>reminder that the game in OP pic isn't even "massive" anymore because everything is instanced off into groups of a few hundred players max
That's few factors larger than any non-MMO game.

in games determinism has a different meaning. It essentially means given identical inputs you will receive identical outputs.

I didn't read anything on your discussion I'm just explaining that in the game world it has a special definition.

>>Story/voice acting is hard.
It is hard. Making a product feel complete and not like a bunch of pieces glued together is very difficult. Throwing more people and more money at it doesn't make that any easier, it actually makes it more difficult. A directors job is to have a vision for the complete product and coordinate everyone else and their content to all fit together perfectly.

It isn't easy at all, and when it fails it shows big time. When you are successful it's completely invisible all the effort that went into making it work and people just say yeah well you had lots of money.

This is the meaning of deterministic for all of math...

semantics. not interested. bye.

>in games determinism has a different meaning.
"determinism" does not have one fixed meaning in the context of video games you fucking brainlet, stop acting like because you understand one thing you understand everything
I use the term non-deterministic to describe non-deterministic things whenever they appear

ur mad and have SBS. Learn what a deterministic simulation is before you start trying to pretend like having a language degree makes you smart and not just a pedantic idiot without a job.

I know what a deterministic simulation is, the problem is you ONLY know what a deterministic simulation is and think that's the only place in a video game where you would use the term "non-deterministic". You're wrong. I don't have a language degree

stop telling me what I think, you don't know what I think and you didn't ask. You are just fabricating an argument and framing me, because you have SBS and a small pee pee.

It's obvious what you think because you didn't understand it when I used the term in a context you weren't familiar with. Instead of being a man and admitting your mistake you're trying to save face

Kys blizzard shill