March 26, 2019

MyWorld Meetup – 3/23/19

Theme: General Q&A

  • Q (Zauberin): Will MyWorld support avatar physics (.i.e, a sword and scabbard hung from a belt that wave realistically)?
    • Answer: Yes, may or may not make first release.
  • Q (Zauberin): Will avatars be customizable in MyWorld (similar to how current virtual worlds let you customize with a set of sliders)?
    • Answer: Yes – and there are multiple options for doing this (mesh morphs, rigged “pose bones”). Likely to take a hybrid approach (combining morphs and bones).
  • Q (Zauberin): With fully mesh-based clothing, is Serverside Appearance an issue any more?
    • Answer: No. MyWorld has no concept of Second Life’s Serverside Appearance, because it’s not needed with MyWorld’s more modern, unified mesh system. If some form of texture baking is useful to clothing designers, it would take the form of a client-side set of tools or a scripting API. Serverside Appearance is an issue we can avoid completely.
  • Q (Zauberin): What data types are supported by the scripting language?
    • Answer: MyWorld’s scripting language is a full-featured object-oriented dynamically typed language. All of the usual data types (integers, floats, booleans, lists, maps, strings, etc.) are supported out of the box, and more complex data types can easily be added by scripters as desired.
      • Currently, numeric data types are limited to 32 bits. This is because MyWorld natively works with 32-bit data types (a) because 64-bit numbers provide no advantage for content, and (b) to save the network overhead that 64-bit numbers needlessly add when synced across the network. 64-bit data types will likely be added before release, but using these in network-heavy contexts will be highly discouraged.
  • Q (Zauberin): I find static typing preferable because the compiler adds many type correctness checks. Will MyWorld’s scripting language switch to static typing?
    • Answer: No, not entirely. The language was designed to allow optional static typing to be added to the language later, and we’ve planned on heading this route at some point. This would preserve the core scripting language as a dynamic language, while allowing optional safety checks to be added on top. However, the language already has a very powerful type system that scripters may find makes the static vs. dynamic language question less relevant than it is in other contexts.
  • Q (Zauberin): Does the language have exceptions for error handling?
    • Answer: Yes! No more checking error codes – the language uses exception throwing/catching for error handling.
  • Q (Zauberin): Will the scripting language support unit testing?
    • Answer: Unit testing isn’t something we’d build into the core runtime, but there are two ways it’ll be easy to unit test your code:
      • (1) We’re headed towards releasing a custom IDE for scripting with all of the usual tools that professional programmers expect – integration with version control, unit testing, etc.
      • (2) Using existing Java unit testing frameworks will be easy to do because the scripting engine auto-binds script code to Java code in a powerful and secure way. As a result, re-using your unit testing framework of choice should be very easy to do.
  • Q (Zauberin): Will MyWorld’s scripting language support parallelism? Will scripters achieve parallelism by running multiple scripts in an object?
    • Answer: At the language level, it’s single-threaded. This was a design choice we made because multi-threaded code is very hard to write correctly. However, parallelism will be supported via an actor (and possibly other safe patterns) framework such as those popularized by Erlang and Scala. This allows safe parallelism without the pitfalls brought about by traditional shared-everything threads, and it wouldn’t require the tedious manual work of placing multiple scripts in objects to achieve something the runtime should support.
  • Question for Raven: Thoughts on lossy vs. lossless texture formats?
    • Answer: Both have tradeoffs, best to allow using whatever works.
    • Answer (Zauberin): Use whichever is more realistic for the use case
    • Note: MyWorld currently uses PNG (lossless) internally
  • Q (Raven): How will things like knitted texturing effects on cloth be supported?
    • Answer: MyWorld is fully based on a PBR graphics pipeline, and standard PBR models do well with cloth materials.
  • Question for Raven: As an experienced designer, do you believe that users will find MyWorld’s PBR graphics pipeline easier to make content for than traditional methods?
    • Answer: Yes, because PBR is more straightforward to work with and doesn’t require lots of stylizing tricks.
  • Q (Zauberin): Will MyWorld support subsurface scattering (SSS) (i.e., the effect that causes the red glow if you hold your hand up over the sun or put a bright light behind your ear)?
    • Answer: Yes – we may need to develop dedicated built-in materials for skin, which need SSS. It’s also useful for other materials, such as polished marble.
  • Zauberin: FLIF image format may be useful for internal representations
  • Discussion about managing assets
    • Second Life had issues early on with large inventories and dealing with many user asset uploads.
    • MyWorld is designed for extremely large, scalable asset storage – all assets get replicated into a dedicated cluster with multiple copies of each asset, allowing zero-downtime maintenance and keeping assets available in the face of server failure. This also makes the number of assets that users upload a non-issue.
    • MyWorld also aggressively compresses most content as soon as it’s uploaded, saving network bandwidth and disk space.
    • In addition, if further compression is warranted, most server-class file systems support automatic compression when data is written to disk, allowing further storage savings.
    • MyWorld is also designed to support garbage collection of unreachable assets – meaning abandoned uploads are quickly detected and discarded, keeping the system from becoming cluttered with unused assets.
    • Coaxing creators into making efficient content is still an issue – tutorials convey the information needed, but don’t mean the creators will follow through. Exploring possibilities for automatic content optimization algorithms (similar in some ways to current work on automatically detecting and flagging copybotted content).
  • Discussion about community moderation:
    • MyWorld will educate creators about DMCA take down requests for copyright violations and make the process as easy as possible.
    • Question: What about reporting systems in general?
      • Answer: While MyWorld will encourage users to sort out differences rather than immediately turning to moderation, moderation is necessary. This will require the ability to log chats for a period of time and human intervention.
      • Problems in Second Life: If a user was reported too many times, the system would automatically suspend their account and follow it with a full ban if they did not appeal. This was abused by in-world groups to get rid of users they did not like.
        • MyWorld will never use automated means to enforce policy. The decision to ban a user or to take down possibly copyrighted content is a decision that always belongs to a human, not an algorithm (although algorithms are useful for detecting some types of violations).
    • Comments from Raven: Sexual harassment & bullying still a very real issue, moderation needed to deal with these, but a report system will be abused by some people.
      • Response: We fully anticipate the need for intervention in these cases, and we also anticipate the abuse of moderation systems by some users. We have a zero-tolerance policy for harassment, bullying, and a number of other unwelcome behaviors, and will deal with abuse of the report system with internal policies.