User:Andrew Linden/Office Hours/2008 10 16

From Second Life Wiki
Jump to navigation Jump to search

Transcript of Andrew Linden's office hours:

[17:03] Kitto Flora: Hello
[17:03] Ellla McMahon: hello :))
[17:03] Andrew Linden: Hi Kitto
[17:04] Kitto Flora: Hi Simon
[17:04] Simon Linden: Hi Ella, Kitto, Andrew
[17:04] Ellla McMahon: hello Simon :)
[17:04] Andrew Linden: Hi
[17:05] Andrew Linden: Wow, today really flew by.
[17:05] Andrew Linden: Busy busy busy
[17:05] Kitto Flora: Were you having fun?
[17:05] Andrew Linden: But I was hear on time!
[17:06] Andrew Linden: Hrm... not really all that fun.
[17:06] Kitto Flora: Will you here what we have to say?
[17:06] Andrew Linden: Sure, I'm paying attention.
[17:06] Kitto Flora: :)
[17:06] Ellla McMahon: LOL
[17:07] Andrew Linden: They have the 1.25-Server branch made, but they are still trying to deploy it for internal tests.
[17:07] Kitto Flora: Will it appear on Preview first?
[17:07] Andrew Linden: 1.25-Server coincides with some 64bit operating systems that will be going out around the same time
[17:07] Andrew Linden: so there are some config issues being resolved.
[17:08] Andrew Linden: Yeah, it will show up on some preview, however not until after QA has a chance to look at it for a few days.
[17:08] Kitto Flora: OK
[17:08] Kitto Flora: Are some servers 64-bit CPUs?
[17:08] Andrew Linden: All of our hardware is 64bit.
[17:08] Rex Cronon: hello everybody
[17:09] Kitto Flora: Hi Rex
[17:09] Kitto Flora: What cpu is in latest server, intel or amd?
[17:09] Andrew Linden: I think it is AMD
[17:10] Kitto Flora: I have an ongoing problem with lag, LSL and physics thats annoying, I'm wondering if there is a good way around this problem
[17:11] Kitto Flora: I slow vehicles to a stop by running at a slower speed for a while
[17:11] Rex Cronon: hi
[17:11] Andrew Linden: hrm... maybe I take that back... the one I looked at is Intel Xeoon 2.66 GHz... sim8670.agni
[17:11] Kitto Flora: I change the liner motor speed to say 2M / sec for 2 secs, then to 0
[17:11] Kitto Flora: So the vehicle should move 4M and then stop
[17:12] Kitto Flora: But when theres lag it moves much further
[17:12] Kitto Flora: I'm suspecting that the LSL timer() lags but the linear motor does not. Is this likely?
[17:12] Andrew Linden: Yes, that is probably what is happening
[17:13] Andrew Linden: the physics engine runs asynchronously with the script engine
[17:13] Andrew Linden: and the vehicle is actually a physics engine feature, with script hooks for changing its properties
[17:13] Kitto Flora: Thats what I though :/
[17:13] Kitto Flora: t
[17:13] Andrew Linden: so... hrm... there might be a different way to do it...
[17:14] Andrew Linden: There is probably a magic set of vehicle params that would get you a more reliable stop on a few rapid sets
[17:14] Andrew Linden: however there will still be some jitter in the script calls
[17:14] Kitto Flora: turn off the drive, leave physical and play with the linear friction?
[17:15] Andrew Linden: That is... if you set the linear_motor to zero velocity, then also set the friction and motor_vehicle_timescale correctly you could get more accuracy.
[17:15] Kitto Flora: OK
[17:15] Andrew Linden: yeah
[17:16] Kitto Flora: harder to set up as the vehicle params are non-obvious
[17:16] Andrew Linden: however, I dunno what the settings would be... it would be very much an effort of tweaking the numbers until you got it right
[17:16] Kitto Flora: But I have an ongoing problem with vehicles running off end of track
[17:16] Kitto Flora: in lag
[17:16] Andrew Linden: yeah, and it requires a sequence of script calls to do it
[17:16] Andrew Linden: and they won't all trigger at once, in general
[17:17] Andrew Linden: expecially under script lag
[17:17] Kitto Flora: Yeah but likely faster than laggy timer() event
[17:18] Andrew Linden: and the order in which they are called can matter... best not to tighten the linear_motor_timescale before setting the speed to what you want
[17:18] Andrew Linden: set the linear motor speed first when tightening the timescale, and the timescale first when relaxing it
[17:19] Andrew Linden: but that matters most when making big changes
[17:19] Kitto Flora: tighter linear_motor_timescale means vehicle will achieve the new speed faster?
[17:19] Andrew Linden: I debugged someone's hover vehicle where they were setting the global hover mode before they were changing the hover height
[17:20] Andrew Linden: and script aliasing with the physics engine caused it to break in an inconsistent way
[17:20] Andrew Linden: yes Kitto, by "tighter" I meant "shorter"
[17:20] Kitto Flora: Ok
[17:20] Andrew Linden: "faster" ... in less time
[17:20] Kitto Flora: Its what linear_motor_timescale actually does that I wondered about
[17:21] Andrew Linden: the timescales represent the period of time it takes for the corresponding effects to kick in
[17:21] Kitto Flora: Good
[17:22] Kitto Flora: That I can understand
[17:22] Andrew Linden: sorta... most of the effects actually kick to within (1 - 1/e) of their goal within the timescale
[17:22] Andrew Linden: er...
[17:23] Andrew Linden: 1/e closer than they were at the beginning of the timescale
[17:24] Kitto Flora: For my vehicles , the riders never notice acceleration effects.
[17:24] Kitto Flora: If vehicles atrt & stop instantly no one complains :)
[17:24] Kitto Flora: start & stop
[17:24] Kitto Flora: But making them slow down at stations before stopping does look better
[17:25] Andrew Linden: Yeah, most of your trains and guided vehicles putter along at a fixed speed
[17:25] Kitto Flora: Sort of fixed
[17:25] Andrew Linden: so only the start and stop matter... and the stop is harder when aiming for a particular spot
[17:25] Kitto Flora: The analyse and average LSL sspeed and set speed accordingly
[17:26] Andrew Linden: really? You measure the speed of the script engine and try to workaround the script lag?
[17:26] Kitto Flora: Also the monorail slows on curves as that takes more computing
[17:26] Kitto Flora: Yes
[17:26] Kitto Flora: As they use target()
[17:26] Andrew Linden: llMoveToTarget() ?
[17:26] Kitto Flora: the script measures how fast the event shows up
[17:26] Kitto Flora: No
[17:27] Kitto Flora: llSetTarget()
[17:27] Andrew Linden: oh, they adjust their velocity constantly to try to achieve a target position? or target velocity() ?
[17:27] Kitto Flora: No.
[17:28] Andrew Linden: llSetTarget()... hrm, my mind is blanking on that feature
[17:28] Kitto Flora: As they go along the track they use the time it takes for the not_at_target() event to show up to figure out how fast LSL is running
[17:29] Kitto Flora: That is smoothed - averaged - and the result used to adjust the vehicle speed
[17:29] Andrew Linden: ah ok
[17:29] Rex Cronon: llsettarget an event when object gets to that posi
[17:29] Kitto Flora: So that theres likely enough LSL computing power to run the navigation calculations
[17:29] Rex Cronon: generates an*
[17:29] Andrew Linden: so the vehicles just go faster in less laggy regions because they can expect better steering response
[17:29] Kitto Flora: Yes
[17:30] Kitto Flora: You got it
[17:30] Andrew Linden: gotcha
[17:30] Kitto Flora: The steam train is a 4spd fwd, one speed reverse
[17:30] Kitto Flora: in a fast sim it goes fast
[17:30] Kitto Flora: in a slow sim it slows down
[17:30] Kitto Flora: If the TD gets bad or the fram rate, it stops
[17:31] Kitto Flora: That way it tends to stay on the track :)
[17:31] Andrew Linden: yup. We need to optimize the script engine some more.
[17:31] Andrew Linden: Kitto, are you using MONO yet?
[17:31] Kitto Flora: In some places yes
[17:31] Andrew Linden: does it help at all?
[17:31] Kitto Flora: I have an All MONO steamn engine on trial
[17:31] Kitto Flora: Its virtually no diffeernt
[17:31] Arawn Spitteler wonders if Disable Camera Contraints is working as it should.
[17:32] Kitto Flora: MONO engine works same. The per fram script time might be 10% less at best
[17:32] Kitto Flora: But variations make it hard to tell
[17:33] Andrew Linden: right
[17:33] Kitto Flora: Its all events()
[17:33] Kitto Flora: Not really that much calc
[17:33] Andrew Linden: I suspect that a cleanup pass could gain as much script performance gain
[17:33] Andrew Linden: what do you think Simon?
[17:33] Kitto Flora: If events were faster - some events - it would be better
[17:34] Andrew Linden: You think we could profile the script engine and knock down a few hot spots?
[17:34] Andrew Linden: Or should we wait for Babbage?
[17:34] Andrew Linden: Simon is probably multi-tasking ;-)
[17:34] Kitto Flora: llSensor() is probably the biggest problem
[17:35] Simon Linden: I'M AWAKE. YES, I AM
[17:35] Andrew Linden: how is llSensor() the biggest problem?
[17:35] Kitto Flora: llSensor() with regex for the object name would sure help
[17:35] Simon Linden: What were you talking about cleaning up?
[17:35] Rex Cronon: if only volume detect would work on attachements:)
[17:35] Andrew Linden: I was wondering if you thought there was fertile ground in the script engine for optimizations.
[17:36] Simon Linden: Hmm, probably some stuff in the LSL engine. I haven't profiled that code specifically, but I'd be there are some bottlenecks there
[17:37] Simon Linden: I think the Mono people did some profiling and performance tuning in the new code, as they did have some problems early on in the project
[17:37] Andrew Linden: Oh right.
[17:37] Andrew Linden: They would have fixed the easy stuff if they found it.
[17:38] Simon Linden: I suspect they only looked at Mono, however
[17:38] Kitto Flora: That .. exclueds events() ?
[17:38] Andrew Linden: yes, and the LSL callback system is largly unchanged by the MONO work
[17:38] Kitto Flora: It apears to be unchanged
[17:38] Andrew Linden: which means... the cost of any llFoo() call, and events and sensors
[17:39] Andrew Linden: MONO primarily sped up regular logic calls... if, else and arithmetic,
[17:40] Kitto Flora: I would think wo
[17:40] Kitto Flora: so
[17:40] Andrew Linden: so if you were doing recursion, or doing a lot of math then you'd see very noticable improvements
[17:40] Arawn Spitteler: Does the event caller even see a difference?
[17:40] Kitto Flora: I do some of that but its mostly llSensor() and llTarget() for real-time vehicles
[17:40] Andrew Linden: perhaps the event caller is faster, but the cost of each event is largely unchanged
[17:41] Arawn Spitteler: I'd expect the event response to be faster
[17:41] Kitto Flora: I think it is about the same
[17:42] Kitto Flora: I think I get around the same rate of no_at_target
[17:42] Kitto Flora: The speed conrtrol seems unchanged
[17:42] Andrew Linden: well, it doesn't really matter if it takes you 1 minute, or 1 hour to decide to travel to the other side of the world... it still takes you a long time to get there once you leave
[17:42] Kitto Flora: So I recon the time to get that event is unchanged
[17:43] Andrew Linden: the scheduler is like the decision making process... the travel time is like the cost of the llFoo() call
[17:43] Kitto Flora: Oh - I am navigating on 2M to 10M intervals
[17:43] Andrew Linden: I flipped the order of the comparisons there
[17:43] Kitto Flora: 2M at 6m/sec = 3 mav point cals / sec
[17:44] Kitto Flora: 3 nav point
[17:44] Arawn Spitteler: What do you even use Sensor for?
[17:44] Kitto Flora: Finding the track ahead
[17:44] Kitto Flora: find track
[17:44] Kitto Flora: find location and type
[17:44] Kitto Flora: analyse where you have to go
[17:44] Kitto Flora: Then go there
[17:44] Kitto Flora: when you get there look for next track
[17:44] Rex Cronon: crashed:(
[17:45] Kitto Flora: WB
[17:45] Rex Cronon: thanks
[17:45] Kitto Flora: One of the bigger problems is sorting out what llSensor() finds
[17:45] Kitto Flora: Have to pick thru list looking for track
[17:46] Kitto Flora: Thats why regex would be good
[17:46] Arawn Spitteler: What's Regex?
[17:46] Andrew Linden: regex on object name?
[17:46] Kitto Flora: Wildcards
[17:46] Kitto Flora: Yes, andrew
[17:46] Andrew Linden: regex = regular expressions... wild cards
[17:47] Kitto Flora: llSensor("KFtrack*", ....)
[17:47] Rex Cronon: that would be nice
[17:47] Rex Cronon: :)
[17:47] Andrew Linden: for example, using . and * to specify any single character, or any sequency of characters
[17:48] Kitto Flora: I really dont know how much it would sped things up
[17:48] Andrew Linden: so Kitto, you want to search for multiple things and then sort through them?
[17:48] Kitto Flora: But the Monorail ,which uses only one name for the track can go much faster
[17:48] Kitto Flora: Yes, Andres
[17:48] Kitto Flora: w
[17:49] Andrew Linden: or your track all starts with "KFtrack"... so "KFtrack001" and "KFtrack002" ?
[17:49] Kitto Flora: Yes
[17:49] Andrew Linden: so... you have to run multiple scans and then figure out which one hit?
[17:49] Kitto Flora: Well one Sensor
[17:50] Andrew Linden: if you did one wild card scan you'd get several potential hits
[17:50] Kitto Flora: Then go thru the list of returns looking for object that starts 'KFtrack'
[17:50] Object: Hello, Avatar!
[17:50] Kitto Flora: Youd only get the track section ahead, within range
[17:50] Kitto Flora: As it is I have to scan for *anything*
[17:51] Kitto Flora: I've had people build ssuspention bridges with 100 prims
[17:51] Kitto Flora: and the train stops on them cause the prims flood out the sensor
[17:51] Andrew Linden: you can restrict the sensor on an exact name...
[17:51] Kitto Flora: The track has no exact name
[17:52] Kitto Flora: Theres around 50 track types so far
[17:52] Andrew Linden: right, I get it. You can specify exact name, exact key, or exact owner
[17:52] Arawn Spitteler: My Rail Follower HUD follows objects that are named as described in Object Description
[17:52] Andrew Linden: or any of those three together
[17:52] Kitto Flora: Right Andrew
[17:53] Andrew Linden: but a name filter could reduce the positive hits drastically
[17:53] Kitto Flora: Right
[17:53] Arawn Spitteler: Listeners could call for responses
[17:53] Kitto Flora: It should reduce the sim load?
[17:53] Andrew Linden: Hrm... I wonder how much content that would break to introduce regex in the llSensor()
[17:53] Kitto Flora: Is * valis on an object name?
[17:53] Kitto Flora: * or ?
[17:53] Arawn Spitteler: Is there an available character, not used in names?
[17:53] Andrew Linden: it would break for anyone who was searching for their special object named "Object*"
[17:54] Kitto Flora: Yeah
[17:54] Kitto Flora: Looks like * is valid char in a name
[17:54] Andrew Linden: so that there is breakage is unquestionable... the real question is how much
[17:54] Kitto Flora: I never saw * used in an object name
[17:54] Andrew Linden: alternatively... llRegexSensor() could be added
[17:55] Kitto Flora: Searc Inv for *
[17:55] Kitto Flora: *1337~Tutenkhamun-18th-Dynasty.jpg
[17:55] Andrew Linden: That you haven't seen it does not mean it does not exist Kitto.
[17:55] Kitto Flora: One hit form 11,218 items
[17:55] Kitto Flora: Right
[17:55] Arawn Spitteler: \\
[17:55] Kitto Flora: But its pretty low
[17:55] Andrew Linden: I'm seaking from years of experience at breaking people's content.
[17:55] Simon Linden: Ha - just tried to re-name "Object" to "Object*?" and the viewer crashed
[17:56] Kitto Flora: Oh?
[17:56] Kitto Flora: I named on Object* and it was ok
[17:56] Andrew Linden: I would try to repro how, but don't want to crash.
[17:56] Simon Linden: Well, try with the ? after the office hours :)
[17:56] Andrew Linden: Yeah, maybe I can exit with style.
[17:56] Rex Cronon: with a bang:)
[17:57] Kitto Flora: Exit witha whizzle-pop
[17:57] Andrew Linden: No, that would be !
[17:57] Kitto Flora: Thats a whiz-pop
[17:57] Arawn Spitteler: \? ?
[17:58] Andrew Linden: Sigh... much of this feature and optimization speculation is pure whimsy...
[17:58] Kitto Flora: Indeed :(
[17:58] Andrew Linden: I've already got sooooo much work to do.
[17:58] Arawn Spitteler: Chat works across boundaries, doesn't it?
[17:58] Kitto Flora: More stuff - it would be nice to be able to allow next owner to mod texture, but nothing else
[17:58] Andrew Linden: yes, I think so Arawn.
[17:59] Kitto Flora: All chat but llRegionSay()
[17:59] Andrew Linden: well... if you could mod texture maybe you'd also like to mode color
[17:59] Kitto Flora: Yes
[17:59] Kitto Flora: Texture color
[17:59] Andrew Linden: maybe those two whould be grouped
[17:59] Andrew Linden: yup
[17:59] Kitto Flora: People wanna change textur/color on my vehicles
[17:59] Arawn Spitteler: So,m in stead of Sensor, we could simply ask the rails to answer, and those named correctly can be filtered after. Is there a native lag, on the listen event5?
[17:59] Kitto Flora: But if I set them 'mod' they'd be wrecked
[18:00] Andrew Linden: Hrm... the permissions bits are currently full. We'd have to use a longer bit register and mask
[18:00] Kitto Flora: The rails dont answer - they are passive
[18:00] Andrew Linden: Arawn, that would require script shouting, and a script with listener on every rail
[18:01] Andrew Linden: listeners are not all that cheap
[18:01] Andrew Linden: and the train would have to listen back, and potentially sort through a lot of chat noise
[18:01] Arawn Spitteler: Actually, it would require llwhisper, on a long nose
[18:01] Kitto Flora: Well - chat noise is low
[18:02] Kitto Flora: But that kinda comms is going to be slower than llSensor
[18:02] Andrew Linden: ah yes, whisper, and I guess the response noise wouldn't be any worse than positive sensor hit on all valid objects
[18:02] Arawn Spitteler: They'd be the only listeners on that channel, for the most part
[18:03] Kitto Flora: But the idea of putting a script in every track prim is .. not good.
[18:03] Andrew Linden: this hour is about up. Anyone have any last minute issues or questions that are other than what we've been talking about?
[18:03] Arawn Spitteler: It would be more localized that Sensor, and a question of Geometry, as to how far ahead would be good to search. SVC-2931?
[18:05] Andrew Linden: Sigh... I guess I should actually comment on SVC-2931.
[18:05] Simon Linden: I'm going to try and crash again, so I'll say 'bye' in case it's a repeatable bug...
[18:05] Andrew Linden: I'll make a note and try to comment tomorrow.
[18:05] Rex Cronon: bye:) succesfull crashing:)
[18:05] Andrew Linden: change the name on a temp-on-rez box Simon
[18:07] Arawn Spitteler: Anyone familiar with recent builds of Omega? I'm trying to compile on Glorious Haskel Compiler, but not getting anywhere.
[18:07] Kitto Flora: Is he dead, Jim?
[18:07] Kitto Flora: Ah
[18:07] Kitto Flora: he gone
[18:07] Andrew Linden: hrm... I changed the name on this one.
[18:07] Object*?: Hello, Avatar!
[18:08] Andrew Linden: no crashy
[18:08] Kitto Flora: Maybe its a client version issue
[18:08] Andrew Linden: yeah, could be
[18:08] Rex Cronon: must have been something else
[18:09] Kitto Flora: Safe for me too
[18:09] Kitto Flora: On RC viewer