using Pyro for network games

garabik-news-2005-05 at garabik-news-2005-05 at
Fri Aug 5 09:27:00 CEST 2005

Michael Rybak <accepted at> wrote:
> gn20kjss> Do not use pyro, use simple UDP protocol.
> gn20kjss> I've written networked tetris in python, communicating via
> gn20kjss> UDP protocol, and used it successfully on very congested lines.
> Would you please be so kind to share that with me? That would be

contrary to what the page says, you do not need pyncurses, just plain
curses as included with modern pythons

> greatly helpful, because 1) I'd run it together with my friend to see
> what speed I can get from UDP 2) I'd grasp the networking part of your
> code and reuse it.

see the Net() class. I recommend you to use the same number for myport
and otherport (you can with UDP, and it makes traversing firewalls

> gn20kjss> If all you need is to transfer pointer coordinates, UDP is perfect since
> gn20kjss> you do not need feedback.
> gn20kjss> use something like this for server:
> gn20kjss> import socket
> gn20kjss> s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> gn20kjss> s.bind(('', port))
> gn20kjss> while 1:
> gn20kjss>     data, addr = s.recvfrom(1024)
> gn20kjss>     print `data`
> gn20kjss> and for client:
> gn20kjss> import socket
> gn20kjss> outsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
> gn20kjss> outsock.bind(('', 0))
> gn20kjss> outsock.sendto('message', ('server-hostname', server_port))
> Would you recommend some reading on this? I have some immediate

just the socket.socket documentation, and generally for UDP protocol, 
see e.g.

Using it is very simple, on one computer, you send a (short) string,
and on the other computer you receive the string (or it might be lost on
the way). For your situation, I'd recommend to implement some sort of
time constrain - e.g. if user moves cursor very fast, ensure that the
coordinates are not transmitted with higher frequency that 50 Hz (or
something). And combine the coordinates into one packet - it always
helps to reduce the number of packets. 

> questions to your code, but don't want to flood here. OK, I will flood
> here a bit: what's the print `` syntax?

the same as repr, i.e. textual representation of a variable - good for

> P.S. I loved your virus alert ;)

and you got infected I see :-)

| Radovan Garabík |
| __..--^^^--..__    garabik @     |
Antivirus alert: file .signature infected by signature virus.
Hi! I'm a signature virus! Copy me into your signature file to help me spread!

More information about the Python-list mailing list