This week we have a lot of amazing things to talk about, from the new Radiant UI Dash, the new seated mode or proper noise gate. A lot of progress has been made now that we’re out of testing and onto the main branch for the new UI updates and there’s a lot more to come!
We have some amazing highlights in the community as well, like Japanese language classes!
New RadiantUI Dash
The new Neos Dash has been released, featuring a much more unified, optimized, consistent design built upon UIX (our UI framework). Within the new UI, there is a new section called the Home panel, which houses a lot of features otherwise found in other areas of the user interface, further simplifying the experience of using Neos.
You might have noticed some familiar items moved to the home screen, including the online status indicator, voice meter, voice settings, seated mode, and freeform dash mode. We’ll be discussing more about those last two down below. The current design for the dash isn’t the final design, so there will be alterations in the future. In fact, the plan for the dash is to allow users to customize their dash and home panel utilizing the Facet system.
This is a major step in our UI/UX overhaul efforts and even though it’s far from finished, we’re already getting lots of positive feedback on the new UI being easier to use for newcomers and lowering the learning curve, while at the same time making the overall look more modern.
Having a proper framework is now also making it easier for us to address many long-standing issues and implement features that have been requested for a very long time, like the ones mentioned below.
There’s still lots to come, so check out the “What’s Next?” section for more! So far we’ve reworked some key pieces of UI into the Facet system, while the old UI like Inventory, Friends, World Browser or File Browser are simply wrapped in their present form into the new dash until they’re reworked as well.
New Seated Mode
The long-awaited seated mode, found within the home panel in the new Dash, has finally replaced the old maintain-height mode originally found in the user settings panel. This feature is very different from the old system, in that you can now enter seated mode and bend down without your avatar moving your head back up to maintain your original height.
This will make doing things like interacting with people or working with LogiX much more easier and comfortable.
Freeform Dash Mode
One of the things we’ve added to the new dash was also support for better positioning, including a freeform mode. This lets you position it freely above or below yourself. This opens new workflows, where you can keep it constantly open above you for quick access or making it possible to use when leaning back or lying down.
Decoupled mute from world audio options
With the new voice control Facet present on the dash, the actual voice mode system has been partly reworked as well. The mute option is now a global toggle, while the individual modes (whisper, normal, shout and broadcast) are specific to each world you’re in.
This prevents lots of scenarios, where setting yourself to broadcast or whisper in one world would transfer to another, either making people not hear you or blasting everyone’s ears by accident.
Noise Gate for voice input
Neos now implements a proper noise gate algorithm on the voice input, in addition to the normalization. This will completely cut off any ambient noise, breathing and other quiet sounds when the user isn’t talking.
You can adjust the noise gate threshold in Settings. The voice indicator on the dash also helps with this. You’ll see two voice meter bars. The top, bigger one shows your filtered audio - after the noise-gating and normalization. The smaller lower one shows the raw volume coming from your microphone.
Additionally, there’s a small line, which shows the current noise-gate threshold. Simply adjust this line so when you’re quiet, the raw audio volume doesn’t cross it and your filtered in-game audio stays silent. Don’t set it too high though, otherwise your voice might cut out!
A merch giveaway livestream highlights
A week ago, we had our special 1000 follower celebration livestream with a free merch giveaway. To date this was one of our most successful streams and we had a lot of fun playing games with you in the chat.
Our video editor Theo has put together this amazing highlight video, showing the best moments of the stream in case you missed it! We hope to do more of these types of streams in the future, so stay tuned!
The first samples of the merch have also arrived! We’re still waiting on the bandana’s to ensure their quality, after which we’ll officially announce the Neos Merch store.
Community Highlights
SleepingKaiKai hosted a Japanese speaking course
SleepingKaiKai and others from the japanese community hosted a classroom, teaching english speakers how to speak certain japanese phrases! The classroom environment was complete with tables, desks and notecards, and was overall an enjoyable experience for all!
Avatar Texture Setup Tutorial by Orange (@mikan3134 on Twitter)
A japanese tutorial on setting up an avatar’s textures made by a member of Neos East Japan’s team, Orange. This was a very professional tutorial, thank you for your hard work! https://twitter.com/mikan3134/status/1238430644570447877
Bobo and Leon infiltrate Omegle!
Bobotron and LeonClement have gone on an adventure into the video chat platform Omegle! They’ve encountered plenty of interesting creatures and people, and maybe made some new friends along the way! Definitely a funny video worth a watch!
With the initial release of the dash we have finally started addressing various issues that have been held up by the lack of technical backing for a while. This now lets us implement new features and address problems more efficiently.
Our next most urgent goals is finishing the Facet and Workspace system, allowing you to customize the dash and place the Facets on your avatar as well and have those changes save to the cloud.
Over time we’ll also be reworking more of the old UI’s piece by piece into the Facet system. The next one on the list is the world browser, which will be integrated with the session joiner. This should provide a major usability improvement, making it quick and easy for new users to find active sessions and socialize.
Another of the goals is to also implement the UIX styling system, which will enable us to develop a proper official design for the dash, while at the same time allowing anyone to create and share their own styles for any UI.
There’s a lot more exciting stuff to come in the future! If you’d like to get involved and provide suggestions, feedback and bug reports, check out our GitHub issue tracker and our official Discord.
Bunch of new goodies for the new dash and other related things unblocked by the new UI! The dash can now be moved side to side and has a freeform mode, which lets you angle it above or below you.
Also I've implemented a proper noise-gating system for the audio input, which should get rid of the noise, breathing and other unwanted sounds coming from the users. The voice indicator facet has been adjusted as well to better show both raw and filtered volumes and the noise gate-threshold (can be adjusted in settings).
A bunch of other things got fixed up too. Floating head and hands avatars can now touch physical buttons!
New Features:
- Implemented proper Noise Gate system for the audio input (requested by @Rukio, @Enverex, @ohzee and others) -- This should get rid of quiet noises, such as breathing or microphone noise -- Added "Normalization Noise Threshold" in settings -- It also has attack, hold and release settings, but those aren't currently exposed (will come with the new Settings UI) -- As a nice side effect, this also improves network traffic utilization - if the sound is gated, no audio data is transfered over the network - Added "AudioSettingSync" (under Utility), which provides access to some of the audio settings (currently Noise Gate Threshold, Attack, Hold and Release) - Added "Freeform" mode to the RadiantUI Dash, which allows it to be angled at the user by placing it above or below (can be toggled via the new Facet on the Home screen above the seated mode toggle) (requested by many people (sorry I didn't keep a list ;_;)) - Added ability to move the RadiantUI Dash side to side (requested by @KierDran, @pek and others) -- The horizontal displacement will reset when the dash is reopened, re-centering it automatically - Added "Power" to the ProgressBar, which allows making the progressbar non-linear (e.g. use values less than 1.0 to emphasize low values and larger for the bigger ones) - Added "Power" to the Slider as well, which allows making the slider's progress non-linear for better control over certain values - The voice indicator facet now shows the noise gate threshold. (previously requested by @Enverex) The bars for filtered (noise-gated & normalized) and raw volumes were also better separated. - Added "RadiantDashStateSync" which allows controlling properties of the userspace RadiantUI Dash (currently if it's open and freeform)
Tweaks:
- Increased the range of movement for the RadiantUI Dash - Extended AvatarFingerPoseSourceAssigner to AvatarHandDataAssigner, which is now also reponsible for setting up TipTouchSource and VibrationDevice relay - The volume and threshold related sliders in Settings are now non-linear, which gives more fine adjustment at lower volumes, more closely matching human hearing - AvatarCreator will now setup visemes on floating head avatars as well and not just rigged full body avatars (based on report by @Starkido through @Shifty | Quality Control Lead) - Moved "SearchBlock", "GrabBlock" and "GrabbableReparentBlock" into Transform/Tagging category (suggested by @Turk and @ProbablePrime) - Toggling seated mode on and off will now transition the offset gradually, rather than causing a jump, preventing cases where the user ends up falling through the floor
Bugfixes:
- Reworked TipTouchSource and its related VibrationDeviceRelay management/setup from VRIKAvatar to AvatarHandDataAssigner -- This fixes physical touch not working with the floating head and hands avatars (including the default avatar) (reported by @Jeff07734, @Shifty | Quality Control Lead and @H3BO3) - Fixed NearestUserHand preferring controllers, rather than actual hands (reported by @Shifty | Quality Control Lead)
Redesigned the "maintain height" into a proper seated mode! A bunch of other changes and tweaks to the new dash as well as well as some other things. Designing the workspace system now in the background so your custom facet layouts can be saved!
New Features:
- Redesigned and reworked the "Maintain height" into Seated Mode system and added Seated mode toggle facet to the "Home" screen of the dash -- The old "maintain height" system has been fully removed. The new system computes compensation offset when it's initially toggled on and then keeps using it until it's turned off. -- When turning the seated mode on, make sure you're in your normal seated position -- This provides better behavior, by letting the user move vertically (e.g. leaning down) without them being constantly pushed upwards - Added "UserTrackingSpaceSync" which syncs the configuration of the user tracking space with the input system (it will only work in Userspace) -- Currently offers two properties "SeatedMode" and "UserHeight" (in meters) - Added "ParentUnder" field to GrabbableParenter, which allows overriding where do grab-released objects get parented (based on feedback by @GearBell and @Shifty | Quality Control Lead) - Added breakdown of online users to VR users, Screen users, Headless and mobile (mobile is separate stat and can include both VR and screen users) (based on feedback by @GearBell) -- This data is now also exposed in the OnlineUsersCount component -- Note, the stats will be a bit unprecise for a while, particularly because anonymous users count to the individual categories and the mobile builds of Neos haven't been updated yet and some people might be running on older versions - Added LocalUserLiveStatus (under Utility) which provides whether the local user is currently live -- You can use this to selectively hide some information when live (e.g. NCR status on the dash) or hiding things in world/items/avatars for users who are currently live - Added "UI" audio type group (suggested by @ProbablePrime) -- The interactive camera sound effects now use this audio group. Once UI sounds come, they will too -- You can also set any audio output to this type group for your custom UI's - Added 1D, 2D and 4D variants of the Wobbler component (implemented by @Coffee | Programmer)
Tweaks:
- Tokens Facet will now hide information when the streamer camera is set to Live (either manually or by mirroring to screen) (based on feedback by @ProbablePrime) - Removed the old height estimation system and replaced it with a default user height of 175 cm instead, when the user height isn't configured -- This should provide better behaviors and avoid glitches, where things like playspace mover or uncalibrated VR setup ends up scaling avatars to enormous sizes and cause user confusion (based on many reports in the past and @Shifty | Quality Control Lead) - Removed some outdated items from the Settings screen - Changed "Use Head Direction for movement" setting to true by default (suggested by @Shifty | Quality Control Lead) (this only affects new users)
Bugfixes:
- Fixed a corner case of Twitch Chat dialog not skipping parsing RTF tags in Twitch chat messages, when the Twitch message doesn't contain any defined emote sets (based on report by @Enverex) - Fixed being able to import certain assets as Spectator when object spawning is enabled (reported by @Zyro1331 (ZyroDesign) and @Gutter) - Fixed missing whisper sphere on the default avatar (reported by @Shifty | Quality Control Lead) - Removed world switcher tutorial due to its glitchiness and the fact that it won't be necessary soon - Facets now start out with IsStandalone as true when they're first created, fixing newly made assets not rendering correctly until they're placed
Reworked the voice system to decouple mute and make the whisper/normal/shout/broadcast setting be per-world, rather than global, while preserving mute as a global toggle. The voice facet on the dash now also lets you switch your voice setting (desktop users re-joice! x3). I'm keeping the original switcher on the right hand for quick access for now, until the facet can be placed there instead.
Also some more internal progress on placing facets, particularly in VR mode! You can press Ctrl+F2 if you want to experiment, but it's still unfinished! Some other tweaks and additions as well. Now I go sleep!
New Features:
- Reworked the voice mode system to decouple Mute from other voice options -- Muting self is global - it will apply in all worlds -- However voice status (Whisper, Normal, Broadcast) is now per-world. This fixes scenarios where having whisper or broadcast in one world will transfer to other worlds or will get automatically globally lowered due to permissions in a particular world -- This also preserves the voice status when you mute and unmute yourself - Added voice mode toggles to the VoiceFacetPreset, allowing the voice mode and mute to be switched from the top bar on the dash -- The original voice switcher on the right hand is still present for now, at least until the voice facet can be placed on the hand in its place - Added VoiceModeSync (under Utitlies), which provides the current GlobalMute state and the focused world voice mode and also allows them to be changed -- This component will only work in the Userspace for security -- It also provides FocusedWorldMaxAllowedVoiceMode, which is the maximum voice mode allowed to the local user in the focused world and individual bools for which voice modes can be used - Added IsStandalone property to Facet, which indicates when the facet is standalone (currently not placed in a container) -- Also added default background with Z-Write to a Facet, which is only visible when the facet is standalone - Added "Clear Template" to ComponentCloneTip (requested by @SpearmintVR through @Blaze) - Added "Clear Source" to RigTransferTip (requested by @Blaze) - Added "MultiBoolConditionDriver" (under Transform/Drivers) which drives single bool field based on multiple source boolean fields -- It supports 3 modes for when the driven field will be true - All (all conditions are true), Any (any of the conditions is true) and None (none of the conditions is true) -- Each condition can also be inverted - Added support for sprite tint to ValueOptionDescriptionDriver using per-option color override, multiplied with a SpriteTintBase color - Added "Additive" color mode to InteractionElement (Buttons, Sliders...) which will addively blend the normal, highlight and press colors with the button's base color
Tweaks:
- Changed the visuals for the online status switcher facet to be more easily distinguishable - the active option is now the only colored one, with others being black with inverted text (based on feedback by @ProbablePrime) - Facets are automatically aligned and scaled to the hand that's grabbing them (e.g. when picking from the grid container) - Replaced FlatLitToon preset in model importer with XiexeToon (based on feedback by @Blaze and others before) - Removed old UserspaceDash - Removed old Voice Indicator - Removed old Online Status Panel
Bugfixes:
- Potentially fixed race condition when updating UIX text, causing some canvases to break and stop updating (reported by @KierDran) - Fixed facet grabbing from GridContainer having incorrect offset, causing the wrong facet to be grabbed
Transparency support for PBS Distance Lerp! Also some security improvements and a bunch of bugfixes for the new dash, some related things and some unrelated.
New Features:
- Added Transparency and Culling support to PBS Distance Lerp (requested by @GearBell) - Added SessionURL and SessionId outputs to the OpenWorld node, which will be filled with the values of the opened world when OnWorldReady impulse fires (requested by @Rue Shejn | Artist 3D)
Tweaks & Security:
- Pruned unneeded .dll, .pdb and .xml files for the Headless client (including UnityEngine.dll, which is not necessary for it) (requested by @Earthmark) - Blocked LogiX access to any permission-related components - Various other security improvements - Upgraded to Unity 2019.4.2f1 (from 2019.4.1f1)
Bugfixes:
- Fixed being able to change parent of protected slots (Assets, Roles...) by setting the Parent reference in the inspector (reported by @art0007i) - Fixed Asset cleanup and Autosave potentially breaking when changing system timezone or during daylight savings shift - Fixed "GetExisting" being ignored for AttachTexture2D and AttachSprite nodes (reported by @Zyzyl) - Fixed CharacterParenter, CharacterTeleporter, CharacterForceField and CharacterEventTrigger components working when they're disabled (reported by @Enverex and @Zyzyl) - Added valid type filter when creating ValueEqualityDriver<T>, to prevent crashes when using invalid types (reported by @A Monsoon of Babies) - Fixed "Facing" particle Alignment mode not working correctly and rolling together with the user's head (reported by @Enverex) - Fixed not being able to send equippable items as a message (reported by @Nexulan) - Fixed Twitch chat dialog emotes being semi-broken after last update (discovered on @bobotron's stream) - Fixed FriendLink not working for users who are not currently friends with the clicking user (reported by @H3BO3, @Conduit, @Ryuviand @Sykes) - Fixed World browser listing worlds that weren't submitted to the Neos hub being listed (reported by @Alex from Alaska)
The first working version of the new Radiant UI dash is here! The new dash has now replaced the old belt menu dash and window system and as such it's an important milestone for the development of the Radiant UI. The overall UI overhaul is still far from finished, there are many more exciting features to come soon, now that we have this as a foundation to build on!
The new dash currently provides all the functionality of the old dash with some new bits. Over the upcoming days and weeks, more features will be added: Finishing the Facet editing system so you can customize, UIX Styling support for changing the visuals, proper default visual style, avatar Facet anchors, workspaces and more!
The old UI that has been wrapped into the new dash will also be gradually reworked piece by piece, starting with the Voice Switcher, new Session/World joiner, Inventory, Friends, Streaming Camera and many more and proper system for bringing your custom facets into userspace be introduced.
Special thanks to @Danger Tester's for providing bugreports and feedback on the initial release: @Turk, @ohzee, @Hayden (PolyLogiX - ZyroDesign), @Alex from Alaska, @PeterTheThinker, @Cyro, @Waiwu, @Abysmal, @Zyzyl, @Dante, @alex derpy avali 🐦, @CanadianGit, @A Monsoon of Babies, @bobotron, @Electronus, @KierDran, @H3BO3, @Zane, @Lewi-bean | Audio Designer, @JustlyDeclarable, @SmolCookie, @GalexY, @DeliriousJax, @Zevrim (Linkluky) and @ProbablePrime NeosVR Wiki Index.php
New Features:
- Added new RadiantUI Dash Screen, replacing the old belt dash! -- This dash uses screen based system, allowing to have multiple virtual screens that can be switched between using buttons at the bottom of the dash. Those screens use UIX based UI. Typically most of them will be facet containers, allowing fully customizable UI, currently only the Home screen is facet based as the rest of the UI is gradually reworked -- Created a new Home screen, which contains the essentials in form of facets -- Created new Exit Neos Screen -- Wrapped Session, Settings, Friends, Inventory and File Browser dialogs into the new dash -- This dash also has a top bar for placing small facets in, currently used for Time, FPS and Voice Meter
- Added facet preset system for procedurally constructed facets and implemented following presets -- Core Worlds (Hub, MTC, Cloud Home) -- Controller Diagram (shows controller controls and layout, graphics made by @Coffee | Programmer) -- FPS Facet -- Online Status Switch -- Online User Count -- Cloud Server Status -- Simple Profile (allows logging in, out and changing profile picture) -- Storage Indicator -- Sync Status -- Time -- Tokens status (how much NCR, KFC and CDFT you have) -- Common tools (Avatar Creator, Full Body Calibrator, New World creator, Streaming Camera, NCR Withdraw/Deposit, Debug dialog) -- Neos Version number -- Voice Indicator -- World Close button Additionally, following indicator/function components were added, which were used to build those facet presets and can be used to build your own versions (once the editing system is finished):
- Added "CurrentDateTimeTextDriver" component, which can drive a text field with the current date/time using a format string (same as .NET DateTime formatting strings) - Added "CloudServerStatus" component which contains the current cloud server status data (under Cloud/Indicators) - Added "OnlineUsersCount" component which indicates the current number of online users - Added "RecordSyncStatus" component which provides basing record syncing information - Added "StorageUsageStauts" component which provides information about the cloud storage usage - Added "CreditsStatus" component which provides current value of owned credits (NCR, CDFT, KFC) and their approximate USD value - Added "AudioDeviceVolume" component which measures the volume and normalized volume of any audio device registered with Neos - Added "NeosVersion" component which contains current Neos version number/string (under Utility) - Added "UserOnlineStatusSync" which indicates current online status (Online, Away, Busy, Invisible) and allows it to be changed by changing the value of the field - Added "PerformanceMetrics" which provides some performance metrics for given user (right now FPS, ImmediateFPS, RenderTime, TotalEngineUpdateTime, more to come later) - Added "FocusedWorldCloseAction" button event receiver, which will close the currently focused world when it receives button event. It has a few configurable actions, to automatically prompt save, force save, force save as or force discard changes - Added "FocusedWorldStatus" which indicates if the currently focused world can and/or should be saved and gives its name (more info to come) - Added AvatarCreatorSpawner which will spawn avatar creator on button press event (under Utility/Tools) - Added FullBodyCalibratorSpawner which will spawn fully body calibrator on button press event - Added MainAndMaskTexturePropertyBlock, which allows overriding both the main texture and mask texture efficiently on materials that support it (currently UI_Unlit)
IMPORTANT: Any new components that indicate personal information will only work in userspace Some other related and unrelated additions:
- Added new nodes for getting information from tooltips (based on request by @H3BO3): -- IsToolTipEquipped (determines if the tooltip is currently equipped) -- IsTooltipInUse (determines if the tooltip is currently actively being used) -- TooltipEquippingSlot (gets the slot of the CommonTool equpping given tooltip) -- TooltipEquippingNode (gets controller node that's equipping given tooltip) - Added parameterized version of <noparse=length> tag to text rendering system, which allows efficiently skipping parsing of a specific length of the string following the tag -- Example: <b>Bold<b> and <noparse=18><b>not so bold</b> but now <b>bold again</b> - Added Mask Texture support to Fresnel Material (requested by @Coffee | Programmer) as well as AlphaClip mode support - Added GraphicChunkRoot component (under UIX/Layout), which will force a graphic chunk to be created at the point where it's addded -- This can be used to optimize UIX when there's complex UI that's being translated within the canvas on the slow where the graphic chunk is placed -- This has also been used to optimize any UI that slides left or right when swapping screens (e.g. Inventory, World Browser, Session and so on) - Added ValueGradientDriver<T> which can drive a target value field using a gradient defined by individual points (positions on the gradient with associated value) and position on the gradient (e.g. a color gradient) - Added ProgressBar (under UIX/Interaction) which can drive a RectTransform anchors based a normalized progress (0..1) - Added new Neos logo to the loading screen (logo design created by @Coffee | Programmer and @Karel) - Added "pink" and "brown" color constants - Neos will now try to dump the state of the world when it crashes unexpectedly on the host to a file and write the path in the log (this file can be imported into Neos, restoring any lost data) - Added "MinScale" and "MaxScale" to Slider, which allows clamping the range of scaling when enabled - Added "UseTransformScale" to Camera, which will compensate the OrtographicSize, NearClip and FarClip by the scale of the camera in the world - Added "Direct" tint color mode to InteractionElement (buttons, sliders...), which will ignore the element's base color - Removed old userspace toggles for Vive and WindowsMR controllers and replaced them with long-press of the App/Menu button (the button that opens context menu)
Tweaks:
- Changed alpha channel blending to One One and Max BlendOp rather than using the same blending set for the RGB data -- This fixes incorrect alpha behavior when rendering into an offscreen texture and then rendering this render texture with alpha blending (making an opaque region partly transparent when transparent material is rendered on top) or having incorrect transparent regions in captured in-game photos -- In this build only the UI shaders were recompiled with this change, other shaders will be updated later on when all shaders are recompiled again - Disabled rich text tag parsing for Twitch chat messages (based on recent livestream shenanigans xP) - Some internal moderation tools improvements - Removed redundant TransformMatrix nodes (they will autoconvert to instances of Compose TRS Matrix) (based on report by @orange and @Aetoriz#1794) - Improved GridContainer Facet placement logic, to automatically use the preferred facet size fitted in the available space, rather than growing to the maximum possible size - FacetContainer will no longer place facet when it's being custom sized and the cursor leaves the canvas - Redesigned the facet container placement logic so containers can achieve better facet placement fit (this fixes unstable positioning (jumping around) when free-form placing the facets on the grid container) - Tweaked grid container placement so facets can be freeform placed from all four corners, without skipping a row/column - Save, Save As and Save Copy have been relocated to Session screen for the time being - World Browser now contains "My Worlds" toggle - Friends list now shows which version of Neos is someone using if it's different from the current one running
Optimizations:
- Changed the friends list profile image to use the new material mask for the circle masking, instead of UIX masking mechanism, greatly improving the performance of the old Friends list - Small optimizations when evaluating logix nodes - Small optimizations when constructing UI procedurally
Bugfixes:
- Fixed asset variant system incorrectly requesting old variant alternatives when a new variant wasn't generated yet and the old variant uses older identifier format, causing some textures to not load (appear white) the first few times they're spawned - Fixed an exception when unloading old cloud settings when logging out (found in a log from @Shifty | Quality Control Lead) - Tweaked item shelf item rejection logic accepting objects that are too large and non-persistent (like full body calibrator, avatar creator and so on) (based on reports by @Zane, @Zyro1331 (ZyroDesign) and @Shifty | Quality Control Lead) - Fixed various LogiX nodes breaking or even crashing the world when they're swapped to a different overload/version or deleted (reported by @Ardes, @Hayden (PolyLogiX - ZyroDesign), @Shifty | Quality Control Lead, @Earthmark, @art0007i, @guillefix and @I wont shut up about reflections) - Fixed Demultiplexer not swapping to a correct overload when the DefaultValue is plugged in - Tweaked the degenerate transform matrix threshold limits for CameraPortal, to prevent moderate scaling of the portal target (or the camera) from stopping the portal from rendering (reported by ) (it will still stop rendering at extreme scales, but the limit should be significantly higher @Turk) - Fixed PBS Dual Sided materials not casting correct shadows in the alphaclip mode (reported by @Enverex) - Fixed "Component" component being attachable component (reported by @Rue Shejn | Artist 3D) - Fixed UI Circle Segment shader not respecting ColorMask and not properly working as a mask as a result - Fixed AspectRatioFitter incorrectly offseting height when the fitted width is larger than the current width, causing the visual to be vertically displaced - Fixed <alpha> RTF tag changing the parent color to black and <color> tag without alpha overriding the parent alpha - Fixed GridLayout horizontal alignment not working correctly when the number of actual items is lower than the number of available columns - Fixed rendering to texture asset (capturing photos) rendering objects under HiddenLayer (reported by @Hayden (PolyLogiX - ZyroDesign)) - Fixed Userspace objects/dialogs being grabbed when a world-space object is grabbed - Fixed Camera UVToRay returning NaN origin/direction when its associated render texture isn't fully initialized yet or has zero dimensions, causing raycast portals to break/throw exceptions - Fixed Facet placement breaking and causing incorrect positioning when placed before the associated UIX update cycle has fully completed (reported by @Electronus, @JustlyDeclarable and @Hayden (PolyLogiX - ZyroDesign)) Notes: - You can still open the legacy inventory (which can be shared into the world) by using the shortcut or by pressing Ctrl+I in the screen mode. This is temporary and will be removed once the inventory is reworked under the Facet system - Editing of the facets on the dash is disabled by default now, as saving mechanism isn't fully implemented yet and there are some bugs. If you want to play with it, press Ctrl+F2 on your keyboard to toggle editing on and off. THIS IS UNFINISHED FEATURE, please do not report bugs at this stage. - If you need to use the old dash for the time being, there's a Steam branch called old-dash that you can switch to, which has the last build before switch to the new Radiant dash
This Friday we’re going to be streaming our 1000 follower stream celebration! We’ll be playing games with you in the chat and giving away Neos merch from our upcoming Merch store. Make sure to join us at 3PM PST on the 26th if you don’t want to miss it!
If you’d like to see what our streams are generally like, we also have a fun compilation from the one held a week ago. In other news, the RadiantUI dash is getting nearly ready for official release, check out the latest work in progress state below.
And last but not least, we have some amazing community creations to showcase as well! We’re always overwhelmed by the amazing things you create and we encourage everyone to join our official Discord or follow the #NeosVR hashtag on Twitter to see more, as there’s too many to cover.
1000 Follower Celebration Stream with free Neos merch this Friday!
Thanks to you guys, we’ll be celebrating the milestone of reaching 1000 followers on Twitch! The celebration stream will be held this Friday (June 26th) at our normal streaming time 3PM PST! We’ll be playing games and giving away some merchandise from our newly opened Merch store, items ranging from stickers, pins, bandanas and a T-Shirt!
We would have never gotten to this level of support if it weren’t for you, our community! Having the community with us every Friday allows us to show you all of the things we’re working on, and it’s always fun for us on the team to participate and answer questions. We’re also always asking ourselves what new commands we could give you guys to further add to the fun mayhem the streams always bring.
This week’s stream is going to have no less mayhem, so please come join us and win some stickers and things! We’ll all be looking forward to seeing you, and Nex will say Thank You at least another 30+ times throughout the stream. And Sykes will likely get Zeused another 100+ times!
See you there!
Bandana's are coming and more! Note that this is just a preview, the designs aren't 100 % final yet.
Funny Stream moment compilations
Our video producer and editor, Theofilus, is planning to frequently bring us new compilations of funny stream moments, and has done so with our latest stream.
In the video, we see our chat frequently Zeusing and Exploding our guests and team members in the stream world. Also we get a compilation of Nexulan saying “Thank you” way too many times. It’s quite funny, but don’t take my word for it, go check it out!
Last Friday's Q&A livestream at Sakura
If you missed our last stream, here you can watch the complete recording of it. We've gotten lots of great questions on Neos and its development and lots of fun with the chat in the beautiful Sakura world by PolylogiX
RadiantUI dash is getting nearly ready for release
The upcoming new dash and its related systems are now in nearly usable state. The old UI dialogs have been wrapped into this new form, instead of popping out as separate windows and we’re currently working on an initial set of facets to provide the replace the remaining functionality and test out the new subsystems that we’ve been building for a while.
The dash will serve as the core of the new RadiantUI, where all the essential functionality will be located by default. After its official release, we’ll redesign and reimplement all of the old UI pieces one by one, making them look much better, easier to use and giving them more flexibility and functionality.
All the UI is also being redesigned under the Facet system, making each piece fully modular and customizable, as it can be moved to any UI container - e.g. from dash on your avatar’s hand. The container system has received more work and polish as well, as you can see in this video:
As a nice side bonus, part of UIX, our custom high-performance UI framework has been redesigned as well to fix certain sorting issues, which caused some parts of UI to render on top of others. This should make UIX more robust and easier to use if you’ve encountered this bug before.
Community Highlights
Animated Chalkboard, by A Monsoon of Babies
This user has created an amazing looking chalkboard, with both normal stationary chalk and animated chalk which would make any digital classroom more interesting!
Neos Animation, by @tekerets on Twitter
Animation in Neos is something we’ve hoped users would use Neos for even in the far future, so we would never have imagined users creating animations at this point in Neos’s development! Tekerets has made a couple amazing animations so far, so check them out!
3D Blockchain viewer by Sirkitree
Sirkitree has created a really interesting way to visualize block-chain information and transactions using Neos’s built in LogiX system! Looks like a great idea for how people would want to visualize stocks and other forms of information!
Sakura, by PolyLogiX
From every angle, this world looks like a precious painting. Featuring Japanese-inspired scenery and music as well as an intricate attention to detail. It’s another world designed for rest, relaxing and sleep, so bring a pillow!
Storage Scroll, by N-JELLY (@NJELLY1 on Twitter)
This has to be the most amazing storage solution I’ve seen yet in Neos. You can put anything in this scroll, from tooltips, weapons, accessories, and even other scrolls! N-JELLY has released this in their shared folder, so check it out! Thank you N-JELLY!
What’s Next?
This upcoming week we’ll be very likely swapping to the new RadiantUI dash, so enjoy your last moments with the old one and keep an eye out on the #testing channel on our official Discord! Since this is a major change, we’ll release the build in the danger-nightly channel first, so we can ensure there’s no major breakage before it goes live.
Thank you for reading this week’s Community Highlights! As always, we wouldn’t be here without you guys, so thank you for tuning in and supporting us in all the ways you do! And a special thanks to the big streamers Snow SOS, Roflgator and Sodapoppin for giving Neos a try, and for showing us off to your awesome viewers!
Make sure to tune in again next week for the Weekly Update! Have a good week everyone!
Pushing an extra hotfix based on some crash reports due to the optimizations/changes in the last build. Hopefully this fixes the issues, let us know if you're still experiencing problems!
Optimizations:
- Added more memory pooling to the sync message validation, reducing GC churn and related increased memory and CPU usage for the host - Optimized low level ReferenceID operations
Bugfixes:
- Fixed released drives from the local part of data model being encoded for syncing, causing the session to crash (based on reports by @art0007i, @Zane, @AdmiralSoap through @Shifty | Quality Control Lead) - Fixed sorting issue for SessionOrbsController
Pushing a high priority update to fix a security exploit that lets users kick/ban without proper permission. I've pulled in a bunch of other things from the WIP Radiant Dash build as well as a bonus (the new dash is not ready for release yet), including some memory/CPU optimizations and possibly fix for the ocassional random particle effect freeze!
Security:
- Fixed incorrect kick/ban request validation logic, which can let users kick/ban others without having the sufficient permission to do so (reported by @I wont shut up about reflections, logs provided by @drecalen and @bbblacketer) - Added extra diagnostic information for kicking/banning for future issues - Some more small cloud security additions
Optimizations:
- Heavily reduced memory and CPU usage for managing sync elements by deduplicating their lookup tables - Added memory pooling to sync message validation, heavily reducing memory allocations (and associated CPU usage) for the host - Added reference cleanup on Dispose to the reference controller, to aid the GC and help prevent potential memory leaks - Upgraded to Unity 2019.4.1f1 (from 2019.4.0f1)
Bugfixes:
- Fixed particles in userspace not emitting at the correct position - Fixed occasional excessive allocations and calculations during particle system emissions
More progress on the new RadiantUI dash, Facets and Containers! I've also discovered a few UIX bugs during this development that caused incorrect sorting (things rendering behind when they should be in front in various cases), which required parts of UIX to be redesigned a bit, but they should be good now! Let me know if there's any new unexpected UIX breakage.
Some new UIX features that came along with the RadiantUI work too, like TiledRawImage (perfect for UI grids and such). Also a bunch of other bugfixes and tweaks that were done on the side.
New Features:
- Added Padding support to Grid Container (and to facet containers in general) - Added grid placement visuals to the GridContainer for facets - Added TiledRawImage under UIX/Graphics, which renders a texture tiled based on the size of the UI rect elements with tile size and an offset (can be used to make a grid for example)
Tweaks:
- Tweaked custom sizing mechanism for facet containers to be more intuitive - Added world name to the "Role not available" message on headless (requested by @aat#1337) - Dimmed the GridSpace world preset's skybox (based on feedback from ProbablePrime#4895, implemented by @Coffee | Programmer)
Bugfixes:
- Redesigned part of graphic chunk hierarchy mechanism to properly split graphics that follow a nested graphic chunk into a separate rendererer, so they can be sorted properly to render over the visuals of the nested chunks -- This fixes graphics that should render on top of some nested graphic within a graphic chunk actually rendering below it (e.g. having an overlay overlapping on top of a scroll area or rendering visuals over nested canvases) - Fixed incorrect graphic sorting on UIX canvas with overlapping graphic elements under the same parent -- This fixes some graphic elements that are earlier in the hierarchy rendering on top of elements later in the hierarchy when the element later uses submesh that has already been used earlier -- Certain elements that naturally cause overlaps, like the OutlinedArc are excluded from this precise sorting for better performance - Fixed invalid calculations of the Maximum Traction/Support slope threshold values, causing certain angles to throw an exception (reported by @H3BO3) - Tweaked logic for determining which item can be placed on the toolshelf to exclude non-persistent parts (like the hand proxy visual) -- This should fix tools not being placeable on the item shelves in the edit mode (reported by @ProbablePrime and investigated by @Coffee | Programmer) - Made VirtualKey, VirtualShift and VirtualModifierKey components clear the "ClearFocusOnPress" field of the Button component on startup if present -- This fixes custom UIX based keyboards hiding themselves when typing into private UI (reported by @SmolCookie, @Lewi-bean | Audio Designer)