Posts for crollo

Post subject: FCEUX - LuaBot and segments
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Hello, I have been experimenting with the LuaBot for FCEUX and managed to get some interesting results out of it, like randomly jumping through World 1-1 in SMB. I know it is not really meant for this scenario, but I thought it would be a good starting point for learning how the interaction works. However the question is what the isSegmentEnd/mustRollBack functionality would be used for? Seems it's quite relevant since OK/failed attempts seem to be grouped into "Segments" based on the info in the GUI. You also get this playback of "Best attempt this segment" after the run is finished. I haven't really understood how to implement it based on the "manual": http://www.fceux.com/web/help/fceux.html?LuaBot.html Could someone please give me an example? Perhaps some LuaBot code that uses this feature or just a good description of a real case. There are some other examples I would very much like to see like what code to execute in the onStart etc. Perhaps a good tutorial exists somewhere on the web? I haven't managed to find one though :-( Also; did I misunderstand something or is there a bug in the main loop of the framework? Line 387:
while (rand_if(isRunEnd())) do
My fix:
while (rand_if(isRunEnd() == false)) do
BR, crollo
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Post subject: Reset during save
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Hello again, I have kind of lost interest in the whole TAS@home idea ;-) (Been searching a bit, but not been able to find out if this has been discussed either...) If I remember correctly Kejardon did a Super Metroid run where he could alter the information stored in the save game data with some glitches. Couldn't - theoretically - the same result be achieved if you reset the game at the exact right frame thus corrupting the save game data in a wanted manner? Maybe for another game? Or maybe this always results in a non-working save game data? Please enlighten me in the possibilities. Maybe a bot could try to find wanted results ;-) ... As long as this would be acceptable due to rules. Best regards, crollo
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
I guess I have been too optimistic when it comes to this "project" then. I just think that the concept of bots and genetic algorithms is really cool. Still hope there is someone who shares this thought and have the time to realize it somehow. By the way, where (as in which topic) would be the best place to learn some NES LUA Scripting? Perhaps the most simple RND alteration bot has been described? Thanks for your feedback!
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Or maybe we could start thinking about how to distribute the LunarBot, which is already a working bot...? The simplest way I guess would be to just let each new client evaluate its own level and if each level is already being processed I guess two clients could work on the same level not communicating with each other. We would then just pick the client with the fastest clear stage input from each level and merge the input. This requires that no input from level x is affecting level y, though. Maybe someone could confirm that? If people find that interesting I am sure it would attract others and hopefully/eventually someone will improve the "framework" further and start writing more bots for different scenarios.
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
You guys are right. I was thinking maybe it could work like a torrent client where you download ".tas" files instead. I guess the client would then have to be able to work as a front end, open up the actual emulator and inject some LUA or some key press file along with the actual ROM. Maybe we don't need to worry yet whether very same program should handle multiple formats. Not sure either if the clients should communicate directly to eachother or not. I'd download that but I guess that goes without saying ;-)
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
I like what I'm seeing here - that you actually start finding possible areas of implementation. Still not saying you hadn't thought about this before or that it's my idea. You are correctly assuming I was never suggesting a brute-force method but rather very specific methods per game or scenario/problem. English is not my native language and I might express myself in a way which might be hard to understand sometimes. When I said brute-forcing was not possible with current processing power I was in fact including distributed processing as well. I don't suggest to replace you competent TAS:ers with some bot either, but rather trying to come up with some idea where more people could help making the runs as perfect as possible. Only problem is that we can never know that this game is 100% complete without trying every possible combination - right? Maybe "TAS@home" won't keep people interested due to that fact, but I don't see why people would assume it contains virus or something if the download is hosted on TASVideos.
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
You only need 19999 more computers since I'm on :-) And I bet most of the community both has the processing power and the will to help out. What if you have a 30-60 frame segment that needs to be optimized? Getting RAM address X to value Y (altering RND) in as few frames as possible like when you wrote a small bot for some scenario I think it was in Elecman stage. Perhaps those tasks are already fast enough on a single system, but maybe frame count could be increased? The server could then pre-create input for the clients to test out. The file could contain everything needed like savestate, an array of input (well, multiple arrays) and the result wanted. So basically these are the two scenarios that came to my mind.
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
But I feel I need to point one thing out (before I might be a goner); my "plan" was not necessarily to use multithreaded processing on a single computer, but to suggest some infrastructure where the run with the best fitness from a batch would be used as a seed or whatever it is called for the next batch. Many clients would then help produce these results which would hopefully result in the best "evolution" (as with humanity or something). Compared to a single computer this ought to be superior unless the traffic required would make it useless since you need new generations very frequently or something. I admit I have much reading to do when it comes to genetic algorithms, but the dream scenario would be where you could just download pre-defined processing tasks - for example beating Airman - from TASVideos. My programming skills put food on the table but that's much easier stuff. I don't really have the time nor the skills, but I wouldn't mind sharing some computer resources. That's all I wanted to say. Not that it's new or groundbreaking or even doable.
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
(To be honest I think Tub was the only one NOT giving good, constructive critics and I probably wouldn't have snapped if it wasn't for his posts.)
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Well, you can call it whatever you like. It was exactly because of this weird mentality I hesitated to join in the first place. I like the creative work but most of the community need to get over themselves. It's like watching 10 "Napoleon Dynamite guys" argue with eachother and I do not want to be part of that. When it comes to the practical issues of course I do not have a solution. I'm not a rocket scientist like the rest of you (OK, I admit I pushed it too far already ;-)
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Tub, Derakon This is nothing but hostility in my book: "Pitching an old idea as new and throwing around buzzwords like distributed computing or GPU offloading does not solve any of these problems." If you think I'm after some kind of fortune and fame I guess you have too high of an IQ but lacking EI completely (Asperger syndrome?). Feel free to ban me or whatever measures are needed - I am completely fine being an anonymous lurker.
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
I have seen the Lunar bot and wouldn't that exactly be a valid scenario for this case? Wouldn't the outcome have been better if more processing power was available? Why is there always so must hostility on these forums? Makes new members not wanting to participate since so many of you seem like self-appointed geniuses (and I bet many of you really are). Well, I still hope for some open-mindedness...
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Thanks for your feedback. What I had in mind was actually very specific games that would be near impossible to improve without randomization (or maybe "thinking out of the box"). For example SMB1 (not very random choice) we have pretty clear checkpoints set out for us: * Enable stage clear flag for level 1-1 (or how the game knows you have completed it) as fast as possible "in any possible way". * Enter warp zone in 2-1 as fast as possible. * Etc. I guess we more or less could disable left button on the D-Pad along with Start/Select and so on in order to minimize number of possible combinations. Now again that kind of disallows for finding weird glitches where you press Left+Right the exact frame you enter a pipe (for example). As you probably understand I have not completely thought this through, but I was hoping to get you guys thinking in this direction in order to see if it has any potential at all. Maybe you could even utilize the multiprocessing power of today's GPU's as well. One problem is how to know the current input has produced a wanted glitch, since we do not really know what to look for (since the result would be unknown if the glich is unknown). However, this video has proved that genetic algorithms can in fact produce these kind of findings: http://youtu.be/c7xJNAJys2s?t=2m56s Maybe I could attract some Bisqwit mastermind attention with that Megaman vid ;-)
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)
Experienced Forum User
Joined: 12/28/2011
Posts: 14
Hello, I have been a lurker here at TASVideos since "the beginning" and what is most interesting to me are glitchy runs (game glitches and abusing programming "errors") and ways to automate game input (bots/genetic algorithms/etc). I really hope I am not starting a new thread on something that has already been discussed, but I could not find anything on the subject either. Brute forcing a complete game is out of question measured in today's processing power, however with some smart algorithms (way over my head) and the combined processing power of "TAS volunteers" - wouldn't it be possible to make movies even more perfect? Perhaps also discovering game glitches yet unknown? I am thinking we/you could start something similar to SETI@home (http://en.wikipedia.org/wiki/SETI@home) where each volunteer would download a batch containing input to process and to maybe discard or rate and upload based on some fitness? Another option I guess could be to use some cloud service, but that seems rather expensive when we probably have already a lot of unused CPU at our hands. Please let me know what you think. Is it doable or just plain stupid? I am excitingly awaiting your feedback =) /crollo
http://jathys.zophar.net/supermetroid/kejardon/m3.c "Torizo Interacts with Bomb Item" --- "Dances behind Bomb" by crollo ;-)