Post subject: Input Visualization Ideas
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Has anyone thought of developing the "input animation" thing further? Animated Input (For Real) One idea I had is to create something similar to Star Control, where the cockpit view of the ship pilot is animated to correspond the player input: Currently, FCEU has nice and informative image of a NES controller that shows the active input, but adding hands to it might make it funnier to watch. For a more interesting result, a unique image for every 256 button combinations could be made, so that the input display would look more versatile with all the different hand movements. It would take some work to draw all the 256 images, but mostly they should be based on each other, so that the animation would not get too jerky and hard to follow. There are many possibilities for drawing 256 images, so it would not necessarily need to be the player hands. For a purely visual experience, any 256 images could be used. Use your imagination for funny results here. TAS Music Same as above, but with 255 different sound effects. (For a poorer experience, 8 sound effects could be used, one for each button.) Assigning various instrument samples for the buttons might be a good idea. Afterall, TAS input files resemble MIDI tracks and usually have some repeating rhythms. Lots of drums and percussions might work to avoid cacophonic or monotonus melodies. Additionally, this could be combined with 256 (or 8) images of a musician. MorTAS Kombat This is another idea I got from Star Control: How about making two TAS input files fight against each other with space ships? This would require some serious work from the coder, but the resulting program might be hilarious. The program, preferably called MorTAS Kombat, would load two input files and use them to move two simple player characters or space ships. The buttons could be assigned for something like this: D-Pad: Movement A: Fire weapon 1 B: Fire weapon 2 Select: Something special Start: Something special 2 For additional fun, left-right combination should be made to produce super speed. For even more additional fun, long wobbling patterns on D-Pad should activate a powerful self-destruct attack. Maybe some fighting game hack would be easier to make for this purpose than a completely new game? Color a Dinosaur! Number of frames in the TAS (movie size) = Number of pixels in the dinosaur (image size) Number of available input patterns on a single frame (256) = Number of available colors for each pixel (256) Number of existing TAS movies (thousands!) = Number of different dinosaurs (thousands!) Replay-Generated Meta-TAS (Oh-yes!) First, generate a continuous real-time stream of random input for the controller. Or preferably, use an existing TAS input. Then, assign additional replayed input of an existing TAS (a meta-movie) for emulator functions: D-Pad: frame advance A: save state B: load state Select: switch save slot Start: fast-forward Then, replay some movie and watch how the input of an existing TAS uses the emulator to record a new TAS. In other words, the result would be TAS input visualized as a TAS-making process. Generally Input -> Input Visualization Tool -> Output Just think of ways to use the input to produce surprising, artistic, informative, funny or redundant output. Please, go ahead and develop your own ideas. Have fun! I have no experience in graphics design or coding, so I could not implement any of these things. These are just ideas that happened to come to my mind. Nothing useful, but hopefully funny. I'm not expecting anyone to make these silly things reality, but if it happens for any of these ideas, I will LMAO and donate 1500 rerecords (for any game on FCEU or Gens) for the author of the tool.
Player (121)
Joined: 2/11/2007
Posts: 1522
Someone oughta open a can o' Lua on this idea. I would also love a movie to MIDI converter :) Edit: OK, so I opened the can :P Here's a Lua script to draw rectangles around Mario in SMW corresponding to input. (Visit this thread for info on running Lua scripts in snes9x) There is one rectangle for each direction, and a square for each button in the corners. I had to get the controller inputs from ram as I can't read them directly, so sometimes it does not correspond perfectly. Notably, it can't distinguish if you press A and B at the same time (it will read it as just A). Same for X and Y. Doesn't happen much in this game though. Edit Part 2, the Revenge: The code didn't paste correctly, so sorry if someone tried it :( I've put a link to this one plus ones for Metroid and Zelda below...
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Aqfaq wrote:
Has anyone thought of developing the "input animation" thing further?
That's somewhat similar to the idea I had a few years back when I created this video: https://files.tasvideos.org/bisqwit/povray-assisted-clip.avi (15 MB). Unfortunately, my modelling skills did not allow me to add hands into it…
Joined: 3/7/2006
Posts: 720
Location: UK
Some excellent and funny ideas you have there. :) I'm quite interested in them too! I'm known to do silly things by playing around with demo files, and TAS input seems a natural extension. I'll see what I can rustle up for your 'MorTAS Kombat' idea. I'll try spaceships :) Note: It might be more interesting if any visualisation program were allowed to produce more than one graphic frame for one input frame. Just a thought. Here's my first attempt. It reads FCMs or FMVs. Syntax: iv_ship <filename.ext> [players] players is only necessary with FCMs, they don't store how many there is Yeah, that's a lot of dlls and junk. No idea if it works on linux, probably not. Blame py2exe and pygame. Have fun!
Voted NO for NO reason
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
LagDotCom wrote:
Here's my first attempt.
:o It had been only 6 hours from my first post! I am impressed. LagDotCom, you are fast! iv_ship.exe seems very promising and funny. It is exactly what I had on my mind. I hope you develop it further. Maybe the fire rate could be adjusted a bit, so that the TAS files that shoot a lot don't have so huge advantage. (Heh, klmz2-smb1.fcm would beat adelikat-gradius.fcm a bit too easily, because gradius only tries to dodge and smb shoots a constant stream of bullets.) The speed is quite fast, so maybe it should be lowered about 5-10%? Or maybe the speed is different on different machines, in which case adjustable speed would be a good addition. A scoring system that counts the hits might be a good way to determine the winner. I hope you manage to add more weapons to it. :) This thing seems awesome in a uniquely funny way. There's something universal in these red and blue ships. I wonder what else you come up with. :)
Joined: 3/7/2006
Posts: 720
Location: UK
I'm open to ideas. :) It should always run at 60fps (if it can), the framerate is limited internally. But yeah, a fire rate limiter would make sense too. I haven't even checked for collisions yet, that shouldn't be too hard. Scoring would be cool. When the input file ends it just exits (or possibly breaks), at the moment. More weapons? Yeah, sure... a frontal screen-long laser would be nice, especially with lots of turning. L/R or Select/Mode could change them, I guess. I wrote the program to be as general as possible; all I have to do is write an extra 2k or so for a new input format, and it'll support GMV, or whatever. The only problem is the names of the buttons. That's why Up and A both make the ship accelerate (and if both are pressed, zoom!)
Voted NO for NO reason
Post subject: Re: Input Visualization Ideas
nesrocks
He/Him
Player (246)
Joined: 5/1/2004
Posts: 4096
Location: Rio, Brazil
Aqfaq wrote:
Currently, FCEU has nice and informative image of a NES controller that shows the active input, but adding hands to it might make it funnier to watch. For a more interesting result, a unique image for every 256 button combinations could be made, so that the input display would look more versatile with all the different hand movements. It would take some work to draw all the 256 images, but mostly they should be based on each other, so that the animation would not get too jerky and hard to follow.
Are you acquainted with this software? http://www.youtube.com/watch?v=GzWSS94G6eM It does that and more. Maybe it could be adapted for this and do something fancy.
Post subject: Re: Input Visualization Ideas
Joined: 12/3/2006
Posts: 131
Location: Seattle
FODA wrote:
Are you acquainted with this software? http://www.youtube.com/watch?v=GzWSS94G6eM It does that and more. Maybe it could be adapted for this and do something fancy.
What software are you referring to and what "more" does it do? The ATI demo of Pipe Dream (available here), as far as I know, just plays the 3D animation along with an mp3 of the music. The original Pipe Dream (http://www.youtube.com/watch?v=KAvPRbh0jmE) was rendered in 3ds Max, an application for anything in general 3D-related. Maybe you know something I don't. I've always wished I could modify the animation in the ATI demo to play a different song.
Player (121)
Joined: 2/11/2007
Posts: 1522
I tweaked the Super Mario World script for SNES9X with Lua and made ones for Super Metroid and A Link to the Past as well... Super Mario World Super Metroid A Link to the Past It's impossible to make a general one for any game (at the moment), but if you start with the Zelda one you should be able to just tweak the local variables at the beginning to get one working for another game. I'll take requests for other games too ;)
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
LagDotCom wrote:
More weapons? Yeah, sure... a frontal screen-long laser would be nice, especially with lots of turning. L/R or Select/Mode could change them, I guess.
Well, actually using a button to change the weapons might be a bad idea from the visualization point of view, because it would be harder to follow what button the player is pressing, when the same button is used for various weapons and some button is used only for switching weapons. Maybe assigning cool special weapons to select and start buttons would be enough, so that the effect of pressing those buttons is immediate. That way there would be no need for weapon switching. Also, I think that the more complicated the program gets, the less meaningful the different TAS input patterns become. (Maybe I'm wrong, though.) How hard would it be to add charge function to the basic weapon, so that holding the button would produce a bigger shot?
Joined: 3/7/2006
Posts: 720
Location: UK
Your wish is my command. I rewrote my code to be a bit neater (and hopefully also to be more efficient). I've implemented the 'charging weapon' thing. Also a score counter, and some slightly pretty particle effects, heh. Get it here if you didn't download v1, or here if you did (just unzip it over the top of the old one). You can edit that INI file however you see fit. The 'Font.Face' thing is a bit of a hack, it only takes absolute file path and names right now; pygame is a bit iffy when it comes to trying to find 'the default font'.
Voted NO for NO reason
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
I ran
iv_ship.exe adelikat-ddragon2.fcm 2
in its entirety and I must say it was better entertainment than an average TAS. It was a fierce dogfight with a really surprising ending. Recommended. Oh man... this is getting really funny. I wish every game had this powerful charge shots. I think the basic weapon is awesome now. Keep it. Hey, what is the syntax for using two different movie files? Is that possibility implemented yet? Now I need to use a multiplayer TAS to see some action. Maybe you could print the filenames before the score count for better identification of the players? (Not necessary, though.) You clearly know what you're doing, so I actually have nothing else to say for now, but I'll be sure to test stuff and give feedback on any future versions. This is already more or less awesome. Oh, I almost forgot! LagDotCom, you are free to pick any game that runs on FCEU or Gens and I'll use it to record 1500 rerecords for you, as promised in the first post.
Banned User
Joined: 12/23/2004
Posts: 1850
Bisqwit wrote:
Aqfaq wrote:
Has anyone thought of developing the "input animation" thing further?
That's somewhat similar to the idea I had a few years back when I created this video: https://files.tasvideos.org/bisqwit/povray-assisted-clip.avi (15 MB). Unfortunately, my modelling skills did not allow me to add hands into it…
The video is so jerky and unstable that it's almost unwatchable. It's like an earthquake. The random dip to the lower right made no sense, either.
Perma-banned
Post subject: Re: Input Visualization Ideas
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Xkeeper wrote:
The random dip to the lower right made no sense, either.
I thought that was the funniest part of the video.
Joined: 3/7/2006
Posts: 720
Location: UK
Uh, there's no way to play two different movies at the moment. I'd have to generalise my input function a bit more. Also I'd probably change that hackish way to give player count on the command line to -pX or something. I probably should have put a cap on how much the ships can charge, huh. :p Do suggest what weapons Select and Start could do, by the way. I might also put what stuff keys are mapped to in the INI file, so any future replay format could be used as long as the program supports it.
Voted NO for NO reason
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1353
Location: Canada
I`m running Vista (yes, I know it sucks) and this doesn`t work for me. I double-click the iv_ship application and nothing happens. What should I do to make this work?
Joined: 2/1/2008
Posts: 347
Chamale wrote:
I`m running Vista (yes, I know it sucks) and this doesn`t work for me. I double-click the iv_ship application and nothing happens. What should I do to make this work?
Use command prompt to launch the program with the command line:
iv_ship.exe <path to FCM> [num]
where [num] is an optional parameter that displays only that number of ships, since a game may only have two players instead of 4. I didn't figure this out at first until I read LagDotCom's post closer when he said syntax. Note that each ship is a different player and only one movie can be loaded, which makes one player FCMs pointless to demonstrate in this program at the moment. A simpler way to execute this program is to make a batch file (.bat) that has a completed command with the above format in it (in plain text, i.e. notepad) saved to the same folder that iv_ship is in so you don't have to launch command prompt every time. Just edit the .bat file in notepad when you want to change what movie to run. Note that the path must have quotation marks on either side if there are any spaces in the path. I assume that a file menu will be implemented later when this program improves, but command line parameters are the first step, I guess.
<ccfreak2k> There is no 'ctrl' button on DeHackEd's computer. DeHackEd is always in control.
Chamale
He/Him
Player (182)
Joined: 10/20/2006
Posts: 1353
Location: Canada
EDIT: Wait, fixed that, but now there's a new problem. When I enter it into command prompt, I get an error message that just says "See log for details". The log file says: File "iv_ship.py", line 24, in <module> File "ConfigParser.pyo", line 321, in getint File "ConfigParser.pyo", line 318, in _get File "ConfigParser.pyo", line 511, in get ConfigParser.NoSectionError: No section: 'Video' Traceback (most recent call last): File "iv_ship.py", line 24, in <module> File "ConfigParser.pyo", line 321, in getint File "ConfigParser.pyo", line 318, in _get File "ConfigParser.pyo", line 511, in get ConfigParser.NoSectionError: No section: 'Video' How do I get this to run properly?
Editor, Active player (297)
Joined: 3/8/2004
Posts: 7469
Location: Arzareth
Chamale wrote:
What am I doing wrong here?
You are typing the <> and [] signs. You see, <explanation goes here> [optionally some more information].
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
LagDotCom wrote:
I probably should have put a cap on how much the ships can charge, huh. :p
Yeah, Super Mario pilot just held the charge button down for a long long time and managed to score 4500 points with a shot that was so large that it did not fit on screen. Maybe put a charge-shot damage cap to 250? (The size cap can be left a bit higher for fun, though.) It seems that the charged shots fly much longer than the normal shots, even many screenfulls. Maybe cut that a bit? The fire rate seems well balanced at the moment, but now that I think of it a bit more, it may slightly obstruct the purpose of the program from the visualization point of view. 30hz firing is a common occurence in TAS movies, so it would be good to have that possibility in the visualization too. Well, it is not possible to have everything at the same time, but maybe if the fire rate could be modified in the INI, then everyone would be happy.
LagDotCom wrote:
Do suggest what weapons Select and Start could do, by the way.
Sure. A Force Shield that absorbs shots? It could last a maximum of about 120 frames and vanish when hit. Graphically it could be a glowing circle around the ship, maybe purple in color. It might also cause minor damage (10 points) to enemy ships in collision. Well, a shield might be a boring thing. Maybe the shield is not a top priority... A Homing Missile? This would cause moderate damage, something like 50 points. It might look funny if the missile had a constant slow speed, not affected by the ship speed. To add more color to the scene, maybe all the missile bodies could be colored white with only the top of the warhead indicating whose missile is in question. How about a Flame Bomb? It would be a small bomb that bursts in flames at some distance. The laser idea might be good visually, right? I don't know what the laser properties could be, but if it looks cool, it's cool. I don't know which ones of these would be the best choices. All these ideas are rather old, but maybe they work in this context. I'm sure somebody could invent funnier weapons, though. Oh, a frame counter would be nice, maybe displayed as a decreasing "fuel counter" for each ship? This might be funny too: When more than 200 points of damage are scored in a single shot, display message "Critical hit!" and add a bigger explosion. For a dramatic effect, maybe even slow down the game to 10% of the original speed for a few seconds during the message. I hope others get more (or better) ideas for this thing. Good luck, LagDotCom!
Joined: 3/7/2006
Posts: 720
Location: UK
Chamale: Sounds like the program cannot find the INI file. Make sure it's in the same directory as iv_ship.exe and that's where the program is being run from. I'll get right on that stuff. I'll put as many variables in the INI file as I can. :p Okay, so, version 3! I've stripped almost every numeric literal from the file and stuck it in the INI file so you can completely customise the experience. Aside from that, I've added the slowdown thingy, the ability to map keys to effects, and... multiple movie playback! Check the included readme file for instructions. Update to v3 | Full v3 Aqfaq: Spend those rerecords on improving King's Bounty :D
Voted NO for NO reason
Editor, Expert player (2478)
Joined: 4/8/2005
Posts: 1573
Location: Gone for a year, just for varietyyyyyyyyy!!
Getting better and better. I see nothing to complain about, expect that the critical hit seemed to appear a bit too often with the default settings.
LagDotCom wrote:
Aqfaq: Spend those rerecords on improving King's Bounty :D
Haha! Well, I have already failed to improve it further, so I would recommend choosing another game, unless you want to waste your 1500 rerecords for nothing. Check what I wrote on the King's Bounty thread: http://tasvideos.org/forum/viewtopic.php?p=165570#165570
Player (121)
Joined: 2/11/2007
Posts: 1522
Here's a Lua script for FCEUX that displays input similar to DDR: http://lua.pastey.net/95286-e1qo Change the name in the first line to the target movie and save the script. Pause the emulator and play the movie. Then run the script and the movie will play along with the animation. I couldn't figure out how to do more friendly movie selection (ie with a dialog box) easily. Also, I realized after finishing that FCEUX, unlike snes9x+Lua, can read movie input fine. It's ok though because I needed to buffer the input anyways. It should be easy to make it interactive too, by looking at input from joypad 2... an exercise for the reader, or I'll do it later ;)
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Post subject: TAS TAS Revolution = Fail
Player (121)
Joined: 2/11/2007
Posts: 1522
:( Reading input from the other joypads during movie playback is finicky at best. As far as I know snex9x+Lua didn't support it at all, so not too disappointed, but interactive TAS TAS Revolution will have to wait I guess...
I make a comic with no image files and you should read it. While there is a lower class, I am in it, and while there is a criminal element I am of it, and while there is a soul in prison, I am not free. -Eugene Debs
Joined: 8/22/2009
Posts: 58
LagDotCom wrote:
Okay, so, version 3! I've stripped almost every numeric literal from the file and stuck it in the INI file so you can completely customise the experience. Aside from that, I've added the slowdown thingy, the ability to map keys to effects, and... multiple movie playback! Check the included readme file for instructions. Update to v3 | Full v3
Why dosen't it run? I tried running it through the run function and command prompt and everything. I think I'm missing the executable...