Jump to content
IGNORED

AI beats Q*Bert in all new way...


LS650

Recommended Posts

Interesting. The version of Q*Bert they're discussing is the 2600 version, not the original arcade version. I'd be curious to see if a human player can replicate this behavior on real hardware.

 

Seeing this story makes me think back to an Expert Systems class that I took as an undergraduate. A grad student from Belarus had implemented an expert system which learned to anticipate and avoid enemies in a Q*Bert-like game (it was a new implementation, not an emulator), and he demonstrated it for the class. Pretty impressive, but it would have been even better if he had somehow hooked it into the original arcade game.

Link to comment
Share on other sites

Interesting. The version of Q*Bert they're discussing is the 2600 version, not the original arcade version. I'd be curious to see if a human player can replicate this behavior on real hardware.

 

Seeing this story makes me think back to an Expert Systems class that I took as an undergraduate. A grad student from Belarus had implemented an expert system which learned to anticipate and avoid enemies in a Q*Bert-like game (it was a new implementation, not an emulator), and he demonstrated it for the class. Pretty impressive, but it would have been even better if he had somehow hooked it into the original arcade game.

 

I know you mean the original arcade hardware, knocker and diagonally mounted joystick and all. That said, the 2600 is still real hardware, and I have loved 2600 Q*Bert since I was a kid :) ;) :P

Link to comment
Share on other sites

So we're supposed to believe that this was so smart, that it learned to kill off three Q*Berts in quick succession by jumping off the bottom row, finished the first rack on the last life, and somehow triggered something nobody else ever has seen with flashing blocks and no enemy threats?

 

Isn't it more likely that we're just seeing faulty emulation at play here, with the AI controlled Q*Bert not suiciding now that no enemy threat is present? I know I've seen strange happenings on the AtGames Flashback line before for instance. Like Battlezone continuing after my last life, with my tank impervious to damage and the scoring counter still operable.

Edited by Atariboy
Link to comment
Share on other sites

I know you mean the original arcade hardware, knocker and diagonally mounted joystick and all. That said, the 2600 is still real hardware, and I have loved 2600 Q*Bert since I was a kid :) ;) :P

That's what I meant by "replicating this behavior on real hardware": reproducing the exploit on a real 2600 by a real human player.

Link to comment
Share on other sites

  • 2 years later...

Decided to do some necroposting here after discovering the original article about it.  Then I thought it might be fun to try to track down the cause.  I may have done that, but it's just theory at the moment.

 

First, the level bonus countdown timer is at RAM location $D0.  This immediately follows an array of horizontal position register values intended for rendering each falling object as it bounces down the pyramid.  The top row is not considered, since objects always fall on the second shelf and roll down.

 

Now, you also may have seen the Coily bug where he advances two spaces towards you on occasion (typically after a green ball pause if it happens).  For background into this bug, Coily has 14 animation states.  If the "state" number is above 14, Coily is immobile.  At end of level, his state is set to 32, and there are a couple other conditions that set a high value like this, the green ball being one of them.  This is why he pauses in those situations.

 

When he reaches state 7, he decides on a new target square depending on where Qbert is related to his current location.  If Qbert is to the right, then he increments his target horizontal location, otherwise he decrements it.  If Qbert is below, he increments his vertical target location, otherwise he decrements it.  At state 0, he transports to that chosen location.  So if he makes it to state 7, then his state gets set above 7, his logic moves him again towards Qbert from his current location, which causes the 2-square transition.

 

In the pattern that the AI employed, the level ended with Qbert in the bottom row and Coily just above him.  I am guessing that the 2-move bug landed him in row 7 instead of row 6.  In row 7, his horizontal position keeps being written to the bonus countdown timer, so it never reaches 0 to end the level.  Meanwhile, Coily left the screen because he's in row 7 now.  He never leaves that row because he doesn't know what "y" position it is and can therefore make no decision on which direction to move to find Qbert.  The code has to compare actual screen coords because Qbert has smooth motion.  In case you're wondering why he makes noise even when not on screen anymore, it's because it triggers the noise at decision time rather than movement time.

 

Note that for now, this is just a theory and I have yet to reproduce it on a system that lets you look at the state of memory to know for sure.  But there you go.  PS:  If anybody has a state capture from a game that's doing this, I'd love to examine it.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...