User:Andrew Linden/Office Hours/2008 10 16
< User:Andrew Linden | Office Hours
Jump to navigation
Jump to search
Revision as of 09:59, 21 October 2008 by Andrew Linden (talk | contribs) (formatted with Zero's perl script)
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 |