1 2
8 9
Site Admin, Skilled player (1250)
Joined: 4/17/2010
Posts: 11473
Location: Lake Char­gogg­a­gogg­man­chaugg­a­gogg­chau­bun­a­gung­a­maugg
In Soviet Russia internet knows how to you.
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.
Former player
Joined: 5/4/2005
Posts: 502
Location: Onett, Eagleland
Celseeth is butt mad.
I think.....therefore I am not Barry Burton
Post subject: MarI/O Project Extension Ideas
Joined: 3/14/2016
Posts: 2
Location: Eastern Oregon
Howdy to all the Bizhawkians out there. I just stumbled upon this neural network LUA plugin for the program called MarI/O (NEATEvolve), and I'm proposing an expansion of the script. The code is available here: http://pastebin.com/ZZmSNaHX I am a novice at coding myself, with only rudimentary understanding of it all. I routinely code spreadsheets, but this is the extent of my coding knowledge except for some basic syntax for Microsoft Runtime, Java, and HTML. Here are some of my ideas for expanding the script to be able to handle the different parts of the game (Title Screen, Cutscene, Overworld Map, Level.) It would be nice if any of you that know the capabilities of the program could point out if there is a limitation with the technology, or how certain parts of this could be coded or accomplished: 1. Make more "classes" and "sub-classes" of objects - right now there are only two classes of objects (terrain and sprites.) There should be these classes: a. Shell - This is a Koopa Shell in its inert state. Touching it without "carrying" it turns it in to a Moving Shell. b. Moving Shell - these can be stomped and turned into a Shell. It can kill you. c0. Enemy - a class that can kill you. If the "death plane" for pits and lava can be added to this category, that would be awesome. c1. Smashable Enemy - A class that can kill you, but can be stomped on to kill. c2. Bumpable Enemy - A class that can kill you, but you can bump a Bumpable Block underneath them to kill them. c3. Shellable Enemy - This enemy can be killed by a Moving Shell c4. Fireball-able Enemy - This enemy can be killed with a fireball power-up c5. Cape-able Enemy - This enemy can be killed with the cape power-up c6. Invulnerable Enemy - This can kill you and cannot be killed c7. Smashable Boss - Makes the network able to tell some difference between the two Koopa Kids bosses where you play Whack-a-Mole d. Carry-able - A Koopa Shell, P Switch, and Trampoline all fit this category. They are all sprites that can be "carried" e0. Platform - a block or sprite that can be walked on e1. Moving Platform - a Platform that has some kind of ability to move e2. Bumpable Block - These blocks can be bumped to release Coins, Power-ups, Yoshi, or give an O or X for a bonus room, or register a value on Bonus Games f0. Climbable Wall - Vertical walls that can be held onto f1. Climbable Wall Panel - a panel that can switch your side on a Climbable Wall g. Door - a tile that takes you to another place if you push a direction, also could be used for pipes h0. Mushroom - Changes Mario's state to Super Mario h1. Fire Flower - Changes Mario's state to Fire Mario h2. Cape - Changes Mario's state to Cape Mario i. Star - Gives Mario the Star state j. 1UP - Gives Mario an extra life k. Coin - 100 coins collected gives Mario an extra life l. Yoshi Coin - 5 Yoshi Coins collected in a level would give Mario an extra life m. Arm - "carrying" arm sprite n. Advice Box - brings up a helpful tip. The tip can be closed o. Yoshi - Yoshi sprites when not ridden p. Yoshi Sprite - The sprites that make up Yoshi when ridden These classes and sub-classes don't have to be defined, but the have to be "shown" as different from one another. The could be coded to show up as different colored squares on the GUI overlay so the viewer could see there is something different about the objects. The network then would have a lot more types of things to "think" about when considering what to do. 2. Make more Mario "states" - make it to where Mario understands that it is in a different state, which may be able to do different things with the same inputs: a0. Mario a1. Super Mario a2. Fire Mario a3. Cape Mario b. Yoshi c. Star Mario 3. Make the neural network understand different game "states" - Give GUI inputs that make it to where the neural network has different Fitness incentives that will drive behavior in different game states: a. Main Menu - This is pretty simple. Code for when the game is brought to the 1/2 Player menu it receives 1 Fitness. When it selects a game file, 1 Fitness. When it selects 1 Player Mode, 1 Fitness. If it selects 2 Player Mode, -5 Fitness. b. Cutscene/ 1st Time Yoshi/ Advice Box/ Switch Palace Activation - give double the time it takes for the longest cutscene (After one of the koopa palaces) for the neural network to press something that allows it to continue. c. Level - This is already coded in to the script d. Overworld Map - This is a bit complex. Fitness should be gained for entering a new level. New exits should award Fitness, but old exits should not. With these changes the script should be able to complete the whole game (eventually.) If anyone is willing or able to start playing around with this, please let me know. I live with someone that does some coding, so I'll probably be attempting this slowly. Also, let me know if I left anything out when it comes to states or classes. Thanks!
@ThePoxBox http://thepoxbox.blogspot.com/ www.twitch.tv/thepoxbox Donate via Paypal to thepoxbox@gmail.com
Post subject: Re: MarI/O Project Extension Ideas
Masterjun
He/Him
Site Developer, Skilled player (1986)
Joined: 10/12/2010
Posts: 1185
Location: Germany
ThePoxBox wrote:
d. Carry-able - A Koopa Shell, P Switch, and Trampoline all fit this category. They are all sprites that can be "carried" [...] m. Arm - "carrying" arm sprite
what
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Post subject: Re: MarI/O Project Extension Ideas
Joined: 3/14/2016
Posts: 2
Location: Eastern Oregon
Masterjun wrote:
ThePoxBox wrote:
d. Carry-able - A Koopa Shell, P Switch, and Trampoline all fit this category. They are all sprites that can be "carried" [...] m. Arm - "carrying" arm sprite
what
yes
@ThePoxBox http://thepoxbox.blogspot.com/ www.twitch.tv/thepoxbox Donate via Paypal to thepoxbox@gmail.com
Post subject: Re: MarI/O Project Extension Ideas
Masterjun
He/Him
Site Developer, Skilled player (1986)
Joined: 10/12/2010
Posts: 1185
Location: Germany
ThePoxBox wrote:
Masterjun wrote:
ThePoxBox wrote:
d. Carry-able - A Koopa Shell, P Switch, and Trampoline all fit this category. They are all sprites that can be "carried" [...] m. Arm - "carrying" arm sprite
what
yes
ok
Warning: Might glitch to credits I will finish this ACE soon as possible (or will I?)
Former player
Joined: 1/17/2006
Posts: 775
Location: Deign
I have downloaded the pastebin by Sethbling and been running it on various levels and have a hopefully basic question. The display map shows black squares and white squares which I understand to be sprites and tiles. Does the bot know there are different kinds of sprites and different kinds of tiles, or only that there are sprites and tiles? In a level that has spikes on the floor, will it know the spike tile is different from floor tile, or will it become afraid of all tiles? Simply put, does it think all white squares are the same thing, or is it able to differentiate?
Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign aqfaq Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign Deign
Joined: 4/8/2016
Posts: 1
jimsfriend wrote:
I have downloaded the pastebin by Sethbling and been running it on various levels and have a hopefully basic question. The display map shows black squares and white squares which I understand to be sprites and tiles. Does the bot know there are different kinds of sprites and different kinds of tiles, or only that there are sprites and tiles? In a level that has spikes on the floor, will it know the spike tile is different from floor tile, or will it become afraid of all tiles? Simply put, does it think all white squares are the same thing, or is it able to differentiate?
In the original version, there is no difference between one tile to another, or one object to another. And for DMB, the powerups aren't added to the input, either.
Joined: 6/18/2015
Posts: 54
Hey guys, Just so everyone's aware, I've moved my lua project to GitHub: https://github.com/Dwood15/LuaNEAT-rnn The smw-bizhawk codebase I was working with has long since been updated, and is nearly unrecognizable to the way it was before, so I'm not going to update that code to latest unless there are some new memory addresses I should care about. One thing I'd like to do is make some changes to the code to make the neural network more agnostic from SMW in the future. Hopefully next week I'll be able to update the code. This ai has some issues which are not present on my main machine, so somewhere along the lines I've updated the ai and broken something, so as of April 24th, 2016 the script is broken and will crash after the final species has been evaluated and a new generation is created. This will be fixed in the next couple of days. The readme of the project describes more in-depth what's going on, and the goals of my project. I work on it when I'm in the mood basically, so updates for the project are pretty sporadic, but I do have a vision of where I want my clone of MarI/O to go in the long run. Here's hoping I can make it so agnostic that we can get ai playing other games as well.
Joined: 3/12/2016
Posts: 15
I haven't had any problems with MarI/O, I thought it was easy to set up, but I have a quick question: Is there any way to change what level it plays? I would like to see how the "species" that was able to beat the default level would fare against others.
<distress> why won't my HTML run on here </distress>
Joined: 5/13/2016
Posts: 4
You need to change the SMB1-1.state to what level you want and make a savestate for this level. For Example: Play Super Mario Bros. and go to the level you want. Then (in Bizhawk) click File -> Save State -> Save named State and name it SMB1-1.state. Put it in the same folder as neatevolv.lua.
JRneko
He/Him
Joined: 6/6/2016
Posts: 2
Does anyone have the other map files needed for the mariokart version to work besides the first mario circuit? I want to see how fast it can do Ghost valley 1, but the map it reads from as input is the mario circuit one.
Joined: 9/10/2016
Posts: 1
If someone is interested, I ported MarI/O to FCEUX so it can be run on Linux. I tried to keep it fairly vanilla, so it's mostly just gui stuff that wasn't supported in FCEUX. https://github.com/juvester/mari-o-fceux
Joined: 10/17/2016
Posts: 4
I ported the original LUA code from SethBling NEAT to native c# inside the source code for bizhawk, firstly because NEAT was something I tried for a long time, I changed many parts, but can run it at 4-5k fps without drawing anything. I sometimes stream it @ https://www.twitch.tv/savantai Come by for a visit some time, we can chat. I appreciate all suggestions. Thanks, SavantAI.
Joined: 6/18/2015
Posts: 54
SavantAI wrote:
I ported the original LUA code from SethBling NEAT to native c# inside the source code for bizhawk, firstly because NEAT was something I tried for a long time, I changed many parts, but can run it at 4-5k fps without drawing anything. I sometimes stream it @ https://www.twitch.tv/savantai Come by for a visit some time, we can chat. I appreciate all suggestions. Thanks, SavantAI.
Can you post the code to github? I'm interested in how you set it up.
Post subject: MARI/O speedup and feasibility
wzb19940510
He/Him
Joined: 11/17/2016
Posts: 1
Hello! I am new to machine learning and this MARI/O is so fascinating. But I got 2 questions. 1, Can I speed up the learning progress? Because till now I can only use 200% speed of BizHawk. I have noticed some reply about client.speedmode(), but can anyone told me step by step how to set this? 2, Is the MARI/O has to initialize its learning network when you change the level. Because its learning is more like a remembering process. E.g. the network learned in Yoshi Island 1 may be a very bad for Yoshi Island 2. Or just because I run too less learning? Till now I only run marI/O in Yoshi Island 1 and the best fitness is about 4400(17 Gen). And this learning network just failed hundreds time in Yoshi Island 2. So this is due to my insufficient simulation rounds or the limitation of this network? I am really new to machine learning and there might be some stupid points. I really appreciate your help. Thank you!!!
Post subject: Mari/o doesn't detects tiles properly
Joined: 1/11/2017
Posts: 1
Hey I've discovered recently the Mari/o script and i decided to test it on my computer. The problem is that I don't know why it doesn't detects the Mario World tiles and blocks properly and I think that this affects to the Mari/o evolution. This is what I see http://imgur.com/a/yXIWY As you can see it doesn't detect the floor or the blocks. Does someone know a solution for this??[/img]
1 2
8 9