It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
Hello.

In full disclosure, I'm speedrunning this game (because I'm clearly insane) and have encountered an issue in act 2 I'm hoping can be resolved.

I'll try and keep this simple as the RNG in this game is hell (and alas the manual seed selector doesn't appear to work).

In some runs, I simply get Bullet Bob to check the shell casings (from Runciters floor) and he points me towards Izo. I talk to Izo and I get 2 dialogue options "earring" and, this is where it gets interesting "shell casings" OR "weapons".

If I see weapons, I know he's going to take my picture. If I see "shell casings" I know my speedrun is over.

Here's the problem though, on more than one occasion I've tried to progress the story from here and can NEVER get the grigorian interviews to appear in my KIA,

Te issue is similar to an earlier post except they didn't sync their KIA whereas I've done it on multiple occasions. As well as trying to speak to Grigorian (who tells me nothing more than that he's already spoken to one of my colleagues and has nothing more to say).

So, TLDR, No matter what I do, I can't get the grigorian interviews, which, by proxy, are what I think I need to progress the plot due to the additional (what I call) 'burden of proof' RNG.


Is this is known issue in the ScummVM version? Or am I just missing something? I do not profess to being an expert at this game, but I did play it pretty thoroughly back in the day and, quite honestly, I'm all out of ideas.
Post edited September 30, 2024 by Suicidal_sanders
No posts in this topic were marked as the solution yet. If you can help, add your reply
avatar
Suicidal_sanders: Hello.

In full disclosure, I'm speedrunning this game (because I'm clearly insane) and have encountered an issue in act 2 I'm hoping can be resolved.

I'll try and keep this simple as the RNG in this game is hell (and alas the manual seed selector doesn't appear to work).

In some runs, I simply get Bullet Bob to check the shell casings (from Runciters floor) and he points me towards Izo. I talk to Izo and I get 2 dialogue options "earring" and, this is where it gets interesting "shell casings" OR "weapons".

If I see weapons, I know he's going to take my picture. If I see "shell casings" I know my speedrun is over.

Here's the problem though, on more than one occasion I've tried to progress the story from here and can NEVER get the grigorian interviews to appear in my KIA,

Te issue is similar to an earlier post except they didn't sync their KIA whereas I've done it on multiple occasions. As well as trying to speak to Grigorian (who tells me nothing more than that he's already spoken to one of my colleagues and has nothing more to say).

So, TLDR, No matter what I do, I can't get the grigorian interviews, which, by proxy, are what I think I need to progress the plot due to the additional (what I call) 'burden of proof' RNG.

Is this is known issue in the ScummVM version? Or am I just missing something? I do not profess to being an expert at this game, but I did play it pretty thoroughly back in the day and, quite honestly, I'm all out of ideas.
Which version of ScummVM are you running the game with?

The Grigorian Interview that you need is the second one that Steele (McCoy's Blade Runner partner) has from Grigorian. She uploads it to the Mainframe, but there's some randomness involved as to when exactly that happens. Usually, it's within the span of Act 1, but if you're speed running who knows? I would try going back to Police HQ Mainframe and re-synching to see if you get the interview with Steele and then re-visit Izo. (You don't have to interview Grigorian yourself for this, although, the option to interview him properly will become available only after you have Steele's interviews with him on your KIA).

If this does not seem to work, please upload a saved game somewhere (some cloud storage) and share the link here, so that I can investigate further.

Also please use the latest version of ScummVM (2.8.1 is the latest stable, but I'd recommend 2.9.0git for a few more bug fixes, one of which is related to Izo (talking to him too soon -- an original game real soft-lock bug)). The developer version (2.9.0git) also has some fixes for the random seed and *something else* that could be helpful for a speed runner.

Now, technically, and if I'm not mistaken, you actually don't want to talk to Bullet Bob before talking to Izo (and making him run), if you want McCoy to definitely ask him about the SHELL CASINGS (of course you need to have found them at Runciter's).
Hello.

I'm on Scummvm 2.8.1, but will definitely check out 2.9.0 on the intriguing promise of 'something else'.

Additionally, I'd love if you could elaborate a little on the 'random seed' fixing. I can't stress enough how important this could be for speedrunning. I honestly think it could blow the category wide open for a LOT of newcomers.

Regarding your thoughts though - In my playthroughs I synced my KIA around 10 times with nothing. I tried everything I thought I could to make it happen, and it never did. In fairness, back in my casual days I'd always thought the interviews were just there/available at the start of Act 2.

Alas, I have no save (didn't know you existed then). But if I can replicate it I will.

Finally, in regard to the route. The key is that you don't need to waste time on the Grigorian evidence in the optimal route. The shell casings, along with the earrings, are enough to tilt the 'burden of proof' RNG to get Izo to run off. As above though, this doesn't happen all the time and I'm yet to confirm if this is a technical softlock viable in the speedrun route that removes the Grigorian evidence from appearing.

Will update accordingly.
Post edited September 30, 2024 by Suicidal_sanders
I've played around with 2.9.0

Love the Izo evidence skip. That's an amazing find!!!

I have a friend trying a deep dive into (what I hope is the fixed) seed generator.
avatar
Suicidal_sanders: I've played around with 2.9.0

Love the Izo evidence skip. That's an amazing find!!!

I have a friend trying a deep dive into (what I hope is the fixed) seed generator.
I am interested in whether it can be an actual soft lock to ask Izo about Weapons and the Jewelry in Act 2 without being able to get the Grigorian interviews any more. I mean, the only way it's a soft lock is if Steele does not upload those during Act 2 -- which is a possibility but might take me time to verify for certain either way (and it would have to be spare time, so definitely not for a few days due to real life job). If you can provide a saved game, it would speed up the "investigation" significantly, since I would be able to test in-game in an actual playthrough rather than an artificial one (using the debugger).

My current impression from looking at the engine code is that Steele does go to the Police HQ during Act 2 after the Tyrel Building encounter and also after her walks about the Animoid Row; when she's there she has a 50% chance to upload her interviews on the Mainframe. So it is luck based and depends on Steele's routine but it should eventually happen unless I am missing some other code that circumvents this routine.

Also if this is indeed a soft lock case, it would be in the original game too (with high probability).

About speedrunning changes in 2.9.0git:
- I've changed the way a random seed (set from ScummVM launcher in Global Options -> Misc -> Random Seed) works for the game. Previously it was considered when launching the game from ScummVM launcher, so if you had no saved games the engine would launch a new game automatically with the global seed. But if you already had saved games, the game would launch into the KIA. And in KIA there are actions that use randomness, so it was possible that by the time you actually started a New game from KIA the random seed changed from the global one. And also on subsequent starts of new game (within the same ScummVM session) it wouldn't use the global random seed. After the fix, the random seed set in Global Options will always be used when starting a new game (even if it is after playing the game for a while). Note: a random seed cannot be retroactively applied to any existing saved games.

- There's now a debug command "cheat" that will show you the game's random seed and the arrangement of the Replicant / Human assignments to characters. It is only useful when used within a started game (so *not* from the KIA screen on launch), but you can use it (without having set a Global seed) to get the seed for an "ideal" arrangement of Human/Reps, which you can subsequently use as a Global seed to train / get record time for that specific scenario. You can also use the command to verify that a global set random seed is indeed the one used in your game (as written, you have to do this after you've started a *New Game*).

About the bad scenario (where talking with Bullet Bob gives you "Weapons" to talk to Izo about, rather than "Shell Casings"). You are correct that this can happen in one occasion (when Izo is Replicant). But I still think you can skip talking to Bullet Bob altogether, in which case McCoy will always talk to Izo about "Shell Casings".
Post edited October 01, 2024 by PraetorianWolfie
From what you've said, it makes a lot of sense with my seed selection testing.

For a while, it felt like it was working (after having had a few apparently successful 'tests') then all of a sudden it did not. - This must have been where, as you mention above, the in-game menu/save information overrides the pre-set seed.

My friend believes that despite the scary looking seed number, ultimately there should only be circa 64 different seeds (which he's going to start checking - he likes the technical side of things).

Definitely a good idea to utilise the 'cheat' command in a manual search.

The optimal speedrun path appears to suggest the following parameters:

1 - Izo (Replicant - But it doesn't appear to be a major factor)
2 - Gordo Replicant
3 - Dektora Human
4 - Lucy Human

The only other factor which I'm yet to confirm is what dictates the end path. I'll be honest that I always presumed there was a similar global RNG setting as to whether McCoy was a replicant or not.

The most ideal 'ending' is going to the Moonbus with literally everyone dying. Maggie being killed in the apartment. Killing Steele. Killing Sadik. Killing Clovis. - And yet somehow still 'winning' with Gaff apparently not too annoyed at you.

I did wonder if a factor was being a bit of an ass as McCoy (killing innocents) but that's apparently not the case.
avatar
Suicidal_sanders: The only other factor which I'm yet to confirm is what dictates the end path. I'll be honest that I always presumed there was a similar global RNG setting as to whether McCoy was a replicant or not.

The most ideal 'ending' is going to the Moonbus with literally everyone dying. Maggie being killed in the apartment. Killing Steele. Killing Sadik. Killing Clovis. - And yet somehow still 'winning' with Gaff apparently not too annoyed at you.

I did wonder if a factor was being a bit of an ass as McCoy (killing innocents) but that's apparently not the case.
Obviously SPOILERS (albeit in very broad strokes) follow:

There are various factors that determine the ending, but basically it comes to whether McCoy is a Rep Sympathizer (or I guess you could make a case that he's a Rep himself or is truly convinced that is the case anyway) or he's a Blade Runner. A major factor in this (but not the only one) is whether Guzza dies by McCoy's hand or not. Killing innocents may also affect this (but not sure, or how much).

Another factor is whether you've gained favor with Lucy or Dektora in which case, if you're also aligned with the Replicants you would get the ending path at Crazylegs.
Fun Fact - I believe if you enter the Guzza 'death' room with your gun drawn you die after you shoot him. Either this or it is tied to a 'corrupted' RNG seed.

Either way, I have to give huge thanks to Darkshoxx for having actually derived a system of seed selection/pruning. With the 2.9.0 update you mentioned earlier these have been an invaluable asset to my speedrunning efforts.

So thank you to all concerned - Excellent work! Massively appreciative!!!

Oh, and although I'm investigating, the Izo evidence skip might not actually be a time save since it would appear his 'emergence' from the shop might be on a global timer (circa 5m 34 seconds).
Post edited October 01, 2024 by Suicidal_sanders
avatar
Suicidal_sanders: Fun Fact - I believe if you enter the Guzza 'death' room with your gun drawn you die after you shoot him. Either this or it is tied to a 'corrupted' RNG seed.

Either way, I have to give huge thanks to Darkshoxx for having actually derived a system of seed selection. With the 2.9.0 update this has been an invaluable asset to my speedrunning efforts.

So thank you to all concerned - Excellent work!
Hi Sanders, Hello Wolfie,

I am the aforementioned friend who made a seed searcher. It's very rudimentary and really just replicates the RNG functions from here https://github.com/scummvm/scummvm/blob/master/common/random.cpp and recreates the Replicant/Human sampling. Then goes through all seeds and picks the ones that satisfy the set conditions.

Now, I have a question for Wolfie, since I don't do the C++ good.
I am wondering how easy or hard it is to influence RNG events further down the line. And lines like
```
if (Random_Query(0, 1)) {
Sound_Play(kSfxNEON7, Random_Query(20, 33), 80, 80, 50);
```
make this rather tricky, since every Random_Query reshuffles the seed.
The question is, is there a cheeky lil hack you could add (just for dev/speedrun purposes) that sends a message everytime Random_Query is called? by either pasting it in the debug console or displaying it on the screen somehow?
That would help the speedrunning effort.
Disclaimer, I do not own the game, I'm just watching Sanders run it :)
avatar
Suicidal_sanders: Fun Fact - I believe if you enter the Guzza 'death' room with your gun drawn you die after you shoot him. Either this or it is tied to a 'corrupted' RNG seed.
If you miss when shooting Guzza (yes that's a thing that can happen, even though Guzza is really tiny on that scene), then he'll shoot back and killl McCoy. Is this what you mean or something else?
If it's something else, then please provide a save game so that I can investigate :)
avatar
darkshoxx: The question is, is there a cheeky lil hack you could add (just for dev/speedrun purposes) that sends a message everytime Random_Query is called? by either pasting it in the debug console or displaying it on the screen somehow?
That would help the speedrunning effort.
It could be possible, but I'd have to check the source code first, because I'd want to do this isolated to the Blade Runner engine and not directly to the core code of ScummVM (for the random function), Also, what would those messages look like (what information do you want them to show)? As I'm thinking it this would be activated via the debugger for the game, via a new command or an existing command's extra argument (we'll see where it could fit)
Post edited October 02, 2024 by PraetorianWolfie
Maybe I missed... lol
I took a quick look at the source code for the uses of random number generation and unfortunately it's not easy to attach a debug message to each calls. Some of the calls are "encapsulated" in "script" method call Random_Query() but others access the random generator directly and those instances are numerous.

It's not impossible to adapt the code but I'd like to avoid it to keep the code's readability and maintainability.

If you could build the source code on their own PC (or other platform) though, following the instructions on the ScummVM wiki, you would be more free with where you could put the debug messages, in which case you could put it directly to in the RandomSource::getRandomNumber(uint max) method of common\random.cpp
avatar
PraetorianWolfie: but others access the random generator directly and those instances are numerous.
Damn, I didn't expect that. Kinda makes sense, and also probably thwarts all hopes.
Yeah if you put it on a branch or fork, I can locally build it here, I've done it before.

the thing is, if you put it in, say, scrambleSeed, you'd get every call, but you won't know where it's from and what was sampled. It would be cool to keep track of the number of calls, but the important part would really only be the variables and outcome of the call. I think these benefits are only possible if these debug messages are generated within the engine. We could always start by putting it in Random_Query and then go on from there?
I'd envision something like:
"RNG call of RQ(2,4) with result 3. Seed before call: 12345678, seed after call 765432"
avatar
darkshoxx: I think these benefits are only possible if these debug messages are generated within the engine. We could always start by putting it in Random_Query and then go on from there?
I'd envision something like:
"RNG call of RQ(2,4) with result 3. Seed before call: 12345678, seed after call 765432"
For this info only you could still do it "centrally" here (getRandomNumberRng()), since you have access to the arguments of the call, the result, and the seed before and after: https://github.com/scummvm/scummvm/blob/eb723eb0e488d7341bfa8454a413a29d825a415d/common/random.cpp#L75
edit: ah, you'd also have to put a debug message in getRandomNumber() since we have a few direct calls to that as well: https://github.com/scummvm/scummvm/blob/eb723eb0e488d7341bfa8454a413a29d825a415d/common/random.cpp#L63

But yes, if you want more specific info, it would have to be done in-engine. We could start with only Random_Query but that wouldn't produce useful result since it would skip too many other random number generation calls (imho). And my current estimation (without of course knowing the full specifics of what you'd want as extra debug info) is that this could get really complicated :D
Post edited October 03, 2024 by PraetorianWolfie