-
Notifications
You must be signed in to change notification settings - Fork 42
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Record advance time #457
Record advance time #457
Conversation
That win-scons one failed for github action reasons. Needs to re-run |
I technically have access to all 3 too, though my Windows/Linux computer has been turned off for quite awhile and probably needs servicing. |
@@ -1282,6 +1282,7 @@ bool use_space(location where) { | |||
// Note ... if this is a container, the code must first process any specials. If | |||
// specials return false, can't get items inside. If true, can get items inside. | |||
// Can't get items out in combat. | |||
// TODO this always returns false. Why? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I suspect it's supposed to return s1
.
This one looks wrong: 762feec One other that looked wrong is There are a couple of TODO notes that need removing now. One is the one you can see in 47b4456 and the other is the original TODO note about validating advance_time. |
I believe it's correct -- screen shifting needs to call advance_time() with need_redraw true but did_something false |
Oh, I was definitely rushing though when I recorded handle_alchemy. I have to redo that one and make sure to get both cases |
Ah, I guess that half makes sense. It suggests
What about other dialog things that can be cancelled? Like casting a spell, or deleting a PC… or giving a stackable item with charges… |
No, I didn't comprehensively test canceling cancelable actions. That actually is probably gonna reveal new bugs and discrepancies EDIT: ...or not. Because --verbose just records what happens. Actually I would expect those cases to just work. We'll see. |
Right. Unless |
I think this is completely wrong. I'm too many hours deep on this for today. Not thinking clearly. |
bea9ee1
to
2122227
Compare
if this ever triggers a spell being cast outside of combat, it should probably advance time. Inside of combat, I assume the Action Points system would handle advancing the time. |
How is the base64 content formatted when a load game action is recorded? If possible I'd like it to be broken into fixed-length lines (except for the final line). It could maybe use a CDATA section… I think that might be required to preserve the line breaks with the way you've implemented the replay system, though this isn't really a case where whitespace needs to be preserved at all… but a base64 decoder is supposed to ignore whitespace anyway so it shouldn't matter. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you planning to finish this anytime soon?
I’m coming back from an RSI-induced hiatus and my efforts are a little
diffuse across different issues right now. So yes, but I’m distracted.
…On Sat, Nov 9, 2024 at 1:53 PM Celtic Minstrel ***@***.***> wrote:
***@***.**** commented on this pull request.
Are you planning to finish this anytime soon?
—
Reply to this email directly, view it on GitHub
<#457 (review)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AATXBKPXRCBCD7PBFRTS7GTZ7ZR25AVCNFSM6AAAAABO3FZO2KVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDIMRVGU3DONZYGE>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
The Linux man page for base64 says 76 is the default chars-per-line of base64 output: I can't find any definitive standard about how many chars per line there should be, so I'll use 76. |
Fix #437
--verbose
flag for replay recording, which records internal testing actions (for now justadvance_time
)advance_time()
while correct and good, is not entirely necessary for replay integrity as long as action replays always handle thedid_something
flag correctly.To test this and find every discrepancy, I used these two replays which together contain one of every action (I'm pretty sure):
Archive.zip
There are some major caveats to those 2 replays, which is why I am not staging them in the repository:
Some things about these replays are cool:
This is a wibbly wobbly PR which I'm afraid rebasing for cleaner history, would get too hairy. So I haven't tried squashing anything yet. I also don't think it would be proper to squash the whole PR into one commit, because it shows the evolution of the
--verbose
flag and my reasoning for it. All the contiguous "fix some cases" commits could probably be squashed together easily, though.My next recording system PRs after this one will do the following to address the dangling problems:
test/replays/short
andtest/replays/long
test/replays.sh
which runs the replays, with the options to fail fast and/or skip the long ones.test/replays/success_{platform}.txt
which records the latest gitrev info unless the repository has been modified. This file can be staged, and potentially the CI for release builds could check for its existence and assert that a pull request comes with a recent success SHA for all 3 platforms (though this requires a dev to have access to all of Mac/Windows/Linux, which I do for now, but obviously not everyone will and my computers might break some day.)success
files can exist for all 3.