Opened 7 months ago

Closed 3 months ago

#12348 closed defect (fixed)

PRIVATE: Game timer runs too fast before police arrive

Reported by: hamakei Owned by: neuromancer
Priority: normal Component: Engine: Private
Version: Keywords:
Cc: Game: Private Eye

Description

At several points in the game you have to break and enter a property to search it before the police arrive. However, the game timer seems to be running too quickly, and the cops usually arrive less than ten seconds after the player arrives.

Once the siren starts there usually isn't enough time to leave, as the police enter less than 2-3 seconds later.

Is this to be expected, or is the game triggering the siren and their arrival too quickly?

Change History (13)

comment:1 by digitall, 7 months ago

Keywords: private-eye removed
Summary: Private Eye: Game timer runs too fast before police arrivePRIVATE: Game timer runs too fast before police arrive

in reply to:  description comment:2 by neuromancer, 6 months ago

Hi,

Sorry for the delay (I have not receive a notification of this ticket). According to the reverse engineering of the binary (we don't have access to the sources), the arrival of the police is determined by the number of clicks (regardless of the where you click in fact), not by the time you stay in the scenario. If you have any evidence of a timer, please let me know and I will change the code.

Thanks!

comment:3 by neuromancer, 4 months ago

@hamakei

You checked if the original game has a timer? (when not clicking)

comment:4 by neuromancer, 4 months ago

This issue was closed because it has been inactive for more than a week. Please reopen when if you provide the necessary information.

comment:5 by neuromancer, 4 months ago

Resolution: wontfix
Status: newclosed

comment:6 by TrivialBalderdash, 4 months ago

Resolution: wontfix
Status: closednew

On original hardware, it seems that only hotspots are counted (navigation arrows and searching). On my 486 PC, I can click dozens of times on a non-hotspot and nothing will happen. In ScummVM, it seems that all clicks are counted.

Specifically for the safe in Steelgrave's Mansion, cycling the digits are not counted as clicks on original hardware either.

To match the original implementation for the police arrival at a location, recommendation is to only count clicks on game hotspots. Clicks to change the numbers on the safe should also be ignored.

comment:7 by neuromancer, 4 months ago

I think it should be fixed in https://github.com/scummvm/scummvm/commit/fc883bb340213be5ef1a860b1c5e99f2d8cb0235

Btw, if you click on the frame, the police bust can still be triggered during in the desktop. I think "escaping" there should be disabled, but I don't know how it is handled in the original game. Can you check that? (you can also try to save in the middle, to see if the counter resets)

comment:8 by TrivialBalderdash, 4 months ago

Wow, that was fast. Thanks for the quick code updates.

I checked the original implementation:
1) Before the sirens are heard, going to the desktop and clicking through items there does not add to the counter and trigger the siren/police.
2) After the sirens are heard, going to the desktop does not reset the police arrival.
3) After the sirens are heard, saving the game does not reset the police arrival.
4) Loading the save game from the previous test (3) does not reset the police arrival.
5) Before the sirens are heard, saving and reloading the game does not reset the counter. To test this, I moved around the scene about 8-10 times. If no siren was heard, I'd save the game and continue. The sirens would then be heard in the next few clicks. Reloading the game would also only give me a few clicks before the siren. There's a random component, so I can't be 100% sure. Multiple tests shows similar results, so I think this is correct.

comment:9 by neuromancer, 4 months ago

Great, so it seems that the original implementation saves/restores the click counter when you go to the desktop or save/load a game. I will try to emulate that in ScummVM.

comment:10 by TrivialBalderdash, 4 months ago

I thought I'd add some notes from additional testing on original hardware. It confirms your "escaping" comment from your previous post.

Testing:
1) Enter a location where the police will eventually show up and immediately save. I believe at this point, the number of clicks that will trigger the siren and police are already set.
2) Navigate around the room, counting the clicks until the siren is heard and the police arrive.
3) In every case, it was consistent. In my first test, it was siren in 10 clicks and police in 15, every time I reloaded and tried again. The next time at a different location it was 9 and 17. (I would expect it to change between locations or different visits to the same location.)

Now this is where it gets interesting...

4) Reload the save game and click 1 less than the number for the siren (9, in this case). Go to the menu and save the game. Return to the game.
5) I would have expected that I would have 6 more clicks before the police arrive, but it was only 3. Reloading the most recent save, and there's always 3 clicks until the police, and no siren is heard.

Here's what I think is going on - the action of going to the desktop and back into the game counts as 3 clicks. Even if you navigate the files, radio, phone, save screen, or other items on the desktop, it always adds three clicks.

To clarify my previous post:
1) Before the sirens are heard, going to the desktop and clicking through items there does not add to the counter and trigger the siren/police.
This point meant that clicking through items on the desktop wasn't going to keep adding clicks until the siren or police were triggered. This would be in addition to the three clicks from going to the desktop and back into the game.

In the second example, the siren was heard after 9 clicks and the police arrived after 17 clicks. In this case, I went to the desktop and back into the game 3 times, with no other interaction with the game, and the siren started playing. Two more trips to the desktop and back puts the click count at 15. Two more clicks within in the game and police arrive.

This also explains why there was no siren in the first example (10 & 15). I saved the game at 9 clicks, and when I returned to the game, the count was at 12 clicks. The siren will only trigger at 10 clicks, so it was skipped. This also explains why there were only three more clicks (instead of 6) to get the police to show up.

Lastly, this can be exploited. The same way you can skip the siren, you can also skip the police showing up. If we know they arrive at 15 clicks, we can get the count up to 13, then exit to the desktop and return, jumping the total to 16. (If we get the count to 14, the act of clicking on the outside of the frame to go to the desktop will actually trigger the police cutscene instead. The siren may have actually triggered when going to the desktop on the 10th click, but any in-game sound is cut off when going to the desktop.) I was able to do this repeated to skip the police showing up, and then you get unlimited time to explore the location you're in.

Seems like this is a bug in the original game to me.

Hopefully this information was helpful.

comment:11 by neuromancer, 4 months ago

Fair enough. Commit https://github.com/scummvm/scummvm/commit/223c3989903239c59dca024f392af9644551e682 disables desktop menu when the police can get you. It will not match the original implementation, but it's better than introducing an issue. You won't get away so easily Marlowe..

comment:12 by TrivialBalderdash, 4 months ago

This is a great update! I was able to test yesterday and everything seems to work as intended. Turning the digits on the safe are not counted towards the police arriving, nor is anything that isn't a hotspot. I like the idea to disable the desktop menu, as it makes the scene more urgent and true to life.

I think that resolves everything raised in this ticket. Ok to close?

comment:13 by neuromancer, 3 months ago

Resolution: fixed
Status: newclosed

Thanks for checking the new code. Let's close this.

Note: See TracTickets for help on using tickets.