Combat 2.0

  • Search existing ideas before submitting- Use support.secondlife.com for customer support issues- Keep posts on-topic Thank you for your ideas!
Improved Mouselook for Combat and Immersion
[I am posting this on behalf of NiranV Dean, author of the Black Dragon viewer.] General purpose improvements to the way the Viewer locally handles and displays mouselook for the user. Adds an animation that the Viewer uses to modify the avatar's torso rotation to point towards the aiming direction, this in combination with a "holding" animation that objects can trigger normally allows the user to visually see and aim, say a gun around in first person, making the gun follow the aim direction, keeping it on screen, improving overall look and feel of the first person immersion. https://www.youtube.com/watch?v=ttaM7x14DBI Fixes an oversight with animated child prims that causes them to be interpolated while in mouselook, resulting in them lagging behind the root object, for instance when firing a gun that animates parts of it. With the above animation allowing the weapon to stay onscreen this becomes even more of an issue. https://www.youtube.com/watch?v=E2zPkBDWECA Mouselook head position improvements that puts the camera where the eyes of the avatar are, instead of "assuming" where the head is and forcing the body attach to the camera, which often results in the body clipping into the ground or moving around weirdly, this doesn't feel immersive at all and makes it hard if not impossible to line up animations for holding objects. ((Shown in the first video with the test running animation to simulate headbobbing)) Going in tandem with the above are improvements to the way mouselook handles and hides the head of the user while in Mouselook, locally scaling down head bones and including hiding rigged mesh attached to the head slots which were previously missing, this should help eliviate issues with the head clipping into the camera and blocking the view. ((Can be seen in the first video looking down, the shadows show the head being chopped off, something that may or may not be able to be fixed)) [Darksider Alex has provided an additional video to demonstrate the requested feature: https://gyazo.com/6964e720c1b02133d19976d3fa89f60c ]
7
invulnerability_time does not stop outgoing damage (RC BlueSteel 2024-07-11.9900005687)
invulnerability_time is documented as a mechanism that stops both incoming and outgoing damage from a resident who recently died from reaching 0 health. However, in my testing of this setting, I found that outgoing damage is not blocked, regardless of estate manager status. Here is a script that demonstrates the issue: // This script tests the effect of invulnerability_time on incoming and outgoing damage. // Set invulnerability_time to 4 seconds or more. You and a volunteer set home on non-safe land. // Displaying seconds in your local chat timestamps is recommended. key volunteer = "1b3f651d-4e24-53c5-805d-3932540e283e"; // enter the key of someone in the region integer timerNum; integer messageNum; default { state_entry() { llListen(COMBAT_CHANNEL, "", COMBAT_LOG_ID, ""); } touch_start(integer n) { if (llDetectedKey(0) != llGetOwner()) return; float invTime = (float)llGetEnv("invulnerability_time"); llOwnerSay("invulnerability_time is set to " + (string)invTime + " seconds"); if (invTime < 4) { llOwnerSay("invulnerability_time is too short to test!"); return; } else if (llKey2Name(volunteer) == "") { llOwnerSay("Volunteer is not present or not defined in script!"); } timerNum = 0; messageNum = 0; llSetTimerEvent(1); } listen(integer channel, string name, key id, string text) { integer n; string eventJson; while ((eventJson = llJsonGetValue(text, [n++])) != JSON_INVALID) { key source = (key)llJsonGetValue(eventJson, ["source"]); if (source == llGetKey()) { string type = llJsonGetValue(eventJson, ["event"]); string targetName = llKey2Name((key)llJsonGetValue(eventJson, ["target"])); if (type == "DEATH") // this fires before DAMAGE, as expected { llOwnerSay((string)(++messageNum) + ": " + targetName + " was killed"); } else if (type == "DAMAGE") { integer amount = (integer)llJsonGetValue(eventJson, ["initial"]); llOwnerSay((string)(++messageNum) + ": Caused " + (string)amount + " damage to " + targetName); } } } } timer() { timerNum++; if (timerNum == 1) { llOwnerSay((string)(++messageNum) + ": Sending 100 damage to you to start your invulnerability timer"); llDamage(llGetOwner(), 100, 14); } else if (timerNum == 2) { llOwnerSay((string)(++messageNum) + ": Sending 11 damage to you, and 12 to " + llKey2Name(volunteer)); llDamage(llGetOwner(), 11, 14); llDamage(volunteer, 12, 14); } else if (timerNum == 3) { llOwnerSay((string)(++messageNum) + ": Sending 13 damage to you, and 14 to " + llKey2Name(volunteer)); llDamage(llGetOwner(), 13, 14); llDamage(volunteer, 14, 14); } else if (timerNum == 4) { llSetTimerEvent(0); llOwnerSay("Test complete"); } } } I feel I should point out that invulnerability_time , if it functioned as documented, would be a trade-off. For instance, a grenade thrown or a trap deployed before the owner's death would be incapable of dealing damage if detonated during the seconds of invulnerability given, making it very difficult to plan for in organized combat regions.
1
Manually Adjustable Avatar Hitbox
Exactly what the name suggests. The problem: In SL, avatar hitboxes are generated according to information relative to the system body. These hitboxes are, when working correctly, a big box that encompasses the entire avatar's view model. The avatar's hitbox immediately becomes non-representative of the avatar's visible size in various conditions: crouching your avatar, wearing an unrigged attachment larger than the system body (or smaller), using deforming animations with avatars that are atypically shaped such as nonhumanoids, hover height, animations that offset the avatar's viewmodel, etc. This leads to issues such as: avatars getting stuck on terrain, or being able to pass through terrain they visibly shouldn't be able to, and avatars in shooter style games not being able to hit their intended target with projectiles as their visual model does not correspond with their hitbox. Proposed solution: Let users manually adjust the hitbox of their avatar. As long as it is just a literal box then letting users simply adjust the size of that hitbox to whatever scale and position they feel is appropriate. Considered issues with solution: Issue: People will intentionally abuse this to give themselves the smallest hitbox possible for an advantage in combat. Answer: People can already use various methods such as offset animations or simply making their avatar as small as possible to try and get this sort of advantage. Many combat sims have their own rules against avatars of a certain scale they enforce locally and are already capable of policing this sort of behaviour themselves. Issue: When an avatar enters a crouch/crouch walk their visual model is smaller and they move slower but their hitbox does not adjust. This solution does not resolve this specific element of the issue. Answer: This concern leads me to think about the relative dissimilarity between crouching animations, and animations in general relative to avatar's singular generic hitbox. Being able to have an adjusted hitbox relative to every form of avatar motion so animation was always representative would be good. Otherwise, I imagine just being able to manipulate the existing hitbox scale would be a more expedient way to resolve a lot of this problem in the short term.
3
·

tracked

Load More