Skipping the final scenes in the mines of Kelbegen and in the temple of Ianna
2 years ago
Russia

Hi all. Recently figured out why the cutscenes in the final clips in the levels of the Kelbegen mine and the temple of Ianna are not skipped, but there is information that some people are skipped (for example in this run https://www.speedrun.com/severance_blade_of_darkness/run/yo430odm ). The whole point is that the game records the scenes viewed, which can be skipped, in the SDF.txt file of each map. But since the level completion code is written differently everywhere, the program for some reason does not have time to write the final scenes from these levels, it succeeds in very rare cases, but if it worked, the scenes should always be skipped. I added these scenes to the SDF.txt and they started skipping without touching any scripts. I also used these skips in my run. That's why I'm posting these files here so anyone can use them.

maps\Mine_M5\Pak\SDF.txt

(dp0 S'minagemas' p1 F15.203125 sS'MineBichozampon' p2 F18.921875 sS'MineAcido' p3 F36.15625 sS'mimural' p4 F25.546875 sS'MineTablilla' p5 F21.828125 sS'minaini' p6 F31.96875 s.

maps\Palace_M15\Pak\SDF.txt

(dp0 S'EscenaEspadaYTablillasEsp' p1 F54.59375 sS'EscenaApChk' p2 F13.96875 sS'LlaveCab3' p3 F47.0625 sS'EscenaPuertasSub' p4 F9.0625 sS'LlaveCab1' p5 F67.359375 sS'paldin' p6 F45.484375 sS'EscenaHorribleEsp' p7 F44.078125 sS'EscenaDesapChk' p8 F8.015625 sS'LlaveCab2' p9 F35.34375 sS'LlaveCab4' p10 F35.34375 sS'EscenaCripta' p11 F16.09375 sS'EscenaSuperEsp' p12 F101.59375 s.

Edited by the author 2 years ago
keyboardnotfound likes this
Auvergne, France

I recently run Al Farum and there is also a cutscene at the end which can not be skipped. Do you think your method could be applied to this level as well?

Russia

Hi. I was checking Al Farum and the fortress of Nemrut. There is no provision for the final scenes to be skipped.

Russia

One way to check if a scene is meant to be skipped is to play with the console open and try to skip the scene, if the console outputs the "Wolfson's Error: SkipCalled called outta nest" error, then the scene is meant to be skipped, but it is not written to the file and cannot be skipped at the moment.

Auvergne, France

Hi! This morning I tried to add your part of code in the SDF.txt file for the temple of Ianna but it didn't change anything. I could skip the same cutscenes as usual but not the last one. Do you have an idea why?

Russia

Hi Supergussman! Have you collected all runes or not? If you collected all runes, name of cutscene is different and I did not add it to this file. I think I will do it later.

Edited by the author 2 years ago
Auvergne, France

I only collected one but I'll try it again tomorrow and I'll let you know. Maybe I have done something wrong, I don't know. It could be good to have both cutscene skipped! 🙂

Russia

Edited maps\Palace_M15\Pak\SDF.txt Now you can skip scenes when all or part of runes are collected.

Belarus

DeH4uK, I've compared yours and mine records and some of the records there have differences, for example: p1 F15.71875 (you have F15.203125 here) sS'MineBichozampon'

p3 F36.15625 sS'minaini' (you have another cutscene reference here sS'mimural')

Basically, such records like 'mimural' are the cutscene references - that's the only thing I've caught. My assumption is that 'p1' - is just kind of index number.

So, maybe you could tell more regarding these things:

  • where do you get these records in file if some of them saves very rarely? (maybe you could provide some details of how did you added missed records, I mean where did you found it)
  • what means records like 'F31.96875' and why these records could be different for the same cutscenes?
  • why last record have no cutscene reference?
Russia

The numbers are time in seconds (to where to rewind), if they differ in milliseconds it is not critical, after next skip scene the game can adjust them by rewriting file. The order of scenes in file is also not important, perhaps it is formed depending on the sequence in which scenes were skipped or on different computers is recorded in different order.

Russia

About how I found it: For a long time I was interested in the case of how cubeface skipped cutscene in mines, also Funtast told me about how he started skipping cutscene in temple of Ianna, he thought it was a new rare bug of steam version and in first runs he didn't skip it on purpose. I started to look into it in more detail and the first thing I did was to play with an open console and tried many times to skip these cutscenes. While doing this I found that console was printing "Wolfson's Error: SkipCalled called outta nest" every time I pressed esc during a cutscene. Then I went into python scripts code and found where this error was displayed. I saw there some functions that write cutscenes to sdf file and read them. These functions are called in all story maps, function to write is called at the end of certain cutscenes, function that reads and checks for cutscene in file is called at the beginning of those cutscenes. It is at these two levels that final scenes are almost never recorded, most likely due to fact that cutscene recording and level completion are called almost simultaneously, and in general the code is different in different maps. After figuring out format of records in sdf.txt, I tried adding a record there about final scene in mines, which should be skipped judging by code and after that it was skipped and game even changed time in file. Well, similarly did with rest of scenes.

Edited by the author 2 years ago

Editing game code is not a glitch, it is a cheat. If you allow to edit text files, then why not python scripts, which are, essentially, text files? If you allow to edit python code why not C++ code (engine is written in C++)? If you can edit game code than you can do anything.

Glitches allowed in speedrunning are any un/intended things achieved with regular game controls within a game. Whether it's a joystick or a keyboard or mouse. Editing game code is not what you can achieve with game controls within a game. Full stop.

"Text" files you edited are not just text - they are python code files and chicken scratches you edited are called 'Python Serialization'. What you just shown (Maps\Mine_M5\Pak\SDF.txt) is serialized dictionary:

{'minaini': 31.96875, 'MineAcido': 36.15625, 'mimural': 25.546875, 'minagemas': 15.203125, 'MineTablilla': 21.828125, 'MineBichozampon': 18.921875}

That is code editing and it is not speedrunning.

Edited by the author 2 years ago

For a long time I was interested in the case of how cubeface skipped cutscene in mines

Which skip do you mean, as there are few on the map?

One way to check if a scene is meant to be skipped (...) then the scene is meant to be skipped

That is not true. Every cutscene in the game can be skipped, you only need to edit a code to show the game "endpoint" of the skip. What you show here is simple to explain - the particular cutscene was maybe intended to be skippable, and then they decided to make it not skippable. They just didn't remove all the code created before.

Edited by the author 2 years ago
Auvergne, France

As you noticed if you took a look at the runs, it allows to skip 2 cutscenes on the overall game ... (For me at least), it does not sound to make such a difference. If you want, you can work on how to skip cutscene, in this way we could implement it.

Belarus

This text file is used to store the cutscenes that you've already been watched to be able to skip it in the next time. Such cutscenes cannot be skipped during the first playthrough only. For some reasons, some skippable cutscenes not stores in the file due to script can't be executed completely. Cutscenes can be checked whether they're skippable or not using a console. Not all the cutscenes are intended to be skipped according to the game scripts without its editing. So, we decided to update text file to not waste time to see the cutscene that already been seen and that is intended to be skipped by the game.

SkipScriptStart function is defined in Blade of Darkness\SCRIPTS\ScriptSkip.py script file. This function is called for cutscenes that meant to be skipped in the case if they been already watched previously by storing its data into SDF.txt file (could be found by cutscene reference as function's argument, that is specified in SDF.txt file).

Final cutscene was skipped in Kelbegen at 20:34 of Cuberface's run https://www.speedrun.com/severance_blade_of_darkness/run/yo430odm

Edited by the author 2 years ago

This text file is used to store the cutscenes that you've already been watched to be able to skip it in the next time.

If it was true then all cut scenes that you already saw once would be skippable. They are not. Moreover that - I used many, many different versions of this game and went through it hundreds of times; scenes that are not skippable stay so forever. They are not meant to be skipped by design.

Even Cubaface in his knight's run says, and I quote: "You can't skip this cutscene".

PS. It's not a text file. It's a python serialized code. Fact that it has 'txt' extension is just a name. It's unfortunate it suggests "text".

Edited by the author 2 years ago
Auvergne, France

I agree many cutscenes are no skippable but we're not talking about all cutscenes, only two of them. From the beginning we are not saying all cutscenes are skippable, far from that.

Concerning the one from Kelbegen, Cubeface skipped so there's way to do it in a different way. So for this one it exists a way to skip it without the file.

For the Ianna's one, I don't know yet because he didn't skip it.

I asked more experienced modders how it really works but it will take time to get answers.

I agree that if @Cubeface skipped that cutscene than it can be skipped somehow. Maybe we should ask him whether he did something particular to do that?

Edited by the author 2 years ago
keyboardnotfound likes this
Russia

These scenes were designed to be skipped, but something went wrong and they are skipped on ultra rare cases, and most likely if it worked once, it will work until you delete it from the file yourself. You will not be able to skip other scenes not meant to be skipped by editing ONLY the SDF.txt files. Even if there are actions in the game that affect a scene to start skipping, they can only be performed on an earlier playthrough, not during the run, because the file only contains "previously viewed scenes".

These scenes were designed to be skipped

Every cut scene made in 3dsMax was designed to be skipped (this mechanism is in SkipScript.py), only not everyone was designated to do so.

If it's so easy why everyone else cannot skip it?

Why after playing it once, once, not even twice, you are not able to skip it?

because the file only contains "previously viewed scenes". That's not true. These files only contain scenes that can be skipped, not "previously viewed scenes"

I played it hundreds of times and mentioned scene is not, never was and will never be in the file. How are you going to explain that?

Edited by the author 2 years ago