
www.Usenet.com
| <-- __Chronological__ --> | <-- __Thread__ --> |
"Fu, Ren-Li" <[EMAIL PROTECTED]> wrote in message news:<[EMAIL PROTECTED]>... > > Step 0 : > > Buy the book Blondie24, it gives insight to neural networks and deals > > with neural networks analying a grid of checkers, which ( with some > > fantasy ) can be used for analyzing a dungeon floor. > > > > > Thanks in advance. > > Always remember, a bee's brain contains about 100 neurons, and enough for > it's complex behaviour. ??? Where do you get that figure? A quick google suggests that 800,000 is the current estimate of the number of neurons that control a bees nervous system. (Counting just the "brain" is somewhat meaningless in insects that have highly distributed systems) > Plus, bees make great monsters :) I liked the ADOM touch of the bees that die after stinging you. To return to the question of neural networks, I'm rather skeptical as to their applicability to Roguelike AI. For neural networks to work, you have to be able to provide feedback. To do this, you need to simulate the mobs environment. Questions like "How much do I weigh blindness?" is irrelevant - that is the job of the neural network to determine. Whether you are currently blind is certainly state information that should be fed to the network. The "success" of the neural network must be defined. One definition may be: "The number of XP the mob earns before dying." (This prevents suicidal or pacifistic solutions). One thought may be to have the neural network takes as inputs the current state information of the mob (number hit points, % hit points, is blind, contents of each square in XxY neighbourhood, inventory) and outputs a weighting for each possible action. This is problematic, however. To train the network, given a particular response (In this case do Y) one would have to determine if action Y was actually desireable. As there is no local way to do that, one would have to record all the input/output states through one life, determine the success of the life, and thus determine each result was good or bad accordingly. For example, if one run resulted in 0 XP, all of the input/output pairs of that run should be inhibitted. If a run resulted in ascension by the mob, all input/output pairs should be encouraged. This would be a very time consuming and memory hungry process. But computation power and memory are cheap. The next problem, however, is the chicken and egg. In order to evaluate the neural net, we need to to have it in a realistic environment. If the other mobs in the environment sit passively by, we won't end up with a very useful training set. This, you will note, implies that we have already written a good AI! The other option may be to use the neural net to train itself, which I'd be afraid of converging on locally sane, but to the end player insane, behaviour. The final possibility is to train it against a human. This can be done in two ways: 1) When the human plays, record success of each mob and adjust the nets accordingly. (I suspect you'll get mobs that run from the avatar pretty quickly :>) 2) Decree that the human always plays right - record games and use the human's behaviour to train the network (The optimal output of the network given a set of inputs is the humans output). You'll get mobs that always climb stairs :> So what is my answer? This is a fun technical exercise, and, if your interest is AI more than roguelikes, is a worthwhile project. If your goal is good AI, however, I'd strongly discourage it. The best approach, IMO, is to write a Borg. Write an AI that does what YOU would do in each situation. From there, you can disable pieces according to monster intelligence. For a playable game, AI is highly overrated. The pizazz it adds (The slug zaps the wand of digging!) is best achieved through special case code. The neural network which leads the slug to zapping the wand of digging is long and tortuous compared to the code. On the other hand, the slug is probably more likely to zap it in the right direction. :> More esoteric phenomonen are entirely unnoticed by the player. When the AI in POWDER was: If see someone who last hit me Move toward them else Move randomly it was a fun game. - Jeff Lait (POWDER: http://www.zincland.com/powder)
| <-- __Chronological__ --> | <-- __Thread__ --> |