Joined: 7/17/2012
Posts: 544
Location: Switzerland
https://www.reddit.com/r/TAS/comments/ucitrv/an_update_on_my_tas_program_for_windows/ Project by FishLordSilvers
An update on my TAS program for Windows Just keeping people updated on this, and because I like sharing progress. I'm currently developing a program to TAS in windows, and I've managed to get complete keyboard/mouse input, as well as displaying the amount of frames that had passed since the first time you injected (injecting a dll into the target process). From here, I'll be working on being able to save and record multiple sessions, but I'm not really sure how I would approach frame-by-frame edits. Here's a sample video of me playing Terraria where I can see the input and frame count: https://youtu.be/gDQZogMDSek This video isn't playing or recording any input, but once I get that finished then I'll make this available to people. It may not look like much without actual frame-perfect playback.
Previous post
I've been working on something these past few days and I've finally begun with something that can do frame-perfect input. However, it's VERY barebones right now, because of my lack of coding knowledge, so all it does right now is click every other frame. Hopefully in the future, I'd be making something similar to Bizhawk's TAStudio program. The only two things I've tested this in is in Minecraft and Terraria, and also random windows that I moused over when I actually got the clicking to work. Minecraft worked fine and it clicked every other frame, but Terraria has some sort of check and just didn't process any of the clicking that wasn't actually from my mouse. I'll post updates on this in the future, and publicly release this once I get some sort of "modularization" going on. You can see a video here on me showing off what I have so far: https://www.youtube.com/watch?v=nLtCzK3oJ2Y For tech nerds out there: This does not mess with the system's clock, but instead injects a DLL program into the desired application to watch for frame updates. This whole system is actually someone else's work that was open source, I've just added some really barebones thing with it to click every other frame However, this arises a problem: DLL injection. Currently, Terraria goes fucking NUTS when you try to run OBS and record while the DLL was already injected. It's got some sort of anticheat set up with it, I'm not sure exactly what's happening here. But somewhere halfway it fails to do something, and it ends up corrupting the process. Colors show up as the wrong hue, things using alpha are slightly darker, and at one point it stopped music from working altogether. TL;DR, I'm working on a program to TAS windows programs. It's not released yet, and there's already some problems with it. I'll release it when I find a way to play back input.
My Citra 3DS rerecording movie files test repositery: https://cutt.ly/vdM0jzl Youtube playlist "Citra Tests": https://cutt.ly/AdM0wg9 http://www.youtube.com/user/phoenix1291
Judge, Moderator, Player (200)
Joined: 7/15/2021
Posts: 112
Location: United States
Good luck to FishLordSilvers. I hope (but don't expect in the slightest) that they will be able to wrangle Windows's weird idiosyncrasies.
Warepire
He/Him
Editor
Joined: 3/2/2010
Posts: 2178
Location: A little to the left of nowhere (Sweden)
I wish them luck. The main issues that comes with re-recording is time handling and memory management. The first is just a complete mess due to the number of ways it can be done, and all of them have various quirks that translate to "well, you're not getting exactly what you asked for" and if you try to implement it in the way it's asked for, everything will go absolutely crazy, figuring out a valid timer resolution on top of that so game frame rates end up as expected isn't anywhere near trivial either, because you can't use any form of window drawing as a hook to advance time, as many games start counting time long before they create their first window. And the memory management is actively fought by Windows itself and its layers and layers of compatibility shims that causes their debugger events to severely lie to you, making you unable to (easily) get any stable tracking in place. The latter point is what caused Hourglass to ultimately fail as a project, no one who actively worked on it wanted to deal with it. The first point we didn't even start dealing with, we just knew it was broken with its "tie the clock to the drawing calls" approach.
Dimon12321
He/Him
Editor, Reviewer, Experienced player (597)
Joined: 4/5/2014
Posts: 1227
Location: Romania
So, a good working Windows TAS program will probably require a reinvented Docker, i.e. a container that would isolate a game from the system, so you would be able to manage game time/memory/state. I read the topic of that guy and he said he won't implement any savestates or movie recording/playback features. What kind of "TAS" program is it then?
TASing is like making a film: only the best takes are shown in the final movie.
Judge, Moderator, Player (200)
Joined: 7/15/2021
Posts: 112
Location: United States
Another person asked yet again about a Windows TAS tool in the libTAS server, and I vaguely remembered this guy and their attempt to make such a tool. So I decided to check on it. Well, it's not looking good. It doesn't look like FishLordSilvers has posted any updates on either Reddit nor YouTube in 3 months, and both of the videos they posted have been deleted.
p0008874
He/Him
Player (71)
Joined: 3/2/2022
Posts: 35
Location: Taiwan
I can't believe he liked my comment and deleted. Like I said, If you want to recreate this miracle, Learn Rust and C#
Judge, Moderator, Player (200)
Joined: 7/15/2021
Posts: 112
Location: United States
p0008874 wrote:
If you want to recreate this miracle,
This is not a "miracle" in the slightest. As far as I know, they never got it working (or working well) with anything other than Terraria, which is literally the exact same situation as Hourglass with Cave Story.
p0008874 wrote:
Learn Rust and C#
I fail to see how either of those languages would help solve the fundamental problem of Windows in any way. They may be better languages to use, but they're not magic and they're not silver bullets. You would still need to, y'know, actually deal with the obstacles that Windows creates, no matter what language you use.