John, thank you so much for going over the packet flow in Analyst. You really looked into this. I'm sorry for not getting back to you this weekend, I got buried in a database project. But just to make sure I undersatnd what you've found, the AgentAnimation packet( true ) is what I send out to the server, and then it sends back AvitarAnimation packets until I send another AgentAnimation packet( false ) telling the animation to stop? If this is so, I am still wondering why my previous attempt to start an animation did not work successfully. Even though I did not inject a packet with the STOP command, it should have kept animating indefinitely. But I was using the /wave as an example, which probably has an invalid ID if it is in fact a gesture. My animations list was empty( which is why I used a gesture ), maybe I should grab a real animation and then try it with that ID. By the way, is Analyst something you guys wrote or is it a third party tool? And if so, where can I grab it? It sounds like that is the best way to get a look at the packets coming to and fro, based on what you've shown me. Thanks very much, Mike
________________________________ From: [EMAIL PROTECTED] on behalf of John Hurliman Sent: Sat 7/29/2006 5:17 PM To: Development list for libsecondlife Subject: Re: [libsecondlife-dev] Animations and packets... Michael Kron (RIT Student) wrote: > Hmm. Yes, I think figuring out what the exactly packet flow of a gesture > being performed is gonna be pretty crucial. Registering for Outgoing sounds > like a good idea, thanks much. Maybe I'll just spit em all out to a file, > and see what it looks like when I /wave. > > Speaking of which though... if I'm just trying to inject a packet to the > server with the animation I'd like to perform, I wonder if I would ever > actually see that on my client? I mean, suppose the usual sequence is, play > the animation on the client, send out a message to the server to play the > animation on all nearby clients. If I just inject that packet, maybe it > doesn't bother sending me the trigger you're referring to, because it assumed > I already performed it. > > Maybe I need to watch incoming too... but I imagine that gets pretty nuts. > > ________________________________ --> 69.25.105.216:13002 3270 [ Rel ] ---- AgentAnimation ---- -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: d1913562a1bdc1208517c3c921cc63f0 StartAnim: True That's my avatar (Eddy Stryker, f6ec1e24...) playing a jump gesture out of my inventory. The gesture itself has a different asset id that I could only find in a packet grep when activating or deactivating the gesture. Gestures and their activated status may be used to propagate animations to other clients with different priorities, where animations in active gestures of nearby avatars are sent to clients before unactivated ones of avatars further away. I believe gestures are converted in to a series of animations clientside though and sent to the server at proper timings. The packet above was quickly followed by the one below: --> 69.25.105.216:13002 3284 [ Rel ] ---- AgentAnimation ---- -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: d1913562a1bdc1208517c3c921cc63f0 StartAnim: False But even more interesting was what happened in between those two packets: <-- 69.25.105.216:13002 4429 [ Rel ] ---- AvatarAnimation ---- -- AnimationSourceList -- ObjectID: 00000000000000000000000000000000 -- AnimationSourceList -- ObjectID: f6ec1e24fd294f4cb21e23b42841c8c7 -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: 2408fe9edf1d1d7df4ff1384fa7b350f AnimSequenceID: 140540 -- AnimationList -- AnimID: d1913562a1bdc1208517c3c921cc63f0 AnimSequenceID: 140729 The server is sending us back a packet that tells us to play some animation (2408fe9e... not sure) followed by our jump animation. So even if these packets were injected in the upstream the client should still play the animation. Lets test that out. I have another animation called Jumpkick (8dd75ed...), so I tell Analyst to modify packets like so: /set AgentAnimation AnimationList AnimID 8dd75ed7ac14835f6d7b576ced55fa84 Only problem is you are constantly sending AgentAnimation packets over the wire. When you walk, stop walking, type or stop typing, when you are standing there doing nothing and your avatar leans back and forth or does whatever, so the signal is getting lost in the noise here, with every AnimID now changed to the new one and StartAnim: True and StartAnim: False packets being sent constantly. Here's a successful sequence though which showed my avatar playing the new Jumpkick animation: --> 69.25.105.216:13002 0 [ Rel ] ---- AgentAnimation ---- -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: 8dd75ed7ac14835f6d7b576ced55fa84 StartAnim: True <-- 69.25.105.216:13002 13314 [ Rel ] ---- AvatarAnimation ---- -- AnimationSourceList -- ObjectID: 00000000000000000000000000000000 -- AnimationSourceList -- ObjectID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationSourceList -- ObjectID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationSourceList -- ObjectID: f6ec1e24fd294f4cb21e23b42841c8c7 -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: 2408fe9edf1d1d7df4ff1384fa7b350f AnimSequenceID: 140540 -- AnimationList -- AnimID: 5c682a956da4a4630bf60f5b7be129d1 AnimSequenceID: 141446 -- AnimationList -- AnimID: 8dd75ed7ac14835f6d7b576ced55fa84 AnimSequenceID: 141536 -- AnimationList -- AnimID: f22fed8ba5ed2c9364d5bdd8b93c889f AnimSequenceID: 141442 --> 69.25.105.216:13002 0 [ Rel ] ---- AgentAnimation ---- -- Sender -- ID: f6ec1e24fd294f4cb21e23b42841c8c7 -- AnimationList -- AnimID: 8dd75ed7ac14835f6d7b576ced55fa84 StartAnim: False So we can assume that the client plays the animation based on the incoming AvatarAnimation packets. I would skip gestures for now and get the asset uuids of some animations and construct AgentAnimation packets where ID is your AgentID, AnimID is the animation uuid you want to play, and send one with StartAnim: True, sleep for a short bit then send StartAnim: False. If you need help I'll write a proof of concept this weekend. John _______________________________________________ libsecondlife-dev mailing list libsecondlife-dev@gna.org https://mail.gna.org/listinfo/libsecondlife-dev
<<winmail.dat>>
_______________________________________________ libsecondlife-dev mailing list libsecondlife-dev@gna.org https://mail.gna.org/listinfo/libsecondlife-dev