Post subject: Emuhawk Basic Bot?
Joined: 5/13/2013
Posts: 180
I finally discovered an easier way to make bots! Which I already knew you guys knew. Anyway, how exactly do I use Emuhawk's new Basic Bot tool? I've experimented with The Legend of Zelda, Zelda 2 and Crystalis, with the sliders on the Controls part, but all it seems to do is seizure its way into the target destinations. It appears to be struggling to learn, but what do I do to improve it and actually make it play?
A wise man once said "Damn, that's one hell of a steak."
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
Basic Bot doesn't learn anything while it plays, it can't play whole games. It's for brute-forcing small segments which are tedious to do normally, i.e. endless combinations to get a good random number or making a really hard clip throught a wall, mainly by telling at what few memory addresses the bot should optimize.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
Joined: 5/13/2013
Posts: 180
Well you got me there. That being said, while I was Botting zelda 1, the bot did a glitch where Link went through the top of the screen! Even while it doesn't learn, it still does amazing stuff! I'm botting Solitiare right now to see how it "learns" :P So, in all actuality, how DO I use Basic Bot?
A wise man once said "Damn, that's one hell of a steak."
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
You give it a starting save-state, a length of time in frames to send random inputs, up to four memory addresses to maximize (a criticism I have of Basic Bot is that there's no 'minimize' option as of yet), at least one button to maybe press, and a nice hot cup of tea. As has been stated, it's not a learnbot by any stretch of the imagination. It doesn't 'learn'. It simply brute-forces to try and find the best solution given the constraints (keystroke ratios, frame duration), defined as "which set of random keystrokes maximizes the watched memory addresses." If you want a PRNG that's more along the lines of RNG Plays Pokemon, I'm actually working on a lua script for such a thing. Currently the blacklisting isn't handled as I'd like to (I still need to implement forms and dynamic blacklist modification) and you can't weight buttons yet, but it presently works for all non-analog inputs for up to five four controllers. My end goal is to replicate Basic Bot but without the duration cap of 999.
Adventures in Lua When did I get a vest?
Post subject: Emuhawk Basic Bot Challenges
Joined: 5/13/2013
Posts: 180
It occured to me While making a bot I sat for a while And Pondered a Lot A puzzle game? or a game of Chess? An adventerous game? Or something a little less? Then I found it, a simple test To prove that ya'll are really the best Can you play these games With not a single touch? Or is this challenge A little too much? Why the hell am I rhyming? Anyway, Yes! I thought of some challenges for you guys in case you have nothing else to do. These challenges all have one catch; you have to use Emuhawk's Basic Bot, NOT manual input! Can you achieve victory by randomly pressing buttons? This is also an experiment to see if Basic Bot really can beat a game by random button mashing. Anyway TETRIS & DR MARIO SNES Clear 1P mode using only a bot THE LEGEND OF ZELDA NES Get the sword with only a bot then use the bot to grind for rupees - No damage - Cannot do anything else until you get the sword ZELDA II NES Get Link to the Town of Ruto with only a Basic Bot - Pacifist - No Items Trust me, more evil challenges to come >:)
A wise man once said "Damn, that's one hell of a steak."
Post subject: Re: Emuhawk Basic Bot Challenges
Editor, Skilled player (1536)
Joined: 7/9/2010
Posts: 1319
YushiroGowa wrote:
This is also an experiment to see if Basic Bot really can beat a game by random button mashing.
See you in 10^10^10 years.
Favorite animal: STOCK Gt(ROSA)26Sortm1.1(rtTA,EGFP)Nagy Grm7Tg(SMN2)89Ahmb Smn1tm1Msd Tg(SMN2*delta7)4299Ahmb Tg(tetO-SMN2,-luc)#aAhmb/J YouTube Twitch
adelikat
He/Him
Emulator Coder, Site Developer, Site Owner, Expert player (3573)
Joined: 11/3/2004
Posts: 4754
Location: Tennessee
Pokota wrote:
(a criticism I have of Basic Bot is that there's no 'minimize' option as of yet)
That's been done now, and will be in the next release. You will be able to do greater/equal/less then for all the maximize and tie breaker options
It's hard to look this good. My TAS projects
Post subject: Re: Emuhawk Basic Bot Challenges
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
YushiroGowa wrote:
Challenges
Challenges accepted (though Basic Bot can't actually do any of these due to how its built - it's built to loop from a save state rather than play infinitely)
Adventures in Lua When did I get a vest?
Joined: 10/23/2009
Posts: 545
Location: Where?
Pokota wrote:
at least one button to maybe press
So I need to improve something. I'd like to try basic bot for that. But I'm not sure to understand it. Maybe it needs some documentation somewhere on the page on how to use it? I think I understand the window it opens, except for the controls section. Can someone explain me a little bit? Some details on the section on top of the controls would be great too, as I'm not sure about everything too.
Site Admin, Skilled player (1254)
Joined: 4/17/2010
Posts: 11475
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
I think it just bruteforces, does exhaustive search of all possible buttons for the given conditions.
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.
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
It's not even a true brute-force (which would systematically and exhaustively try everything), all it does is randomly-by-weight throw out inputs during the specified number of frames starting from the save state. (Incidentally, using these settings for FlapPing under AtariHawk is amusing to watch) The first thing you need to do is set a starting save-state in the game. Basic Bot defaults to State 0, but I prefer using State 1 simply because that's an easier hotkey for me to hit. At this time, it has to be a numbered state. The second thing you need to do is set control weight. The higher the number, the more likely that any given frame will be sent that keypress. (Unlike my PRNG lua script, the keypresses are not mutually exclusive under Basic Bot, so you can get stuff like EVERYTHING ALL AT ONCE. At the same time, there's always the chance that no input at all will be sent on a given frame) The third thing you need is memory addresses to track. Basically, these serve as goals for Basic Bot to look at. These values determine which attempt is retained as "best". The fourth and final thing you need is a duration. Basic Bot is capped at 999 frame segments... just long enough to almost play a complete game of FlapPing. Once the bot runs for this number of frames, it'll check the memory addresses. If the conditions are satisfied, that attempt will become "best" and be stored in the Best field. If it doesn't satisfy the conditions, the attempt is more-or-less discarded.
Adventures in Lua When did I get a vest?
Joined: 10/23/2009
Posts: 545
Location: Where?
Yeah that's what I figured after trying a little bit today. I messed with it a little bit today, and I understand it better. Thanks for these explanation! What is the difference for "best" and "value" for the address section?
Pokota
He/Him
Joined: 2/5/2014
Posts: 779
Best is supposed to compare against the best attempt on record - if attempt 1 had a score of 3-2, attempt 4 had a value of 5-0, and attempt 8 had a value of 10-1 it should first retain attempt 1, then discard 1 in favor of 4, then discard 4 in favor of 8. For value, say that I had used 0x14 > 5 instead of 0x14 > best. In that case, any attempt in which player 1 scores more than 5 points would be retained (provided the tiebreak condition, in my example "Player 2's score is lower than the retained best attempt," is still met)
Adventures in Lua When did I get a vest?