That said, I wouldn't mind watching a really serious dive (< 250K turn win). I have a very poor feel for strategy at that level; watching a single game might make a huge difference.
I would love to see this. I'd probably even pay someone for this. :b
Let's Play Angband video series
Collapse
X
-
Well, it's bedtime and I am recording a "movie". I do have an idea about whether it will play back or not: not.
As I don't want to do any more debugging, I'm not going to try replay yet.
EDIT: well, that plan worked out real well. I couldn't resist playing it back.
After fixing a couple silly bugs, it's kind of working, but it's hopelessly fragile.
Good night all.Last edited by Pete Mack; August 17, 2009, 07:55.Leave a comment:
-
-
-
For those who are curious, the fundamental changes are instumenting inkey_ex correctly, and adding the logger. There are other changes like disallowing saves and many user commands, but for hands-off use, these changes should suffice.
I'm still debugging, but this gets the basic idea.
EDIT:
BTW, isn't about time to join the 90s and replace "aux" with "impl"?
Also: the Borg's 'Mega-Hack' for injecting characters really is a Mega-Hack. There is a right way to do this. See diffs.txtAttached FilesLast edited by Pete Mack; August 16, 2009, 21:07.Leave a comment:
-
No--movies are more like the Borg.
Once macros* (which are mostly term-level stuff) are parsed, everything looks like a single keystroke or other UI event. It just keeps replaying the game until the log runs out.
(It's a bit more complicated, to allow for external inputs like screen refreshes, pauses, and quits, but not much--and as Eddie suggested, there's a possibility of a small set of legitimate commands like inventory that won't affect the game state--even the 'l'ook/e'x'amine command can't be allowed in most cases, because it changes targeting!)
I've got the basic logging written, now I'm hooking it into inkey().
* and I was wrong about writing macros to the special user prefs. They are processed before logging. keymaps are important, so I need to split them out of the macro_dump pref file writer.
EDIT
PS to Niles:
Sorry about hijacking your thread!Last edited by Pete Mack; August 16, 2009, 17:48.Leave a comment:
-
So if you go up or down stairs, does it continue recording? Are you guaranteed to get the same level? Or are movies limited to recording action on one particular level?
This is really interesting. I'm excited to see some movies!Leave a comment:
-
It's simpler than that. A "movie" is a directory with 3 files:
1. A wizard-mode save file from the start of the log (aka: checkpoint)
2. User preference file for prefs that change keystrokes. (keymaps, options, etc)
3. The actual key log, with an injected keystroke(s) for window size, (etc).
To replay, you just open the save, apply the preferences, and start replaying the keystrokes.
The hardest part is getting the preference file right.Leave a comment:
-
So how does this work actually? Does it save your keystrokes, and all the random seeds, and then on playback just re-create the entire game from that data?Leave a comment:
-
Already done
That's a separate issue--I'm looking for basic functionality and correctness.On playback, do you want to be able to pause and check inventory etc?
EDIT: The basic pause functionality is #1 on my TODO list.
Another separate issue.Do you want to add some visible feedback for things like searching?
Good point--I've already added some restrictions on recording -- like no messing with macros, keymaps, or options. Character dumps will be another.I tend to make a fair number of char dumps, often going off into another window to move them, thus perhaps avoiding a prompt about overwriting. How to deal with that?
If you want to do something out-of-game, you have to stop logging, then create a new session.
EDIT:
I'm still a bit ambivalent about this change.
I once added an Undo command as a joke in the OSX menus; it has since been removed. (It popped up an alert saying "Cheaters never win.") With redo logging, crude support for genuine undo becomes a trivial exercise (though it may take a lot of time.) I've already added another NOSCORE flag, but it will still be easy to abuse. It's already ridiculously easy to hack save files; the possibility of undo takes it to another level.Last edited by Pete Mack; August 16, 2009, 08:31.Leave a comment:
-
Things to consider:Update:
I'm about 50% done with a movie function. Most of the effort is in re-learning the source code and it's interaction with the OS. The actual logging is dead easy. (The only tricky thing is making sure to treat user preferences--macros, options, and keymaps--correctly.)
Do you want to store time delay between keystrokes as well?
On playback, do you want to be able to pause and check inventory etc?
Do you want to add some visible feedback for things like searching?
I tend to make a fair number of char dumps, often going off into another window to move them, thus perhaps avoiding a prompt about overwriting. How to deal with that?Leave a comment:
-
Update:
I'm about 50% done with a movie function. Most of the effort is in re-learning the source code and it's interaction with the OS. The actual logging is dead easy. (The only tricky thing is making sure to treat user preferences--macros, options, and keymaps--correctly.)Leave a comment:
-
It may be easier than you think, at least for those platforms where Term_resize is honored--that's all the major platforms. (main-win, main-x11, main-osx, main-ros all have terminal resize commands.)
EDIT: it may be easier than I think, too. Looks like it will take about 50 lines of code. Classic Databases (101) homework project.Last edited by Pete Mack; August 15, 2009, 19:19.Leave a comment:
-
I was thinking about logging keypresses, but that seems much harder than I first thought. If the size of the screen is off, there might be problems with the number of -more- prompts or looking about. I know that due to some wierd config problems my code acts differently when overwriting a saved Name.txt file.Leave a comment:
-
Leave a comment: