Rei Ayanami wrote:The only way i could think of right now for having multiplayer in an X game, where all AI ships are constantly being simulated, would be to have a MMO-like server structure with dedicated "sector servers", where each server is responsible for a few sectors and players are connected to the sector server their current sector belongs to.
And if the player opens the map he'll get updated map data every second or so from the other servers.
But that would, in the end, a game structure of a full-blown MMO and would be unlikely to work as a single player game.
Doomdog19 wrote:I vote yes to P2P invite multiplayer but not at launch. This is something that can be added later in down the line. Personally would prefer to have a solid single player game with P2P multiplayer invites patched in later.
For many games it's incredibly difficult, if not almost impossible without rewriting more than half of the games code, to convert a complex single player game such as X into a multiplayer game, because the game is probably written in such a way that it assumes that there is only one possible player.
I don't know how X4 is written, but lets take a quick pseudocode example how the placer recieving money could work:
Code: Select all
function NPC::GiveMoney(moneyamount)
GetPlayer()->AddMoneyToAccount(moneyamount)
end
As a singleplayer game this is easy : We get the player object, of which in a singleplayer game only one exists so it's easy and fast to get and without ambiguity, and call a function which adds a certain amount of money to the players account.
In a multiplayer game this becomes alot more complicated:
Where is the information of all players saved?
How is this player information managed?
Which player is the host and has authority over other players accounts and how do we verify if he actually has the right to that authority?
How do we retrieve player information in a performant manner?
How do we determine if the player info that is saved is an active player or a player that is currently logged out?
Which player object are we supposed to get, aka how is it determined which player should get the money?
How do we determine if the chosen player is actually allowed to get that money, aka prevent cheating or mistakes?
What happens if a disconnect happens during the money transaction?
And that's probably not even half of the problems that would need to be solved for something simple as a money transfer.
As you can see adding multiplayer adds a whole new level of complexity to even simple functions like adding money to a players account. With other, more complex features like AI syncing, building stations, etc it would be a nightmare to convert singleplayer X to multiplayer X. And i won't even begin to talk about bugtesting.
In my experience forcibly shoving multiplayer into a singleplayer game/engine usually has alot of complications and for proper multiplayer a game needs to be written for multiplayer from the very beginning.
EDIT: That doesn't mean that i'm against X multiplayer, i'd love to be able to play X with other players but at the moment it just doesn't seem realistic to just have it added with an update or with the current engine.
Thats why i only suggested the limited coop MP there is not multiple players, there is only one player for the core of the game, the other clients just control a part of it, like another ship under my property, instead of having the AI to fly it.
Actually you could do this on X3 if in some way if you could seperate the controls for ships on the left and right monitors, never checked if a mod supported this. X3 was already close to supporting "Local/Split Screen MP", imagine having 2 extra joysticks and having able to set each one to ONLY control wharever was selected on the Left or Right monitor, thats local MP... on X3.
Now imagine to be able to route those 2 monitor to 2 real physical monitors instead of sharing the main screen, and being able to open UI menus on them to control property, etc...
Thats more like the kind of coop im talking about, on a local level.
As for sync, the easier solution for a first test run iteration i can think of, is not doing it at all, meaning, cheat it, video and input streaming. It whould work, quite well for LAN and high speed wan with low ping. This is certanly possible today.
That also means the max number of players will be limited to something like 2 to 4 as the absolutely max due to the high workload of the host gpu and internet.
NOW, for a option of a real MP mode means sync everything, coop only also gives some avantages to you here, for example, you can trust clients to do in-sector calculations if they are in diferent sectors so if you are alone in a sector you only need to send position of ships/stations and stats to the rest. And everything else is like as it will be on SP.
This opens the way to cheating but as coop you dont really care about it.
OOS is done by host and send the info to clients.
The mayor bottleneck is what to do with multiple clients in the same sector, this means 1 client acts as the sector host and sends/recive all data to everyone else.
So to clearify, the conventional MP mode that could for for a X game to me, is having a dedicated server (separated program that anyone could run to mount a server), the dedicated server does all OOS simulation and sync, when a player join in, that player acts as the sector host, so wharever sector he is in, he is the host for that sector, that player pc does all the simulation for wharever happening on his sector and sends the data to the server so it acts as OOS info for any other player.
When another player enters a sector already "hosted" by another player, those 2 players sends the data directly to each one.
This is the only way i could see it work and you could only do this in coop, this is not valid for a competitive MP or any other kind of MP as cheating will be a issue.
But im petty sure all of that is way more complicated that it sounds. Personally i whould be just be happy with a first iteration of the "fake mp", 2-4 players and video and input streaming over a network. the problem here is... they cant sell that as "Supporting MP", maybe only as a 4-player LAN MP.
I could already do that on X3 manually if i had a way to map controls to each ship on the left/right monitor separately. Well i whould also need to send those monitors to real physical monitors so i could encode and stream.