Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Java Programming Entertainment Games IT Technology

Java Program Uses Neural Networks To Monitor Games 100

tr0p writes "Java developers have used the open source Neuroph neural network framework to monitor video game players while they play and then provide helpful situational awareness, such as audio queues when a power-up is ready or on-the-fly macros for combo attacks. The developers have published an article describing many of the technical details of their implementation. 'There are two different types of neural networks used by DotA AutoScript. The first type is a simple binary image classifier. It uses Neuroph's "Multi-Layer Perceptron" class to model a neural network with an input neurons layer, one hidden neurons layer, and an output neurons layer. Exposing an image to the input layer neurons causes the output layer neurons to produce the probability of a match for each of the images it has been trained to identify; one trained image per output neuron.'"
This discussion has been archived. No new comments can be posted.

Java Program Uses Neural Networks To Monitor Games

Comments Filter:
  • by grimJester ( 890090 ) on Thursday May 14, 2009 @05:48AM (#27948947)
    My reaction as well. My first thought was the neural network was used to learn/predict user actions based on what's on the screen and give sound cues tied to the predicted action. For example, when some critter spawns in front of you, the player usually casts Fireball -> network learns that and shouts "Fireball!" every time a monster spawns.
  • by Anonymous Coward on Thursday May 14, 2009 @08:30AM (#27949693)

    Did you miss the part where some ARM processors can execute Java byte code natively?

  • Re:Can it.... (Score:2, Interesting)

    by Gastrobot ( 998966 ) on Thursday May 14, 2009 @08:36AM (#27949739)
    I wrote a program in Java that used an artificial neural network to play Warning Forever [wikipedia.org]. I took an evolutionary approach to training the networks because it was an unsupervised task. The program started with a pool of random networks, determined fitness by whatever criteria I used on a given run, and bred the networks together to make a new generation.

    My program had no capacity to play the game with a different interface than a human. It actually read the values of the pixels on the monitor, processed them through its network, and yielded keystrokes.

    It never got very good and eventually I got bored and moved on. I have some ideas for yielding better results that I want to try someday. Here's what happened:

    1) Playing on lives didn't work because eventually a network would destroy the boss' offensive capabilities and hide in a corner. The game would never progress.
    2) When I tried playing the game on a timer and ranking networks by what level they got to it ended up not moving at all and just shooting forward to destroy some bosses.
    3) When I tried ranking by time survived the network would again just destroy the boss' offensive capability and hide.

    1 is technically a perfect solution for the fitness criteria that I supplied. 2 and 3 are both examples of local minima where the networks found an early solution that dominated the competition (other networks, not the boss) and thus the gene pool.
  • by skelterjohn ( 1389343 ) on Thursday May 14, 2009 @09:05AM (#27949969)

    Except to do something like that you have to analyze the program code of every game you make a trainer for. I've never done that sort of thing, but it seems scary.

    An approach like the one they've outlined can probably be moved from game to game with only parameter tweaks.

    That is the true beauty of machine learning :)

  • by ClosedSource ( 238333 ) on Thursday May 14, 2009 @12:27PM (#27952461)

    The point is that you have no way of determining what training data is "correct" because you don't know anything about what the NN is "looking at".

    There also no guarantee that the network will ever converge and if it does there's no way to know if it has converged to a local minimum which isn't the solution rather than a global minimum.

Today is a good day for information-gathering. Read someone else's mail file.

Working...