Running Engine without graphics and uncapped frame rate


#1

Hello everyone!

I am currently working on my master thesis, and for that I need to train neural networks to control bots of quake III. For that to be possible I have to run quake III without graphics and uncapped frame rate. Anyone knows if that is possible?

Best regards,
Botched135


#2

Hi Botched,
This is sort of dodging your question, but maybe you could focus your training using the snapshot data on the server end instead of the client-side activity. From my limited understanding, you are basically describing the activity of the server VM anyway.

I hope that’s helpful in some way.


#3

Hey Mike,

That is an idea I have not considered. How would I access the server while it runs in order to control the creation of match etc. and is there anyway to change timescale?


#4

Well, snapshots are communicated between the client and server via UDP packets that could theoretically be captured and analyzed in real-time. They only contain very basic information, though, and may require additional information sources for the neural net to properly learn from. There are also logging options for received player actions (I think?). Again, I have a fairly limited understanding of the engine. So, perhaps someone else could step in and give a better answer here.

As a side note, have you looked over Fabien Sanglard’s code review of id’s original repo? (http://fabiensanglard.net/quake3/) He included the original bot code author’s technical paper about how the implemented AI works, which may give you some good ideas for your project. ioq3 has diverged quite a bit from the original id source, but it’s still pretty relevant.


#5

You might be able to use the dedicated server if you don’t need graphics at all. It supports the collision map, the regular bot support, and most other non-graphical game state. Dedicated builds are created by the normal compile process, nothing special required.

I believe the main game timing is handled here in Com_Frame. That might be a good place to start if you are looking at removing frame time limiting.

You also might check out the deepmind/lab project. I don’t know much about it, but it could be useful for your purposes or be a good place to ask questions.