Simulator User Group/Transcripts/2023.11.28

SERVER SCRIPTING USER GROUP MEETING 
28 November 2023
Jenna Felton: we have now a system of shared environment, where one can either define it for themselves personally or assign to the region for everyone to use. Maybe this controller setting could use something similar, so that either you adjust the input names for your own controller or can also share amount other people using the same or similar controller. But i not know how that would work in details, but i think still, sharing would be cool idea :)
ST33LDI9ITAL:</font></b> sounds good as long as it isn't limited to amount of channels or actions for multiple objects I guess
Leviathan Linden:</font></b> Yes, it needs some thinking Iexo Bethune.
Rex Cronon:</font></b> i think what Lucy said sounds better
Jenna Huntsman:</font></b> I think the viewer could handle that
Rex Cronon:</font></b> sometimes having to click on a menu can be a pain. if u do it enough times
Amalia Irata:</font></b> Good on paper, but that introduces additional concerns for memory usage.
Wulfie Reanimator:</font></b> I guess what I'm trying to picture in my head is.. if I've bound a button to GAME_CONTROL_AXIS_0 in my viewer, and a script tells me to press ThisButton, what's the connection for me to know it means GAME_CONTROL_AXIS_0?
Jenna Huntsman:</font></b> As otherwise you'd have to handle 100s of different controller layouts and button names absorbing script memory
Leviathan Linden:</font></b> So I'm still thinking it through but that’s the conundrum that is delaying the server-side features:</font></b></font></b> how exactly will we support various controllers and how to make it easy to modify the mappings when necessary.
Rex Cronon: u need a popwindow for when u hoover the mouse pointer over the on screen button
Iexo Bethune: Well, that was why I was thinking of an object in the object's inventory. The script would essentially filter its controls through that, and changing settings in this mappings object would be allowed even in no-mod vehicles.
Leviathan Linden: I think the idea is... there will be some default "Action names" and a default mapping, and it will be recommended that scripters use the default Action names when possible.
Wulfie Reanimator: I'm also considering cases where two different objects are using different names for the same physical button.
Rex Cronon: so scripter needs to also provide description 4 buttons
Leviathan Linden: So like... Strafe, Jump, Turn, etc.
Lucia Nightfire: As long as it allows game/RP region operators/creators to create controller setup pages similar to any A/AA/AAA game
Leviathan Linden: It would be recommended that your vehicle, or attachment use "Strafe" rather than "Wiggle", for clarity, but "Wiggle" could be used if you like.
Iexo Bethune: Alternately, mappings could be like environment settings, but that does add an extra task to switching vehicles, to apply the mapping...
Jenna Felton: You can potentially use a lot of different controllers, for each controller there would be an xml file with configured mapping. The script would ask the viewer to load a mapping with a special name and then have access to the mapping names (so the script can tell the user to press the button with right name) and also understand what was pressed or changed. And then only that controller needs to be kept in script memory, while probably different scripts can have loaded different controller mappings at same time
Leviathan Linden: The way the feature works now, and how I would like to keep it, is... it sends the device input (e.g. buttons or axes) as a single set of enumerated lists. So... even if you have two game controllers and a keyboard, the data that is sent is still only one list of buttons and one list of axes. The sum of all inputs.
Leviathan Linden: And the scripts that receive the data... all get the same data.
Leviathan Linden: I don't want to have to provide differently ordered data to ScriptA than to ScriptB.
Leviathan Linden: This means:</font></b> some button on your controller is going to have to map to BUTTON_0 (or BUTTON_A as an alternate name) in the data.
Rex Cronon: this set of enumerated lists is going to contain int, double, float, string values?
Leviathan Linden: The enumerated list has two forms that I care about: how it is packed into a message to the server, and how it is presented to the script.
Jenna Felton: i meant that different scripts could have loaded different mapping files and know the same inputs under different names. But it must not be necessary, then when one script loads a controller mapping, other scripts would have the names replaced probably. then all scripts would be in sync :)
Leviathan Linden: It is encoded differently for each. But I would like to keep the game_control argument format the way it currently is: game_control(key agent_id, integer buttons, integer button_edges, list axes);
Leviathan Linden: Currently the game_control feature as it was... is now in the next maintenance update which will be deployed somewhere on the Beta grid soon, maybe this week.
Rider Linden: I'll get it up on Rider’s Test Channel this week.
Rex Cronon: i think mapping should be specific for each script
Leviathan Linden: I haven't modified it yet or anything. But we're tying to figure out the MINIMAL Viable Product that would make it shippable.
Rider Linden: Be warned though. It's very early in the dev cycle so there may be multiple changes coming through.
Rex Cronon: do u guys have a list of use cases?
Leviathan Linden: So that is about all I have to say about the game_control project. I am open to input on the side if anyone wants. If you have very strong opinions and want to talk my ear off you can ask for a custom meeting for it. I'll open the floor for other stuff now.
Rex Cronon: i think u should base your development on your use cases
Leviathan Linden: Alternatively, I'll probably talk about it eventually on Discord: SecondLife Scripting channel, and a few other channels.
Robin Lobo: Any status updates from Monty?
Tombs Clawtooth: I'm guessing the ability to sponge/stop damage to avatars seated on an object is still going to be after new years?
Monty Linden: Nope - I was out a week so not much to say (other than forum chatter)
Robin Lobo: ty Monty
Iexo Bethune: I'm looking forward to relaxing flights with my joystick. However, on the subject of things that make flights significantly less relaxing at the moment, how's the region crossing rework going, Monty?
Rider Linden: Tombs, yes. We'll have more on that soon. I've actually got a straw man written up and I'm floating it around the lab this week.
Tombs Clawtooth: Awesome
Grave: If we can get 3rd person "mouselook" style controls as well, controller support means hack and slash gameplay for medieval fantasy sims.
Istauri Arai: Being able to move mouselook centre point in general
Monty Linden: The one fantastic thing about region crossings is that there's soooooo much room for improvement. Going to write me a mini-van.
Rider Linden: Graves, that runs into an issue with avatar facing direction, BUT I think that might be a solvable problem.
Amalia Irata: @Grave - sounds like a good use case to have an avPos/velPos resurgence
Grave: This is the Jira I have open for 3rd person mouselook functionality. It would go great with controller support.
Grave: https://jira.secondlife.com/browse/BUG-233210
Tombs Clawtooth: Speaking of that, I had an idea regarding "megasims" that wouldn't actually involve breaking viewers or anything. If you have control over the server hosting, it may be possible to set up a configuration for a customer that could essentially make region crossings immediate for that client's sim cluster
COCA Yven: About mega sims I think it would be great if e.g. whoever enters has to pay e.g. 1 linden per hour or something really cheap
COCA Yven: it would get avis and cars and boating a big boost
COCA Yven: and even 0 g ideas
Rider Linden: And yes. Going into first person just to use my bacon shooter is annoying.
Istauri Arai: In regards to mouselook changes like the ones in BUG-233210 I would like to be able to go even further and be able to set a mouselook centre so that we can do things like turrets and vehicles without having the avatar sat inside the turret directly.
animats: Camera control is a difficult problem. There are whole books on that.
Lucia Nightfire: yeah, you could achieve all that with camera control reform
Rider Linden: Remote control vehicles Istauri? (for a very loose definition of "vehicle")
Istauri Arai: Remote control vehicles is one case yes
Rex Cronon: wouldn't be nice if u could control your camera with your game controller:)
Lucia Nightfire: why wouldn't it?
COCA Yven: You mean as you have a remote vehicle and can toggle your view to it?
Istauri Arai: I make large spaceships in SL and a problem with weapons has always been that you can't do turrets properly without your avatar being sat in some sort of transparent ball in the middle of the turret, else no mouselook
Tombs Clawtooth: well there was that 3d joystick...
Iexo Bethune: Tombs, are you thinking of multiple regions hosted separately on the same server, so communication between them is faster and more reliable?
Tombs Clawtooth: Yeah, Iexo
Iexo Bethune: Could work.
COCA Yven: that would be sooo soo soo cool if feasible
animats: Monty Linden may be getting close to real fixes for region crossings.
Rider Linden: I would think that with the game controller setup that could actually be done. Forward the command to a listen on your vehicle, turret, trebuche and have it do the command.
Amalia Irata: https://wiki.secondlife.com/wiki/LlSetCameraParams with CAMERA_FOCUS_OFFSET also works for attached weaponry.
Tombs Clawtooth: It could be an option for sim owners, maybe with a tier cost hike, to get the sim crossings for their cluster of sims to be effectively instant
Istauri Arai: Remote vehicles and the earlier suggestion of being able to hide the avatar while they're sat on objects are both pretty great for doing more space and vehicle stuff in SL
animats: There's nothing wrong with having lots of region crossings if they work reliably.
Signal Linden: We've had some ideas about providing affinity to simulator placement which could include proximity... in concept.
Rider Linden: That's certainly on my shortlist for next year Istauri.
Istauri Arai: Excellent
Istauri Arai: Looking forward to it
Tombs Clawtooth: That gets you 99% of the way there to having megasims, even if they aren't megasims in name
COCA Yven: @Rider, would it be in theory possible to us e the same concept of reflection probes for remotely moving a clients view to some probe e.g. called visual probe
Rider Linden: I'd like to be able to build a clown car. Pack 10 avis into a vehicle and have them all pile out at once.
Iexo Bethune: In fact, a more careful approach to what servers host what regions, to keep them grouped by server would probably benefit not just us, but the servers' network as well, by heavily reducing communications between servers...
Rex Cronon: u will be throwing pies out of it rider:)
COCA Yven: so in case of space shit with many turret a single player could toggle from one probe to the other to change their cam view to that probe
COCA Yven: laughs at Rider:DD
Ariesviper Waifu: i think it is already possible to make a clown car?
Istauri Arai: It's not possible unless you hide the avatars under the floor or crush them into balls or something
Ariesviper Waifu: fair
Wulfie Reanimator: I feel like space ship turrets could be done...
Brad Linden: COCA are you suggesting a new type of prim that could be placed the way reflection probes are that could be used for scripted camera control?
COCA Yven: yes
Istauri Arai: Spaceship turrets can sort of be done already yes but not with proper camera stuff
Iexo Bethune: Not really, a clown car could be made with cleverly constructed sitting animations to mimic the real thing.
COCA Yven: the same principle for reflection probes
Brad Linden: interesting
Istauri Arai: Been tinkering with them for years
COCA Yven: in the case of that space craft
COCA Yven: u can name them visual probe 1 to 10
COCA Yven: and via some script
COCA Yven: the creator can create some interface or commands
COCA Yven: so they can toggle their view to them
COCA Yven: their cam
Ariesviper Waifu: i can say i have done plenty of stuff with turrets.... if the <A-T> ships are anything to go by.... only thing i would really need for more turret fun is adjustable mouselook position
Wulfie Reanimator: I'd love to talk to you about it Istauri, outside of the meeting. :P
Jenna Felton: Maybe after SL went to the cloud it can become possible to keep the avatar data and vehicle data not in the region memory but on a cloud, and manipulate it within the cloud that keeps all avatar and vehicle data without needs to move the data between regions, this would make the region crossing smooth no matter where the regions are. Although probably slow down actions while on regions. But can be probably too big of work to tackle :)
Rider Linden: I have some initial ideas for scripted cameras... something similar to llSetKeyframedMotion but for cameras. I've not even fleshed out a strawman for it yet though.
Rex Cronon: for example when u have a tank, u need a gunner, a driver and one that coordinates
Istauri Arai: Yes exactly, the movable mouselook position would be a huge game changer. A lot of the more fun camera stuff doesn't work well because the viewer doesn't seem to update the camera position fast enough so when the vehicle moves things become horribly jerky
COCA Yven: I think 0 G stuff is a big milestone for SL. at one point I think we could theorize an sl above 4000 meters where only 0 g works
COCA Yven: and have the feeling to be in space with different lighting
Lucia Nightfire: I'm still surprised we don't have limb local pos/rot cam binding, selfie cams would be a thing
Wulfie Reanimator: Black Dragon kinda does...
Istauri Arai: Scripted selfie cam lol
COCA Yven: PS by the way I have nothing to do with space crafts nor came here for this but the idea of the turret and moving view to remote vehicles or parts of a vehicle is very nice if feasible
Grave: You can do 0G with an avatar, but one thing that would be neat if making an avatar physical is its rotation not being locked to an upright position.
Wulfie Reanimator: I don't remember if it has arbitrary bone binding, but for the head at least. Shouldn't be too difficult to generalize.
Monty Linden: /me wants arbitrary vector field for gravity
Istauri Arai: vector fiiiiiiields :O
COCA Yven: that would be so so cool monty!!
Rex Cronon: how would that work monty?
Rider Linden: But! Think of the horses!
Istauri Arai: that genuinely WOULD be crazy lol
Robin Lobo: lol
Johannes Morningstar: lol
Wulfie Reanimator: So llWind on steroids?
Rider Linden: /me does not want to slaughter more breedables.
Monty Linden: data/script-based generation of a vector to throw into physics engine (rather than a constant)
COCA Yven: no seriously an sl space feasible e.g. at high altitudes e.g. above 4k meters?
Monty Linden: (it's a dream)
Istauri Arai: (very fun dream)
Grave: So like if we could have this:
Grave: llSetStatus(STATUS_PHYSICS|STATUS_UNLOCK_AVATAR_ROTATION, TRUE);
Rex Cronon: so u can shoot black hole bullets?
Grave: And avatars can flop around all directions like a prim
Grave: Without sitting on one
Istauri Arai: Stuff above 4k isn't feasible the way things are atm considering we get primdrift the further up you go
Robin Lobo: I think floating point errors above 4k prevents it
Istauri Arai: I get floating point errors at 1k let alone 4
ST33LDI9ITAL: be nice for flipping a region on its side
COCA Yven: oh ok
Amalia Irata: With a gravity parameter like that, vertical sims could become properly feasible
Jenna Felton: 0g, reminds me to a video about Minecraft where when you built a tower high enough you would be attracted to a moon instead of the earth :)
Istauri Arai: Prim rot is very real
COCA Yven: but in coding nothing is impossible
Iexo Bethune: I would like that too, Monty.
COCA Yven: there is always a way
Istauri Arai: not always a reasonable and time economic way
Rider Linden: +1 Istauri
COCA Yven: I agree Istauri but nothing is done all at once
COCA Yven: sometimes it’s just little steps
COCA Yven: and creativity
Robin Lobo: Istauri is pushing Coca back to the surface
COCA Yven: he is very right on what he says
Grave: Would the avatar hitbox rotating be considered some kind of decoupled physics for it?
Istauri Arai: Space games have things like large world coordinates and don't have to worry about things like teacups on shelves all precisely placed at the same time as planets spaced out at real distances.
COCA Yven: I came to ask a question to any of the developers here. question is: is it possible to increase server refresh rate fps to e.g. at least 120 Hz
Leviathan Linden: The avatar hitbox rotation bug: I would like to look into that one if I get the chance. We haven't been able to reproduce it, but if it really exists I might be able to figure it out with pure code inspection.
Rider Linden: Why do you want a higher resolution on the simulator frames?
COCA Yven: agree with all but I also thin this is SL as in second life space is big theme now and will be bigger as time passes, it must not be underestimated or disregarded,
Rex Cronon: avatar hitbox rotation bug?
Grave: I mean lets make the bug a feature. Well, with more control. Imagine letting your hitbox ragdoll and control it with a jetpack to zip around.
COCA Yven: I am not savvy Rider but I was thinking that 1 it can make client fps true fps better
Istauri Arai: It could be nice at 60 but realistically why?
Amalia Irata: Careful with changing the sim frame rates... I remember a bunch of created content related to jetpacks and dodgerolls suddenly killing people on terrain collisions last time that was changed
Lucia Nightfire: agent hitboxes are anything but ragdoll, heh
COCA Yven: better for VR if unsupported well a tone point
Simon Linden: COCA - that would be a huge fundamental change. If you want a smoother experience, I _think_ 99% of the work for that would be on the viewer
Istauri Arai: We have things like interpolation for that COCA
COCA Yven: and e.g. on boats compass they are kind of ticking when riding slow
COCA Yven: its is very noticeable
Rider Linden: Client FPS in not dependent on simulator FPS. They are really to very different things.
COCA Yven: I also think it would improve region crossing
Istauri Arai: The viewer cheating and interpolating movements to fill in the differences
Jenna Huntsman: Simulator framerate and client framerate have no correlation
COCA Yven: ok
COCA Yven: but region crossing does
Monty Linden: would be fun to run a low-script region at 120 for fun
COCA Yven: doesn't it?
Lucia Nightfire: would be nice to make interpolation a controllable aspect via LSL
Istauri Arai: region crossing is something else also
Leviathan Linden: Avatar hitbox rotation bug: https://jira.secondlife.com/browse/BUG-234598
Monty Linden: but network load (sim>viewer) has a linear term in frame rate as well as other issues
Lucia Nightfire: you could cheese so many things
Istauri Arai: That's a point
Istauri Arai: can we get some actual lerp functions?
COCA Yven: when I cross boats
Amalia Irata: Sim framerates breaking some content after changing back in 2010: https://jira.secondlife.com/browse/SVC-6303
Leviathan Linden: We don't have lerp?
Istauri Arai: we don't lol
Monty Linden: once we can actually hit 45 and hold it.... maybe play with high-precision simulation
Istauri Arai: we write our own
ST33LDI9ITAL: https://wiki.secondlife.com/wiki/Interpolation
Lucia Nightfire: update intensive lerping
Monty Linden: idle sims (8fps) certainly startled things back in the day
COCA Yven: I have feeling that the avatar is detached from the boat and then reattached, this could be that it happens relay or that the boat and the client cross in different moments, and that there is some latency penalty to get them to know they are all sat together
Istauri Arai: Yeah we just have these library functions
Monty Linden: but we've all learned since then!
Moirelle Ravenhurst: yee
Lucia Nightfire: I thought it was 1fps for idle
Amalia Irata: The other thing to remember with interpolation, is that some users have fiddled with it in their debug settings.
Rex Cronon: what r u guys talking about? 120hz? that is is the screen refresh rate. or how fast things r rendered on your screen. the server is not run at 30hz
Monty Linden: RC crossings, vehicles, etc.... different problem from simulation frame rate
COCA Yven: @Monty, I think 45 fps in ultra settings is very close for mass
Monty Linden: in fact, it's the RCs and TPs that kill framerate, not the other way around
Istauri Arai: I think the 45fps server frame rate is confusing folks
COCA Yven: I'm learning now Istari
COCA Yven: I'm not savvy about this really
animats: Why do TPs hit stall out sims for seconds, anyway?
Istauri Arai: OH BOY
animats: Loading the physics model into Havok?
Ariesviper Waifu: asset loading
Wulfie Reanimator: Close the can, close the can!
Istauri Arai: You don't want to know
Istauri Arai: you really don't
Grave: Can we have Havok 1 back? Kidding,. but I do miss when physical objects could not pass through each other.
Istauri Arai: It came in with mono for the most part and it was a traumatic time for everyone :')
Istauri Arai: To the Linden's credit, it used to be much much worse than it is now
Rider Linden: At the moment, adding an avatar, all of their scripts, and all of their attachments to a region is rather expensive. Much of that code is quite old, Monty's been working on that.
Ariesviper Waifu: so, the sim needs to at least load the attachments, their scripts, current script states and variables, also establish the connection with the users client, and whatnot, as well as any things such as voice server migration
Istauri Arai: Yeah it's hard work for the sim to bring someone in or let them out
Monty Linden: multiple areas impact simulator frame rate: script serialization/deserialization are big, certain network housekeeping functions, and certain HTTP operations can all contribute to 100+ms frame times (extending into multiple seconds)
Monty Linden: I have a "Bad Children" list of things for future work
animats: Nice!
Istauri Arai: bad children lol
COCA Yven: Monty I use a method when i tp to congested sims, I hit CTRL 4 to derender everything and turn off advanced lighting model... once I rezz the sim I turn on avatar rendering and once they rezzed ALM.. this way i'm faster than just doing nothing
Istauri Arai: I greatly look forward to those being smoothed over
Grave: Do you think it would ever be possible to get back the physical objects not passing through each other? Or is that an inherent flaw in the current Havok version?
Amalia Irata: We'd need some proper server-side positional tweening.
Ariesviper Waifu: as far as i can tell, havok updates object position each server frame, so 45 times per second, and only checks if its colliding with something during that frame, not the space between frames
Iexo Bethune: Region crossing instability is probably the biggest problem SL has right now, as one of the main selling points over other platforms is a large open world that everyone occupies, and not being able to traverse it reliably severely hinders that point. Exploration is also one of the first things new players do, and a crossing bug or crash is often one of the first negative experiences they have.
Grave: When we had Havok 1, a prim would never go through a wall, at any speed. Was pretty nice. Minus the sim crashing from too many bullets colliding with things.
animats: What Iexo said.
Istauri Arai: I agree on the region crossing stability being probably the biggest issue
Istauri Arai: the mainland would be much more fun if you could just breeze around it without worrying at all
Iexo Bethune: That being the case, Monty needs a team and a raise. And probably some energy drinks.
animats: Yes!
Istauri Arai: It's very jarring when you show someone SL for the first time and they don't understand the hitching on walking across an invisible region border
Ariesviper Waifu: a lot more than bullets could crash havok 1, clipping faces colliding with something else could crash a sim for instance
Monty Linden: there's no reason RCs can't be nearly perfect
Jenna Felton: yes, I would really like when you would drive around mainland and not notice the region boundaries at all or rarely :)
Tombs Clawtooth: The funniest sim crash I ever saw was from a boombox calling too many sounds at once
animats: Agree with Monty on that.
Grave: Ah yes, the elevator sim crashes were mint.
Monty Linden: but we've implemented down a very bad alley and need to back out some ideas to make it better
Istauri Arai: RCs being nearly perfect would be incredible
Amalia Irata: *cough*versionedLSL*cough*
Ariesviper Waifu: i remember in havok 4 beta, accidentally crashing a sim a couple times because i was making a giant ball pit with a friend
Istauri Arai: versioned lsl oh yeah
Iexo Bethune: I would like to poke at Tombs' idea earlier too, though. Grouping regions together on the map by what server is running them, if not already done, would probably go a long way toward helping crossing stability, and reducing inter-server traffic.
Istauri Arai: Crashing sims with windchimes back in old havok lol
Istauri Arai: Back in the days of crashing the sim's physics by dropping spiky megaprims and everyone getting frozen in place lol
EnCore Mayne: Monty Linden: "but we've implemented down a very bad alley and need to back out some ideas to make it better" -words to live by