[Twisted-Python] Two main loops

Nitro nitro at dr-code.org
Sun Nov 11 19:05:30 EST 2007


In a game you usually never send/receive huge objects. For various reasons  
you always try to reduce your bandwidth as much as possible. A low  
bandwidth implies a rather low number of objects and data.
That being said I am using pb for transferring state changes which should  
be guarenteed to arrive (for example a command to load a new game world)  
and using a custom pb-like method based on udp and which uses  
messaging/packaging for things which do not have to be transmitted on a  
guarenteed basis. An example for the latter is updates of the position of  
world objects for instance. If a udp packet is lost, I don't really care  
because a new one will be send very soon anyways.
I am able to render (client) / simulate (server) with more than 200 fps  
this way. So while python might be slow compared to C++ this proves that  
it's actually possible to write python code which performs fast enough. It  
also proves that it's more important to optimize your algorithms and not  
your code. In the case of a game this means to think about ways to reduce  
the data that needs to be transmitted instead of making the  
serialization/network code faster.

-Matthias


Am 11.11.2007, 22:06 Uhr, schrieb Jasper <jasper at peak.org>:

> That depends.  When I send moderately sized objects over Twisted, this  
> approach causes my frame rate to stop while Twisted is busy, and worse  
> makes my GUI non-interactive.  For a game, this is generally  
> unacceptable...
>
> I'm not sure of a good/nice way to deal with this.  Slicing  
> transmissions into a sequence of smaller chunks seems like a fair pain  
> in the ass, but then again the alternatives are punting to another  
> thread/process. :-/
>
> -Jasper




More information about the Twisted-Python mailing list