urSovngarde Co-op for Skyrim VR
← All entries

The heroes who slid across Sovngarde

On the morning of 17 October, one of us fought the heroes in Sovngarde and knocked two of them down. In that player's game each hero went down, got back up after a while and walked off. In the other player's game the same heroes lay flat and slid along the ground behind where the real ones were walking, like something on the end of a rope.

Why

Each NPC runs in one game, its owner's, and every other game shows a copy that replays what the owner does.

The hero's health hit zero in the other game too, and that game knocked its copy down by itself, letting it fall limp like a rag doll. The owner's hero had not fallen that way. From then on, every action replayed from the owner also wrote the owner's state over the copy's, including the part that says whether a body is lying on the floor. The owner's hero was not, so the copy was told it was not either.

A copy does not run the game's own update; its owner does that. So the part of the game that gets a fallen body back on its feet never ran for the copy. When the owner's hero stood up, the copy refused the "get up" it was sent, because as far as its animations were concerned it was not in the state that "get up" ends.

Then the owner's hero walked off, and the copy was moved along after it, every frame, still flat on the floor.

What changed

A copy now keeps its own "lying on the floor" state. While it lies there it runs the game's own update, so it gets up the way any knocked-down body does, and it is not moved until it is on its feet. If its get-up is still waiting a second and a half after its owner is up, the mod starts it itself.

The test that tested nothing

We already had a test for this, and it passed. It made the game knock a bandit down and stand it up while recording it, then had our bot replay that recording on a bandit of its own, so that the game's copy of it received the real actions.

Except it received none. Bandits come from a list, and the game's copy of the bot's bandit drew a different bandit from that list, of another race. The mod treats a copy of a different kind as a different creature and replays none of the owner's actions on it, because they would not fit. The copy just stood there, so "it got up" was true only because it had never gone down.

The test now uses a named NPC who is not drawn from a list, and it checks that the copy is the same kind. On its first honest run, with half of the fix in, the copy lay flat to the end, without sliding. With the rest of the fix it gets up after about five seconds, and moves about ten centimetres while it is down.

Status

In the build we are testing. Not seen in a real session yet; it comes with the next release.

Skyrim is a big country to cross alone

Free, open source, and it runs on the modlist you already have.