Thoughts on multiplayer

Everything having to do with OpenMW's TES3MP branch.
ezze
Posts: 513
Joined: 21 Nov 2013, 13:20

Re: Thoughts on multiplayer

Post by ezze »

It does look good. Good job!
In the reddit site they say the author is koncord; does anyone know more?
User avatar
Pop000100
Posts: 82
Joined: 18 Aug 2014, 21:17
Location: Loitering around Gnisis.

Re: Thoughts on multiplayer

Post by Pop000100 »

Man this is exciting, anyway he posted a new video here
ezze
Posts: 513
Joined: 21 Nov 2013, 13:20

Re: Thoughts on multiplayer

Post by ezze »

In one comments the author confirms he (she?) is koncord99 and he mentions he is on Facebook and vk.com .
Cruud
Posts: 2
Joined: 21 Feb 2016, 12:14

Re: Thoughts on multiplayer

Post by Cruud »

Would it be possible to make a script to set a "camera" on the npc in player1's game, so that player2 can minimize his game and play through a local screencapture of what his npc copy is seeing in player1's game? (no delay atleast locally?) So now both can see the same monsters, etc. and while you hit air in the game that is running in the background, you hit the enemies as the npc in the other player's game. Player1 would do the quests but you can see the same dialog boxes too, so it would be kinda like playing the same quests together.

Ofc there are problems you can see with this:
1. Monsters in player2's game will kill him while he is playing through the screencapture
*For this you could make him invulnerable/unnoticeable in the game, killable as the npc. (or whatever)

2. Player2 can't interact with npc's,
*When you need to fast-travel or buy gear make a button to minimize/fade screencapture, and see your own game instead.

3. Player2 is not getting gear or exp from fighting enemies.
*Do some kind of code to copy the same amount of gear,exp,loot from player1 to player2.

This could be alternative worth testing with potentially 90% less work?

Edit: don't know if he (Stanislav Zhukov) is working on a project that would allow both players to interact with the world, see and fight the same enemies but the suggestion above could be one way even if it sounds a bit ridiculous. However if his project has such synchronization, beautiful. As someone suggested, if it's local multiplayer, using steam out-of-home streaming w/ evolve can bring it online for 2 players.
User avatar
Azlidor
Posts: 35
Joined: 22 Sep 2013, 00:32

Re: Thoughts on multiplayer

Post by Azlidor »

It's an interesting thought.

1. Quests would be extremely difficult to correctly trigger for both people. I'm not sure that the current way Morrowind scripting triggers quests/dialogue, would allow people would be able to successfully play independently within the same world.

2. World changes would be a mess to figure out. For example, if somebody successfully removed the ash storms from the Ashlands, would both players not see ash storms? Or would it independently render for each player depending on where they are in the main quest? The same would apply to anything like the Mournhold plaza entrance for the Dwarven ruins or the statue you help build to acquire Goldbrand.

3. What happens when a player dies or for whatever reason decides to reload the game? Is the other player forced to reload as well to a time stamped load point? Or is it somehow supposed to load completely different gamestates per player?

4. The same applies to resting. Will one player just have to sit in limbo for 8 in-game hours because he decided to rest, while the other player actually plays through those 8 in-game hours?

While multiplayer Morrowind seems interesting, I think there is way too much that would have to be reconfigured for the game in order for it to seamlessly work.
Cruud
Posts: 2
Joined: 21 Feb 2016, 12:14

Re: Thoughts on multiplayer

Post by Cruud »

Yeah. The camera trick would bypass most of that reconfiguring work but i don't have the knowledge if it's possible or not. And if you think about it, they might have already done plenty of harder things than simply placing some kind of screencapture code in position of an npc and then sending that data to other pc. (the camera turns when the npc turns) This way only 1 player interacts with the quests but the other player can still see the dialog boxes, travel with you and help in the actual fights which is already enough for me personally.
User avatar
psi29a
Posts: 5356
Joined: 29 Sep 2011, 10:13
Location: Belgium
Gitlab profile: https://gitlab.com/psi29a/
Contact:

Re: Thoughts on multiplayer

Post by psi29a »

Did some digging around and found this:

https://twitter.com/tes3mp
Jan 27
Almost finished rewriting the code server-client model.
While the server only runs on Linux (Debian / Ubuntu) machines.

The server supports x64 systems.
Server extensions can be written on the Pawn and C++.
This website was also registered:
http://tes3mp.com/

By Pawn, I think it might be this:
http://www.compuphase.com/pawn/pawn.htm


Over at PC Gamer, in the article's comment section:
http://www.pcgamer.com/morrowind-multip ... -progress/
Will Garcia • 2 months ago
Great stuff. Can anyone help in development?

Stanislav Zhukov • 2 months ago
Not at the moment, I'm trying to finish syncing players without unnecessary complications. Later, code will be available under the same license as the OpenMW.
User avatar
lysol
Posts: 1513
Joined: 26 Mar 2013, 01:48
Location: Sweden

Re: Thoughts on multiplayer

Post by lysol »

psi29a wrote:
Will Garcia • 2 months ago
Great stuff. Can anyone help in development?

Stanislav Zhukov • 2 months ago
Not at the moment, I'm trying to finish syncing players without unnecessary complications. Later, code will be available under the same license as the OpenMW.
Well that was good news at least.
User avatar
Methelina
Posts: 34
Joined: 22 Aug 2016, 09:21
Contact:

Re: Thoughts on multiplayer

Post by Methelina »

Bret, i post here a link of proto we used, as u asked me :D
Here you are https://github.com/networkprotocol/libyojimbo
User avatar
Methelina
Posts: 34
Joined: 22 Aug 2016, 09:21
Contact:

Re: Thoughts on multiplayer

Post by Methelina »

Here i share some ideas and resolvs.

Host and none-host player-reference
Its a basic concept for multiplayer adaptation of the singleplayer game with heavy player-referenced data and scripts.
Host-player - its and original player that have all rights and manifistations to the core level of the game logic - it play as intended. player.X
None-Host Player. Its a special referenced player, that have a limited access to the game mechanics and have an unique reference guest.x. On the core level it need a addition to the interpretation code. Guest acts as Player reference in specific conditions such spells, trade, and none-quest events and in same time cant have quest oriented events such stages and so on. And can be a spectator in the dialogs but cant choose answers cuz guest have a different rights from player. In this way we can have a wide space to external methods to interaction between guest. and player. referenced scripts such a friendly fire, item exchange 'cause we can call a guest and player functionality separated from ech other and not as one reference player. as was before. Fore example special death/ress mechanics where guest or player can die or faint to be reanimated without restart of the game and so on.
And important things is a Guest character are not character on the different player machine synched with a host server - its an unique Character created on the host server to be played and adapted on the host machine with specific rules. The concept is described bellow in details.
---
Important thing is a story/mechanic connection betwixt guest characters and host character on the lore/story part. This concept can be solved in some way for example. All guest characters are appear in the tavern or specific places after creation. Cuz they have no links with a quests and main story line. In the Abstract way - guest is a sentient follower of the player that helps to keep player safe lol. its a different gaming experience. Guest is a extra kind of entity for the game mechanics. Same idea was used in the Dark Souls series, where co-op players was a phantoms summoned to the host machine to help player to solve bosses and killing NPCs.

Separation the character data from the world-save.
All none-host characters data (stats, race, name, skills, equipment, state etc) stored in the external serialized file like <character_name>_N.xml, where N is hash-code automatically generated by the server via character creation.
In the same way the original game save file doesnt have the NPC linked with this character so no clones and dupe stuff will appear. It will be special invisible Flagged item that have a variable with Hash-code same as n.xml have. And nothing more, all character data are stored externally to prevent all unwanted bugs that mess wiss broken save data, asynchro copies of the none-host character after the disconnection and so on.
When player open the co-op mode to play in menu, he use IP/dns of server and their Character_Name and unique password. In this moment Server check the char-data folder to .xml file with <character_name> in name, if it found it read the file and check the password for match in .xml. Than if all things going OK, server create the Character in the game on the invisible item with same hash-code as .xml at item's x.y.z. And set controls.
If server cant find a character_name in the char-data folder, it will show to server that character are new and never was on the host server. Server create a new .xml, new flagged-item in game, generate an unique hash-code and set the password inside the .xml. And the racemenu will be shown to create new character.
Server keep the .xml data updated every sim-tick of the game iterations. And keep the connection status in warning, if the connection are failed, server remove the linked-none-host character from the game and leave only invisible flagged item on it place.

In conclusion
We have an extra functionality with pure networking without "puppeting" unstable game-play. Players can connect/disconnect to host machine with their unique characters that saved in safe place separated in the server machine without affection on Save files of the host and Guest. We keep save-file of the host game clean and vanilla as possible, extra data is minimalist. This way prevent cheating and griefing cuz guest characters are not parts of the guest local game-play or saved data. The functionality betwixt Player and Guest are separated on the core level and can be changed and controlled in variety ways.

______________
WIP
Post Reply