Excuse the language in this pic, as it is a screen cap of a conversation on a 4chan imageboard. It's a sfw board, but fowl language is still there.
Anyways, basically here's what's going on. OP claims to have left a quake 3 server running a team-less deathmatch map going for 4 years, unchecked and forgotten. Bots in the quake 3 engine use a neural net model for learning. He claims that when he finally remembered it and checked it out, he found all the bots were standing still. After trying some things out and finding they were still just standing still he decided to join the game and check things out. He claims the bots stood still, but would rotate to watch him as he moved around. Eventually he picked up a weapon and killed on the bots, to which all the others went for the nearest weapon, killed him, and went back to standing still with no weapons.
No screenshots of in game to prove his claims, so I'm inclined to call shenanigans on this. However I am inclined to believe that 4 years of unsuprervised combat based neural net training could result in the realization that the only winning move is not to play.
So, thoughts? Think it's possible, true, or just some troll?
I suppose it's possible. I remember a movie about how this one hacker had to convince the AI in charge of all of the United States' nukes that the only way to win a nuclear war was to not play. I don't know what it was called though.
Speaking of wargames... if you are an anime fan check out Summer Wars. It's essentially a mash up of the plots of War Games and The Proposal. Incidentally, directed by the director of one of the digimon movies. Called "Our War Games" which was essentially war games with digimon.
That movie sound so cool :)
As for the bots in question, it could be possible. Is the source code not available to the public, if it is then surely one could determine if it is possible. Also, I doubt it would take four years to develop that tendency, I think it could get done much faster (1 year tops). If anyone here has the game and some time, please feel free to write in a years time :)
It has always fascinated me that one can develop AI and self evolving code that could problem solve like this. Basic AI is understandable like the computer knows what technique counters a certain move or something like that. But actually learning a real players habits and how to counter his play style is really a feat in my eyes.
Some day I would love to get into something like this but it is most likely way over my head right now.
I think it's possible. Neural networks are pretty cool, but when you use them to classify inputs, you have to be careful with your training data because they will usually find the easiest way, not necessarily the correct one. For example, I read a story about a US government project that was designing a neural network to be process images from a camera mounted on a tank with the aim of detecting hidden tanks. So they took 200 pictures of a treeline, half with tanks hiding in the trees and half without. Then they trained the neural network on 100 of those pictures until it could correctly identify whether there was a tank or not. Then they tested it on the remaining 100 pictures, and it got every one right. Just to be sure, they took another 100 pictures of trees, half with tanks and half without, and tested it on those. Suddenly its output was pretty much random. They didn't know why until someone noticed that, in the first set of images, all the pictures with tanks had been taken on a cloudy day and all the rest had been taken on a sunny day. They had spent all that time and money developing a system that could tell you whether it was sunny or not.
Birds don't have languages.
It's not that complicated in theory. All you do is modify some values which changes the way data travels through the network. I think this must have been using something more complicated, though, if the size of the "memory" file was increasing with time.
what languages are commonly used in AI development?
LISP is traditionally associated with AI, but you can use any general purpose language, really. C and C++ when performance is important. Python when it isn't. Java if you want something in between. Python is particularly useful for prototyping; then, if you want your program to perform better, you can port it to C. Prolog is useful for things related to logic. MATLAB is used a lot as well I believe.
If you want to learn AI, Python is probably ideal. You can use it for prototyping and learning and use C++ in "production" code or when you need more performance.
I would agree with that and since I believe script coder has python experience it would be a perfect fit. C/C++ mix very well with python so you should have no problem coding in both in the same project.
No, you use Python API or Boost.Python either way. You just don't need the entire interpreter if you just want to write a Python module in C/C++. Although you will have to recompile your module any time you change it.
This was also done using an AI that learns NES games, when it learned how to play Tetris when it realized that it was not possible to win by clearing the blocks anymore it paused the game and left it there. I could totally see this happening with Quake bots.
Thank you Zereo I will try the links you suggested. As for the problem: I am very suborn and do not like using IDEs I work solely with the text editor and compiler and thus using external libraries is normally a huge pain. I like working like that because I feel that IDEs cloud a lot form the programmer and one needs to know how to work with out them. I could be totally insane (would not be surprised if I am).
As for the program that plays games, I think it looks quite cool, maybe we should have an AI type project for next month's Monthly Project.
Just an off topic question: Are we only allowed to use C++ for the Monthly Projects?