User:Andrew Linden/Office Hours/2008 09 25

From Second Life Wiki
Jump to navigation Jump to search

Transcript of Andrew Linden's office hours:

[17:03] Sindy Tsure: there he is
[17:03] Areth Gall: Yeah, but no one else was here. :P
[17:03] Sindy Tsure: hiya andrew
[17:04] Arawn Spitteler: Hi, Yuu, et al
[17:04] Rex Cronon: hi everybody
[17:04] Areth Gall: I was afraid it may have stopped or moved. This place is so much different from the last time I've been here
[17:04] Yuu Nakamichi: andrew brought crayons :)
[17:04] Arawn Spitteler: We've the TP Arrival set incoveniently above
[17:04] Sindy Tsure: have you seen the TP-door?
[17:05] Areth Gall: Ah... crayons. ... I hope he doesn't plan on marking me for asking annoying questions
[17:05] Andrew Linden: Hello Areth
[17:05] Sindy Tsure: let's you get out of those inconvenient areas where you can't find the door.. pretty cool
[17:05] Areth Gall: Hello :P
[17:05] Sindy Tsure digs for a link
[17:05] Rex Cronon: he will just shot u with them:)
[17:05] Areth Gall: ow..
[17:05] Andrew Linden: Areth, I think you sent me a message a while ago asking about object density. Was that you?
[17:06] Areth Gall: Object density, the maximum velocity limits that were imposed on SL a few months ago now.. and the drag on rotational velocity that isn't on linear velocity
[17:07] Areth Gall: Did something happen with density though? o.O That wasn't one of my main concerns. And is nothing compared to the other two.
[17:07] Andrew Linden: Ah nevermind. The message I was thinking about was sent by someone else.
[17:07] Sindy Tsure finds it. http://www.flickr.com/photos/pandorawrigglesworth/2805426342/
[17:07] Sindy Tsure: short video
[17:07] Andrew Linden: No, I haven't messed with object density since the havok4 conversion.
[17:07] Areth Gall: Has anything been done about the maximum velocity limits?
[17:08] Andrew Linden: No Areth
[17:09] Andrew Linden: Alright... I don't have any annoucements today. At least none that I can think of.
[17:09] Sindy Tsure send you an object a couple weeks ago, andrew.. that camera oscillation bug is still out there
[17:09] Arawn Spitteler: How's SVC-2931 coming along?
[17:09] Sindy Tsure: :(
[17:10] Andrew Linden: Yes Sindy, that oscillation bug fix unfortunately has not been released yet.
[17:10] Arawn Spitteler: Wasn't Camera Oscillation on a fix list, recently? I just got nailed by it today
[17:10] Sindy Tsure: oooo... i thought it was in 1.24.5.. never mind then :)
[17:10] Andrew Linden: Turns out MONO maintenance has taken longer than some people hoped.
[17:10] Sindy Tsure: no worries
[17:10] Andrew Linden: no, it is in 1.25-Server
[17:10] Sindy Tsure musta rounded up in her head
[17:11] Sindy Tsure: er.. rounded down
[17:11] Andrew Linden: No progress on SVC-2931 (seated avatars obey linkability rules)
[17:11] Arawn Spitteler: Mono takes a while to compile, but what needs maintenance?
[17:11] Arawn Spitteler figures, Linkability was abolished by llSitTarget
[17:12] Andrew Linden: I haven't been paying attention to the MONO maintenance stream. I think there were some security bugs that were introduced in MONO, and a few that were discovered during the MONO maintenance, but otherwise unrelated.
[17:12] Sindy Tsure: today's rolling restart seems to be all mono bugs.. http://wiki.secondlife.com/wiki/Release_Notes/Second_Life_Beta_Server/1.24
[17:13] Areth Gall: If I don't respond, it's because I'm working on some homework on the side.
[17:13] Arawn Spitteler wonders if the specifications of LSL have ever been orgnaised
[17:13] Andrew Linden: I *think* the code freeze for 1-25-Server alreayd happened more than a week ago, however maybe it was pushed out since everything has been MONO fixes lately. Dunno
[17:13] Arawn Spitteler: What sort of Homework? I could use a few refreshers
[17:14] Andrew Linden: I've been slipping under an ever increasing pile of stuff to do, mostly because the 64bit gcc-4 project keeps getting resurrected and I have to do more work on it.
[17:15] Sindy Tsure: done any performance measurements on the 64-bit sims?
[17:15] Andrew Linden: so I'm currently trying to forget all that stuff so I can pay attention here.
[17:15] Sindy Tsure hopes for 'better than we thought it'd be'
[17:15] Sindy Tsure: heya simon
[17:15] Andrew Linden: No Sindy not yet, unfortunately.
[17:15] Simon Linden: Hi everyone
[17:15] Yuu Nakamichi: hello simon
[17:16] Andrew Linden: What I'd like to do is commit my 64bit changes back to the codebase so that others can do their own 64bit work without my help.
[17:16] Andrew Linden: Simon, do you have any news? I've got none.
[17:17] Sindy Tsure: i had more llVolumeDetect'ed megaprim questions, if notbody else has anything..
[17:17] Simon Linden: There's some hope on the performance front ...
[17:17] Andrew Linden: BTW, do you know if the 1-25-Server code freeze actually happened?
[17:17] Sindy Tsure w00ts hope
[17:17] Simon Linden: ... I found some inefficiencies in our texture cache, where the simulator was throwing out textures sooner than it should
[17:18] Simon Linden: This leads to more disk reading, which can be a hiccup in performance
[17:18] Arawn Spitteler: It's not just me, that crashes at fahsion shows?
[17:18] Andrew Linden: Simon, do all the simulators on the same host use the same texture cache? or is it a different cache per simulator process?
[17:18] Simon Linden: So if someone rezzed something new, it might read/throw away/read/ throw away the texture data more than it should
[17:19] Rex Cronon: it seems to be fashionable to crash at fashion shows:)
[17:19] Yuu Nakamichi: great to see you're chipping away at the performance issues
[17:19] Simon Linden: There's a different one for each sim
[17:19] Simon Linden: I don't know if there's much gain there if it was shared ... there's usually no connection between regions sharing the same host, so I'm not sure how many textures they would have in common
[17:19] Sindy Tsure wonders how many textures are duplicated between sims on a single host
[17:20] Simon Linden: Probably some of the defaults, at least, would be shared
[17:20] Simon Linden: I could test that actually with a little work - we have the code to dump the texture cache (once I get it working again) and I could do that on all regions and then look for duplicates
[17:20] Arawn Spitteler: Wouldn't the defaults store as well client side/
[17:21] Simon Linden: yeah, you're likely to have the common textures locally on your machine
[17:21] Sindy Tsure: how big of a hit on the sim are textures?
[17:21] Arawn Spitteler: Mystic Academy has those towering grey prim, at the entrance, and I'm pretty sure it'll rez Totally Clear, eventually
[17:22] Sindy Tsure remembers getting some 100% transparent back when she was new.. they were always high-resolution.. 512x512 1024x1024
[17:22] Simon Linden: It's noticable ... one of the fixes was that we read one image per frame off the disk, and that was a blocking operation, so it could cause a hiccup in the frame rate if it's a huge texture or a slow disk
[17:22] Sindy Tsure has wondered about the asset server cheating on those and just using a 16x16 instead.. would it actually help or does the compression make it not worth while?
[17:23] Andrew Linden: brb...
[17:23] Sindy Tsure: or even the one that's in the library now.. those should be on everybody's hard disk already
[17:23] Arawn Spitteler: Is Totally Clear anything but Alpha Channel?
[17:23] Sindy Tsure steals andrews crayons while he's gone
[17:23] Simon Linden: We have a larger project to move the texture downloads to another system, probably via an apache web server. Eventually it might even go to another machine to offload the work
[17:24] Sindy Tsure: are textures still udp? thought they were moved to tcp/http a while ago..
[17:25] Simon Linden: I don't know ... I'd guess TCP. UDP would be pretty ugly having to retry to get all the parts
[17:25] Sindy Tsure nods
[17:25] Arawn Spitteler: I was just noticing, that I don't have to check appearence as often as a year ago
[17:26] Sindy Tsure: i think the alpha overrules anything else, arawn.. if you have 100% alpha, it doesn't matter what else is there
[17:26] Simon Linden: We've been getting some complaints about texture loading being slow, so I hope this was the problem
[17:26] Sindy Tsure: it seemed to get worse a couple months ago, simon.. heard many comments about it
[17:26] Simon Linden: I think you're correct about 100% alpha - that should be totally transparent
[17:26] Yuu Nakamichi: with recente server releases simon?
[17:26] Sindy Tsure: especially on avatars
[17:27] Simon Linden: I'm not sure when it started ... I stumbled on this problem this week.
[17:27] Arawn Spitteler: It used to be said, you could get a Model T in any color, as long as the shade was black, so getting four channels, of which only one is relevant, might save the occassional pixel
[17:27] Simon Linden: I had a task to look at the image loading problem - the one per frame slowdown - and when testing I saw that it was reading the same image several times within a few seconds
[17:28] Sindy Tsure: is that related to the slowdown when people TP in?
[17:28] Andrew Linden: back
[17:28] Sindy Tsure: or was that the xml parsing?
[17:28] Rex Cronon: wb
[17:28] Simon Linden: It might be ... XML is definitely a factor, but this could also be
[17:28] Sindy Tsure: arawn tried to steal your crayons
[17:29] Areth Gall: But the crayons are so tasty.
[17:29] Sindy Tsure: lol
[17:29] Simon Linden: I'm hoping to get the code reviewed tomorrow and sort out a strategy to get it tested with a few real-world regions to see if it makes a noticable difference
[17:29] Arawn Spitteler was just colouring his teeth, by Self Hypnosis: For something completely different, I decided to styart a Helen Keller Accomodation College
[17:29] Andrew Linden: I think we once did a texture density scan of regions
[17:29] Areth Gall: o.O Wazzat?
[17:29] Sindy Tsure: geg
[17:30] Sindy Tsure: *heh
[17:30] Andrew Linden: and found some with thousands of unique textures
[17:30] Andrew Linden: but that was a long time ago (2 years now I think)
[17:30] Sindy Tsure: my home is like that :(
[17:30] Sindy Tsure: the new viewer has stats on that.. or what look like stats on that
[17:30] Sindy Tsure: Advanced -> Render -> Texture -> Count in the stats bar
[17:31] Andrew Linden: Sindy, you had a question about VolumeDetect on megaprims?
[17:31] Sindy Tsure: i did!
[17:31] Sindy Tsure: you had talked about how the sim keeps a std:map of things that recently collided
[17:32] Sindy Tsure: and deleted ones that had aged after a couple frames
[17:32] Sindy Tsure: maybe..
[17:32] Andrew Linden: yes
[17:32] Sindy Tsure: saw this flat cube is a megaprim wall
[17:32] Sindy Tsure: and the table is the ground
[17:32] Sindy Tsure: *say this..
[17:33] Sindy Tsure: will this be generating new collisions every few frames?
[17:33] Andrew Linden: no, this table is 'static' (not dynamic) and does not generate collisions (typically)
[17:33] Sindy Tsure notes that the cube goes thru the table
[17:33] Sindy Tsure: ok
[17:34] Sindy Tsure: so the same would go for the table actually being a table, too?
[17:34] Sindy Tsure: assuming it's not set to physical?
[17:34] Arawn Spitteler: A static table could be Volume Detect?
[17:34] Andrew Linden: yes, static objects can be VolumeDetect, but they are effectively collisionless
[17:35] Andrew Linden: and they won't get collision_start or _end events against non-moving static objects
[17:35] Sindy Tsure: awesome
[17:35] Sindy Tsure: ty!
[17:35] Andrew Linden: static objects can "move". They can llSetPos() and move by a few other means
[17:35] Sindy Tsure was more worried about buildings
[17:35] Andrew Linden: (I think llMoveToTarget() works on static objects, right?
[17:35] Andrew Linden: in any case, they can also be selected and moved that way
[17:36] Sindy Tsure: er.. i think that needs stuff to be physical
[17:36] Object: Hello, Avatar!
[17:36] Areth Gall: I do not believe llMoveToTarget works on static targets. Let me check though
[17:36] Rex Cronon: move2target works only on physical/phantom
[17:36] Andrew Linden: the typical case is that static objects get "deactivated" by the physics engine and don't trigger collision events
[17:37] Sindy Tsure: llMoveToTarget ignores you if the object isn't physical
[17:37] Andrew Linden: ok thanks for the clarification of llMoveToTarget() on static
[17:38] Sindy Tsure: strange.. once i set the Physical checkbox, it started moving
[17:38] Sindy Tsure: so the call stuck from when it was static
[17:38] Arawn Spitteler: I think Targets are supposed to be object characteristics
[17:38] Sindy Tsure: hm.. maybe not so strange
[17:38] Sindy Tsure: oh.. that'd explain it, arawn
[17:38] Andrew Linden: I guess I was getting llMoveToTarget() confused with the "grab action" which is the little hand-icon-click-and-drag-on-object feature
[17:39] Andrew Linden: Yes, that makes sense Arawn. The MoveToTarget() behavior can be created on a static object
[17:39] Arawn Spitteler: Speaking of Grab Action, I've been having an awful time, with my swing set. I guess I can respond to touch, while blocking grab
[17:39] Andrew Linden: but takes no effect until it is set dynamic
[17:40] Andrew Linden: Arwan, I think maybe touch/grab are enabled/disabled together.
[17:40] Andrew Linden: I'd have to verify by testing with content, or read through the code.
[17:41] Arawn Spitteler: I'll look at what Strife has; I want to play safe with STATUS_SANDBOX also
[17:41] Sindy Tsure: i think that one tells it to delete the object if it strays from the sim it was created in
[17:42] Arawn Spitteler: I thought it would confine to a 10X10 areea
[17:42] Sindy Tsure: oh.. right you are
[17:43] Sindy Tsure: 10m from where that bit was set
[17:43] Sindy Tsure: "This status flag keeps the object from getting away.
It causes the object to be unable to leave the sim or move more than 10 meters from the location where the flag was set.
If the object tries to leave the sim or move more than 10 meters it ceases to be physical and throws a "Hit Sandbox Limit" error"
[17:44] Simon Linden: heh ... I've never even heard of that functionality :)
[17:44] Andrew Linden: I just checked the code and yes, I think STATUS_SANDBOX will cause the object to delete if it hits the region boundary
[17:44] Andrew Linden: and the region doesn't need to be a sandbox, it works in any region
[17:45] Sindy Tsure: you should read the docs more, simon!!!
[17:45] Sindy Tsure: :P
[17:45] Arawn Spitteler: I'm up against a boundary, but the 10 meter limit should be handy
[17:45] Andrew Linden: the feature set is deep. lets make it deeper
[17:45] Sindy Tsure: i'm all for that, andrew!
[17:45] Arawn Spitteler: Deeper as in PhD?
[17:45] Simon Linden: yep ... I read 'em when I get a bug in that area ... I've just never worked with STATUS_SANDBOX before
[17:46] Sindy Tsure: i'd love to see lsl grow and more llFunctions..
[17:46] Sindy Tsure: first time i was here, andrew was thinking about keyframed physics stuff and different types of movement
[17:46] Yuu Nakamichi: volumedetect for linksets? :)
[17:46] Arawn Spitteler: I'm doing a lot of interactive playground equipment, in Burning Life, so things that do't go wild should be handy
[17:46] Andrew Linden: Yeah, all changes to LSL are waiting for MONO to settle down.
[17:46] Sindy Tsure nods
[17:47] Arawn Spitteler: What's KeyFramed?
[17:47] Sindy Tsure: sorta like waypoints
[17:47] Andrew Linden: Actually, all of our static objects are "keyframed" in Havok parlance
[17:47] Andrew Linden: it really means that the objects don't respond to collisions
[17:48] Andrew Linden: but can have their velocities set non-zero and they will be integrated forward
[17:48] Sindy Tsure: or maybe not like waypoints at all :)
[17:48] Andrew Linden: turns out, we currently set all of our keyframed objects to have zero velocities
[17:48] Areth Gall: So essentially, I could make a vehicle that would move physically and keep going even if it collided with something.
[17:49] Andrew Linden: the reason for using keyframed instead of "static" (in Havok parlance) is because the cost of transitioning from dynamic to truly static is somewhat high
[17:49] Andrew Linden: so instead we just keyframe with zero velocity
[17:49] Arawn Spitteler: So, we could have a dynamic static that doesn't know when it's hit something
[17:49] Areth Gall: I'd like to think of it as not caring :P
[17:49] Andrew Linden: yes Areth, however keyframed implies that all the velocities come from some internal plan
[17:50] Andrew Linden: sinc they don't collide it is hard to do "interesting" motions with keyframed
[17:50] Areth Gall: Yeps. I understand that. It's a lot like a vehicle engine I've been trying to implement in my freetime.
[17:50] Arawn Spitteler: On my swing, I noticed that the avatar would lag, in some cases
[17:50] Andrew Linden: if you wanted interesting motion you'd have to actually compute velocity changes at certain places or times, and load the whole motion plan ahead of time
[17:51] Sindy Tsure: that sounds 'bad'. is that 'bad'?
[17:51] Andrew Linden: I think Sindy was referring to some features I wanted to work on... to allow scripted keyframed motion
[17:51] Arawn Spitteler: So, a Train might be keyframed, to follow waypoints, rather than colliding with the central rail
[17:51] Andrew Linden: for moving "static" doors for example
[17:52] Sindy Tsure: oh.. right!
[17:52] Areth Gall: Also, I do have a few questions to ask. Feel free to just poke me if you can answer them before the night is over. Just wanting to get these out there, take your time in answering em: If I may ask, what were the reasons that velocity limits were implemented? And is their implementation something that is planned on being permanent? Also, any updates on the rotational velocity drag? Or is that still low priority?
[17:52] Andrew Linden: yes arwan, in the general sense you could keyframe the entire train path
[17:52] Andrew Linden: Areth, best to just ask the questions.
[17:52] Arawn Spitteler: Might go well with Link Heierarchies?
[17:52] Areth Gall: That would be great for sim planning and elevators, as you wouldn't need to worry about avatars getting in the way or griefers blocking the path of an object.
[17:52] Andrew Linden: uh... keyframing subprims to move locally would be harder
[17:53] Arawn Spitteler: Is rotational drag of non-vehicles something we can control?
[17:53] Sindy Tsure: isn't that a vehicle flag? rotation damping?
[17:53] Sindy Tsure: *float
[17:53] Sindy Tsure: *vector?
[17:53] Andrew Linden: Arwan, you're refering to the non-zero friction for rotating dynamic objects?
[17:53] Areth Gall: If it is a vehicle, maybe. What about non-vehicle rotation?
[17:53] Andrew Linden: At the moment, No it cannot be controlled.
[17:54] Areth Gall: And yes, I am refering to the non-zero friction for rotating dynamic objects.
[17:54] Arawn Spitteler: My swings aren't vehicles, but sliced of torusus, that hang from their MoveToTargets
[17:54] Andrew Linden: Areth, I still haven't tracked that down. I don't know if that is some implcit frition in the physics engine or what.
[17:55] Andrew Linden: Ah Arwan, and their motion is damping too fast?
[17:55] Sindy Tsure: cool way to implement that, arawn.. do you llRotLookAt to make it swing?
[17:55] Arawn Spitteler: Spinning wildly out of control, but I reduced the push
[17:56] Andrew Linden: what push method are you using Arwan?
[17:56] Arawn Spitteler: llApplyRotationalImpulse
[17:56] Areth Gall: Same thing that I've been having problems with.
[17:56] Andrew Linden: an impulse is a change in momentum over time
[17:56] Andrew Linden: so effectivley an llApplyImpulse() corresponds to a change in velocity
[17:56] Arawn Spitteler: I thouhgt it an instant change of momentum, with force being over time
[17:57] Andrew Linden: if you do it too often then it can build up... higher and higher velocity
[17:57] Areth Gall: llApplyTorque causes a rotational acceleration over time. llApplyRotationalImpulse operates on the same principle as llApplyImpulse and causes a sudden increase in rotational velocity without any acceleration force afterward.
[17:57] Andrew Linden: yes Arwan, it is an instantaneous change in momentum... but it can't happen faster than one step of the physics engine
[17:57] Object: Hello, Avatar!
[17:58] Arawn Spitteler: Whips around wildly, so I'm using tough(integer N){ llApplyRotationalImpulse<(0.1)*mass, 0.0, 0.0>...
[17:58] Andrew Linden: but Arwan, you have to apply that repeatedly. Is it in some timer() event?
[17:58] Arawn Spitteler: It's also sounding complicated, if I want to reign in the frequency of push to something predictable
[17:59] Arawn Spitteler: It's in the touch event, so I have to gues what the frequency of call is.
[17:59] Arawn Spitteler: I also have no idea where such a mall force gets such a large torque
[18:00] Andrew Linden: Arwan, try removing the mass term... I think mass is handled in an odd way internally for that call. Lemme check the code.
[18:00] Arawn Spitteler: How much force is pushed against the avatar, by a step forward?
[18:01] Arawn Spitteler: The mass is inside a vector, so I could (string) one of those.
[18:01] Andrew Linden: no I take that back... it actually applies the impulse, which is delta_momentum / delta_time
[18:02] Andrew Linden: momentum is velocity * mass
[18:02] Areth Gall: Yeps.
[18:02] Simon Linden: I have to run ... see you all next time
[18:02] Areth Gall: Take care, Si
[18:02] Simon Linden: Bye
[18:02] Rex Cronon: bye simon
[18:02] Andrew Linden: so Arwan, if you want to normalize your input for delta_velocity, you need to divide by mass
[18:02] Sindy Tsure: cya, simon!
[18:02] Andrew Linden: rather than multiply by mass
[18:03] Andrew Linden: however, if the mass of the swing is not changing, then best to just tweak the value so that it works well, and remove the mass term
[18:03] Arawn Spitteler: Impulse is already multiplying by mass?
[18:03] Areth Gall: You also have to take into account the mass of the avatar(s) sitting on the prims of the object.
[18:03] Andrew Linden: yes Arwan, the value you feed to llApplyImpulse() is an impulse = delta_vel * mass / delta_time
[18:03] Arawn Spitteler also has to do a teeter totter
[18:04] Sindy Tsure: hm.. my swing kinda sucks
[18:04] Arawn Spitteler: Swings are an adventure
[18:04] Sindy Tsure: seems to almost work about 1 outta 10 moves
[18:04] Arawn Spitteler: I'm also trying to sort out a bar-stool
[18:05] Andrew Linden: alright, the hour is up. any last minute questions?
[18:06] Crayon Katyusha (trail) whispers: Use Mouselook (press 'M') to shoot me.
[18:06] Crayon Katyusha (trail) whispers: Choose 'Detach' from my menu to take me off.
[18:06] Sindy Tsure: none from me!
[18:06] Sindy Tsure: ty, andrew!
[18:06] Rex Cronon: none here
[18:06] Yuu Nakamichi: :)
[18:06] Sindy Tsure hides behind rex
[18:06] Andrew Linden: ok, thanks for attending
[18:06] Rex Cronon: ?
[18:06] Yuu Nakamichi: thanks andrew
[18:06] Sindy Tsure: he's got a katyusha, rex!
[18:06] Rex Cronon: oh. lol. and i am the iron man:)
[18:07] Sindy Tsure: er.. russian rocket launcher, i think
[18:07] Sindy Tsure: like our mlrs, maybe
[18:07] Sindy Tsure: cya, andrew.. laters, all!
[18:07] Rex Cronon: bye everybody
[18:07] Rex Cronon: have fun