So I discovered Basic Bot and played around with it some. I understand you provide it with a memory address and let it run through permutations of inputs to try and optimize a section. But it seems to me whenever I set it up, it ends up running through hundreds of thousands of permutations of what basically amounts to junk data and even after hours and hours of letting it run, it still can't manage to figure out how to jump over a low wall. Am I setting it up incorrectly? How can I make the most of this tool?
I've never used Basic Bot, but as I understand it, it tries "random" button presses until it finds a solution. In that case, you're going to be stuck with hundreds of thousands of junk permutations.
Three years ago, I wrote this script that also does a brute-force search but greatly cuts down on its parameter space by omitting inputs where a button is pressed and released excessively. Theoretically, Basic Bot will eventually produce the optimal input for any game, given enough time. Practically, it's only good for maybe ten frames of input. My bot has the potential to miss perfect input, but can be used for several seconds of input (or much more or less, depending on how complicated you define the input).
Please be aware I haven't updated or worked with this bot in three years, so I can't do a whole lot more than point you in that direction and hope that it answers your question.
Yeah, I kinda figured that might be the case in the end. I mean having a bot to sift through permutations sounds awesome but the way Basic Bot appears to be doing it looks super inelegant. "Well, I think you'll need to hit the jump button about 15% of the time? I guess?" I think I'll continue learning LUA so I can write my own bot if the best this one can do is the monkey-with-a-stick approach.
Learning Lua is fun, useful, and kind of liberating when it comes to TASing. But I also say there's no need to reinvent the wheel. If the task you're looking to complete is short and simple, I suggest using my script if possible. Ultimately, it's up to you, though.
Basic Bot isn't a learning bot. It just tries random permutations of inputs until the condition you set is met.
It's not even an exhaustive brute-force attack, it's just random permutations weighted by the percentages you set. It's kinda meant for attacking RNGs.
I'm not familiar with the current state of these bots at all, but reading this thread made me realize that you're really just attempting to 'crack the password' of perfect inputs.
Do these bots take advantage of any of those sort of methods? Are there multi-threaded bots running on GPUs 'mining' for NES inputs?
Or do they all just use a single emulator thread on the CPU, passing it input the normal way?
Joined: 8/14/2009
Posts: 4090
Location: The Netherlands
The latter.
Note that brute-forcing bots such as these are only used for limited goals in very short timespans (no longer than a few seconds). This is because the problem space expands exponentially for every input frame. No bruteforcing bot is going to "solve" a game by itself, except maybe something very short and very simple (again, no longer than a few seconds' worth of inputs).
Instead, the use for bots like these is manipulating singular events; for example, getting a favorable RNG (like a random drop from an enemy, or such) based on player inputs or actions.
http://www.youtube.com/Noxxa
<dwangoAC> This is a TAS (...). Not suitable for all audiences. May cause undesirable side-effects. May contain emulator abuse. Emulator may be abusive. This product contains glitches known to the state of California to cause egg defects.
<Masterjun> I'm just a guy arranging bits in a sequence which could potentially amuse other people looking at these bits
<adelikat> In Oregon Trail, I sacrificed my own family to save time. In Star trek, I killed helpless comrades in escape pods to save time. Here, I kill my allies to save time. I think I need help.
Sorry for bumping this, but is Basic Bot useable for "delay" types of RNG? ie. make a state, then press A, followed by some event, then load state and wait +1 frame before pressing A again? Or should I stick with lua for that?