본문 바로가기

My Blog [Tistory Tip]]/Skin

세컨드라이프 한글 위키 사이트

http://wiki.secondlife.com/wiki/%EB%8F%84%EC%9B%80%EB%A7%90_%ED%8F%AC%ED%83%88

도움말 포탈 - Second Life Wiki

 

 

 

http://www.tnlc.com/eep/sl/

 

 
Tips/Tricks Tips/Tricks
Note: Shut down SL before changing these or they will reset when SL exits. These changes will also be wiped each time SL is updated so make a backup of the changed affected files to copy over.

settings.ini
  • crosshair (smaller, hollow dot):

    UIImgCrosshairsUUID	1edfa815-30ba-e4c0-3d09-225efaec9e8e

  • flexible prim framerate increase:

    RenderFlexTimeFactor	3 (or more)

  • fog reduction:
    RenderFogRatio	40

  • particle count increase:
    RenderMaxPartCount	16384

  • selection highlight reduction: (forum post)

    SelectionHighlightThickness	.001
    SelectionHighlightAlpha		.5
viewerart.ini
  • invisible foot shadow: (source)

    foot_shadow.tga		44b45f4f-a5a9-6e2d-4956-60c37ad8b0e3
  • inventory folder arrow (smaller, 1/4-size):

    folder_arrow.tga	aa7529a4-178c-033f-d830-08130707b1d1
  • avatar map icons (smaller, 1/2-size):

    map_avatar_you_8.tga	cce9f781-b045-1c74-0d70-3035cf5ec17d
    map_avatar_8.tga	772b7f9a-96f7-8d05-0d98-a9d9e3f40a55
    map_avatar_16.tga	07818416-a17c-dad6-306d-8b073478631b

Improvements Improvements

Second Life has a lot of features Active Worlds doesn't but still lacks a few--and has many bugs/annoyances of its own that need improvement.

General




3D Engine

  • fog: SL's fog is annoying and can only be reduced to about half its distance because, stupidly, the "fog ratio" setting can only go to 4. It can be increased in settings.ini (see above) but any in-SL preference change will reset this back to 4, irritatingly (oddly, particle count is unaffected). The debug menu can disable fog completely but then the sky background color doesn't update with the day-night light cycle and clouds always remain fully white and bright (prelit/full-bright). SL needs an option to completely disable fog in preferences while still updating the sky background color and adjust cloud brightness relative to the world light source. Also, since SL 1.10, disabling fog no longer applies the sky background color and it's just white.


  • lighting: SL's lighting sucks (and since SL 1.7 it causes extreme lag on avatar attachments). The server lags in updating the light (and shadows) on the ground and, since SL 1.7, lighting barely even updates the ground anymore and other prims. Avatars don't reflect enough light to match the ground and prims. I don't see why other lighting types can't be implemented. Active Worlds' lights can fade, flicker, blink (on/off), and has different light types (cone, point, spot). Surely OpenGL (which AW also supports), and SL's 3D engine, is capable of these... The difference is: AW does everything client-side (see above for why lights should be client-side). SL's lighting model was redone in SL 1.9.1 but it still has problems: object-cast shadows no longer supported and vertex shaders aren't implemented completely.

    • We are at this very moment working on a complete replacement for local lighting. It will be in one of the next few releases, so all I can suggest is to disable it for now and wait for something better that we can actually make fast. I know it is frustrating, but if we spend all of our time supporting broken features (and for a variety of reasons the existing local lighting model is very broken) we will never have time to implement new, better features. (Steve Linden, 3/21/06)

      We have in the works a more advanced materials system that will give users control over specular properties (i.e. allow a material to reflect light other than its base color, so a red texture could appear white when close to a white light). I hope to have it out some time this summer, but no promises, we have a lot on the schedule right now. (Steve Linden, 3/29/6)

    • There are in the current test 4 settings for light: sun and moon only, HW lights only, HW + Software lights, HW + SW + Shadows. I do not know that all settings will be supported by all cards or computers. Both SW options can have heavy performance hits. In HW only, the closest X (I believe it is 6) lights are rendered in hardware. All other lights are only shown as full bright and do not light anything around them. (Kelly Linden, 4/4/06)

      In HW + SW, the closest X (again, 6 I think) lights are rendered in hardware, just like the HW option. Lights further away will use a software mode to render and light the objects around them. If there are only a few lights within view, then performance for HW + SW should be very close. Shadows are done in software, I think (hedging my bets here, sorry), and therefore may only make sense as an option if you are already doing some lighting in software (SW). (Kelly Linden, 4/4/06)

      Lights will be something completely new. Each prim will have the option to be a light which will enable a set of light properties. If you make all 6 prims in a link set a light, then yes it will use all 6 lights. As for jewelry - ALL existing light objects will become 'full bright' and will no longer be lights. Additionally the color and range (and fall off and cut off) of light emitted from a Light is no longer related to the actual size, shape or color of the Light object. These will all be completely seperate settings. It will be possible to set exactly how far the light from a Light will reach, for example, rather than being determined as a function of the size of the light object. The max range for light to reach will be 20m - no more 10mx10m pink wall turning your whole plot pink. (Kelly Linden, 4/5/06)

    • There are no immediate plans to include spot lights or other types of lights because they are still expensive to calculate for a large percentage of our users' hardware. We may add them in the distant future, but for now the best way to approximate a spot light is to create a translucent cone linked with a tiny light (but with a light radius matching that of the cone), centered partway between the base and the end of the cone. I'm not familiar with what a "barndoor" light rig is, but area lights can be approximated with several small point lights. (Steve Linden, 4/20/06)


  • LOD: SL's level of detail often causes SL to freeze more than if its LOD was just disabled (which there supposedly isn't a way to do). SL needs a way to completely disable LOD (in prefs, settings.ini, or the debug menu. Also, it would be nice to lock a prim/object's LOD.


  • sky (discuss): SL's sky, while nice, could use some improvement. The sun jumps across the sky every 10 seconds instead of smoothly panning (which could be interpolated client-side). The simulator's light source flickers every few seconds during sunrise/sunset. The twinkling stars are nice but SL could learn a lot from Morrowind/Oblivion's sky (and Gothic's with its occassional shooting stars).
    • Yeah, the silly sun and moon reflections really poke me in the eye every time I see them. I think the plan was to make them twinkle like you see on real water that has texture, which would result in an effectively elongated shape similar to the way they are depicted now.

      A more correct night sky would be nice. I think we decided to not make it too flashy in an effort to help keep the render FPS as high as possible, figuiring that the non-moving stars wouldn't bother too many people. There is much to the night/day cycle that is unrealistic. (Andrew Linden, 5/5/05)




  • Camera (View)

    • mouse control customization: While keyboard camera controls can be customizable, mouse camera controls (or any controls) cannot. For example, to focus the camera on something, the alt+left-click. Zooming in/out requires holding left-click while moving the mouse up/down, but rotating the camera requires holding ctrl and moving the mouse around. Most PC mice have more than one button so they should be configrable too. More intuitive mouse camera control would be to use the right mouse button for rotation (once the camera is focused on something, of course)--and hold down both left and right mouse buttons to pan the camera.

    • FOV annoyances: The camera's FOV (field-of-view) changes when the camera zooms in on a prim/object close enough. While this can make editing easier at times, it should be optional since, on rotating objects, the camera can change FOV so much it's disorienting. Also, using the zoom in/out View menu options (which just change camera FOV), there is a bug: pressing ctrl+8 7 times to zoom the FOV out freezes the 3D viewport pane. There's also an issue with the keyboard repeat with the FOV zoom/reset keys not always working but I can't reproduce it.

    • full-GUI 1st-person view: Mouselook (SL's current 1st-person view mode) hides most of the GUI and only allows clicking objects to activate "touch" events. SL should have a proper, full-GUI 1st-person view where everything (object selection/editing, inventory management, IMs, etc) can be done like in 3rd-person view. This can be somewhat simulated by hacking the camera in settings.ini or with SL 1.9's camera functions, but SL just needs an optional, togglable, full-GUI 1st-person view.

    • reset (discuss): The camera should, optionally, not reset the zoom when moving (walking, flying, etc), and/or clicking on one's avatar, and/or when start/stopping flying, and not reset the rotation (pitch) when coming out of mouselook mode.

    • sitting
      • rotation while sitting on:
        • prim: The camera is locked vertically and can't be rotated when click-dragging on the av, unlike when sitting on the ground.
        • prim/ground: The camera keyboard horizontal rotation keys invert. Also, holding the up arrow moves the camera closer and eventually into 1st-person view but holding the down arrow doesn't get out of it.

      • limb distortion: When the camera is focused on something (vs. on the avatar), and escaped out (reset), the avatar's limbs screw up and slowly (about 30 seconds) correct themselves.




    Physics

      Havok 2+

      • As to the Havok-2 project... it has been going slower than I had hoped. The main thing we're trying to accomplish is to eliminate the "deep-think" problem (which is described elsewhere in these forums and is the cause of 99% simulator crashes). We've discovered that deep-think's are still possible in Havok-2 if we are not careful about how we describe the shapes of objects to the physics engine. Fortunately we know how to solve it and that is what we're working on right now. We gave an internal Havok-2 demo to the rest of the office last week where we showed the progress on that front.

        When Havok-2 is initially released it won't have many new features. We'll be happy if we manage to prevent deep-thinks and make things run a little faster.

        Once Havok-2 is happily doing everything the old physics engine used to do we'll start working on adding new features. Some of the features we'd like to get done are: more complex dynamic objects, better vehicles, new shapes, fixed joints and constraints (hinge, point-to-point, etc), new constraints such as ropes and chains, better collisions between avatars, colliding attachments, and more advanced script sensors such as raycast queries. New features will be released when they are done. (Andrew Linden, 7/17/05)


      Ageia (physics processing unit--PPU)

      • Ageia is definetly some interesting stuff. Some things to keep in mind:

        • This technology is not available yet and first-generation anything is rarely reliable/accurate/etc. It is likely to be quite a while before a version of this technology is available that we would feel comfortable relying on.
        • Integrating a physics engine is not trivial work. Ageia would require a complete reworking of how we deal with and connect to the physics system. As evidenced by our work moving to Havok 2 from Havok 1, this is not something that is easy or can be done quickly.
        • We have a lot of servers. Adding new hardware to all those systems is a prohibitive factor. There would have to be an immense benefit to warrent such a move. Especially if you consider from the previous points the time frame such an event would occur and our current simulator growth rate. And I don't even want to think about the social issues of only having this hardware in some sims much less the technical issues for passing an object from a simulator with one physics engine to one with another.

        The short answer is that we will of course keep our eyes on this technology but it is not currently planned for use in Second Life. (Kelly Linden, 3/11/05)

      • The PPU technology is targeted at gamer desktop applications so its probably going to be an expensive expansion card that gamers can buy to enhance their systems and take advantage of accelerated physics for games that support it (specifically games that do a lot of physics on the local machine -- at the moment SL does all physics server-side).

        In the short term (1-2 years) I doubt SL will be jumping on this technology since the PPU systems will probably evolve quickly, be unstable, and/or be expen$ive. We'll probably wait and see.

        Cell-CPUs and multi-core CPUs could prove to be a competing technology to the PPU -- potentially making a dedicated PPU add-on card obsolete (anybody remember math-coprocessor cards?). We know these technologies are coming, will be ubiquitous, and that the manufacturers will be looking for killer apps that will drive people to upgrade. Games have traditionally been a huge driver of demand for faster technology, so Intel, IBM, AMD, etc will be probably be interested in writing physics SDKs that are optimized for using their CPUs.

        In the medium term (2-5 years) SL could probably start doing some physics simulations on the client for fluff effects and reducing the need for updates from the server. For this stuff SL might be able to take advantage of any PPUs on resident's home machines.

        In the long term (5 - 20 years) the PPU, Cell, and multi-core technologies serve to carry Moore's Law into the next generation. The general consensus is that we're approaching the beginning of the end for speed boosts from smaller microcircuitry fabricaton, but that doesn't necessarily mean Moore's Law is going to fail -- paradigm shifts in technology (can anyone say Cell, stacked CPU cores, PPU, embedded programmable gate arrays, optical computing, quantum computing?) will probably continue carry computing speeds forward. We at LL are counting on Moore's Law to remain true for several more cycles. (Andrew Linden, 3/11/05)


    • collision: Animations don't affect avatar collision.
        The animation state of the avatar has nothing to do with its collision proxy. Sometime after the next generation of physics engine has been installed we will look into colliding the limbs of the avatar with the rest of the world. (Andrew Linden, 5/4/05)


    • object mass (discuss): Primitives have a set mass that is just too light. Mass doesn't change much unless:
      • more prims are linked together
      • a prim is: cut (path, profile), hollowed, twisted, hole size, tapered, detal radiused, or revolved

      llSetForce and llSetBuoyancy can fake more mass but the physics engine, Havok, tends to make the prim/object "bouncier"--takes longer to settle into place as it vibrates/shakes/jitters around, and even stops at an angle when not fully touching a surface--it's odd. Prim mass should be adjustable via a llSetMass function.


    • flexible prims: Flexi objects can be effected by sim wind, you can set a modifier for the wind force on a per object basis. (Kelly Linden, 4/4/06)

      • LOD twitch: Flex prims twitch/reset when their LOD changes.

          Steve Linden, 6/12/06, 21:20 via IM: As for LOD causing flex objects to twitch, that's hard to avoid. There are fixes, but we probably won't get to work on them for a while.


    • springs:

        This is definitely one of the features that will go in post Havok-2.

        The main problem right now is not the load on the physics engine that springs would produce, but maintenance of the collections of objects of the springy objects. That is, keeping track of the sets of objects that are connected to each other by springs. Havok-1 does not maintain such lists so we would have to write the maintenance code -- Havok-2 automatically maintains such lists.

        This is a feature that is actually near and dear to Philip's heart. A loooong time ago, before Havok, we had some springs in our simple physics engine. One problem we had was stability -- if you do simple simulation math and throw a lot of springs together you end up with instabilities. Havok uses implicit methods for solving their "springs" which are a little bit more expensive, but much more stable. (Andrew Linden, 2/16/05)




    Interface (Graphical User Interface: GUI)

      One of the problems with our current UI system is that it is all hardcoded to some degree and is very difficult for even us to change... time consuming. So we really want to make it easier on ourselves. And, in the process, open up the ability to skin and modify the UI by the residents. The plan is to make the UI more data driven so it loads some config files (XML) and builds the UI based on what they say. If it was totally data driven, then much of what you want could be done. But not all... like detachable windows would be extra stuff, and would have to come later. (Andrew Linden, ~9/18/05)

      ...there are a lot more UI changes for textures/materials coming in the future, and I'm sure it'll be much more intuitive when we get it all sorted out. (Yedwab Linden, 4/17/06)

      [16:32] Robin Linden: If you wait a bit, you can use XML and redesign the UI yourself and sell it. They're working on it now but I don't know the planned release date yet. (6/22/06 IM)


    • axis transform handles/"gizmos" (the red/green/blue translate/rotate/scale axis controls; name suggestions)

      • auto-center (vote, discuss): I find it annoying having to move the camera to see the axis transform handles/"gizmos". There should be a way to have the handles automatically stay centered in the current zoomed-in view if they will go out of view. When zoomed out, recentering isn't necessary since the handles will be in view, but having to rotate the camera to even SEE the handles, when building up close, gets annoying!

      • always-visible (discuss): Whenever the camera is moved with the alt key, the axis transform handles disappear, making it hard to keep things lined up as the camera moves. An option is needed to always keep these on.


    • dockable/tabbable windows: SL allows various parts of the UI windows (inventory, chat history, IM, minimap, object editor, script editor, etc) to snap to other windows and the screen edges, but they cover up part of the 3D pane, obstructing the view, and making the whole interface seem claustrophobic. I think a better, optional, design would be to have the 3D pane resize according to how the windows are docked (like most Windows UIs work). This is how Active Worlds' interface works (mostly) and it keeps things uncluttered (but could still use some improvement). SL's bottom toolbar (IM, Chat, Friends, Fly, Snapshot, Find, Build, Mini-Map, Map, and Inventory text buttons--which I think should, optionally, be icons with tooltips to greatly reduce the toolbar's width and perhaps positioned elsewhere) already exhibits this behavior but it's not enough. Transparent windows help, but the active window loses it and becomes solid.

      For example, my screen resolution is 1024x768 and I have the inventory, IM, and minimap windows open all the time screenshot and even with the inventory window at its minimum width and the IM window 5 rows high, this blocks a good bit of the 3D pane--worse with the object editor and chat history windows open. Since the inventory window can easily become very long, it is a prime candidate for dockability and 3D pane adjustment. The object editor window is expandable enough to warrant dockability too.

      Check out Active Worlds 4.1 (used in Wells Fargo's Stagecoach Island) to see how this would work--and with dockable/hideable window tabs screenshot, and maximum 3D pane screenshot. Obviously, with a proper, skinnable interface, it wouldn't have to look like Windows (though I prefer that style). SL's interface colors are fairly customizable but it's a pain.


    • focus tabbing: Most of SL's windows don't support fully focus-tabbable controls for edit fields, checkboxes, pull-down lists, table lists, buttons, etc. This is such a basic facet of GUI design it's pathetic I even have to mention it here. SL 1.8.2.7 messed up the object editor's focus tabbing, but it still only tabs through text-entry fields and not other window controls. This is especially annoying in the Find window where, after typing a user to search for, hitting tab to, presumably, get to the "Online" checkbox, just mindlessly highlights the search string instead. Stupid. And tabbing from the result list puts the focus back to the text-entry field but hitting tab from there doesn't even return to the result list! Even more stupid. Tabbing should move from window section to window section--this means ALL controls.

    • text-entry field character counter: For text-entry fields with limited character length (like the profile), a character number counter could be implemented.

    • wordy script menu options: In the Tools menu there are some wordy options that could be optimized a bit:
      • Recompile Scripts in Selection -> Recompile Selected Scripts (saves 5 characters)
      • Reset Scripts in Selection -> Reset Selected Scripts (saves 5 characters)
      • Set Scripts to Running in Selection -> Run Selected Scripts (saves 15 characters)
      • Set Scripts to Not Running in Selection -> Stop Selected Scripts (saves 19 characters) or Stop Running Selected Scripts (saves 10 characters)

      Or, as Strife Onizuka suggests, a submenu named "Scripts in Selection..." (but I'd suggest "Selection Scripts" to save 3 characters or "Selected Scripts" to save another character) with entries: "Start", "Stop", "Reset", and "Recompile".


    • Chat (+ History)

      • change "Mute resident" button text to just "Mute": It also mutes non-residents (objects).

      • new message indicators: If SL is minimized or in the background, new chat messages give no indication. New chat history messages should optionally flash SL's taskbar icon when SL is minimized or in the background.

      • shorten "History", "Say", and "Shout" button space around text: To allow text-entry field to be wider. Optionally, use icons with tooltips to get even more space.


    • IMIM window


    • Find: The "Find" window should be resizable, have full focus tabbing, and remember previous search strings (in a pull-down list) across SL sessions.


    • Inventory

        I believe better inventory tools will be forthcoming. I might have seen a demo of multi select/delete working a few weeks ago ;-) Also, someone is working on a export/import system where you would be able to make local backups of stuff that you created and own, but that won't be in 1.7 (or if it IS in 1.7 it will be incomplete).

        I would expect the free inventory theshold to be adequate for most people's needs, however I don't know the average size of inventory, nor what the inventory size distribution curve looks like. I'm sure that if we were to try to implement such a system whoever was in charge of setting the values and costs would try to pick reasonable values. You know the phenomena where 10% of the population use up 90% of the resouces? I supect the inventory size distribution would exhibit that behavior.

        Someone who wanted a large inventory might opt to just pay for the extra storage. I'd also expect the price of such a service to be affordable enough to be used by many while still providing incentives that would convice many others to maintain a reasonable inventory (i.e. removing V1.03 of ObjectFoo when they are currently working out the bugs on V3.25).

        Anyway, this isn't on the roadmap that I know of, just something that we've discussed and are thinking about.

        ...

        The main reason why [saving inventories locally vs. on the server] would not be possible is because not all of your inventory is fully permissive -- we would only be able to store stuff that is 100% owned by you. However, if we did allow you to store your own creations locally, then you could then modify them locally and possibly re-upload the result as a new item. (Andrew Linden, 6/29/05)

      • animation: Since SL 1.6, the inventory takes longer to scroll when moving things and it slide-animates when opening/closing a folder. SL 1.9 introduced silly folder arrows (see below) that take forever to animate when a file is held over them waiting for the folder to open. Why make SL lag even more for such unnecessary animation effects? An option is needed to disable that fluff crap and put SL's inventory back the way it was in 1.5 when it was faster and more responsive.

      • auto-sort on creation/edit (discuss): When an inventory item is created/renamed, an option is needed to automatically sort the item by name or date depending on the setting--and keep the item selected. It's annoying having to do it manually after each rename.

      • colors: The dark grey open folder backgrounds (and white outlines around them) are also too bright and detract from seeing the inventory's contents. A colors_base.ini setting for this would be sufficient.

      • folder arrows: For some reason, LL decided to change the standard Windows +/- closed/open folder indicators with larger Mac-style white arrows. However, these are too big and bright on the black/dark inventory pane background and detract from seeing the inventory's contents. The bright yellow folder icons are bad enough without these folder arrows causing the inventory to look even more cluttered.

      • gestures: Can't (de)activate more than 1 at a time. Lame.

      • longer rename field: When an inventory item is renamed, the field is too short (21 characters), making it annoying to rename longer names.

      • "Inventory Item Properties" window: This window should, in theory, be the exact same size and have the same contents as the object editor's "General" tab, but it doesn't.

        • object/prim count: It's annoying having to rez the object before it will show the object/prim counts in its properties. The object editor "general" tab lists these so why not the inventory item properties?

      • reduce/enlarge height when folders are closed/opened: To eliminate excess empty space.

      • reduce width to maximum folder/file name width: Optionally within user-resized width--if inventory window width set to 200 pixels, don't resize beyond that but only within it.

      • remove excess space around "Show All" and "Filters" buttons: Or, better yet, create icons and use the titles as tooltips to make the buttons even smaller.

      • split into 2 panes: folders and files to make navigation easier and significantly reduce vertical scrolling.


    • Map
        mini-map: The mini-map colors should either be redesigned or be customizable like other interface elements already are. It's hard to see lime green (avs) on turquoise (one's objects), for example.


    • media controls: The "Music control" and "Movie control" media windows should be movable.


    • Object Editor: For comparisons, mouseover tabs for my versions and click tabs for original versions (only "General" and "Features" change, currently).

      • Top (Mode) Pane: Bold the selected mode's text and put a horizontal line in between the mode icons (menu options) and text and other options.

        • Edit
          • Move the object coordinates "popup" (X: ###.### Y: ###.### Z: ###.###) data from the top center of the 3D pane to the object edit window (to left of "More >"/"< Less" button, for example) so it can't be covered by other windows. The chat background opacity setting should also apply to it (if it's left where it is--but at least move it up flush with the top of the menubar).

      • Tab Pane

        • General: Reduced wordiness ("can", "when", etc) and made it more efficient and intuitive.
          • Description: Note the lack of the redundant "(No Description)" text. It's obvious, if the field is blank, there is no description...the same should be for other inventory items (textures, sounds, animations, gestures, etc); gets annoying having to clear it all the time, only to have it reappear later, randomly.
          • Photo: Add a photo of the object that the resident can add from their inventory (and not be charged L$ for it).
          • "Creator", "Owner", "Group" buttons: Convienent resident profile (or group info) access and reduces the need for separate buttons.
          • "Aquired", "Created", "Modified": The inventory item properties window has the "acquired" date/time but the others are needed too.
          • Permissions: Section clearly outlined and organized appropriately
          • Sit/Touch Text: This section is a quick way to change the sit/touch text without having to use the llSetSitText and llSetTouchText functions. Obviously, a script will override these settings.

        • Object: Rename to "Prim"?
          • Remove "Edit object parameters:": It's obvious this tab is about editing object parameters; this text is unnecesary.
          • "Hover Text": This section is a quick way to add hover text without having to use the llSetText function. Obviously, a script using this function will override these settings.
          • script-specific controls: Disabled "s" rotation field and checkboxes

        • Features:
          • Remove "Edit object parameters:": It's obvious this tab is about editing object features (despite them not actually being in the "Object" tab); this text is also unnecesary.
          • Light: Color - make preview image the same size as in "Texture" tab and add a "Same as Primitive" option to use the prim's color (which will then disable/greyout the light color preview image.
          • Smooth Rotation (°): Since llTargetOmega is a client-side effect, and since "flexible path" and "light" are already here (and have comparable LSL functions to control them), I figure smooth rotation should be too (and smooth movement eventually when it's added to SL--hint, hint, LL...).

        • Texture:
          • Repeats per Meter: Lose the "Apply" button; just automatically apply the change like every other setting.
          • Align: Expand with full text ("Align Media Texture") to remove duplicate "align" text and put "(must load first") on the same line--if this text is even necessary since the button is disabled until the texture is loaded anyway.
          • Smooth Animation: Like "Smooth Rotation" above, this section is for another client-side function, llSetTextureAnim. While more complex than llTargetOmega, it's still implementable in the object editor.

        • Content: Change the "New Script..." button (which opens up the script window) to "<< New Script" which expands the object editor to include the GUI script editor (see below). A separate particle editor will then expand off the script editor.
    • Object Editor window (top pane) redesign
      Object Editor window redesign


    • Script Editor

      • GUI Editor: This design is similar to my redesign of the Active Worlds Object Properties window but far more complex: a dynamic, intuitive, well-designed graphical user interface to create a script without having to learn complicated programming-level syntax and structure by using a branching tree layout to represent code blocks--without writing any code. The script editor window is an extension to the object editor and will pop (not slide) out on the left. Since many script functions mimick object editor functions, the object editor tabs can be utilized for most functions (which will enable/disable controls relative to the selected script mode--see below).

        Another way to present scripting is to start out with what the user wants to do (set something, get something, etc) then ask when that will happen (on rez, when touched, if the object hits something, etc). With just simple language, higher-level functionality can be translated down into lower-level code. Of course, more complex scripts will most likely require code-level editing but for many simple scripts, this GUI editor should suffice.

      • Window layout: title bar (window name, context-sensitive help that opens up to the appropriate LSL Wiki web page, and minimize/close buttons), menu bar (with "Source..." option in "Edit" menu to view the script's source code), status bar, 3 panes:
        1. Code block tree
          • Branches: (like the inventory with icons) colored for each state, event, function, and flow control statement, and single entries for groups of local/global variables (scope-position-dependent).
          • Punctuation: Braces {}, semi-colons (;), brackets [], commas (,), and other punctuation are unnecessary since automatic branch indentation shows program flow and UI controls will handle multiple items (as in lists). The underlying code will still use punctuation, of course.
          • Example:
            • default
              • state entry
                • Set Text
              • touch start
                • if (condition)
                  • statement
                • else
          • Automatically resizes relative to contents.
          • Supports standard multi-select context menu options:

        2. Script parameters/values: pull-down lists, buttons (normal, radio), checkboxes, text-entry fields, color/texture pickers

        3. Status/buttons: Errors, tooltip info (since it can stay visible longer and won't have linewrap issues), and expanded tree entry info (i.e. click on a function and the status area shows all of its parameters in code form).

      • Categorization: The LSL Wiki already categorizes everything so I will use that as a starting point.
        • Functions: Remove "ll" from names and focus on a more intuitive naming scheme (spaces between words, complete words: "Params" to "Parameters", etc) to make it easier to figure out what one wants to do: Group them by different types: get/set, remove, start/stop, etc. Provide a way to switch between alphabetical and categorical lists. Obvously, the underlying LSL functions will remain named the same.
        • Events: Remove the underscore (_).
        • Functions/Events: Sort by category like: agent/avatar, camera, communication, collision, etc.

      • Script flow/mode: Different modes will allow the script editor to remember and store each entry in the tree. Once an entry is complete, the <-' (enter) button is clicked to add it to the tree.

        • tree entry: Select a line/branch in the tree to have its parameters/values loaded into the right pane.

        • state: Because scripts use states, that is usually the first thing the user will select. Obviously, default is the first state and will be assumed--hence, the user won't need to do anything to begin in this state. The user can simply begin choosing things to do (events, functions, etc). However, a text-entry field for a custom-named state should be here.
        • event: Sort type (alphabetical, categorical, etc)-selectable pull-down list
        • function: When a function is selected, the window controls update (hide/show/change) accordingly: constants pull-down list contents change according to function, etc.

            Examples
            • llSetText: Takes a string text, vector color, and float alpha.
              1. Select "set text" from the function list.
              2. Enter the text in the "text" field (or choose from the "variable" pull-down list).
              3. Click the "enter" (<-') button to add the entry to the tree.

            • llSetTexture: Takes a string texture name and an integer side.
              1. Select "set texture" from the function list.
              2. Because a standard texture picker image button is more intuitive than having to type a texture name, the object editor "texture" tab) will be used to select the texture. (A text-entry field is still present but shouldn't be necessary with a well-designed texture/key picker).
              3. Since ALL_SIDES is a constant, only it needs to appear in the constants list. However, since it is a fairly common constant, it can just be represented by an "all sides" checkbox instead. Or, even better (and more intuitive) use the "select texture" mode in the object editor: for all sides, the entire prim is selected; for a specific side(s), the prim's sides are clicked on and the script editor will save each side into a list (or multiple calls since this function can't handle a list type for side).
            • llRot2*(llGetRot()): click the radio button next to the position axis

        • Variable
          • type: Normally, instead of having fields named for types like integer, float, vector, the UI controls will change relative to the function. See below for examples. However, a variable type pull-down menu is still present.
            • key: Since a key is used mostly as a target, the "key" field is directly under the "target" pull-down list (which has standard target keys for the object, object owner, script owner, and an inventory item--which will show another pull-down list of any items in the prim's inventory).
            • list: A table of list entries can be shown instead of (or as an additional option to) showing a list as [1,2.0,<1,2,3>].
              type name value
              integer name1 1
              float name2 2.0
              vector name3 <1,2,3>
            • rotation: All rotation is automatically converted to Euler by default but the quaternion "s" value is also present.
            • string: Uses the "text" field exclusively but since anything can be converted (typecast) to a string, a function or variable can be selected too.
            • vector: Uses object editor's "Object" tab's "position" field which changes name according to what the vector is for: position, direction, velocity, force, impulse, target, etc. Euler format rotation (which is a vector) is handled as described above. Scale has its own separate fields like normal.

          • name: Text-entry field for custom variables.
          • global: Checkbox for a global variable (which will put it in the "global variables" branch).


    • "Script Search" window: There's no indication if no result is found. The window needs a status bar (perhaps use the main script window's bottom status pane) to indicate no results found. Needs an option to match on whole word only. Regular expressions would be nice too.

    • width: Can't be narrowed less than a certain width so it takes up even MORE of the screen than it did prior to SL 1.9. Fixed in SL 1.9.1.9 (1 month later)! However, it still can't be as narrow as it used to be... (and is 2 pixels wider in SL 1.10.4).
      • Script Editor Redesign


      • Particle Editor: See particles.


      • Profile: For comparisons, mouseover tabs for my versions and click tabs for original versions.

        • inconsistent text field sizes: On the "2nd Life" tab, the "About" field holds 500 characters yet is shorter than the "1st Life" tab's "Info" field, which only holds 250 characters. Oddly, the "My Notes" tab's only text field doesn't state how many characters it can hold yet is the longest text field but goes beyond the width borders of the other tabs (as does the "Picks" tab's UI elements). These improvements maximize text field space:

          • all tabs: Move other-resident profile buttons ("Show on map", "Instant Message...", "Rate...", "Pay...", "Offer Teleport...", "Mute") down to overlap "OK" and "Cancel" buttons for a resident's own profile. Mouseover image's buttons to see this.

          • 2nd Life: Shorten "ratings" section and list multi-column (especially since negative ratings are no more). This will break up the list of received ratings ("behavior", "appearance", and "building") vs. given ones but it's not that big a deal.

          • Interests
            • Change "I Want To" to "Desires" to be consistent with "Skills" (vs. "I Can Do" or something stupid like that).
            • Expand text fields for these sections to use the full window and add character limit.
            • Replace "Modeling" with "3D Modeling" to skill option since "modeling" is often confused with photoshoot/runway modeling.

          • 1st Life
            • Add second photo since there's enough space.
            • Expand text field to use the full window.

          • My Notes
            • Center text.
            • Expand text field to use the full window and add character limit.
      • Profile window redesign




      Building (Modelling)

      • axis transform handles: See interface.

      • edit particles: The particles that emit from an avatar's hand when editing something can be very distracting--especially when zoomed in and even more especially when working on particles (and still even yet still more especially when zoomed in close!). An option is needed to disable these completely (without mindlessly disabling all particles). Also, the particles should simply scale down to 0 as they move towards their target.

      • floating point rounding errors (discuss): SL's full of them, from grid position irregularities to the object editor dialog, which is particularly annoying when it decides to round cuts and other prim parameters. Of course that started happening with the dreaded SL 1.7 release, too, I think.


      • integrated modeller: If SL is going to be accepted in the mainstream it must support object importing. Otherwise, it remains propietary and, essentially, worthless. This is what happened to Active Worlds (AW) and its use of RWX (RenderWare script) from Criterion, who dropped support for RWX in RW3. Criterion replaced RWX with DFF but I heard even THAT format will be discontinued. The point is: propietary formats suck. 3DS (3D Studio) is a common format that's been around for at least a decade or 2. For SL not to at least support that is just stupid and foolish. SL doesn't have to allow physics in imported models (right away) or even anything simple like changing overall color/texture (like AW does) but even those would be trivial.

        The problem is: SL has an integrated "modeller" but it just sucks. SL tries to do too many things. While I would love to see an integrated 3DS Max-level modeller in SL, until LL and Autodesk (3DS Max's developer) team up, I doubt that'll happen anytime soon (but it should--and it will in another app eventually).

        Obviously, collaborative modelling is where 3D is heading towards, as is evidenced by 3DS Max's continued addition of asset management sharing. It's only a matter of time before multiple users can model simutaneously, creating the scene in real-time--just like a movie set. The integration of movies and 3D animation will only push this even further. Pixar's RenderMan may already have this capability, but Maya and Max (both now owned by Autodesk) are used extensively and are more popular.

        Will Autodesk eventually buy LL/SL and integrate some of its features? Who knows. But collaborative environment editing is the future so LL better get on the ball and position itself now before it's left in the dust like AW...


      • primitives limitations (discuss): Why only primitives? Objects can be as simple as a single polygon or as complex as an infinite amount of polygons--it all depends on the modeller. But the problem with primitives is all of the wasted, covered polygons which unnecessarily contribute to decreased framerate. For example, butting up 2 cubes together covers 2 sides (4 polygons). Also, since 2 cubes are now together, their sides (2 polygons per face x2 = 4 polygons) can be reduced further (only 2 polygons), eliminating more polygons.

        Creating walkways (sidewalks, roads, paths, etc) by butting up cubes wastes a lot of polygons--and the undersides are usually unnecessary, too. SL can really start lagging with all of the wasted polygons and it would at least be nice to be able to delete and merge primitive polygons/faces/sides/whatever. Also, why no way to specify the number of sides of a primitive? Spheres, torii, cylinders, cones, etc are very wasteful of polys... Puzzles are fine but building LEGO-style is a very wasteful method of 3D modelling if it's not designed to be efficient and optimized for rendering.

        SL needs to optimize its primitive parametric modelling to remove hidden/covered sides/faces and allow for finer control over how many polygons a primitive can have--particularly for more complex shapes like spheres, torii, etc (and cuts/twists).

        Supposedly, SL is planned for an "ambitious overhaul of the primitive set" (Andrew Linden, 3/13/6).

        "Larger prims will not be happening soon." (Andrew Linden, 5/11/05) :/




      Scripting (LSL)

      • client-side vs. server-side: SL needs more client-side functions for most, if not all, functions. Not everything needs to be server-side. Everyone doesn't need to have everything in-sync with everyone else. Movement, rotation, scaling, prim parameters, sun/moon movement, lights, etc, could all be animated much smoother if client-side (and no stupid delays!). Active Worlds does this and it works well--and AW4 even has a new "global" command where everyone (in visible range, of course) sees/hears the same smooth effect. Interpolate server-side values so the client always sees things smoothly.


      • particles

        • particle editor: Scripting is fine but there's no reason a GUI particle editor can't be created. It would (optionally) automatically change the particles in real-time (since they are a client-side effect) when a parameter is changed without having to hit the "save" button all the time to see changes. However, saving the parameters would then upload them to the asset server (which is slower) for everyone to see.
            angle diagram: Because visualizing radian angles can be...annoying, a simple circle diagram shows the angle. Better yet, dump radians and just use degrees (but still keep the diagram).

        • alpha/transparency fade in and out (vote, discuss): Particles should fade in and out without having to use scale tricks (since that restricts particle scaling). A new llParticleSystem constant, PSYS_PART_MID_ALPHA, could be added for the MIDdle alpha to allow smooth alpha/transparency particle fading both in and out. Separate fade in/out times (separate from particle age) would be cool too; Active Worlds has these parameters.

        • middle scale: Like with alpha fading in and out, particles should have a PSYS_PART_MID_SCALE since only one of the scale parameters (PSYS_PART_START_SCALE and PSYS_PART_END_SCALE) can be <0,0,0> while the other can't be less than <.03125,.03125,0> or particles won't even render. Start/middle/end scale times would be great too.

        • type: SL particles can only be one type: sprite (always faces the camera no matter what the angle). However, there are other types that can be supported (and that Active Worlds supports) like facer (similar to sprite but always faces the avatar, not the camera), flat panel (a depthless, 0-thickness plane that can be rotated into any position), and a model (prim/object in SL terms, that shouldn't count against parcel/sim prim count, of course, since particles only last a certain amount of time).

        • use camera position: Center particles on each user's camera, like Active Worlds has: "Normally particles appear within a box as defined by the emitter's volume (see below). However, you may enable this option to move the spawning area from the emitter to the camera. The effect will be that particles will seem to come from all around the user, wherever they go. This is ideal for creating weather effects." (source)
      • Particle Editor Prototype

      • script editor: See UI.

      • llTargetOmega synchronized rotation: Since this function is client-side, it quickly gets out of sync if the prim the script is in is selected (which can stop or slow the rotation, depending on which prim is selected) or if SL is minimized or the used switches to another app.




      Avatar

      • general improvements

          ...more generalized clothes layers (so that avatars aren't limited to just undershirt, shirt, and jacket), better animation tools, better hair, and cloth dynamics. (Andrew Linden, 11/19/05)

      • appearance
        • height: Avatar shape can't be under ~2m. Why? They should be able to go down to 0 and completely invisible if desires. Taller too.
        • cuff flare: Clothes > Pants > Cuff Flare isn't tight enough with 100 "Pants Length" (long) and 100 "Pants Fit" (loose). The cuffs are still too flared.

      • attachments: more attachment points

          I think the attachment system is currently maxed out in its present design, but I suspect that Richard Linden has a plan for making it better. (Andrew Linden, ~9/18/05)

      • camera issues: See Camera.

      • unsitting: Changing clothes unsits an avatar.

          This is a bug... of sorts. What is really happening is that all modifications of the avatar go through a particular path in the code that also tries to rescale the avatar's size. The reason all of the avatar changes are grouped together in one spot is that back in the day we didn't have drag-and-drop outfit changes -- the only way to change your clothes was to go into Appearance Edit mode. Since you can change your size in Appearance Mode and back then we didn't have code to handle resizing the avatar while it is sitting you would be forced to stand first.

          It is fixable. We'll try to work it into the schedule. (Andrew Linden, 6/7/05)




      Simulator

      • decentralized grid

          As to hosting simulator engines on private hardware, I think that will happen, but it is one of those things that is years away. All of this other stuff (MONO API, data-driven UI) has to happen first and most people don't have enough outgoing bandwidth to support their own sim today anyway but you can be sure that the bandwidth capabilities will happen. Trusted protocols will be needed. We do have plans to decentralize SL. We only have so much room in our colocation facility and there aren't many colos bigger than the one we're in. (Andrew Linden, ~9/18/05)


      Links Links

    • RealityPrime: SL's apparent original 3D engine core developer
      • Developed real-time "global illumination" (simplified radiosity) with thousands of movable lights and shadows, optimized visibility culling, and advanced hardware rendering optimizations.
      • Developed fully procedural object creation and editing, optimized character animation, and other special effects.
    • Linden Scripting Language (LSL) Wiki
    • Second Life History Wiki
    • Second Life Support/General Wiki
    • Second Life Wiki: An attempt to merge the above wikis.
    • Gamasutra:
    • Enabling Player-Created Online Worlds with Grid Computing and Streaming: SL tech
    • Aviators, Moguls, Fashionistas and Barons: Economics and Ownership in Second Life
    • 3D Engine Database: Second Life
    • Virtual World Comparison: compares Active Worlds, Second Life, and There


    • ^ Top
      < Back
      © 2005-2013 Eep²
      Second Life is a registered trademark of Linden Lab.
      All Rights Reserved