Quake 3 Open source Network Client

Locked
shanemryan
Posts: 1
Joined: Tue Sep 22, 2009 1:05 pm

Quake 3 Open source Network Client

Post by shanemryan »

I was wondering if anyone would be interested in a bit of contract work. I can't offer a huge amount. But I can put down 500 euros to get a basic Q3 network client working.

Essentially I am looking for something similar to: ijigs.scit.wlv.ac.uk/QASE.pdf or http://www.telefragged.com/Q2BotCore/

I am a developer but I just don't have the time to do this right now.

As I see it, I would like you to strip out the graphical functionality of the quake engine to create a c++ API that allows a programmer:

Connect
disconnect
reconnect
Create a client session
destroy a client session
issue the allowable commands
get a list of nearby players/items/monsters and their location
do a traceline
query the routing system

This may seem like a long list. But if the Q3 source code is anything like the Q2 source code. It is actually simply (in theory) a matter of extracting the necessary functionality and wrapping it in a nice object based c++ class.

The goal of this project is to allow me to create networked c++ bots. So that I can explore different AI algorithms and approaches using the Q3 world. I've already done this in Quake 2.

I would also be very happy to see this code open sourced as hopefully this might create a community to continue improving and extending the library. To my benefit and the benefit of other researchers and developers.

Shane
^misantropia^
Posts: 4022
Joined: Sat Mar 12, 2005 6:24 pm

Re: Quake 3 Open source Network Client

Post by ^misantropia^ »

I won't be the one picking up this project but I've been tinkering with this in the past so I might be able to give some advice. The easiest way to accomplish this is to take the Q3 client, give it a null renderer so it'll run headless, and have your API transform its input into usercmd_t instances, client commands and the like.

However, if by 'query the routing system' you mean 'query the AAS system', that is going to be non-trivial; it would have to be ported over from the server code.
Locked