User blog comment:MarkvA/Skyrim's Most Wanted Features and Fixes/@comment-108.202.196.86-20111206081745/@comment-174.51.86.207-20111207173856

I agree that the game should not be in any way changed to accommodate co-op, however the game already incorporates companions that follow you and companions that you follow. So... If my buddy was on his computer, and I on mine, and my character was companion to his (and vice versa)... I don't see any immersion change other than that our respective companions would not behave like suicidal morons.

From an implementation standpoint, this is what I have gathered from the console and tools for Oblivion...

1. Skyrim Console: I can take control of an NPC through the console. I can also cause a whole slew of different "effects" to an NPC (ie, force an NPC to "pathto" a particular target, force an NPC to "lookat" a particular target, empty the AI packages, modify the NPC's inventory, etc) 2. Oblivion Script Extender (and mild conjecture based on speculation of the Skyrim Script Extender): Extra functionality can be added to Oblivion (Skyrim). How about an extra function to communicate with a TCP / UDP socket on localhost? (which could then be tunneled to any location on the network, LAN or WAN) 3. .esp / .esm Files: Most any content can be added to the game. New items, characters, worlds, etc.

Here is how my imagination of the process goes.

1. Decide on host machine. (fastest / most memory) This machine's copy of Elder Scrolls would be responsible for making final decisions on random checks. (ie, "Dice Rolls") <-- This is just conjecture, as I have not bothered to learn the deep internals of Oblivion yet, as my hope was that Bethesda would include co-op in Skyrim and I would not have to write this plugin... (sigh... oh well)

2. Load the plug-in host process. This would run on both systems, host and client(s). The users of each would select the save file to use for their character, and a single worldspace would be selected in which all of the players will be playing. The plugin then would synthesize an .esp file (and maybe a save) for each of the clients. This .esp would contain all of the player's characters as NPC actors set with the particulars of the appearance of each and the needed AI packages to make the connection package work.

3. Synchronize World. The plugin process would make sure that all of the clients are communicating over the tunnel properly. (tunneling is a subject more easily Googled than explained here) Then the .esp would be distributed to each of the clients. (likely everyone would need to have the same masters list and plugins loaded)

4. Launch Skyrim / Script extender. If the host process can pass parameters to make the particular save be loaded, all the better. The players would likely start in the same place as their individual respective saves were, and the .esp would add a known map marker for a "Companions Hall of Networking"

5. Connect to host. On reaching the "Hall of Networking", there is an option to try to connect to the "Companions Network" On activation, the script extender attempts to connect to the tunnel, and if successful, there is now a data-path by which the games are communicating.

At this point, the rest seems easy. (if anyone wants to work on something like this, feel free to contact me at: "tesmodder -AT- daryllynpublishing -DOT- com" )