Chris Tian said:
I have no clue what a genetic algorithm is (sounds math-y) but I like the sound of better AI.
It's actually not math-y at all. In fact, biology crops up more there. And it's a really cool concept, here is how it works
1. You take a problem and find some way to represent the solutions. We won't worry about that right now but generally, the solutions is encoded in what it's called "chromosomes".
2. The GA generates a bunch of these solutions, mostly at random. Thus, you get your population. Also, that's your first generation.
3. A fitness function checks each chromosome and grades it in some way - so you generally know which ones are better than others.
4. Now comes the part of natural selection - the GA selects some random chromosomes from the population - it usually has a higher chance of getting the good ones but you also want some of the less good (for...reasons I don't need to get into - it's due to how GA operate).
5. The selected chromosomes are the "parents" and which, after crossover (which is random), generate new "children". And yeah, that actually happens. I'm talking actual terminology here. This gets you the next generation.
6. Now repeat 3-5.
What happens is that you eventually evolve better and better solutions in the pool. If we assume that for a chromosome to be "better" it needs to be evaluated as closer to zero as possible, you could start with a population of chromosomes with grades 300-400 then after few generations you're hovering about 50 and eventually you can even get to zero. Maybe. At any rate, you start off with random solutions, randomly do stuff with them, you could even throw in random mutations, and in time you'll get a good solution. And it works for a really wide variety of problems, tol.
How they are usually employed is that you deploy them and come back in, say, a day or a week to see how they are going. But, that works for any solution you can easily compute the fitness of - you could try finding a mathematical solution to a problem or other "easy" stuff for a computer, but, say, you can't evaluate
everything that way. Say, if the GA is tasked with making a picture, it can't evaluate how good it looks. But with people playing and being online, you could, actually offload the fitness function to them. This could just be intertwined with another game, so you don't just go "Oh, this deserves an 8 but that other one a 12" - you could just measure player reaction time or similar when faced with a generated content. Of course, it would take time for it to get good results, especially on more complex stuff but it could just be a building block for the a next game which would use the results.
Similarly, you can use players to train neural nets. The NNs are...somewhat similar to GAs, in that they are modelled after nature (NNs tend to represent a "brain"...somewhat) and you also need to train them until they get better. At any rate, they could have more of an impact on enemy AI, as GAs provide solutions but not really "behaviour", while NNs generally filter information and react in some way to it.
This is a video of simple NN trained bots. Their behaviour is not complex - they shoot you until reduced to low health in which case they start to flee because they are in danger. But they will turn around and shoot you again if you're not looking at them (i.e., they aren't in danger of getting killed).
Now imagine evolving enemy style and tactics with that. They can learn your weaknesses and how best to kill you. Quite, cool eh
I believe it could also be used in games