• Forum
  • Lounge
  • Quake 3 bots, 4 years of training, and a

 
Quake 3 bots, 4 years of training, and a stalemate

Pages: 12
http://i.imgur.com/dx7sVXj.jpg

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.
I don't know what it was called though.

http://en.wikipedia.org/wiki/WarGames
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 :)
Hmm. I dunno Quake 3's version of id's engine is open source. I should look into that, I'm wanting to go in to AI research and this sounds like something that'd be fun to play with.
closed account (3qX21hU5)
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.
Okey I have the game and we have the time. What i have to do :D
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.

fowl language

Birds don't have languages.

@Zereo
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.
Last edited on
Birds don't have languages

Seriously, that is probably the lamest joke i have heard this week :)

Some day I would love to get into something like this but it is most likely way over my head right now.


Wow, I consider you to be one of the more advanced members of the community and you are saying it could be over your head. Where does that leave us who are not as advanced as you?

Also, what languages are commonly used in AI development?
Script Coder wrote:
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.
closed account (3qX21hU5)
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.
@chrisname wow, I did not realise that AI development was done in so many languages. Thank you

@Zereo I do have python experience, and I have heard of integrating C++ with python.

Although don't you have to compile the whole interpreter to integrate them?
Script Coder wrote:
don't you have to compile the whole interpreter to integrate them?

Only if you want to be able to execute Python code in your program. If you just want to expose C/C++ code to Python then you don't need to do that.

You can (read: should) use Boost.Python if you want to integrate C++ and Python. The Python C API is not very nice.
You can (read: should) use Boost.Python if you want to integrate C++ and Python.


I have never been able to use boost, could not get it working. Would anyone mind helping me?

Also, just to make sure I understand this: If I want to run C/C++ code in python I have to recompile. If I want to run python in C/C++ then I use either the Python C API or Boost.Python.
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.
closed account (3qX21hU5)
http://www.boost.org/doc/libs/1_54_0/libs/python/doc/tutorial/doc/html/index.html

That should help you get started with Python and C++.


I have never been able to use boost, could not get it working. Would anyone mind helping me?


What have you been having troubles with?

If you are desperate you can use a outdated copy from http://www.boostpro.com/download/ though they are closed down now so don't have up to date installers.

Other then that to get the up to date version follow this http://www.boost.org/doc/libs/1_54_0/doc/html/bbv2/installation.html

Let me know if you have any questions on the steps. I would be glad to help explain anything.
Last edited on
closed account (1yR4jE8b)
Yes, this is very possible.

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.

http://kotaku.com/this-guy-wrote-a-program-that-teaches-itself-to-play-ne-472451152

Tetris is near the end.
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?
Just an off topic question: Are we only allowed to use C++ for the Monthly Projects?
Yes.
Pages: 12