Jump to content

2-player mod, possible?


mmonoob12

Recommended Posts

so the idea came to me as I was playing Skyrim earlier. What if we can mod the game such that one player can join another player's game as a follower? Basically this is what I have in mind:

 

1) Both guest player and host player connect with each other online using some third party software. (via IP address)

 

2) Once the connection is established, host player starts the mod as host. Load a save and gets a follower NPC(e.g. Lydia) in game.

 

3) guest player starts the mod as guest and takes over the said follower NPC. Now, guest player should be able to do anything a follower NPC can do.

 

The reason I think this may work is that it should be a lot of easier to implement than a full-blown multiplayer. The guest player is basically a follower NPC in the host player's point of view and the game shouldn't glitch/bug out. The obvious limitation is that guest player is restricted in a lot of ways since he isn't considered a player character by the host's game.

 

Theoretical Approach:

 

Basically guest player's key presses are captured by the mod, and the mod communicates to the host. The host then takes the command and manipulate the game world accordingly. Guest players get feedbacks from mod and his game world gets updated.

 

Technical difficulties:

 

1) How to update guest player's world? Can we somehow capture the game state from host and just copy them over?

 

2) How to translate guest player's key presses into action? We need a way to puppeteer the follower NPC. Console commands, pershaps?

 

 

I basically want to start a discussion and get some inputs from the modding community. What do you think?

Link to comment
Share on other sites

Yeah I've had the same idea, I also think playing the follower NPC could be done ok and I agree with your approach. It would be great to be able to play with a friend!! It reminds me playing Diablo II in multiplayer with endless pleasure. I'm really excited for a mod like this to come out!

But I know nothing technically..., and as I am willing to see this coming I'll share my ideas if it can help.

 

 

Just to let you know, English isn't my foreign language so I'll try to be as clear as possible.

 

Well I don't know how the game works in terms of code, and i'm not used to program either ; maybe the creation kit that will come out soon by Bethesda could help in some way. For the technical difficulties you are talking about, here are my ideas based on how I "suppose" Diablo II works on LAN as an example :

 

1- How to update guest's world? I think that the communication between Client and Host should be in terms of "actions" and "events". A state capture may be too heavy in term of bandwith. We should keep only the vital information like positions, mobs, damage, health..., we care less about butterflies for sure.

So the 2 players have the world rendered by their machine simply by the fact that they are obviously standing somewhere on the map, and the exchanging data between them should be like "that Daugr mob has spawn in this location of the donjon", "Daugr attacks Host with a light attack for X damage", "Guest attacks Daugr with heavy attack for Y damage" ; so that each PCs could render everything with basic informations. The whatever action that starts a particular animation is sent from the Host to the Guest, and the same way from the Guest to the Host. This also mean the Host is the only to handle A.I. or they're might be some "action conflicts". I think it's somehow like this that online games work. I'll ask advice to a developer friend. So maybe at the end, all the Host's part mod has to do is to see where are these commands (position, health, mobs,etc...), and as soon as these commands are used, send them to the guest?

 

2-How to translate guest player's key presses into action? As it is A.I that commands the actions of the follower at the start, we should be able to put these actions on keyboard? I think that spécific actions are defined by some spécific lines of codes, maybe it is possible to simply bind them to a key? We'll also need restrictions due to the NPC's nature of Guest. For example, if Host is asking the follower to exchange some items, there should be a "security" on the Guest on his actions : if the Guest moves at this moment it could maybe create a bug because he is not supposed to move at this time, especially that the game is supposed to be paused at the same time. A sort of you can/can't play restriction that then require to make a list of when can/can't play the guest.

 

 

Again, I think that the creation kit will give some leads. Really looking foward for a 2 player mod to come true :)

Link to comment
Share on other sites

Just to avoid me writing a big WoT for no reason: The game engine does not support client/host function. You would need to recreate the whole game for another engine, which would get you sued and waste just about 20 years of your life making.
Link to comment
Share on other sites

The dream mod of course would be for both player :

-Shared quest log

-Skill tree available

-Looting ability

-Crafting ability

-Talking ability...

 

It sounds like a lot of work though... But i've noticed that some followers seem to have hidden abilities. Some of them prefer light armor than heavy armor, even if you give them both in their back pack. Does it means that they have "light armor" ability higher than "heavy armor"? Same thing with weapons, I've seen a follwer take a 2 hands axe rather than 2 hand sword, even if the sword was more powerful. Does it means they are built like a player's character? It could simplify the modding.

Link to comment
Share on other sites

Matth85 : The whole game? Why? Isn't it possible to just chose the information you send to Client/Host with an outside program?

I've seen some emulators who could do this, so you could play old VS fighting online like street fighter 2 on SNES for example. It wasn't stable and never perfected though.

Link to comment
Share on other sites

I can't imagine how complex it would be to inject an entire character into the game. I mean for the client you are injecting an NPC as their own character, to be played as.. while removing a few key features of the game such as the ability to have a companion.. since you wouldn't want a companion having their own companion.. or would you. Might cause instability, might not.

 

The idea seems simple enough, you are really just taking all Lydia's data(or someone else on the host) and linking it to the main character's for the client. That way their inventory is the same, and when they change position it does on the host too. There is always the Definite possibility, and likelihood that they won't have the same data structures and it will be rather difficult to match up memory addresses.

 

It might be easier even to just extract the character data from the client's save game and inject it into the host's world. Of course that requires, as extract suggests, separating world data from character data in the save game of the client.. then of course how do you inject it into the host's world. Most certainly possible to inject some data into the world, but figuring out how to do it properly.. that might be difficult. Then of course you need to either copy the world over to the client and keep the data in sync, or the client needs to query the host constantly.

 

I can't imagine how all the injecting of data would even work, but I don't know maybe this is simple for somebody out there. I am just thinking out loud, with a keyboard.

Link to comment
Share on other sites

This is already being worked on. You don't need to re-write the whole system, just inject some additional functionality (Like OBSE did for Oblivion). However Steam may prove to be a bit of a nuisance about it.

 

How do I know it's being worked on? Well... Here :)

 

On the functionality; Yes, Skyrim definitely has the capacity to do it. It's a matter of linking the client to the host and transmitting the data between them, possibly having some core-content mods for compatibility issues.

Edited by hipolipolopigus
Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...