Live data from Hacker News

Clojure Plays Mario

blog.phronemophobic.com

31–40 of 43 posts

Re: Clojure Plays Mario

#31
post #8

Y'know, the thing I least like about these AI video game players is how unlike humans they look. I was wondering about the difference, and I think it comes down to two parts. First and foremost, human players generally prefer routes with a lot of tolerance for input error. Second, humans take frequently "mental planning breaks," stopping for a moment in safe spots before challenging areas. I think you could juggle th…

I just couldn't bear all that walking and jumping into near misses in the video.

The AI doesn't care that it's one pixel away from death.

That said, I could see some highly-skilled players (like those who do speedruns) showing off their precision and adopting a similar "scare the audience" style for a new genre of competition.

Re: Clojure Plays Mario

#32

Y'know, the thing I least like about these AI video game players is how unlike humans they look. I was wondering about the difference, and I think it comes down to two parts. First and foremost, human players generally prefer routes with a lot of tolerance for input error. Second, humans take frequently "mental planning breaks," stopping for a moment in safe spots before challenging areas. I think you could juggle th…

I think the second issue would be pretty hard to solve without doing something artificial like slowing down the computer a ton, and then trying to come up with an algorithm to, like, delay for processing time. It is just the nature of computers that they do simple things very fast. Humans do complex things very slowly (but can actually do them). This is why we are friends, we complement each other. Although I do wond…

It's really not a time issue. The case is if the AI can pause mid game in a "safe area" to deduce an optimal path not just greedy/lookback

Re: Clojure Plays Mario

#33

Y'know, the thing I least like about these AI video game players is how unlike humans they look. I was wondering about the difference, and I think it comes down to two parts. First and foremost, human players generally prefer routes with a lot of tolerance for input error. Second, humans take frequently "mental planning breaks," stopping for a moment in safe spots before challenging areas. I think you could juggle th…

[deleted]

Re: Clojure Plays Mario

#34
post #25

Earlier quoted context omitted.

> game players is how unlike humans they look. I think you should watch some speed runners. They also don't look human, since they have some form of optimization in mind, compared to a casual player.

But, you will see that in most games RTA (Real Time Attack, speed running by humans, live) does choose different strategies than TAS (Tool Assisted Speedrun, still humans, but using tools to record and splice together a sequence of inputs for the game). For a TAS you can justify taking fifty one-in-ten chances in a row, because every time it doesn't come off you just throw that away and re-record, so maybe you do a f…

> In RTA that's never going to make any sense, it kills essentially 100% of runs.

it depends on how much you want that world record.

Re: Clojure Plays Mario

#36
post #10

Earlier quoted context omitted.

What you’re basically describing is bounded rationality, which has been widely studied in behavioral economics, psychology, and engineering applications (Simon and Gigerenzer are two big names to google). A common framework for formalizing it is as what boils down versions of rate-distortion problems from information theory (very related to Bayesian statistics). The reason it’s of engineering interest is, like you ob…

Oh cool! It's always hugely useful to learn the word for the thing you're thinking about. It can be really tricky to figure out if a vague idea has a name unless you're already pretty well read in a field. Now I have some reading to do, thanks!

This is actually a big issue with academic research related to bounded rationality. Although you could model it mathematically in another way, by far the most common is to use the rate-distortion approach. Rate distortion theory basically boils down to analyzing optimization problems of the form “minimize cost + (information-theoretic) entropy”. Problems of that form arise and are used for different reasons in fields including, e.g.: statistical mechanics, Bayesian statistics, anything in machine learning using softmax, large deviation theory, differential privacy, and, of course, bounded rationality and information theory.

However, since all these fields refer the same thing by different names, tools for handling problems in one field don’t get picked up by people working in another field. Either someone else rediscovers it later or someone has to have knowledge of multiple fields and see a connection. Sometimes the analysis done by one field isn’t useful in another due to different assumptions and research concerns, but that’s not obvious because you have to peel back a lot of layers of domain-specific jargon when reading the paper. Even though the math is very similar, reading a statistical mechanics paper written by a physicist is a real pain if you’re coming from an applied math / CS background, for example, because fields have their own notational conventions and refer to application scenarios that are meaningless to you and you need to figure out if that thing they reference is important to their development or not in the abstract.

It’s almost like reading House of Leaves. Here’s 30 pages with weird fonts describing the use of light in a non-existent movie and comparing it to both real movies and fake movies real people were supposedly involved in. Will it be relevant to the plot and thus require careful reading or can I skim this section? Maybe, but you won’t know unless you keep reading.

Re: Clojure Plays Mario

#37

Y'know, the thing I least like about these AI video game players is how unlike humans they look. I was wondering about the difference, and I think it comes down to two parts. First and foremost, human players generally prefer routes with a lot of tolerance for input error. Second, humans take frequently "mental planning breaks," stopping for a moment in safe spots before challenging areas. I think you could juggle th…

For resting, you can build on your first idea: the random error increases with uninterrupted play time, and resting quickly lowers it.

Re: Clojure Plays Mario

#38

Y'know, the thing I least like about these AI video game players is how unlike humans they look. I was wondering about the difference, and I think it comes down to two parts. First and foremost, human players generally prefer routes with a lot of tolerance for input error. Second, humans take frequently "mental planning breaks," stopping for a moment in safe spots before challenging areas. I think you could juggle th…

I guess what's tangentially related is the tendency of AlphaGo (and friends) to favor an extremely likely 1 point win over a still likely (but not as much) 10 point win, making the endgame seem very non-human like. They still absolutely dominate human players but not with the point difference you'd expect a much stronger player to have.

Re: Clojure Plays Mario

#39

One thing I've always wondered about these automated game-playing applications is what they use as input. Are they just getting images (frame by frame) as input, perceiving them in some way, and producing an output stream of controller button-pushes? Or does it only detect "death" and start over, systematically changing it's robotically timed output stream in response with the goal of getting further along in the gam…

They're reading the game's state from memory. This is also commonly done in tool assisted speedruns.

> Was Mario like this? No random adversaries at all?

Yeah. Read all about it here:

https://tasvideos.org/GameResources/NES/SuperMarioBros

https://tasvideos.org/GameResources/CommonTricks#LuckManipul...

https://tasvideos.org/GameResources/CommonTricks#ExamineGame...

https://tasvideos.org/LuckManipulation

Re: Clojure Plays Mario

#40

emulator integration is https://www.libretro.com/index.php/api/?amp=1 (warning, f’ed website) and the clojure wrapper (by OP) is: https://github.com/phronmophobic/clj-libretro/blob/67f186e87... really cool!

That's really cool. Does that mean libretro has gained debugging inferfaces?
Post reply on HN