Posts for Dwood15

Experienced Forum User
Joined: 6/18/2015
Posts: 54
Edit: nevermind, i think i found it and am going to port it to the old script. thanks. Edit: I hate lua. This language is disgusting.
Experienced Forum User
Joined: 6/18/2015
Posts: 54
See, it's interesting that the problem with mario ai isn't the network itself, it's quantifying what, exactly, a victory condition is. Do we want the ai to completely fear death? (it may pause the game in order to not die) Do we want the to worry about what it does when it is low on lives? this all has to go into the fitness function. Building a fitness function is by far and away the hardest part to quantify, what, exactly, does it mean to do well in a level? And to top it all off, we also have to account for some of the funky level designs that require the player to weave through the level. What about Yoshi's? This script needs a lot of work before it can be considered enough to beat the whole game on its own. I'd recommend we create a script that helps it navigate the top level map, for starters, though I have no idea where to start. on that. If someone has a script that can tell us what the id's of each level are when we are on the top map, i'd be happy to write a bit of a navigation system into the script. I'd like to put it into a game where defeat and victory are more easily defined, like Advance Wars 1/2 - 3 victory conditions - win by destroying all enemy units, or taking their hq. At the same time, we also need to make the ai not fear defeat entirely. Perhaps we need to design the ai from the top level so it can navigate and select levels on its own. Or perhaps we use an open world game instead that allows for more things to run. But if the games get more open world, how would we quantify progression in something like metroid? After so long of playing, the game would the NN be able to progress, or would we need to guide it by hand? Putting death as fitness = -MAX_INT is a terrible idea, because then it irrationally fears losing. On the other hand, if the NN was a real creature, then these games ARE its reality. It can literally die (cullStaleSpecies()) if it's unable to perform, but it receives its reward (offspring) by being able to satisfy the fitness function. I know this sounds crazy, but we are literally creating a primitive lifeform whose reality is mario, and their sole function is to play mario. editx5: And that just blows my mind out of the water. This network is emulating the exact way that your and my brains fire off. Though in the current format it won't get many more neurons than a goldfish or jellyfish i imagine, (ability to reason and navigate divided by the complexity of network would be an effective way of expressing the level of intelligence any given network can optimally express) Edit: if you want to add me on steam and talk about this stuff in live form, this username with a lowercase d is my steam name.
Experienced Forum User
Joined: 6/18/2015
Posts: 54
Invariel wrote:
How easy is it to give MarI/O some additional sense information? Specifically, game rules such as entering blocks at a particular speed, or double-jumping?
First, we need to add better fitness params. right now, it's just based on mario's x value. I'm thinking of adding a change in distance like ((verticalDistance + horizontal) / n) + (( score + coins) / n) - deaths, and instead starting the script on a rotation of levels where you die if you don't move in 2-3 seconds. Where n is the time it took to cover that distance, for the fitness function. Maybe with that, it will actually learn something other than right movement. Next, we need to be able to tell the script what enemy types re on the screen, what the different floor and block types are, so the script can at least differentiate between them. After that, i'm sure it will be much easier for the script to learn much more complex move sets. I'd also recommend creating training levels and adding them to the map.
Experienced Forum User
Joined: 6/18/2015
Posts: 54
Hey guys, so I was reading about MarI/O, and got it to run... But for some reason it's not loading the pool states when I click "load" - I'm going to take a peek at the code in a bit, but I was wondering- has anyone been able to get the program to load saved pool files? Edit: I discovered what it is: you have to either specify the path in the save/load box or keep your state in the root bizhawk folder.