Joined: 10/18/2011
Posts: 64
TAS = Twitch-Assisted Speedrun Something? So anyway, this isn't exactly what you guys normally go for, but I figured it had morphed into something that was close enough that it might catch the interest of a few of you. http://www.twitch.tv/wulf2k/ http://wulf2k.ca/bb-commands.html I've got a bot monitoring the Twitch chat for command strings which it will then feed to a hacked "PS4 Remote Play" app with as close to frame-precision accuracy as it can manage through the network. ...Which sadly, isn't really that accurate, but close enough that a command string can usually be repeatable over a few tries. Example sq, x - This will return the character to the last used lamp, providing us with a consistent starting point. lr, hlrx7, wfx2, wfl, wfr, flong, hwf, hwbl, wf, llx3, xx2, r3, x, r3, hllx3, flong, wf, wfr, wf, wfl, wfx2, ll, wfx2, wflx2, wfr, wfx3, wfr, wfl, wfx3, hwfr, hwfl, lrx4, r3, r1x4, r1x4, r1x4 This is the latest string of commands I just pulled from what the guys are working on in chat. From the Central Yharnam lamp, it will fairly reliably end input in a safe spot semi-near the shortcut gate, and they're adding to it from there. The commands were initially created for my TwitchPlaysDemon'sSouls run, then adapted for DarkSouls. On those systems I was able to modify the executable file and feed it an exact number of frames to execute that controller input for, then pause execution to await new input. That worked well enough. (Update: They just opened the shortcut. Yay progress.) So anyway, without the ability to pause the game and adjust to what you see after the Twitch stream catches up, it's become far more of a TAS-style run where people are trying to enter an entire string that will accomplish a goal. Tonight I'll be adding more commands to give a more granular level of control over the inputs, something allowing you to specify more exact analog stick values with a frame-duration to hold them for, instead of just using the preset values I assigned to commands when I first set things up. So long story short, that's a thing that people can do right now. Feel free to stop by if that's your cup of tea. The options menu and ability to use blood vials are restricted to people that have stuck around long enough to prove they're not just trying to troll the run, but everything else is available to anybody. On a more technical level, my next "wish upon a star" level of improvement is to get around the Remote Play app's inherent level of delay and hook up an Arduino to either the PS4 directly, or just breadboard it into a PS4 controller and press buttons as directed. If there's anybody that's familiar with any of the console-verification bots I'd be interested in hearing their input on a PS4 equivalent device.
Joined: 10/18/2011
Posts: 64
Let me know if this isn't appropriate for the forum and I'll stop posting / delete it Here's a video of an input string that reaches the first boss from the CY lamp. https://youtu.be/J48PGP8bYhU New command list now includes c####-##, where each of the first 4 numbers is a value for pressing each analog stick axis, with the last ## being a rough number of frames to hold it for. I was also able to work out a command string that would walk from the hunter's dream lamp-post, warp to central yarnham, wait an exact duration for the loading screen to finish and then kill the patrolling guy at the bottom of the ladder. The loading screen gave me both a consistent time and position reference, so the randomness of his patrol position was removed. It's getting slightly TAS-ier, even though I'll never be able to truly control the RNG.
Spikestuff
They/Them
Editor, Publisher, Expert player (2643)
Joined: 10/12/2011
Posts: 6439
Location: The land down under.
It's probably more appropriate to title it as Twitch Plays Bloodborne rather than "TAS" as it's technically no Tools that Assist you. And your form of "TAS" (Twitch Assisted Speedrun) doesn't make sense as it doesn't perform of the level of a speedrun.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11476
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
TwitchAssistedSubplay.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 10/18/2011
Posts: 64
Chat provides a comma separated list of inputs and frame durations which are then fed to the PS4. Everybody then watches them play out with minimal ability to affect the outcome. It's primitive, but I'd say it's no less tool-assisted than any other TAS. For example, here's the latest input string they used to reach and attack the first boss. I'd argue that the tool that parses and feeds this input to the PS4 is assisting.
noholdo, c7155-1, holdo, c7155-13, c6155-15, c4155-39, c7355-30, c7155-15, c5155-38, c2155-10, c1155-25, c5155-22, noholdo, c7555-22, llx2, holdo, c6155-25, c8155-37, c5155-55, c7155-18, c5155-35, x, wfx4, noholdo, r3, xx2, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, trix2, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, r3, r1x3, rof, trix2, r3
As for speedrun, yes, it's definitely a poor speedrun. But I believe the term TAS has been applied to quite a few runs that don't go for speed. Anyway, if nobody's interested that's fine, it's just the closest thing to a TAS that the PS4 is going to be seeing any time soon.
Editor, Skilled player (1202)
Joined: 9/27/2008
Posts: 1085
This is strictly console verified, as it's the PS4 that's accepting your commands. Right? One thing I am curious about is whether inputs can be recorded and played back using something like this. You know, pull out that controller, do some actions, then reset the game back to a known state and see if whatever program you had recording the controller can play it back flawlessly. If it helps, this project is interesting to me. At least, a string of commands from a consistent starting point is giving relatively consistent results, so there may be hope for, at the least, small TASed segments. We probably won't ever get consistent loading times, so I suppose one step is to somehow read the output of the game (video/audio) and time our inputs based on some clear cues. Even then, input lag and inconsistent internal timing might be a problem.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11476
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
You can use them as a bot that mashes random buttons and load some sort of a state and get them enter different inputs until they achieve some special goal for the given segment. For us it's speed. For Bisqwit's SMB bot it was beating the game: Link to video The point it a TAS is to rerecord. When you set a goal and do the rerecording, you start superplaying. Now look at the top left corner of this page.
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 10/18/2011
Posts: 64
This is strictly console verified, as it's the PS4 that's accepting your commands. Right?
Correct. Edit: Sorry, mostly correct. It's the PS4 that's accepting my commands, but it's accepting them through the PS4 remote play app. So, console verified, not controller verified?
One thing I am curious about is whether inputs can be recorded and played back using something like this. You know, pull out that controller, do some actions, then reset the game back to a known state and see if whatever program you had recording the controller can play it back flawlessly.
Currently, it's not 100% because I'm hacked into the Remote Play app instead of the controller directly. Minor network delays are enough to throw off complex commands, which can mean the difference between just barely missing an obstacle or clipping it, and changing your angle. That's why my future goal is to Arduino the controller input to the console directly instead of through Remote Play. If you craft the commands with a bit of flexibility they're rather repeatable. I looped one sequence of commands about 20 times last night that would jump off a cliff, kill a guy at the bottom, climb the ladder, warp out, and warp back in, with perfectly timed delays so that you could jump back off the cliff and catch him at the some point in his patrol for a loop. The loading times are surprisingly consistent. No noticeable difference in the amount of time between the loading screen ending and the commands beginning during that loop. I started trying to parse screen data a few days ago but need to improve my skills there. My method of trying to grab pixel data was far too slow to do anything meaningful with. Edit:
One thing I am curious about is whether inputs can be recorded and played back using something like this
To address this specifically, it could be. I'd have to tweak the format a bit, and maybe hook between the controller and ps4 to round the stick's values a bit so that the command buffer isn't filled faster than the Twitch chat could possibly update, but it should work. It would probably work much better to get rid of the Twitch component entirely, but that would be a rather different experience. Maybe once it's done I can refine that aspect of things a tad.
Joined: 10/18/2011
Posts: 64
feos wrote:
You can use them as a bot that mashes random buttons and load some sort of a state and get them enter different inputs until they achieve some special goal for the given segment. For us it's speed. For Bisqwit's SMB bot it was beating the game: The point it a TAS is to rerecord. When you set a goal and do the rerecording, you start superplaying. Now look at the top left corner of this page.
Yeah, calling it a speedrun was a rookie mistake. I should know better. And you're right about the randombot aspect. It's a fun social experience mixing and matching other people's strings to see what shakes out. One of the members had actually programmed his chatbot to spit out random commands for a bit. Most of it's garbage, but there are a few neat sequences that can be reused to reposition consistently.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11476
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
Wulf2k wrote:
Yeah, calling it a speedrun was a rookie mistake. I should know better.
That's not a mistake either. Both terms apply, they're just not quite equal. http://tasvideos.org/Glossary.html#ToolAssistedSpeedrunTas
Warning: When making decisions, I try to collect as much data as possible before actually deciding. I try to abstract away and see the principles behind real world events and people's opinions. I try to generalize them and turn into something clear and reusable. I hate depending on unpredictable and having to make lottery guesses. Any problem can be solved by systems thinking and acting.
Joined: 10/18/2011
Posts: 64
Well, they just managed to beat the Cleric Beast. Whatever you want to call this, it's definitely.... "something". https://youtu.be/8JTGIbQ1K68
Joined: 10/18/2011
Posts: 64
And they just downed Father G https://youtu.be/e3ivK3px6x0 Chat's skill with string input is developing rapidly. Reliably repeatable input strings are being added every time I check back in.
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Pretty impressive. I'd imagine this type of input (stringed together commands) is probably the future of TAS for newer and much longer games. Pretty neat demo of it using Twitch chat. Even more so that it's reproducible.
Joined: 10/18/2011
Posts: 64
I'd imagine this type of input (stringed together commands) is probably the future of TAS for newer and much longer games.
Have there been any TAS (or TAS-lite) attempts on the newer systems? I'd imagine there should be some RNG-free games that would be ideal for this sort of treatment. Super Meat Boy is coming to mind as something that would probably be perfectly suited for this style of TAS.
Joined: 10/18/2011
Posts: 64
Some of the guys are beginning to suspect that an inconsistent framerate is the biggest source of strings desyncing. In Old Yharnham, one rather complicated path goes past a bunch of enemies, through a bunch of doors, around a bunch of corners, up a ladder, and makes a jump, before it ends up fine (nearly) every time. Another string runs nearly straight, gets a good view of the horizon and falls off a ledge, only hits the ladder below with about 50% accuracy. That's unfortunate.
Joined: 10/18/2011
Posts: 64
They've downed a fair few more bosses, but I thought I'd share this one in particular since it worked out so well. https://youtu.be/7i9yrWUgRvU Shadows of Yharnam. It's almost getting to the point where the quotes around "TAS" are optional....
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Pretty cool how far this is getting. Any plans to improve the command scripting to get more optimal movement? How many unique commands do you think are needed to get optimal looking movement while still being relatively easy and fast to input?
Joined: 10/18/2011
Posts: 64
Just a few days ago I did a fairly major code update that tightened up the timing on the inputs. Apparently VB.NET just won't get any more accurate than 50ish milliseconds when using timers, so I switched the inputs over to their own thread with more accurate sleeps. It still isn't 100% accurate with single frame inputs, but I believe that any remaining issues are down to network latency which can't be reasonably improved. Eventually I'm going to switch to Arduino acting as a real controller, but I doubt that'll be ready before the run is complete. Two things I've discovered that (to my knowledge) can only be done with this input method and not by hand with a controller are rolling out of a run instead of jumping, and jumping back while running forward, which both involve single frame-presses and direction changes. Even with this they only come out ~50% of the time. As for your question, I think the commands exist already, they're just under-used. 9 degrees of movement on each joystick axis should allow nearly any human-realistic movement once you're used to them. At least for this style of game. If the l-stick isn't quite accurate enough, you can combine it with camera rotation on the rstick to get exactly what you need. Very few of the players take full advantage of this, but it always looks nice when they do. Of course, that's the trade-off between easy to enter, and accurate. Most of them just walk forward/right/forward-right and brute force their way to the destination.
Joined: 10/18/2011
Posts: 64
So, they beat the game. Moon Presence is dead. They're still working on the defiled chalice, which may or may not be possible, but overall I'm rather satisfied with how it all played out. Once they're done for good, I'll take things down and try make a few more tweaks for TAS-ability rather than playability. Bloodborne was a fun game, but various factors made it not the most reproduceable. I'm thinking I might try TASing a few levels of Super Meat Boy, just to see how it works with that sort of game. Does anybody know if SMB has been TAS'd on any other systems?
Alyosha
He/Him
Editor, Emulator Coder, Expert player (3822)
Joined: 11/30/2014
Posts: 2832
Location: US
Cool! Will there be a youtube video or something similar compilation of the complete run? Not sure what's been done on Meat Boy but I'll be interested to see the results.
Patashu
He/Him
Joined: 10/2/2005
Posts: 4043
There's a PC Super Meat Boy TAS: https://www.youtube.com/watch?v=2JHPrmQS29k It was ALMOST possible to do in Hourglass and submit. The biggest problem is that the loading times were non-deterministic each time you tried to play it back. So instead, each level was TASed and recorded separately, and then it was all spliced together to look like a continuous playthrough. There is one other concern. Super Meat Boy's physics are tied to the framerate. So if a frame takes longer or shorter, the physics will act differently. (The most extreme example is that by doing something to freeze Windows Super Meat Boy briefly, you can lag-glitch through walls, Donkey Kong 64 style) I'm not sure if this is also a problem on consoles that causes indeterminism or not. To my knowledge it has not been TASed on any system besides PC. So you'd be the first to explore it if you go that path.
My Chiptune music, made in Famitracker: http://soundcloud.com/patashu My twitch. I stream mostly shmups & rhythm games http://twitch.tv/patashu My youtube, again shmups and rhythm games and misc stuff: http://youtube.com/user/patashu
Joined: 10/18/2011
Posts: 64
Well, there's nothing that shows the 'entire run'. In hindsight I should have done some better archiving of the mid-level stuff, like opening shortcuts and dealing with NPCs, but since it was a 24/7 thing it was hard to keep track of every bit of progress. https://www.youtube.com/playlist?list=PLGCXPDFBR0mSzOra0gshurvE2AvRoLQ1c There's a playlist of all the boss kills, and I think they should all have the boss-approaches as well, but always after any shortcuts were already opened.