(Link to video)
Submission Text Full Submission Page
HappyLee: Definitely not intended for publication because it's not as fast as me and Mars608's latest SMB warpless TAS, but pardon me for submitting it here, as it may make an interesting submission (for some).
This is a full-length TAS done entirely by a bot, an Lua script that I call it SMBbot. It's not an artificial intelligence, but what I call an "artificial idiot", as it's really dumb.
It doesn't read map or level information, doesn't evolve, doesn't have much memory. It basically just jumps randomly, and loads savestates after dying or bumping into a wall.
As dumb as it is, but it's the first bot ever to complete SMB, and in speedrun style! Only 7416 retries, 4:49 in real-time computing, it completes SMB warpless in 19:26.35. Not exactly as fast as best human speedrunners, but surely more stable and fast in average.

Idea

One day I was watching LuigI/O (a neural network playing SMB), and I thought, "this isn't intelligent", because after tens of thousands times of improving, LuigI/O still doesn't seem to know what it's doing or basic principles of the game. So I decided to build a smarter AI manually, and see how well it can play the game.
At first, my plan was to let the bot calculate map and analyze possible routes, and calculate jumping time and strength. It's rather complicated, so I wrote random jumping code initially and gave it a go. To my surprise, the bot finished 1-1 easily, and completed the whole World 1 after many attempts at 1-2 pipe jump. And I thought, "this could work", so I continued developing the bot and kept it jumping randomly instead of reading the map.
The basic function is to save state when Mario lands. Each savestate has 10 chances. Mario will do jump randomly in the range between the savestate and the frame Mario will die or fall. This basic function alone is enough to complete World 1, but will be stopped by the high wall in 2-1, so I added some features:
  • Backward jump acceleration: by playing a series of inputs at the beginning, just for fun. Used for every stage start.
  • Wall-allow: if Mario bumps into the same wall over 99 times and still can't jump over it, Mario would be allowed to touch that wall. This allows Mario to jump over the high wall in 2-1 (by walljump or Springboard), and will be used again in places like 8-2.
  • Swimming mode: two swimming probabilities (frequent and not frequent); Mario presses down when X speed > 16; savestate is made every 2 seconds. This allows Mario to complete water stages.
  • Death state: if Mario dies in similar ways too many times from a savestate point, that point might become a death state, which Mario land on the same spot again and then retry. This helps reduce retry count in places like 1-3 where Mario easily falls on the same spot and die meaninglessly too many times.
  • Retry 1/3 of the times when Mario falls. This helps prevent Mario from falling too much, and increase chances like passing 4-4 first maze.
  • Maze detection: if Mario walks through a maze check point and triggered a loop, it would trigger retry. If Mario fails to pass the check point correctly over 20 times, it starts over from the stable state (usually the beginning of the stage, but in maze levels, the last correct check point).
  • Wall-free mode: if Mario bumps into walls over 800 times (would be reduced when screen stops scrolling or Mario fails to solve a maze) and still fails to make progress, Mario would be allowed to touch any wall. There are one or two timers that will judge how Mario is doing after hitting the wall, to prevent meaningless wall bumps. If it's regular maze stage (like 4-4), Mario has 2/3 chance to walk towards left. Mario also has higher chance to do walljumps. Wall-free mode opens till Mario makes real progress. This allows Mario to solve the maze in 4-4 and 8-4, and may become useful in other places, too.
  • Every 1000 unsuccessful deaths brings Mario to the stable state (usually the beginning of the stage). Too many wall bumps from the right side of the screen also, to prevent Mario from being stuck in Warp Zone in 4-2 and 1-2 (sometimes happens).
  • First-frame jump chance increases as Mario's death grows without real progress. This helps to solve hard stages with hard jumps like 4-3.
  • If Mario dies from enemies over 500 times, it starts over from the stable state with a random chance of pressing left for 0 to 2 seconds. This helps if Mario is stuck with a bad Firebar in 5-4 or 6-4.
  • Number of allowed attempts from a savestate (originally 10) increases if Mario dies too much before making to the savestate. This helps to prevent Mario from losing valuable progress.
  • Pipe maze detection: if Mario's in a maze with pipe exits information, a part of pipe exit information is stored to prevent loop. If Mario's in the pipe maze with a non-loop pipe exit information, down is pressed every time Mario lands and sometimes during Mario running. This allows Mario to enter pipes to solve 8-4 maze.
Source code of the script: https://pastebin.com/vNHjw7Ca
I did this experiment of running it 20 times, and here are the results:
AttemptTAS timeRetryReal-timeNote
#0119:28.71111805:48
#0219:29.91119466:42
#0319:26.35 (2nd)7416 (1st)4:49 (1st)
#0419:30.958703 (3rd)5:14 (2nd)Desynced at 5-3 first lift
#0519:33.62111466:52
#0619:28.09110076:52
#0719:35.1112026:45
#0819:28.8689435:30
#0919:32.2112876:26
#1019:30.948572 (2nd)5:20
#1119:29.76115006:21
#1219:34.58118846:57Desynced in 8-4 water stage
#1319:32.09140977:48
#1419:35.18 (last)115307:32
#1519:25.25 (1st)112536:48Desynced in 8-4 water stage
#1619:30.9794345:17 (3rd)
#1719:30.51114797:06
#1819:30.1114670 (last)7:43
#1919:29.42145078:37 (last)
#2019:27.23 (3rd)117017:26
Average19:30.4911172.96:36
Unfortunately, the best TAS time attempt (#15) desynced in 8-4 water stage, probably due to a bug in my script or a bug of FCEUX. It happens so rarely that I can't detect it or fix it. Since the best attempt is not usable, I have to choose the second best attampt (#03).
Such bug won't happen if I run the bot while recording the movie. In order to save computing time (loading savestates in FCEUX while recording a movie can be quite slow), I used some arrays to store input, and sort them into .fm2 input format after meeting the Princess. Would be best if I can fix this bug so it can generate movies without desync and as fast as possible.
To see the bot working in normal speed (without fast-forward): https://youtu.be/9Tlif_XU4Jg

Conclusion

I think the biggest contribution this project has made is to prove that this game can be solved by a dumb random jumping bot that doesn't know where it is or what it's doing.
Also, since real-time SMB speedrunners have become so good, and generating a decent speedrun by a bot has become so easy, SMB TASers should work hard to bring entertainment to a new level, more like a superplay and less like RTA speedruns or bot playing, which exactly was my idea in the discussion of the the latest SMB warpless TAS.

"Definitely not intended for publication"
Masterjun: Okay. Cancelled for not being a serious submission.

TASVideoAgent
They/Them
Moderator
Joined: 8/3/2004
Posts: 14855
Location: 127.0.0.1
This topic is for the purpose of discussing #6125: HappyLee's NES Super Mario Bros. "warpless" in 19:26.35
EZGames69
He/They
Publisher, Reviewer, Expert player (3965)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
Definitely not intended for publication
Correct, so it shouldn’t be submitted here, it should go to Userfiles.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Active player (308)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
It doesn't read map or level information, doesn't evolve, doesn't have much memory. It basically just jumps randomly, and loads savestates after dying or bumping into a wall.
Basically me.
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Masterjun
He/Him
Site Developer, Skilled player (1970)
Joined: 10/12/2010
Posts: 1179
Location: Germany
Happy April Fools Day everyone, right?
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Active player (308)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
in before the haters interfere in the democratic process. tbh it's the most interesting SMB run I've seen this year
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Spikestuff
They/Them
Editor, Publisher, Expert player (2283)
Joined: 10/12/2011
Posts: 6335
Location: The land down under.
Masterjun wrote:
Happy April Fools Day everyone, right?
Look at the calendar It's April somewhere in the world I guess? Hmm, maybe Universe might make sense since then if a day like April Fools exists somewhere in the Universe then maybe, just maybe...
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Active player (308)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
perhaps there should be a category only for bot players, with bot judges
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Spikestuff
They/Them
Editor, Publisher, Expert player (2283)
Joined: 10/12/2011
Posts: 6335
Location: The land down under.
pirate_sephiroth wrote:
perhaps there should be a category only for bot players, with bot judges
Well in that case if it was done by an actual decent bot this TAS would be rejected straight up. Especially since this one is generational learning instead of brute force.
WebNations/Sabih wrote:
+fsvgm777 never censoring anything.
Disables Comments and Ratings for the YouTube account. Something better for yourself and also others.
Active player (308)
Joined: 2/28/2006
Posts: 2275
Location: Milky Way -> Earth -> Brazil
Spikestuff wrote:
pirate_sephiroth wrote:
perhaps there should be a category only for bot players, with bot judges
Well in that case if it was done by an actual decent bot this TAS would be rejected straight up. Especially since this one is generational learning instead of brute force.
boooo drain the swamp
"Genuine self-esteem, however, consists not of causeless feelings, but of certain knowledge about yourself. It rests on the conviction that you — by your choices, effort and actions — have made yourself into the kind of person able to deal with reality. It is the conviction — based on the evidence of your own volitional functioning — that you are fundamentally able to succeed in life and, therefore, are deserving of that success." - Onkar Ghate
Bisqwit wrote:
Drama, too long, didn't read, lol.
Expert player (2453)
Joined: 12/23/2007
Posts: 822
EZGames69 wrote:
Definitely not intended for publication
Correct, so it shouldn’t be submitted here, it should go to Userfiles.
I thought that's for "Newest WIPs" as the title says. This experiment is not an WIP but already a full speedrun. It won't bring anyone any pressure to reject this, anyway.
Masterjun wrote:
Happy April Fools Day everyone, right?
No, this is a serious TAS made by a bot. The bot's new here, so please don't break its heart.
Recent projects: SMB warpless TAS (2018), SMB warpless walkathon (2019), SMB something never done before (2019), Extra Mario Bros. (best ending) (2020).
Masterjun
He/Him
Site Developer, Skilled player (1970)
Joined: 10/12/2010
Posts: 1179
Location: Germany
HappyLee wrote:
Masterjun wrote:
Happy April Fools Day everyone, right?
No, this is a serious TAS made by a bot. The bot's new here, so please don't break its heart.
Do you want me to judge this as if "SMBbot" was an actual newbie? Just confirming here.
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Expert player (2453)
Joined: 12/23/2007
Posts: 822
Masterjun wrote:
Do you want me to judge this as if "SMBbot" was an actual newbie? Just confirming here.
Judge it however you want. I thought it wouldn't hurt to have a sense of humor.
Recent projects: SMB warpless TAS (2018), SMB warpless walkathon (2019), SMB something never done before (2019), Extra Mario Bros. (best ending) (2020).
EZGames69
He/They
Publisher, Reviewer, Expert player (3965)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
HappyLee wrote:
I thought that's for "Newest WIPs" as the title says. This experiment is not an WIP but already a full speedrun. It won't bring anyone any pressure to reject this, anyway.
It is for WIPs as well as Lua scripts, and experimental tases like this one.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Expert player (2453)
Joined: 12/23/2007
Posts: 822
EZGames69 wrote:
It is for WIPs as well as Lua scripts, and experimental tases like this one.
Forgive me for not knowing this. I truly don't know if this can be an interesting submission for some people, because though I've seen TASes done partially by a bot before, this might be the first full-length TAS done entirely by a bot, so it might mean something, or not, I don't know.
Recent projects: SMB warpless TAS (2018), SMB warpless walkathon (2019), SMB something never done before (2019), Extra Mario Bros. (best ending) (2020).
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
Userfiles is for anything you feel like uploading related to the site. Seeing your confusion at the fact that it's labeled as it is on the front page, I wonder if changing that label might be a good idea. Anyway, the TAS. I watched the world-by-world progress on your Youtube channel and was very entertained. This is definitely not something the site can publish, but it would be cool if there was some way to acknowledge it.
Previous Name: boct1584
Memory
She/Her
Site Admin, Skilled player (1522)
Joined: 3/20/2014
Posts: 1762
Location: Dumpster
boct1584 wrote:
Anyway, the TAS. I watched the world-by-world progress on your Youtube channel and was very entertained. This is definitely not something the site can publish, but it would be cool if there was some way to acknowledge it.
I'd really rather not encourage people to break our rules.
[16:36:31] <Mothrayas> I have to say this argument about robot drug usage is a lot more fun than whatever else we have been doing in the past two+ hours
[16:08:10] <BenLubar> a TAS is just the limit of a segmented speedrun as the segment length approaches zero
TASVideosGrue
They/Them
Joined: 10/1/2008
Posts: 2738
Location: The dark corners of the TASVideos server
om, nom, nom... 'twas dry
Skilled player (1435)
Joined: 11/26/2011
Posts: 655
Location: RU
HappyLee wrote:
I've seen TASes done partially by a bot before, this might be the first full-length TAS done entirely by a bot, so it might mean something, or not, I don't know.
In one of previous April Fools Days there was #4641: negative_seven's NES Flappy Bird "maximum score" in 5:19:36.02
I show you how deep the rabbit hole goes. Current projects: NES: Tetris "fastest 999999" (improvement, with r57shell) Genesis: Adventures of Batman & Robin (with Truncated); Pocahontas; Comix Zone (improvement); Mickey Mania (improvement); RoboCop versus The Terminator (improvement); Gargoyles (with feos)
Skilled player (1149)
Joined: 5/11/2011
Posts: 425
Location: China
This is not first AI(maybe not AI) movie submitted. l remember this #4955: wcgbg's NES Pac-Man (Namco) in 5:08:39.15
Noxxa
They/Them
Moderator, Expert player (4137)
Joined: 8/14/2009
Posts: 4083
Location: The Netherlands
Archanfel wrote:
HappyLee wrote:
I've seen TASes done partially by a bot before, this might be the first full-length TAS done entirely by a bot, so it might mean something, or not, I don't know.
In one of previous April Fools Days there was #4641: negative_seven's NES Flappy Bird "maximum score" in 5:19:36.02
mtvf1 wrote:
This is not first AI(maybe not AI) movie submitted. l remember this #4955: wcgbg's NES Pac-Man (Namco) in 5:08:39.15
Also: #2211: alden's SegaCD Desert Bus in 41:17:15:05.68 #2609: Bisqwit's NES Lunar Ball "no friction" in 36:52.00 #2676: Bisqwit's NES Lunar Pool "friction" in 23:49.87 #3523: Bobo_the_King's SNES Super Mario RPG: Legend of the Seven Stars "Beetle Mania" in 45:35.38 #4250: Dessyreqt's SNES Uniracers "100%, Tabletops" in 1:16:31:25.23 #4450: TheAxeMan's NES Final Fantasy "Console Verification" in 1:11:28.35 #4626: Noxxa's NES 2-in-1 Street Dance + Hit Mouse "Street Dance, all tracks" in 57:26.31 And there may be even more out there. Bots beating whole games or game modes is not that new a concept, it turns out.
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.
Player (12)
Joined: 6/17/2006
Posts: 501
This is basically the same AI technique that was used in the nineties to create DeepBlue: write a program with game-specific human knowledge about the game, and bruteforce the rest. It's a cool demonstration of that technique, but it's not sufficiently special or innovative to be worthy of a publication here in my opinion.
BigBoct
He/Him
Editor, Former player
Joined: 8/9/2007
Posts: 1692
Location: Tiffin/Republic, OH
Memory wrote:
boct1584 wrote:
Anyway, the TAS. I watched the world-by-world progress on your Youtube channel and was very entertained. This is definitely not something the site can publish, but it would be cool if there was some way to acknowledge it.
I'd really rather not encourage people to break our rules.
How was I advocating rule-breaking there? All I said was that it would be nice if this could be acknowledged.
Previous Name: boct1584
EZGames69
He/They
Publisher, Reviewer, Expert player (3965)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
A way to acknowledge it would be to post it in the SMB game thread, not to make a submission out of it.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing
Expert player (2453)
Joined: 12/23/2007
Posts: 822
So much negativity here. This may not be much, but still the best a bot can do to TAS a popular game. This submission, I said, is not for publication, but still is a serious submission, as it might be an interesting experiment for some. As for the other movies people posted, some of them is not exactly a speedrun as it doesn't complete the game but only goes loop-like for hours, and some of them is not done entirely by a bot. This is a bot that actually completes SMB. So if you're to convince people that this is not anything new, you probably need better examples.
Recent projects: SMB warpless TAS (2018), SMB warpless walkathon (2019), SMB something never done before (2019), Extra Mario Bros. (best ending) (2020).
EZGames69
He/They
Publisher, Reviewer, Expert player (3965)
Joined: 5/29/2017
Posts: 2707
Location: Michigan
HappyLee, there are specific threads for each game on any system, a place that you can post interesting experiments or projects you want to share involving the game. That is where somthing like this should go. It does not deserve a submission as submissions are ment to potentially end up published by the site. If you want to share your not-for-publication projects, post them in the specific threads, not in submission que.
[14:15] <feos> WinDOES what DOSn't 12:33:44 PM <Mothrayas> "I got an oof with my game!" Mothrayas Today at 12:22: <Colin> thank you for supporting noble causes such as my feet MemoryTAS Today at 11:55 AM: you wouldn't know beauty if it slapped you in the face with a giant fish [Today at 4:51 PM] Mothrayas: although if you like your own tweets that's the online equivalent of sniffing your own farts and probably tells a lot about you as a person MemoryTAS Today at 7:01 PM: But I exert big staff energy honestly lol Samsara Today at 1:20 PM: wouldn't ACE in a real life TAS just stand for Actually Cease Existing