Here is the fastevent article: http://gameprogrammer.com/fastevents/fastevents1.html
See these in src/ for details: fastevent.c fastevents.c fastevent.h On Tue, Jul 3, 2012 at 10:13 AM, René Dudfield <[email protected]> wrote: > Because it's easy. All types of events can be handled in the same place, > making it conceptually simpler. > > if e.type in [NETWORK, KEYUP]: > dosomething() > > Appropriate placing of client.step should be able to allow other events to > be handled correctly without loss... I think. Network packet loss is a > normal part of life, and needs to be handled. pygame.fastevent was > designed to help with networking, and can do over 40,000 events per second > with ease. > > > cya. > > > On Tue, Jul 3, 2012 at 3:38 AM, Ryan Hope <[email protected]> wrote: > >> Can someone explain to me why integrating network packets with pygame >> events is a good idea? It was my understanding that the pygame event >> buffer can only hold a limited number of events before events get >> lost. >> >> On Mon, Jul 2, 2012 at 8:19 PM, Szymon Wróblewski <[email protected]> >> wrote: >> > Hi, >> > >> > Networking module is finally in state allowing to test it and show >> something >> > working, so I wrote new blog post describing changes and showing >> features. >> > You can find it here: >> > >> http://pygame-networking.blogspot.com/2012/07/gsoc-journal-client-tests.html >> > >> > Greetings, >> > Szymon Wróblewski >> > >> > 2012/6/21 Szymon Wróblewski <[email protected]> >> >> >> >> I added documentation about available events: >> >> >> >> >> http://pygame_network.readthedocs.org/en/latest/source/pygame_network.html#events >> >> >> >> 2012/6/21 Szymon Wróblewski <[email protected]>: >> >> >> connection.register('echo', ('user', 'msg')) >> >> > >> >> >> You would also probably want a separate 'protocol' object on which >> you >> >> >> would register the messages, so >> >> >> that you can reuse it for several connections. >> >> > >> >> > pygame_network.register method is in fact >> >> > pygame_network.packets.PacketManager.register, which stores all >> >> > registered packet types and maps them to integers to reduce packet >> >> > size (those integers must be unique), but if you see use for separate >> >> > managers all I need to do is define __init__ for it, to override >> class >> >> > variables with instance variables. >> >> > >> >> >> connection = pygame_network.connect('localhost', 10000) >> >> > >> >> > I plan to create Connection class so pygame_network.connect will just >> >> > init global connection variable to use by Receiver and SyncObject (it >> >> > can be overridden with initialization parameter) and you can create >> >> > more connections with this class. >> >> > example: >> >> > connection = pygame_network.Connection('localhost', 10000) >> >> > >> >> > I chose pyenet as a low level socket library, so protocol (UDP, >> >> > Reliable UDP and other variants) can be selected with enet flags >> >> > during creation of packet or sending it. This is my answer for need >> of >> >> > both TCP and UDP protocols. >> >> > >> >> >> The network events then would have a connection property telling you >> >> >> from which connection they came. >> >> > >> >> > I agree with idea of adding connection to network event. So summing >> >> > up, it will look like this: >> >> > e.type = NETWORK # event type >> >> > e.connection # weakref of connection from which the packet comes >> >> > e.channel # channel of connection >> >> > e.packet # packet object >> >> > e.packet_id # packet identifier >> >> > e.net # packet type (to allow e.net == echo) >> >> > >> >> > 2012/6/21 Radomir Dopieralski <[email protected]> >> >> >> >> >> >> On Wed, Jun 20, 2012 at 8:02 PM, Szymon Wróblewski < >> [email protected]> >> >> >> wrote: >> >> >> > I focused currently on creating client api and not everything is >> >> >> > complete >> >> >> > yet, but client side could look like this: >> >> >> > (same code with syntax highlighting: http://pastebin.com/CiypsKpC >> ) >> >> >> > >> >> >> > import pygame >> >> >> > import pygame_network >> >> >> > >> >> >> > pygame.init() >> >> >> > # create connection >> >> >> > pygame_network.connect('localhost', 10000) >> >> >> > # connection overlay >> >> >> > host = pygame_network.client.Host() >> >> >> > # register new packet type >> >> >> > # it will call pygame_network.packets.PacketManager.register() >> >> >> > echo = pygame_network.register('echo', ('user', 'msg')) >> >> >> > name = raw_input('name: ') >> >> >> >> >> >> I really hate to see the globals here. Wouldn't it be better to have >> >> >> it something like this? >> >> >> >> >> >> connection = pygame_network.connect('localhost', 10000) >> >> >> connection.register('echo', ('user', 'msg')) >> >> >> >> >> >> then you can connect to different servers with different protocols >> at >> >> >> the same time. >> >> >> The network events then would have a connection property telling you >> >> >> from which connection they came. >> >> >> You can also then close one of the connections independently from >> >> >> others. >> >> >> You would also probably want a separate 'protocol' object on which >> you >> >> >> would register the messages, so >> >> >> that you can reuse it for several connections. >> >> >> >> >> >> What do you think? >> >> >> >> >> >> >> >> >> -- >> >> >> Radomir Dopieralski >> > >> > >> >> >> >> -- >> Ryan Hope, M.S. >> CogWorks Lab >> Cognitive Science Department >> Rensselaer Polytechnic Institute >> > >
