Post subject: Proposal: New recording modes (multi-tracking)
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
The concept of "multi-tracking" has great potential for improving TASes (especially multiplayer movies). It is an idea that has been attempted throughout the years in several ways. In some cases with emulator features such as the experimental FCEUX .16 multitracking branch by miau, or in GENS rerecording. With the infiltration of Lua scripting into emulators we even have nice attempts using lua scripts However, I think the idea could be more easily implemented into any emulator by using new recording modes instead of the usual 2. Here is what I am proposing is 2 new modes in addition to the 2 we typically already have:
    Read-only - in this mode user input does not affect the movie. Read+write - overwrites any existing input with user input Append - any user input is ADDED to the existing input. Invert - any existing input is inverted if the user input is identical.
The key to Append mode is that input is not erased from the movie, only added to it. "Append" might be a misleading term because it might imply adding input to the end of a movie file. However, I think "Add" isn't descriptive enough. Let's say you have a movie that is 1000 frames. You go back to frame 900 in append mode. The emulator will be in playback mode like it would for read-only. However, any user input will be added too. For instance, if you held Right for 100 frames, but pressed A. The A would be added to the movie file. If you pressed Right, nothing would happen because right is already in the movie file. Invert would be a natural addition to having an append mode. If any input from the user matches the input from the movie, the input is removed. Another possible name for this could be "Scrub" mode (a term borrowed from audio recording) In the previous example, everything would be the same for pressing A. However, if you pressed right, then right would be removed from the movie file.
It's hard to look this good. My TAS projects
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
Nice ideas. I haven't put much thought into how practical it would be to TAS like that, but it sure can be useful for example to try to manipulate luck DURING movie playback by pressing some buttons that don't affect the movement. Maybe you could play with "Append" AND read-only both turned on! That way you could even play against a recorded movie on street fighter over and over without having to pick a backup of the file every time you restart from the savestate, or play some game in co-op mode while trying not to make the other player desync too much! There are probably better uses for this "player vs movie" idea. Maybe a challenge "who can keep up in real time with my movie in this coop 2 players platformer". Mode naming suggestions: Insert Inject Complement Overwrite
Tub
Joined: 6/25/2005
Posts: 1377
I wondered about that a while ago, but figured it'd already be implemented if any of you "real" TASers considered it useful *shrug* how about naming the modes: Read-Only Overwrite Change: Add Change: Invert ? having separate modes for each controller may be useful as well?
m00
Joined: 10/20/2006
Posts: 1248
That's also going to be great for people with sucky keyboards that can't press many keys at a time. Yay! That is if switching from append to regular write/rewrite would work by entering a shortcut.
Joined: 7/2/2007
Posts: 3960
I was going to suggest "Insert", but I see FODA beat me to it. :)
Pyrel - an open-source rewrite of the Angband roguelike game in Python.
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Kuwaga wrote:
That is if switching from append to regular write/rewrite would work by entering a shortcut.
I think the logical choice would be to have the read-only toggle hotkey toggle between all the modes.
It's hard to look this good. My TAS projects
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
* Read-Only/Read+Write Toggle - this switch decides whether user input affect the movie file. This is combined with each Interactive Mode below. * Interactive Modes:
    * OR (accumulate) - any user input is ADDED to movie input. * XOR (invert) - any user input inverts corresponding movie input state (on/off). * AND (filter) - only reserves matching input. * True Override (overwrite) - always overrides and only overrides played frames of movie input with user input.
EDIT: and add "Truncate Movie" function then. EDIT 2: And finally the traditional mode:
    * Classical - what nowadays emulators are doing:
      * Overwrite (with Read+Write) - overrides played frames of movie input with user input and truncate the movie whenever the user stops it. * Neglect/Ignore (with Read-Only) - any user input doesn't matter, as ignored.
EDIT 3: [ list ] trick.
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do
Emulator Coder, Skilled player (1310)
Joined: 12/21/2004
Posts: 2687
adelikat wrote:
Kuwaga wrote:
That is if switching from append to regular write/rewrite would work by entering a shortcut.
I think the logical choice would be to have the read-only toggle hotkey toggle between all the modes.
But that would mean we have to press the read-only toggle hotkey twice as many times to get the same result as before, and it's one of the most-pressed hotkeys. Also, I should point out that none of the proposed modes provide the same functionality as the original 2-player recording multitracking implementations did. The main thing that enabled was making it possible to overwrite a certain set of buttons and leave other buttons alone, which this doesn't do except in the most painstaking way of manual inversion. The most general-purpose way to do it would be if you made it possible for each of the four modes to be assigned per button (e.g. A is in record mode, B is in playback mode, Start is in add mode, Select is in invert mode, etc.), and had a way to switch between already-configured sets of button recording settings with a hotkey.
Mitjitsu
He/Him
Banned User
Joined: 4/24/2006
Posts: 2997
Kuwaga wrote:
That's also going to be great for people with sucky keyboards that can't press many keys at a time. Yay!
You could always use a controller, if that becomes an overburdening issue. I'm looking forward to this feature potentially being implemented. Especially for games that have more than 2 players. It would be useful for doing a Co-op Duke Nukem 64 run, which I'm considering doing in the distant future.
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
I'm not sure if this information is entirely relevant, but I wanted to show another approach to re-recording that may help with discussions/ideas. I'm not saying I advocate these methods 100%. I'm just explaining neutrally. In Worms Armageddon PC re-recording, Deadcode implemented (without knowing about tool-assisted speed-running beforehand) switching between these types of modes on the fly. First, the replay file (input video) is played back in Playback mode. From here, the user can press the R key to switch to Redubbing mode. This restarts the playback in this other mode. As the replay is played back in Redubbing mode, input from the original replay file is written (redubbed) to a new replay file frame-by-frame. In this mode, the user can press the T key (to Take control) at any time to switch to In Control mode. Also, M can be pressed to mark a frame to automatically fast-forward to that frame upon redub, like saving states. Obviously, this wouldn't work in a more complex movie (hours long). While In Control, any input given by the user is written to the newly-redubbed replay file. R can be pressed at any time to redub a new replay and take control of it at the desired frame. With this method, at the end of a TASing session, the user ends up with precisely 1.0 buttloads of unfinished replays which can be browsed through in case they wanted to use some method they had ditched several re-records ago. --- The "Append" mode adelikat explained above is very interesting. I can see it being very useful in many games, especially for luck manipulation. I agree that "Append" is a misleading term here. What about "Add Simultaneous Input Mode"? That's probably pretty long, but it explains what it is better.
Active player (328)
Joined: 2/23/2005
Posts: 786
I can see a problem with this: say you recorded Player 1's optimized path, and now you want to record Player 2. So you rewind and switch to "Append" mode, and start to play with Player 2. But then you make a mistake playing as Player 2, so you have to re-record. But since you're playing in "Append" mode, your mistake persists - so when you try Player 2's actions again, you'll find that all the buttons you pressed stay pressed, and only the new buttons you pressed will be added to the movie. So, what now? You can't delete your input without deleting your perfect Player 1 actions. So you have to rewind and switch to "Invert" mode systematically "un-play" your mistake with Player 2, then rewind again and start from scratch? That seems very burdensome, especially considering the sheer number of times one re-records in a video. Here's how I think it should work: create a Read Only / Edit toggle for each individual player. They would behave exactly as the toggle does for movies now, but only applies to that one particular player. So you can record Player 1, then set Player 1 to read-only while you record Player 2. Since you're only going to be recording one player at a time anyway, which is the whole point of multi-track recording, this seems the most intuitive and efficient solution. You might even add an input option to apply P1's input to any player's gamepad which is set to Edit, making it possible to take turns recording wtih a single gamepad. While I think this is the best solution for recording multiplayer movies, it doesn't address the issue of simply adding or subtracting input from an already-playing movie. So, perhaps the Insert and Scrub modes could also be implemented as well. They wouldn't be used for multi-track recording, but rather they'd be useful for precision editing such as correcting small mistakes and adjusting luck manipulation.
Banned User
Joined: 3/10/2004
Posts: 7698
Location: Finland
I'm not so sure "invert" is such a good term. It sounds like it would invert everything you do, ie. if you press right, it actually presses left, and so on. (Yes, it doesn't make any sense, which is my point, really.) How about "remove" instead? Any key you press will be removed from the movie if it was there at that frame. Speaking of multi-tracking, how about having a "piano roll" view of the keypresses, similar to what eg. midi sequencers or movie editing software use? That way you would not only be able to easily scroll through the entire movie and see which keys are being pressed at which point, but you could also easily edit key presses (add, remove) with the mouse, if so desired.
Active player (328)
Joined: 2/23/2005
Posts: 786
FCEUX has that, the TAS editor. It's incomplete, though.
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
I thought invert would mean that keys that aren't pressed will be recorded as pressed and vice-versa.
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
Warp wrote:
Speaking of multi-tracking, how about having a "piano roll" view of the keypresses, similar to what eg. midi sequencers or movie editing software use? That way you would not only be able to easily scroll through the entire movie and see which keys are being pressed at which point, but you could also easily edit key presses (add, remove) with the mouse, if so desired.
Great idea! It could continually show the input during playback like, for example, Reason or Fruity Loops does. In a well-written emulator with proper rewinding and seeking like QuickNES, you could browse through this "piano roll" type viewport and seek to a specific spot in the movie (to skip a long section of no input, for example).
Former player
Joined: 9/1/2005
Posts: 803
The problem I see with append mode is that it doesn't alter the movie length, so added input that saves time will be wasted simply because it doesn't account for any savings of time that might be made by the change, thusly requiring manual editing, hexing, or redoing anyway. For things that have a fixed length, then I don't think it's much of an issue, but otherwise it seems kinda eh.
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
Lex wrote:
Warp wrote:
Speaking of multi-tracking, how about having a "piano roll" view of the keypresses, similar to what eg. midi sequencers or movie editing software use? That way you would not only be able to easily scroll through the entire movie and see which keys are being pressed at which point, but you could also easily edit key presses (add, remove) with the mouse, if so desired.
Great idea! It could continually show the input during playback like, for example, Reason or Fruity Loops does. In a well-written emulator with proper rewinding and seeking like QuickNES, you could browse through this "piano roll" type viewport and seek to a specific spot in the movie (to skip a long section of no input, for example).
This idea has been brought up several times throughout tasvideos history, but noone has made it yet.
Post subject: Re: Proposal: New recording modes (multi-tracking)
Joined: 11/11/2006
Posts: 1235
Location: United Kingdom
adelikat wrote:
    Invert - any existing input is inverted if the user input is identical.
I believe a better word would be 'negate'. 'button-press-eraser', 'erase by press' or 'subtract(er)' are also suggestions.
<adelikat> I am annoyed at my irc statements ending up in forums & sigs
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
FODA wrote:
Lex wrote:
Warp wrote:
Speaking of multi-tracking, how about having a "piano roll" view of the keypresses, similar to what eg. midi sequencers or movie editing software use? That way you would not only be able to easily scroll through the entire movie and see which keys are being pressed at which point, but you could also easily edit key presses (add, remove) with the mouse, if so desired.
Great idea! It could continually show the input during playback like, for example, Reason or Fruity Loops does. In a well-written emulator with proper rewinding and seeking like QuickNES, you could browse through this "piano roll" type viewport and seek to a specific spot in the movie (to skip a long section of no input, for example).
This idea has been brought up several times throughout tasvideos history, but noone has made it yet.
FCEUX has had this for about a year and a half now http://tasvideos.org/EmulatorResources/TASEdit.html Sure it is buggy and doesn't have all the awesome features we hope to put into it. But the basic premise works at least.
It's hard to look this good. My TAS projects
Senior Moderator
Joined: 8/4/2005
Posts: 5777
Location: Away
How about "combine" or "include" instead of "add"/"append"? Also voting for "negate" or "subtract" instead of "invert". Nice ideas, btw.
Warp wrote:
Edit: I think I understand now: It's my avatar, isn't it? It makes me look angry.
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
Combine feels like the perfect word for it.
Joined: 8/3/2004
Posts: 380
Location: Finland
FODA wrote:
Combine feels like the perfect word for it.
I, for one, welcome our new Combine overlords!
"Kids! Bringing about Armageddon can be dangerous. Do not attempt it in your home." ( Pratchett & Gaiman: Good Omens )
Joined: 6/14/2004
Posts: 646
You guys are arguing terminology, when it already exists as AND, OR, NOT, and XOR.
I like my "thank you"s in monetary form.
Lex
Joined: 6/25/2007
Posts: 732
Location: Vancouver, British Columbia, Canada
NrgSpoon wrote:
You guys are arguing terminology, when it already exists as AND, OR, NOT, and XOR.
To be honest, those names are terrible. They may be assembly standard, but just suck for anything meant to be read by a human rather than a machine. Maybe you were joking, and understand that "Combine" is clearly better than "OR" and "Invert" is clearly better than the nonsensical "XOR".
Editor, Emulator Coder, Expert player (2156)
Joined: 5/22/2007
Posts: 1134
Location: Glitchvania
Lex wrote:
To be honest, those names are terrible. They may be assembly standard, but just suck for anything meant to be read by a human rather than a machine. Maybe you were joking, and understand that "Combine" is clearly better than "OR" and "Invert" is clearly better than the nonsensical "XOR".
I don't think so. The logical operators are much less ambiguous (and less English).
<klmz> it reminds me of that people used to keep quoting adelikat's IRC statements in the old good days <adelikat> no doubt <adelikat> klmz, they still do