07th-mod / umineko-question

94 stars 9 forks source link

Text doesn't automatically advance after shake effect in EP1 #155

Open miere43 opened 3 years ago

miere43 commented 3 years ago

Text doesn't automatically advance after shake effect in EP1.

Video repro: https://gfycat.com/madeupscratchykiskadee 2020-10-30_23-13-03.zip

Repro:

  1. Skip to this text: image
  2. Mouse click once. Shake effect plays, lines are cleared, but text doesn't advance. image
  3. Mouse click once again. Text now continues: image

PS3 version doesn't split text into two screens: https://youtu.be/6B5A22OeTzY?t=622

andOlga commented 3 years ago

This is unfortunately a side effect of how we implement the ADV mode. These clickwaits were added as a hacky workaround for text disappearing automatically sometimes when these effects play. We've been trying to solve that issue for years and this is kind of the best we ended up being able to do... I'm frankly afraid of touching these again ๐Ÿ˜…

drojf commented 3 years ago

Please keep this issue open as we may fix it eventually.

The fixes were applied in:

In the "^/ -> ^@/" commit (591396acbae65047216ca339825303c83d0520e1), basically we need to selectively remove the unnecessary clickwaits (or alternatively, revert the commits, then apply the correct clickwaits only when needed).

It needs to be applied in such a way that there are no "missed" lines, as every missed line would result in text disappearing, so better to err on the side of caution.


It might be possible to check this manually (by preparing a special script which only has the chunks of the game script where the lines were altered), if someone (or multiple people) are dedicated enough - it may take multiple hours to play through all these little chunks.

miere43 commented 3 years ago

It seems changing these two lines fixes the problem:

-langjp^^!sd@:dwave_jp 0, kin_1e95:ใ€€ๆ™‚้–“ใฏๅธธใซๆœ‰้™ใ ใ€ไฝฟๅพ’ใŸใกใฏใ™ใงใซใƒฉใƒƒใƒ‘ใ‚’ๆง‹ใˆใฆใ„ใ‚‹ใžใ€ใชใœใซใใ‚ŒใŒใ‚ใ‹ใ‚‰ใฌใ‹ๆ„šใ‹ใช็พŠใฉใ‚‚ใ‚ใƒƒ๏ผ๏ผใ€\
-langen^^!sd@:dwave_eng 0, kin_1e95:^  Time is short, and the apostles are already readying their trumpets, so why can't you foolish sheep understand?!!"^\
+langjp:dwave_jp 0, kin_1e95:ใ€€ๆ™‚้–“ใฏๅธธใซๆœ‰้™ใ ใ€ไฝฟๅพ’ใŸใกใฏใ™ใงใซใƒฉใƒƒใƒ‘ใ‚’ๆง‹ใˆใฆใ„ใ‚‹ใžใ€ใชใœใซใใ‚ŒใŒใ‚ใ‹ใ‚‰ใฌใ‹ๆ„šใ‹ใช็พŠใฉใ‚‚ใ‚ใƒƒ๏ผ๏ผใ€\
+langen:dwave_eng 0, kin_1e95^  Time is short, and the apostles are already readying their trumpets, so why can't you foolish sheep understand?!!"^\

I don't really understand this markup language, maybe I broke something with these changes. I played a bit near this section, I don't see any issues.

drojf commented 3 years ago

sorry for the multiple, emails/comments, I just thought of something I need to fix...

drojf commented 3 years ago

Your fix would work, but you need to keep the !sd to ensure text is reset to the default speed, and also apply this fix to any other location this happens in the entire script.

@miere43 Can you try playing this version of the script? Let me know if you have any "disappearing text issue" and/or "text overflowing the textbox" issues. Also, if the game seems to advance unexpectedly (like it continues going when you think it should wait for you to click) please let me know.

Script download link: 0.zip

I reviewed my changes and found that in b5c96bc8c30bcb5b00e44463245972213d9ad460 I attempted to add something to prevent text overflowing the textbox in the *pretext callback, and that was probably? the root cause. In this new script I've attempted to fix it another way. In this new script I reverted O[A]'s two commits, then applied this commit: https://github.com/07th-mod/umineko-question/commit/50cad4f61a80bc9c2c7bfacf57eff64bf93c44eb . The aim is to detect unnecessary page waits - I detect them by seeing if there is no text on the screen when a page wait occurs, and in that case just skip the page wait.

(Also tagging #147)

miere43 commented 3 years ago

@drojf Problem still occurs even with your fix (I replaced 0.u in game folder with your 0.u). Also now sometimes textbox dissappears and appears again for no reason:

https://gfycat.com/feistyancientlemming 2020-10-31_12-18-11.zip

drojf commented 3 years ago

@miere43 Here's another version, which hopefully fixes it...

Please note that your saves won't be compatible with this script - please don't load any of your old saves or you might jump to a random point in the game. However, I've rigged this particular script so that if you start Episode 1 afresh, it will instead to jump to the scene you just posted with the problem.

After that, you can make a save and start from there. If you were somewhere else in the game, let me know and I can make the script jump you to that point.

0_2020-11-01.zip

Same goes as before, tell us if you see anything unusual. In particular you might see some overflowing text lines and/or need to click twice to advance, please let me know if this happens. I tested the scene you just sent and it looks OK with this new script.

drojf commented 3 years ago

@miere43 did you have any luck with this new version of the script? Any problems or bugs?

miere43 commented 3 years ago

@drojf I played one third of chapter 2 and didn't find any issues so far. I would like to finish full chapter before saying there are no problems at all :smile:

drojf commented 3 years ago

ah no worries, good to know you played a fair bit of it with no issue

miere43 commented 3 years ago

Finished EP2 with "Experimental Script" option from installer and noticed following issues:

  1. When text is cleared (in ADV mode frame) and new sentence begins, sometimes voice doesn't play for that first sentence. Everything works correctly if I reload the save file. Don't know if it happens with normal script. happens in normal script as well.
  2. Bug with text not advancing after shake effect still persists, saw it once (don't remember where though, it was when Jessica was talking). EP1 bug is fixed. Maybe it was "text disappearing issue" https://github.com/07th-mod/umineko-question/issues/147
  3. In experimental script this part on screenshot has shake effects and text overflows ADV frame. In normal script after each shake text gets cleared, so it doesn't overflow.
Screenshot ![rr](https://user-images.githubusercontent.com/3995549/121718508-0c743600-caeb-11eb-882e-9d04797638af.png)
drojf commented 3 years ago

Thanks for reporting these and testing the experimental script. I'll just comment on the first item for now, I need to fix/investigate items 2 and 3.

  1. When text is cleared (in ADV mode frame) and new sentence begins, sometimes voice doesn't play for that first sentence. Everything works correctly if I reload the save file. Don't know if it happens with normal script. happens in normal script as well.

My understanding was that this is just a bug in the engine - that it would sometimes just not play the voice, perhaps depending on the exact timing of your click. I never realized it happened specifically when text is cleared - maybe that has something to do with it. Now that we can modify the engine, perhaps we can figure it out.

I could be wrong though, and it might be that this new experimental script causes the issue. Do you know roughly how often it happened? (or how many times it happened?)

miere43 commented 3 years ago

I could be wrong though, and it might be that this new experimental script causes the issue. Do you know roughly how often it happened? (or how many times it happened?)

I played a little of EP3 with normal script and it seems that this issue happens at the same rate. I said this issue happens only for first sentence, but nope, it may happen for any sentence.

Just want to say even with bugs 2 and 3 playing with experimental script was much more pleasant experience, because there are a lot of times when text doesn't automatically advance and you have to double click to continue.

miere43 commented 3 years ago

This issue still happens multiple times in EP3.

1 [save1.zip](https://github.com/07th-mod/umineko-question/files/6644562/save1.zip) ![1](https://user-images.githubusercontent.com/3995549/121820782-4f760b00-cc9d-11eb-9a1c-6faf54435e8e.png)
2-4 ``` advchar "10" langjp:dwave_jp 0, but_3e1662:ใ€Œใชใ‚‰ใฐ่จ€ใฃใฆใฟใ‚ใ€‚@:dwave_jp 0, but_3e1663:ใ‚ใ่จ€ใˆใ‚„ใ—ใชใ„ใ•๏ผ@:dwave_jp 0, but_3e1664:ใ€€ไปŠๅบฆใ ใฃใฆ่จ€ใˆใ‚„ใ—ใชใ„ใ•ใƒƒ๏ผ๏ผ@/ langen:dwave_eng 0, but_3e1662:^"Then try saying it.^@:dwave_eng 0, but_3e1663:^ Yeah, you can't say it!^@:dwave_eng 0, but_3e1664:^ You can't say it this time either!!^@/ se1v 2,100 bg white,1 ;bg G1F_S1bP,0 set_oldnew_bg cg_e0103_a,G1F_S1bP,1,0 ld l,$BUT_MajimeB4,80 ``` ![3](https://user-images.githubusercontent.com/3995549/121820796-5bfa6380-cc9d-11eb-9a0d-8f9b47225d26.png) ![4](https://user-images.githubusercontent.com/3995549/121820805-6583cb80-cc9d-11eb-9e18-8cec59c4de2c.png) ![5](https://user-images.githubusercontent.com/3995549/121820806-66b4f880-cc9d-11eb-8db1-2a97f159b7de.png)
5 ``` ;ld c,$RG2_OdorokiA1,80 advchar "39" langjp:dwave_jp 0, rg2_3e102:^^!s0ใ€Œใ…ใ€โ€ฆโ€ฆใ†ใ‰ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใ‚ใใ‚ใ‚ใใƒƒ๏ผ๏ผ๏ผ๏ผใ€/ langen:dwave_eng 0, rg2_3e102:^^!s0^"...U-Uuowaaaaaaaaaaaaaaaaaaaaaaaaaahhh!!!!"^/ quakey 9,800 mov %disable_adv_clear, 1 langjp!sd langen!sd mov %disable_adv_clear, 0 advchar "-1" ``` ![6](https://user-images.githubusercontent.com/3995549/121820839-82b89a00-cc9d-11eb-8374-f65e36c26a05.png)
6 ``` advchar "10" langjp:dwave_jp 0, but_3e659:^^!s0ใ€Œ้ป™ใ‚Œใƒƒใฃใคใฃใฆใ‚“ใ ใƒƒ๏ผ๏ผ/ langen:dwave_eng 0, but_3e659:^^!s0^"I said be quiet!!^/ ;se1 12 quakey 5,800 mov %disable_adv_clear, 1 langjp!sd/ sl langen!sd/ mov %disable_adv_clear, 0 advchar "-1" ``` ![2](https://user-images.githubusercontent.com/3995549/121820792-5866dc80-cc9d-11eb-9e9f-0f89ef450ece.png)
drojf commented 3 years ago

For next time, you should take a screenshot just after the problem happens (not of the blank textbox), so I can look it up in the script.

I can't search the game script if there's no text in the image to type in, although for the CGs you posted I can figure out based on the image, but the other ones could be anywhere in the game script.

drojf commented 3 years ago

I think I know what the issue is, I think I can fix it reasonably easily.


Just for my own reference:

(from the first screenshot/save file)

langen:dwave_eng 0, rg1_3e113:^  Uwaaaaaaaaaaaaaaaaa...!!"^/
voicewait 4970
bg Mlib_1e,25
se1 13
quakey 4,700
mov %disable_adv_clear, 1
langjp!sd
langen!sd
mov %disable_adv_clear, 0
advchar "-1"

mov %disable_adv_clear, 1
langjp\
langen\
mov %disable_adv_clear, 0

se2 37
textoff
wait 200
se3v 37,100
textoff
wait 50
se1 37
textoff
wait 200
se2v 37,100

langjpใ€€ๅฑˆ่พฑใฎ่จ€่‘‰ใ‚’ๅฃใซใ™ใ‚‹ใ“ใจใซใ€ใจใ†ใจใ†่€ใˆๅˆ‡ใ‚Œใชใใชใ‚Šใ€@โ€ฆๅ‚ฒๆ…ขใฎๅใ‚’ๆŒใคๅฝผๅฅณใฏๆณฃใๅดฉใ‚Œใ‚‹ใ€‚@
langen^The girl known as Pride was finally unable to endure the words she was saying...^@^and broke down crying.^@

The problem seems to occur due to the advchar "-1" which changes the textbox type, being in the wrong spot - it should be just before the main piece of text, rather than in-between the "disable adv clear" sections.

from the section with the battler CGs (starting at set_oldnew_bg cg_e0103_a,G1F_S1bP,1,0):

mov %disable_adv_clear, 1
langjp!sd/
sl
langen!sd/
mov %disable_adv_clear, 0
advchar "-1"

se1v 64,100
se2v 27,100
se3v 2,100
quakex 5,500

mov %disable_adv_clear, 1
langjp\
langen\
mov %disable_adv_clear, 0

ld r,$EV2_OdorokiA2,64

advchar "34"
langjp:dwave_jp 0, ev2_3e1021:^^!s0ใ€Œไฝ•ใชใฎใ‚ˆใ“ใ‚Œใ‡ใˆใ‡๏ผŸ๏ผ/
langen:dwave_eng 0, ev2_3e1021:^^!s0^"What the hell is thaaaaaaaat?!^/

Note that in this case the advchar "-1 is unnecessary, since there's already a advchar "34" below. Make sure not to overwrite these if there's already one (either put the advchar "-1 just before the advchar "34" or remove it)

miere43 commented 3 years ago

For next time, you should take a screenshot just after the problem happens (not of the blank textbox), so I can look it up in the script.

Updated my comment with script locations.

drojf commented 3 years ago

@miere43 I've fixed some instances of this kind of error. Thanks for including the script locations.

Please try this new script: 0_2021-06-16_23d56525603b9b1537e0ee79eaef63eb0cff5fbd.zip. (commit 23d5652)

Your saves should be compatible, but please make a backup of your old script just in case it isn't.


Commits 881c6e282aebabc566ff17b1e1a82bfb92e0fb3e and 46bf3fadacaf94b6aa79e2a2716ab51a030f97c1 fix specific cases where the problem might occur, after reviewing places where my script detected the same kind of errors you saw.

Commit 23d56525603b9b1537e0ee79eaef63eb0cff5fbd doesn't directly fix anything, but could possibly fix some of the same issue. I haven't reviewed these changes.

miere43 commented 3 years ago

@drojf Looks like it's fixed now.