[Twisted-Python] Internet services for online gaming teams.

Paul Rudin paul.rudin at ntlworld.com
Fri Aug 22 06:48:31 EDT 2003


Greetings Twisted people (Twisters? :-)),

I recently stumbled over twisted and I thought it might be an
appropriate base for an idea I had.

This message outlines what I have in mind, and I'm hoping that people
will provide some insight into whether Twisted would be likely to
be of significant assistance in implementing such an idea.

This message is possibly only marginally on topic for this list -
please forgive me if you feel it's inappropriate content. If I proceed
with this idea rest assured I will be back with many specific
technical queries :-)

Background
----------

Competitive gaming over the internet has been around for about a
decade, and today is a hobby for millions (and a living for a
few). Teams - in this context traditionally called "clans" compete
against in other in online leagues and ladders, as well as sending
teams to compete in LAN tournaments. Popular games are Quake3, Unreal
Tournament, CounterStrike... (there are hundreds if not thousands).

Clans are notable in that they exist almost exclusively in the
internet. The vast majority of clan members will never meet their
teammates in real life - although as noted above some teams will
attend LAN events. Hence nearly all the organisation and social
interaction happens over the net.

Clans typically will have a number of online services to facilitate
this. Examples:

- irc channels - usually a private one and a public one, normally on
  quakenet (in Europe at least)

- One or more web servers.  Often incorporating some kind of "web
  forum" - phpbb or similar. Clan web servers often have similar
  functionality - access to rosters, game strategies, upcoming
  events, team lists for particular events... result history -
  standing in various leagues and ladders and so forth.

- One or more ftp servers. For hosting recording of prior games; and
  miscellaneous useful files for members.

- A nntp server.

- A voice comms server. E.g. teamspeak or similar.

- One or more game servers. 

- A mail server.


These servers may interact with each other in an ad hoc way. For
example web severs may use scripts to query or control game
servers. Bots in irc channels might provide access to some information
on game servers. However in general these services will not be well
integrated - it is necessary for members to have accounts on each
different server these accounts need to be managed as people join or
leave the clan or change their roles with the clan.


These servers are often hosted in fairly unreliable
environments. Many clan members will have broadband connections at
home and some of the services will be hosted on these. Some services
might be hosted using machines and bandwidth provided by people's
employers or place of study. Those administering the services will
often not be experienced system administrators and will be using
platforms not necessarily ideal for such operations. Often there maybe
be external factors controlling when machines will be up; the
availability of bandwith; and firewalls limiting the types of packets
the machines can send and receive.

Game servers tend to be the exception where the clan will pay a
hosting company to provide a server on fast hardware with a high
bandwith, low latency net connection.

The idea.
---------


I am aware of a number of projects attempting to provide an off the
shelf web server for clans; but it strikes me that it would be a fun
and potentially useful project to have an integrated system across
web, ftp, irc, game servers, voice comms servers etc.

Such a system would have a number of features.

- A repository of all information relating to the clan. This
  repository of information should be stored redundantly and it should
  be easy to propagate across the internet.

- Authentication and sophisticated authorisation mechanism the work
  across all the services

- Access to information information using a variety of standard net
  protocols using familiar software.

- The ability to host services on a variety of different platforms and
  to share the hosting among different servers which may not be very
  reliable.

- Some "off the shelf" utilities to provide the kinds of thing likely
  to be common to most clans.

- Customisable and extensible.

- Very easy to install, so that people without technical expertise can
  contribute CPU cycles and bandwidth to providing services.


A prototype
-----------

As a starting point a web server and an irc bot providing access to
the same distributed persistent information would be a good starting
point for a kind of proof of concept.

Twisted.
--------

I hope the above gives you the flavour of the kind of thing I have in
mind. It's not a detailed or well thought out plan - just something
that occurred to me the other day. I don't know much about Twisted -
but on looking through the web site it seems like it would be a good
tool kit for building such a system. Is this impression accurate?

Part of my motivation for contemplating this is simply to gain some
experience of network programming. I have considerable programming
experience, but mostly large desktop applications.





More information about the Twisted-Python mailing list