1. Neos VR
  2. News

Neos VR News

Semiweekly Podcasts, UI/UX overhaul details, Linux support, Etee Controllers

Hello everyone, welcome back to your weekly dosage of NEOS news! This week we’ll be talking about our new semiweekly podcast, brought to you by our wonderful Team member, Coffee!

We’re moving our release schedule around a little bit to adjust to the Neos Team’s new work schedules, our Friday night streams will still remain on Friday, some time between 6-6:30 PM Eastern.

The Weekly Update will be releasing on Sundays in the evening, specific time pending. The semiweekly podcasts will be Sunday 3 PM Eastern (12 noon PST) and Wednesday 10:30 PM Eastern (7:30 PM PST).

We’re also sorry for missing the weekly update last week! Frooxius, our project lead, had his wisdom tooth pulled last week and was out of commission, so last week was pretty quiet. Hopefully this week updates and details will make up for it!



[h2]Semiweekly Podcasts[/h2]

Coffee has initiated our new Podcast schedule, where on Sundays, we will be having a podcast talk with users along with Coffee and I (Veer). We’ll be talking about some fun and interesting topics revolving around Neos, creativity, philosophy, psychology and how it ties into VR in general! If you want to join the cast, please contact Coffee about joining!



Topics change every week, and we’ll be showing off various worlds as well during the podcast. We’ll be currently utilizing Mixer for our podcasts but our friday streams will continue using Twitch. We want to expand Neos to a bunch of new horizons!

Also, after the streams, we typically will do something fun after for a while. Last sunday we infiltrated Nexulan’s CreatorJam Twitch Stream. We hope to see you there. Feel free to ask us anything, we’ll be responding to chat!

You can watch the podcast here on Mixer.

[h2]UI/UX Overhaul is taking shape[/h2]

The work on the second phase of the UI/UX overhaul has already begun. The first and most important step is defining the fundamental principles of the new UI. We’ve collected information on common user frustrations with the current UI, the issues it has and things people would like to see.

Based on this we’re designing a new system to solve all of those issues, while providing a good set of ground rules to keep the new UI system consistent and avoid confusing and frustrating behaviors. Decreasing friction for new users is one of the major goals, as well as allowing the UI to grow and adapt as they get more used to Neos.

To achieve this, we’re currently considering a system with following three UI subsystems:

  • New Dash - this would be a dash screen, similar to Oculus or SteamVR dash. It would contain everything you need to navigate Neos, join friends, socialize and play, all in one place. For new users, this would be the only interface they need to understand to get around and as such having a quick and easy way to open and hide it is key.

  • Contextual Hand Menus - these would replace the current radial menus. They’d be redesigned to allow quick use and navigation, but also to not block any interactions and automatically dismiss themselves when not interacted with.

    The purpose of these menus would be to provide functions that are contextual to user’s hand - destroying, duplicating or equipping items as well as quick access for common functions for equipped tools.

    One key difference is that those are non-essential for socialization. We still want to make them easy to use, but any functionality necessary for socializing/navigating will be moved to the dash (e.g. locomotion mode), decreasing the systems a new user needs to learn, while allowing quick workflow as the user gets more experienced.

  • Hand / Arm / Head / Userspace UI slots - these would be designed for more advanced users, as they get more used to Neos and want to improve their workflow. Thanks for the widget-based design, pretty much any piece of the UI could be taken out and placed in a different place.

    For example, instead of having to open dash for access to voice controls, you could take the voice widget and put it on your palm for quick access. Or take the FPS counter and pin it to a permanent place in your viewport.

    By default, this system would be empty, not requiring new users to know anything about it. However as the user gets more experienced, this would allow them to customize their workflow and adapt the UI to their needs. Casual users could place shortcuts for any socialization features, while creative users could put widgets for quick tool or prefab access.


These are several other principles and changes that go hand-in-hand with those systems. Namely:

  • Widget based design - instead of monolithing interfaces, every piece of the UI would be containerized into “widget” (we might call them something else later on) - individual modular piece that can be placed/snapped into lots of different places.

    More complex UI’s can be composed from several interacting widgets - for example the friends list can have a widget for friend browsing/search, another for viewing their profile, another for status and another for chat.

    This allows for several things. On our end it simplifies the development, by breaking up the pieces and making them have more clear defined roles and allow for better reuse. On the user's end, it lets you take a piece of the UI - say a chat window with a particular user and pin it to your hand or playspace.

    And importantly for creators, it gives the ability to extend or modify the UI in much simpler ways. The community can build completely new widgets that you can then place into your UI or replacements for official widgets - for example building a different chat or friend browsing/search, giving everyone more control over Neos.

  • Emphasis on using tools without equipping - equipping tools and items can be quite confusing for users, so we want to make several improvements there. One of them being more emphasis on being able to use items without having to equip them first, simply allowing to hold an item or tool and use it.

  • Disabling shortcuts by default - another related change would be redesigning behaviors to be more explicit and use existing systems that the user is already familiar with. For example if the user wants to actually equip a tool or item, they would do so through the contextual hand menu.

    This will prevent scenarios where using the double grip to equip is difficult for users to execute correctly or happens by accident, making the users confused, because their controls have suddenly changed.

    However we still want to have shortcuts, so having ability to enable them in settings is equally important, again allowing the user to improve their workflow as they get more used to Neos.

  • Explicit laser toggle - users grabbing or clicking things by accident due to infinite range of the laser is one of the other common confusions. To solve this, we want instead switch to a more common scheme used in SteamVR, Oculus Home and other places, where pressing the trigger once will first activate the laser.

    This will let the user to click remote items and grab remote objects. The laser will automatically dismiss itself when not in use. We believe this will also improve immersion, putting more emphasis on physical interactions by default and having the remote ones being more explicitly activated.

    It will also let us improve interactions with the UI. Because the interactions will be more purposeful, we can for example allow us to use a joystick for scrolling the UI panel while it’s being interacted with, without fear that it will be randomly blocked by this behavior by the user accidentally pointing at some distant UI.


This is more or less the gist of the crucial UI changes and principles. The are a lot more things, details and implications that are considered and any of these things can change as we go on, but hopefully this gives you an idea of our goals and thought processes for the redesign.

If you have any thoughts, suggestions or feedback, let us know! You can talk to us on Discord or the UI related topics on our GitHub issue tracker.

You can also check out Frooxius' notes on the overhaul by clicking on this thumbnail:



[h2]Linux Client Support[/h2]

Neos now officially runs on Linux! While far from perfect, the native Linux builds are usable both in the debug screen mode and in VR, allowing you to do most things that can be done on the Windows counterpart. You can host or join worlds (there’s a full cross-play support), hang out with others or build.

Currently there are several major limitations. Video playback is not supported, some shaders don’t work (mainly Flat Lit Toon), 3D models can’t be imported on the Linux build (but already imported models will load) and visemes won’t show on avatars due to lack of Linux support in the OVR Lip Sync library.

[previewyoutube][/previewyoutube]

Regardless, this is an important step towards multiplatform support, as those issues can be fixed or mitigated over time. In the meanwhile, we recommend using the Windows version, but if you’re okay with those limitations simply download Neos on Linux version of Steam and play!

You can discuss the development of the Linux build on our Discord or here on GitHub.

[h2]Etee Controller Support[/h2]

We’ve brought Etee controller support into Neos! Currently, the system is a little buggy since the controllers are still in development, but at least we’re seeing the family of usable Neos controllers grow a bit! Supporting a wide variety of hardware is important for us, as it gives more users access to the shared metaverse.



[h2]Updates, optimizations, tweaks as usual[/h2]

Apart from these big features, Neos has received many smaller tweaks, optimizations and bugfixes as part of its daily development. Watch the #neos-updates channel on our official Discord or the patch notes on Steam for details.

One of the major ones were optimizations to our cloud infrastructure. We have moved from Windows App Service to Linux version, providing significant cost savings and allowing us to scale more freely under load and we have made major optimizations, which improved the stability and lowered server utilization under load.

[h2]Community Highlights[/h2]

[h3]Bob’s Sleeping Place by Bobotron[/h3]



A relaxing little world, dimly lit to help keep a calm atmosphere and may even help users get sleepy before bed. Complete with a unique media player and a full playlist of chill music, you’ll definitely feel zen after visiting.

[h3]Avali Campsite by Kazun[/h3]



This world invokes nostalgic feelings of Starbound, with beautiful music accompanying familiar visuals of Avali architecture. You’ll find a cozy little Avali tent, some computer hardware, a galaxy map visualizer, and a longing to travel the stars in the sky.

[h3]Escher Stairs by GearBell[/h3]



GearBell is continuing to wow us with her amazing worlds! This is her VR rendition of Escher’s Relativity, a gravity defying, mind-bending piece of historical artwork. A really fun tooltip is provided that can shift your gravity so you can enjoy this world from all of it’s respective angles.

[h3]Space Commute by Mr.MegaTronic[/h3]



Mr.MegaTronic has created a stunning world where you’re in a commuter train in Space! The seats are set up with avatar anchors, with a set of chairs utilizing an experimental anchor creation system. The lighting and materials are top-notch, so give this world a visit!

[h3]Remote University lecture due to the COVID-19[/h3]
Because of the Coronavirus COVID-19 threat, the schools and universities in Czech Republic have closed down. Doc. Petr Klán, who teaches VR1 class at the Czech Technical University in Prague wasn't stopped by this, instead doing his lecture fully remotely through Neos, as well as student's exercises.

Unfortunately the lecture is in Czech, but if you're interested you can give it a watch here:

[previewyoutube][/previewyoutube]

[h2]What’s Next?[/h2]
Our main focus is currently the UI/UX overhaul. We'll be starting to implement first parts of it soon, so keep an lookout for changes!

Thanks again for reading our Weekly Update! We’ll keep you up to date for future events and happenings within the next few podcasts and streams, as well as future weekly updates to come.

Look for us on Twitch and Mixer as some of us will be streaming for fun on non-scheduled days! And as always, stay happy, stay creative and have a great week!

2020.3.6.46 - Etee Controller Support

Adding Etee controller support. Sorry for lack of builds or being around recently, I've been out of commission for past few days (my wisdom tooth got inflamed and had to be pulled and I spent most of the week in fever/pain :( ), just pushing this one out because I promised a delivery date. I'll have some more builds for you soon!

[h2]New features:[/h2]
- Added support for the upcoming Etee controllers
-- They need to be used with the Vive Trackers for 6 DoF tracking
-- Assign the trackers a "Right Shoulder" and "Left Shoulder" role in SteamVR input binding, depending on which hand they're held in (shoulders are used due to some issues with SteamVR Input)
-- Launch Neos with -Etee argument to enable etee support
-- Here's a quick demo video: https://www.youtube.com/watch?v=BKF-OF1oyus

[h2]Tweaks:[/h2]
- Added info whether a finger tracking solution tracks the metacarpals bones. This allows the hand poser from trying to update or simulate those with some hand tracking solutions, resulting in mangled hands.

Introducing UIX - new high-performance UI framework, UI overhaul coming next

Hello everyone!

We have a very exciting update this week, the technical phase of UI overhaul is now complete! I’m excited to introduce UIX, our new high-performance flexible UI framework that will power Neos’ UI for years to come.

And even though right now the UI still looks more or less the same (that will start changing very soon though), it brings massive performance improvements, significantly reducing lag with inspector, friends lists, inventories and other heavy UI’s open. Read more on it below!

Last week we also held a special stream discussing the future of Neos’ UI. Thank you everyone for your feedback, suggestions and ideas! With UIX complete, we’re now moving onto the second phase of UI overhaul to improve the ease of use and visual aesthetic of Neos and knowing what issues you have and the things you’d like to see in the future will help us with the design tremendously.

Don’t forget to join us for today’s livestream as well! Not only we’ll be talking and showcasing UIX, but more importantly the community creations from February! After all you’re all who gives this metaverse life.



[h2]Massive performance improvements for the UI[/h2]

One of the design goals of UIX was to significantly improve performance with complex UI’s in Neos, particularly inspectors. We have achieved this through a combination of design principles, that have provided orders of magnitude improvements.

The old UI system built with Unity UI would easily bring the framerate under 20-30 FPS opening a single scene root or avatar rig, but with UIX you can open dozens without affecting the framerate.

Similarly if you have accumulated a lot of friends in the Friends dialog, opening this would cause many people to freeze briefly and drop the framerate by dozens of FPS. Virtually all UI interfaces are now significantly more optimized, removing or reducing initial hitches and their continuous impact on framerate.

This makes Neos much more comfortable to use for everyone, allowing more users to easily edit inside for a world without hurting other people’s experience (and their own) and makes accessing and modifying complex components (e.g. DynamicBoneChain with hundreds of bones) possible.

[previewyoutube][/previewyoutube]

There are 4 design principles that have made UIX a highly performant framework:

  • Asynchronous - only basic update information is collected on the main thread and computations are then done in the background, while the rest of the game still runs. Complex layouts that take long to compute will no longer freeze you until they are done
  • Multi-threaded - a lot of the layout and generation work is split across multiple cores, using your CPU better to compute UI faster, resulting in snappier and more responsive UI. Each UI canvas also runs its own loop, allowing them to update independently of each other, instead of freezing the game until they’re all done
  • Change-driven - only the changed parts of layout will actually be recomputed. UIX intelligently invalidates only properties that have actually changed and “absorbs” invalidations that produce no effect higher in the hierarchy. This reduces the overall amount of work when only parts of the UI update every frame
  • More efficient - the compute and layout algorithms have been designed and written in a highly-performant way. Even without multi-threading and change tracking, UIX takes fraction of time to compute the same layout as the old Unity solution






https://www.youtube.com/watch?v=_1eryMreauc

[h2]Custom font support, materials, unicode and more features[/h2]

Performance wasn’t the only thing that UIX has improved. Built with our new text rendering system, UIX inherits all of its capabilities as well!

Now you can use any TrueType/OpenType (.ttf, .otf and such) fonts within the UI. Want all inspectors to use ComicSans? We don’t see why you would, but now you can! And of course you can use multiple fonts for your own UI’s, the possibilities are limitless.

[previewyoutube][/previewyoutube]

Dynamic generation of Unicode glyphs is also supported, so languages like Japanese, Korean, Chinese, Russian and others will now render correctly in all interfaces - inspector, inventory, file browser, in-game messaging and all others.

Another of the additions is support for materials. UIX neatly fits into the rest of Neos’ architecture, allowing you to use pretty much any material for any part of the UI. Most materials don’t support things like masking, so they won’t work well in some contexts, but as we add more UI materials the possibilities will grow!

If you can use inspector like this, you're either massive Neos fan or massive Stargate fan.

[h2]Fixed glitchy UI behaviors[/h2]

Neos’ UI was long plagued by some unpleasant and confusing glitches, that couldn’t be easily fixed due to the hacky nature of the old UI system built on Unity UI. In comparison, UIX is a solution fully native to Neos and independent of Unity, giving us full control and nicely integrating to the rest of Neos’ engine.

As a result, all those long time bugs were fixed. Overlapping UI windows will no longer cause masking issues, making UI render where it shouldn’t. Pointing one controller at one window and another at some other now also works properly, instead of selecting random elements instead, confusing users.

Cases of some UI being randomly mangled, misaligned or missing have also been fixed. For example the notoriously missing “2/@” key on the virtual keyboard, often confusing new users trying to type their email address or the inventory window buttons popping out of its bounds.

UIX makes it significantly easier to move forward, introduce new features and fix more bugs without breaking the whole system.

[h2]What’s next? Onto the second phase of UI overhaul![/h2]

With UIX complete, we now have complete control over the UI system in Neos and full flexibility to add new behaviors, visuals and interactions, the way we want, without being impeded by the old technically limited system that would just break anytime it was touched.

In the upcoming weeks, we’ll be redesigning the core of Neos’ interfaces, to make it much easier to use, especially for new users just looking to hang out, socialize and play and also look up to today’s standards, ditching the old “programmer aesthetic”. Essentially you'll see the actual visuals and interactions change bit by bit from now on!

We’re very excited, because this will be one of the most significant milestones in Neos’ development, making it and its rich functionality more accessible and discoverable to new users and making it much more friendlier and powerful for the existing ones.

You can still provide us with feedback and participate in the process. Either on the GitHub megathread or on our official Discord or Patreon (links below). Now is the best time to provide feedback and ideas, before the fundamentals of the new UI design get locked down! The new system will still be very flexible though, as we expect it so serve us for a long time ahead.

Designing UIX to allow for high flexibility, while also providing exceptional performance took a significant amount of time, more than I have initially expected, but I believe the performance benefits alone are worth the effort and I am thankful for your support and patience through this.

With the old Unity UI system being excised from the codebase we have paid one of the biggest Neos’ technical debts from its alpha phase and we’re free to move on forward into the future.



[h2]Thank you everyone for the support[/h2]

Help us shape the design of the new UI and UX for Neos (UIX nearly finished)

Welcome everyone to your weekly update!

Today we have a special one. With the new UI framework UIX now nearing its completion, the technical phase of UI overhaul is going to be finished soon and we can move on to reworking the visuals and interactions of the UI system.

It’s no secret that the current UI has many problems, that lead to a lot of frustration in both new and existing users and doesn’t look or feel like a modern app would. With the technical backing of UIX, we plan to change that and make it easier, sleeker and prettier for everyone.

While we already know many of the major problems from your feedback from the past year and half, we feel that now is a good time to get a lot of it together and help shape what will the new UI and UX of Neos become.

Whether you are a regular Neos user, or someone who tried it and went away because of the bad UI, we want to hear from you. What are the things that frustrate you the most? What would you like to see in the new UI?



[h2]Making the new UI both simple, yet powerful[/h2]

We have several goals for redesigning the UI and UX of Neos to bring up to the standard. One of them is making it easier and more intuitive to use, especially for newcomers, to remove the high initial learning curve most people face and that unfortunately turns a lot of people away.

Part of that will be major unification. Currently Neos has lots of separate UI’s and widgets that have accumulated over time and that aren’t very consistent, adding too many things for new users to learn with how to interact. With the new UI we want to put everything into one place with a consistent usage pattern, so you just need to know how to point and click.

At the same time we want to keep our current power users in mind and allow the newcomers to more easily become ones too. To do this, our goal is to make the new system also a lot more modular. That way you could pluck different parts of the UI and rearrange them or put them on different places within your user space or on your avatar or even completely replace with community made widgets (or the ones you make yourself).

This way the simple unified UI will serve as a starting point, from which you will be able to customize the look and structure of the system to your own tastes over time, while also giving the community the power to build custom parts of the UI and share them with others and later with introduction of in-game economy even sell them for NCR (Neos Credits), giving our skilled creators another avenue for revenue.

Doing both will definitely be a challenging task, but also a very important one. Up until now we always considered the current UI “temporary”, something to hold us over while we work on other features of Neos and a proper framework to power the new system.

Now with UIX nearly complete and getting ready to replace the old technically limited system, we can build the UI we really want, but also the one you want! It is going to represent Neos and our community for a long time, so we want to hear from you.

[h2]Help us shape the design of the new UI[/h2]

What would you like to see in the new UI? What frustrates you the most about the current one? What do you like on the current one? What do you think is the major cause of the high learning curve and what do you think would help to ease it?

Whether you are a seasoned Neos user or you have used it only briefly and have been waiting for a good UI we want to hear from you. For the duration of the next week is your best chance to help shape the design and look of the new UI system by providing us with your thoughts and feedback.

We want you to understand the process as well. While we won’t be able to implement everyone’s exact ideas, in part because we expect a lot of diverse and different ones, we hope to distill the essence from all of it - the good principles, the pain points (to avoid) and incorporate all of that into the design.

Even if your idea or suggestion might not make it its exact form, it will still influence how we think about the new design and our plans for the future, so don’t hesitate to share it, even if it’s out there!

On February 21st at 3PM PST we will hold a special livestream on Twitch to discuss all the ideas and suggestions with you live, so remember to tune in by then!

If you won’t be able to make it, you can still share your ideas before then. Write down a comment here in the discussion or post it on the UI/UX redesign topic on our GitHub. We will gather the comments and discuss them on stream next week.

We’re looking forward to hearing from you and to finally fixing one of the biggest pain points that our users were facing for so long. There are exciting times ahead!

[h2]UIX framework is nearing its completion[/h2]

The new UI framework dubbed UIX is now nearing its completion! There was even more complexity to deal with than I originally expected, so it unfortunately didn’t make it this week, but I’m pretty confident it will be ready sometime within the next week.

For those unaware, this is the new technical UI framework, that will completely replace the current solution built on Unity UI. This will get rid of the technical limitations of the old system, which were a big part of the reason why the current UI is the way it is and solve another major pain point - performance.

In the devlog video below you can see the system now handling multiple layouts - horizontal, vertical and grid and also incorporating the new text rendering system into itself, with full support for layout metrics, autosizing, custom fonts, languages with large characters sets like Japanese, custom materials and more.

[previewyoutube][/previewyoutube]

The system efficiently handles even large amounts of text and UI elements even when constantly updating thanks to its efficient and multi-threaded design, which is going to be important for things like inspectors.

Near the end of the video you can also see another aspect of its design when handling an enormous amount of text (or any complex UI element) - while the UI itself gets choppy, the game still maintains smooth framerate above 120 FPS.

This is thanks to its asynchronous design - the heavy computations happen on background threads without bringing the main FPS down - no more intense lag when you open a large object in the inspector! (note that the lag you see in the video is due to the Inspector still using the old UI system)

Overall ensuring high performance and reducing the work needed to be done was one of the most challenging parts of designing and implementing UIX. The system does a lot of complex flagging and caching to avoid as many recalculations as possible, especially when only parts of the UI change.

The system also intelligently combines materials and meshes as the UI is generated - e.g. if you have multiple text elements using the same font (and material), they end up batched into a single mesh.

There are still several things to do before it’s ready, mainly adding scroll areas and interactions so you can click and interact with the elements and adding various features and polish to match the current UI system to allow for a seamless swap.

[previewyoutube][/previewyoutube]
Here's an earlier video showing some of the development work and experimenting with UIX, particularly on the grid layout. Later in the video you can see it handling 5000 individual elements!

I expect this to happen sometime next week. I know I’ve promised that the new framework would come sooner and I have greatly underestimated the complexity required to design and implement it properly (even though I already thought it would be one of the most technically complex parts ^^; ) and I apologize for that.

But I am thankful for all your support and patience throughout this. It will be worth it for years to come!

[h2]New versioning scheme[/h2]

In other news, we have switched to a new versioning scheme for Neos to make it easier to make sense of the build numbers! Due to the build number being semi-random and non-sequential, it was often difficult to tell which build number was newer.

The new scheme follows a more modern approach, where the build number is essentially an UTC time and date of when the build was made, starting with Neos Beta 2020.2.9.629.

The format follows .... First three numbers are simply year, month and day of the build, the last number is the minute of the day when it was built. There are 24 hours * 60 minutes - 1440 minutes per day, so the last number will range between 0 and 1440.

The important take-away is that the build number will now always increase, making it easier to tell if you’re using an older build when there’s a new one out!

[h2]Community Highlights[/h2]

[h3]Campfire by Dusty[/h3]

Sit by this cozy campfire in the woods, roast some marshmallows and hotdogs, and enjoy the night breeze with friends! This lovely little world is small and intimate, just the right place for a small group to hang out in!



[h3]Valentines by GearBell[/h3]

Come check out one of GearBell's newest worlds, right on time for Valentine's Day. With it's lovely Valentines theme, you can take your significant other here for a romantic session of shooting each other with love guns!



[h2]What’s Next?[/h2]

As mentioned in the paragraphs above, the next week is going to be pretty much about finishing UIX and replacing the old UI framework and getting ready for the visual/interaction phase of the UI overhaul, by gathering your ideas, suggestions and thoughts!

Make sure to tune in for our live stream on February 21st at 3PM PST next week (and don’t forget we have one today too ;) ) or post a comment on Steam, Patreon or GitHub before then (wherever you prefer) when we’ll discuss it live with you!

We’re very excited to get to this stage, Neos wouldn’t be here without you, so thank you again for your support, enthusiasm and creativity! We have reached nearly 300 supporters and $5000 per month on Patreon! We're very grateful for your generous support, never we have imagined having such a great and generous community, you guys are all awesome!

See you all next week!

CHIP-8 emulator built completely in VR, avatar additions, progress on UI more

Hello everyone!

Welcome back to the weekly update. We’ve got a small one today, as most of our development efforts have been focused on the new UI framework, which is nearing its completion. Parts of its design proved to be more challenging than expected, but they’re now mostly solved.

Despite that, we had some exciting events. Last week Aegis_Wolf built a functioning simple 3D modelling tool purely in Neos. This week another of our team members - 0utsider, has built a functioning CHIP-8 emulator completely in VR!

Neos has received a bunch of small additions, optimizations and bugfixes as usual, you can read more about them below.

We’ll be talking about this and more during our livestream on Twitch tonight! We’ll be answering your questions and hanging out with the community like usual so feel free to visit!



[h2]0utsider’s CHIP-8 emulator![/h2]

0utsider, one of our team members, has built an entire CHIP-8 emulator within Neos, based on the original CHIP-8 interpreted language, all made purely in-game with LogiX! This emulator is capable of running ROMs for the COSMAC VIP microcomputer, so you can even play simple games on it.

“It was fun building the Chip 8 emulator in Logix. And hangout with my friends in VR as they would drop by to see the crazy mess of wires running about the gm_flatgrass map where i worked on it. Garry’s Mod was the first game where I made the emulator run in it’s Logix style programming system.“ - 0utsider89





[h2]Avatar pose offsets for more flexible setups[/h2]

We have added a few new components to help with avatars that have unusual body proportions: AvatarTrackingOffset, AvatarPoseOffset and AvatarPoseFilterInstaller. Using these, you can apply a fixed offset to your tracking space or to individual body nodes.

This can be used to setup avatars that have very short legs for example, by pushing the whole tracking space into the floor to compensate, while preserving arm length distances. The offsets are also tied to the avatar itself and are automatically applied to anyone wearing those avatars, without having to fiddle with the settings.

[h2]More reliable 3D model import[/h2]

After reports of some rigged 3D models importing incorrectly, we have investigated and found a series of bugs, particularly for models with bone name clashes. As a result, the Assimp library used to decode the 3D model formats has been updated to the latest version from source and those bugs were fixed, making more models to import correctly out of the box.

[h2]Steam Audio branch[/h2]

Currently Neos is using the Microsoft HRTF Spatializer. While low in audio quality, it provides the best stability and reliability out of available solutions for the moment. Our long term goal is to switch to the Steam Audio spatializer for its high quality and feature set, but at the time it suffers from several issues that prevent us switching to it fully.

However if you’d like to test it out or use it on your own risk, you can! You can do so by switching over to steam-audio branch on Steam, in NeosVR properties. The branch is compatible with regular Neos and is updated in sync with the main build.

While this offers better audio quality, be aware that you might get random pops and complete silence until Neos is restarted and random high CPU usage when playing sound effects. Those are issues with the Steam Audio library that we are waiting to be fixed first and they seem very random in nature, with some users not experiencing them at all, while others encounter them often.

[h2]General additions, optimizations and bugfixes[/h2]

As usual, Neos has received a bunch of bugfixes and optimizations over the course of the week, based both on user reports and our own discoveries. We finally got rid of the slow initial load for inventory folders with lots of items, reduced some memory allocations and CPU usage. Random logging out for long running sessions (particularly headless) was also fixed.

There are some new LogiX nodes as well, particularly Cubic Lerp and Cosine Lerp by Coffee, which allow for building nice procedural animations right inside of Neos. Check out the #neos-updates channel on our Discord or the small patch announcements on Steam for more info!

[h2]Layout system for UIX[/h2]

The full details of the layout system for the new UI framework UIX took longer to design and work out than expected, but they’re now finally being implemented. This is one of the most important parts of an UI framework, as it is responsible for automatically building complex layouts out of several UI elements.

It is designed to handle anything from a simple row or grid of buttons, to complex nested layouts flowing in different directions and provide extensible framework to implement more layout components in the future.

One of the goals of the system and particularly challenging parts of the design was performance. Not only are all computations deferred to a background thread, requiring the synchronous part to do as little as work as possible collecting the necessary information, but it’s designed to avoid recomputations for parts of layout that haven’t been affected.

To achieve this the system is designed to use a hierarchical invalidation propagation, with a way for different components to “absorb” particular changes. For example if a width of a child element changes under an element that has a fixed width itself, the changed width will not propagate beyond that point.

At the same time it will trigger sufficient invalidations that will result in necessary recalculations - even though the width might not have direct effect on parent’s width, it can affect its height though more complex relationships (like text wrapping) and the layout system needs to be able to handle that.

Overall, this will lead to the new UI framework being more responsive, taking less of your system resources (particularly CPU time) and having significantly lower impact on your framerate, while allowing us to build elegant, beautiful and powerful UI’s on top of it.



[h2]What’s Next?[/h2]

With the layout computation system for UIX being worked out and now implemented, we'll be moving to the final stage of the implementation. There are still many things to implement with the new system, but nearly all the hard parts (the layout in particular) are in place now, so the system should be ready to replace the existing UI framework soon.

Thanks again for checking out the weekly update. We hope we’ll have more to share about the UI system soon, it’s been taking long enough, but we appreciate your patience and support. Thank you guys, you’re all awesome!