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?
Making the new UI both simple, yet powerful
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.
Help us shape the design of the new UI
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!
UIX framework is nearing its completion
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.
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.
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!
New versioning scheme
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 <year>.<month>.<day>.<minute of the day>. 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!
Community Highlights
Campfire by Dusty
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!
Valentines by GearBell
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!
What’s Next?
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!
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!
0utsider’s CHIP-8 emulator!
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
Avatar pose offsets for more flexible setups
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.
More reliable 3D model import
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.
Steam Audio branch
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.
General additions, optimizations and bugfixes
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!
Layout system for UIX
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.
What’s Next?
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!
Our community has brought us a ton of new content! Users have recreated the Prop Hunt game from GMod, another group is building interactive D&D tabletop system called DelVR and there’s an airship game being built with crafting system and customizable ships. So many wonderful projects this week!
We’re getting very close to the UIX framework being completed and replacing the old Unity UI system! The 100% CPU usage issue has been mitigated, memory leaks from saving worlds fixed and the load/save process now uses less CPU and memory overall.
Our graphics designer has built a simple 3D modelling tool completely in Neos. There were some smaller additions as well, like new LogiX node for getting UV coordinates from raycast hit or internal audit log for helping diagnose cases of deleted or overwritten worlds in emergencies.
As always we will be talking about these new features during our weekly livestream, so please come join us! The livestream will be tonight at 3 PM PST (6 PM Eastern). We will be playing the Prop Hunt game on the stream so you can see it in action!
Community Highlights
D&D GameMaster systems by DelVR
DelVR is an amazing project brought to Neos by ChrisWarner103 and ToMo, who are seeking to give players an immersive system to play games like Dungeons and Dragons within VR. They have released their second devlog video, detailing the interactive GameMaster systems they have built. This video is a must-watch, this project is amazing!
Prop Hunt - Medra and Creator Jam participants!
Medra’s weekly Creator Jam had an awesome theme last week: re-creating the beloved hide-and-seek game Prop Hunt, where players would hide as an object while hunters would seek them out, looking for things that seem out of place.
This has been one of the best Creator Jams so far and everyone seems to love to play this game in Neos. Well done everyone!
These two have been hard at work creating an amazing way to build, using triangles and some very clever LogiX to create a polygon building system! Yet another amazing system to show that game development is not only possible within Neos, but can be quite fun! Awesome work guys!
Progress on the new UI framework
The new UI framework, internally named UIX (a joke combination of UI, UX and Neos’ naming scheme adding onto LogiX, BaseX, CodeX, PostX and others), is now heavily in its implementation phase!
The new system is already producing visual output and has most of the major building blocks implemented. It might not look as much on the testing videos, but there is quite a lot going on under the hood, as the system is designed to efficiently handle complex UI’s and layouts without significantly impacting the performance.
Any changes to the UI are collected and registered synchronously as they happen, with minimal amount of computational work on the main thread. The heavy lifting of propagating the updates, sorting items, computing layout and geometry is then done on background threads, spreading the work onto other CPU cores and avoiding stalling the main thread and freezing all the visuals.
The system already handles masking and has a clever way of splitting the layout hierarchy into multiple “graphics chunks” - mostly independent pieces that calculate their own geometry in parallel and isolate the changes happening within the UI to reduce the overall amount of computation needed for each update.
For example the root of a scroll region will become its own graphic chunk, so instead of having to recalculate the geometry to shift all the vertices, the whole chunk is just moved. Graphic chunks are also used to implement masking, naturally splitting the geometry into regions with their own stencil buffer parameters.
Because the graphic chunks can be easily dynamically created and removed anywhere within the hierarchy, we can also implement auto-balancing optimizations. If the system notices a part of the layout frequently changing, while other parts remain static, it will simply insert a graphic chunk at the right point in the hierarchy and isolate the recomputations only to the frequently changing parts.
More memory optimizations and 100 % CPU usage fix
After more reports of memory leaks caused by saving worlds, part of the save and load procedures have been rewritten to be significantly more efficient and work around a memory leak in a BSON library that is currently being used.
Thanks to this loading into worlds and saving them should now be smoother, taking less CPU time and significantly lower amount of RAM, reducing the stutters and the memory used when saving worlds will now get properly reclaimed, preventing the RAM usage from bloating over time.
We have also tweaked the video playback engine selection after the introduction of youtube-dl integration. This should significantly mitigate random 100% CPU usage reported by many users. The change will now favor native Unity playback engine to better utilize system’s native video decoding (including HW acceleration) when playing YouTube videos in Neos and avoid triggering the CPU usage bug in the 3rd party libVLC playback engine.
Simple 3D modelling tool
Aegis_Wolf, our graphics designer, has built a simple 3D modelling device completely in Neos! You can build models out of triangles or quads, with vertex snapping and coloring and using several symmetry modes.
The built model can then be then baked into a single mesh and used as any other model inside of Neos, even exported into FBX or made into an avatar. Aegis is still actively working on this tool, so expect more additions and updates. If you’d like to play with it, you can find it in Neos Essentials or the MTC Art Room.
New LogiX nodes and audit log
We have gotten some new LogiX node contributions from Coffee! There are two new operator nodes x2 and x3 for quickly squaring and cubing numbers. There’s also HitUVCoordinate node under the Physics category, which allows extracting a UV coordinate from a raycast that hit a mesh collider, allowing for some potentially interesting applications.
Neos backend now also has an audit log for any changes being done to worlds and items. This will help us investigate worlds or items disappearing and provide a safety net to restore accidentally overwritten or deleted items and worlds.
However this is meant only for emergency use-cases. If you have important creations you don’t want to lose, it’s a good idea to keep backed up copies and versions of those. In case you lose something you can’t recover, contact Neos staff and they’ll be able to help you.
What’s Next?
There is still quite some work to do on UIX, the new UI framework, namely layout components, interactions and implementing a proper set of components and behaviors so it can fully replace the current hybrid Unity UI system, but after the long design phase it’s finally in the last stretch.
We expect that the swap will happen sometime next week and usher a new era of lag-less inspectors and allow us to finally begin on overhauling the UI visuals and interactions to make Neos significantly easier to use for both new and existing users.
Thank you again for joining us on this week’s edition of the Weekly Update! We hope to see you all at our livestream tonight. And thank you again to all of our Patreon supporters and creative users, without you this project wouldn’t be the same!
Hello again everyone! This week’s update showcases useful new features such as youtube-dl integration, which significantly improves the reliability of importing video links from a variety of video services. We've also added lip-tracking support for upcoming modules that can track facial expressions.
We’ll be talking about these wonderful new features during our Friday livestream on Twitch as well as showcasing the lip tracking live in Neos! It will be a little late tonight, around 5 PM PST (8 PM Eastern). Tune in to hang out, and ask questions!
Youtube-dl Integration
We’ve heard a lot of users requesting integration of this helpful module for a while now, as previously we were unable to play copyrighted or encrypted YouTube videos within Neos.
Now with the integration of youtube-dl this has changed, allowing users not only play most YouTube videos, but also adding direct import support many other media sources, such as YouTube livestreams, Vimeo, Twitch, Mixer, Soundcloud, and more. It's as simple as copying the URL and pasting into Neos!
This will also help decrease downtime when YouTube breaks compatibility with services such as ours. We can simply update the youtube-dl binary in a new build!
Aegis watching several live YouTube livestreams from the Duluth, Minnesota
HTC Lip Tracking Module
HTC has generously loaned us their lip tracking module. Frooxius was quick to implement it into Neos, so when this technology becomes mainstream, it'll work right away.
Most avatars in Neos work seamlessly with this tracker out of the box by utilizing and mapping pre-existing visemes for basic mapping. We have also added components which make it easy to quickly map common expressions and emotions to blend shapes on your avatar.
All the raw data from the lip tracking module is also fully exposed and can be used with LogiX (our visual scripting language) to drive complex blend shapes on the avatar, as well as quickly prototype and build applications right inside of VR.
Community Highlights
"The Directory" by ProbablePrime
A plethora of user created content can be found in The Directory. From silly pictures and games to useful tools. Save these folders to your inventory, and enjoy our users' wonderful creations!
Poké Balls by GearBell
GearBell has made yet another wonderful creation: Functional Poké Balls to capture friends! Grab a Poké Ball, scoop up friends, and show them off through its little window. The Poké Balls can be found in her world "Pokemon Battle Stadium".
What’s Next?
After long engineering and design phase, the new UI framework, dubbed UIX, is now being implemented! There’s still a fair bit of engineering going on during the initial stages of implementation, but things are now falling into place.
This will replace the current Unity UI framework, significantly improving performance and giving us the control we need to overhaul Neos’ UI to be more user friendly and look prettier. Expect some news on this soon!
Thanks for joining us again for our weekly update. If you have any questions about the features discussed, please join us during our Twitch stream! We’re nearing closer and closer to the long-awaited UI update, so stay tuned for the weekly updates to come!
Welcome back! This weekly update will be about the Metaverse Training Center. The Metaverse Training Center, or MTC for short, has been and still is a long and challenging project. It’s goal is to give the gift of knowledge to all users on the various tools that Neos provides. Currently, there are three completed rooms, and many more planned for the future.
We talked about the MTC and more during our Friday Twitch stream tonight at 3PM PST (6PM EST). Thanks for join us and hanging out! We always love having you with us!
Metaverse Training Center
After a long bout of hard work, the beginning of the Metaverse Training Center is now open for users to explore. Frooxius, Nexulan, Aegis and Coffee have all been working hard at putting this special world together with the ultimate goal of teaching new and old users how to use the features of Neos to their fullest extent.
The entirety of the MTC was all assembled inside Neos, from the placing of buildings, objects and videos, all the way down to the programming of functioning items such as the Avatar Builder all with LogiX. Frooxius has handled the majority of the programming, Nexulan handling the art direction and rounding up the team, Aegis with the modeling of the buildings, and Coffee created our instructional signs that guide our new users throughout the MTC! These guys are amazing, so show them some love at our Twitch stream tonight!
Avatar Creation Room
Users can learn all about avatars in this room! There are videos showing how to add basic modifications to your avatars as well as a video on uploading and setting up an avatar for use within Neos. If you’d like, you can even get and customize your own Neos Bot avatar in the main room.
This room will be very useful in helping new users get used to the avatar setup process here in Neos. There are also a ton of accessories to adorn your avatar with, so come and give this room a visit!
Streaming Room
Are you a streamer? Want to learn how to show Neos off with our camera tools? The streaming room has a bunch of tools at your disposal ranging from Twitch and Mixer video streamers, instructions on camera tools and the Twitch chat panel, and even special logix nodes for Twitch stream chat commands.
There’s an instructional video on utilizing the streamer camera done by our wonderful Nexulan, and shot by our amazing new team-member Theofilus. You can even pick up some of the same props we use in our own official Neos livestreams, such as the floating Neos logo which contains chat-driven particle effects, the popcorn maker, and the fan to keep you cool!
Art Room
This wonderful location holds fine pieces of art created by our users. You can find all sorts of inspiration, materials, and special tooltips for creating your masterpiece right here in Neos!
There’s even an easel so you can practice with the different materials and tips as you see fit. When you draw on it, your lines and convex hulls will actually stick to the easel automatically. Give it a shot!
If you want to dabble with Neotoshop, made by our very talented Neos Team member Coffee, you can find it near the easel. It’s a wonderful feat of Logix programming that allows you to save a copy of your artwork as a flat image! You can also find Neotoshop in your inventory's Neos Essential Tools section in the PolyLogiX folder.
Neos Textbook Released in Czechia
For the past half year, doc. Petr Klán has been working on a textbook “How to build worlds in the Neos Metaverse” for teachers and students, in collaboration with Frooxius. The book was finally released in Czech this week and work is underway on an English translation.
The textbook walks the reader through the basics of virtual reality, Neos and related game development concepts. It is based on doc. Petr Klán’s VR1 course at the Czech Technical University in Prague, in which students learn to build content in VR, import models, create particle systems, materials and finally script interactivity with LogiX.
This is a very exciting step for us, because it eases adoption of Neos in schools. Once the English version is translated, we’ll share the ebook version publicly as well.
Community Highlights
This week’s highlights are all about nostalgia! Come give these memorable locations a visit!
Reactant’s fan recreation of the Room of the Rain
The famous Room of the Rain from VRChat has received a fan-recreation within Neos! Reactant has been working hard at recreating the world, building the exterior from scratch both in blender and within Neos itself using the prim creating tools. Come give it a visit!
Wauf!’s FF7 Cosmo Canyon recreation
Complete with beautiful lighting, atmospheric sounds and a remastered track of the original location in Final Fantasy 7, Wauf has done a great job in making this world into a cozy atmosphere!
What’s Next?
With the focus on MTC, optimizations and lots of different bug reports, tweaks and requests, the new UI framework has unfrotunatelly taken a back seat in the meanwhile, but now it’s shifting back to be the main focus.
However we have also received some good news, HTC will be lending us the lip tracking module for next few days, so we can integrate it with Neos for their upcoming hackathon in London. Combined with the eye tracking, this should provide the next level of avatar immersion and support for a wide variety of hardware.
Thank you all for joining us again for our weekly update! We can’t wait to see and hear from you during our stream tonight, please come and ask questions and give comments. Nex will once again be our lovely host as usual! See you there!
First public version of Metaverse Training Center is out! :smile: It is a new official tutorial center for new and existing users, built by @Nexulan, @Aegis_Wolf, @Coffee, @Theofilus the Folf and me.
New users will now automatically spawn there, replacing the old tutorial. You can also access it from the Dash using Worlds -> Metaverse Training Center.
This is the first minimal viable version of it, we'll be expanding it with more rooms, features and improvements and a full narrative introductory experience, but you can already play with it. Feedback is welcome!
Also tons of bugfixes! More coming (as well some other feature requests I have in backlog, sorry I didn't include them in this build, I tried to, but I have to go to sleep now).
New Features:
- Added "Metaverse Training Center" to the Neos dash under "Worlds", allowing quick access to the new tutorial hub for Neos! - The new Metaverse Training Center now automatically loads for new users at startup, replacing the old outdated video tutorial at the beginning
Tweaks:
- Updated Precache data to use latest asset variants (this includes the new MTC, Content Hub, common fonts and other assets) - When VideoTextureProvider is disabled, Neos will not load the video until it's Enabled and if the video is already loaded it will pause playback regardless of it's playing state -- This allows for optimizing video loading without affecting playback status - Added network message dumping when receiving invalid message, which allows further diagnostic
Bugfixes:
- Added file move retry logic and copy fallback when moving assets in the cache -- This fixes record syncing breaking in some cases and getting stuck (reported & logs provided by @Rukio) - Added guard against leaking exceptions when running user profile change events (discovered in log from @Shifty) -- This fixes not being able to set default avatar when there's an error and similar future issues (reported by @Zane, @Shifty and @H3BO3) - Fixed Inventory not always cleaning up user profile events, resulting in resource leak and the error above (discovered in log from @Shifty) - Fixed exception when creating RenderTexture and disposing it before creation is finished and potential resource leak (discovered in log from @Shifty) - Fixed exception in CopyTransformFromWorld when the transform source has been disposed (discovered in log from @Rubik) - TwitchChatDialog and NeosButton will now hide themselves when they get corrupted to indicate the breakage - Fixed TwitchChat leaking resources and not always deinitializing properly - Added extra diagnostic information for opening worlds (to help diagnose issue reported by @Enverex , @SmolCookie) - Fixed unhandled exception when handling exception in the session processing, causing whole Neos/headless to crash (reported by @Enverex) - Fixed unhandled exception in headless when a world crashes (reported by @Enverex) - Fixed unhandled exception when user disonnects from a session on a world that has already been disposed in the meanwhile (discovered in a log from @Enverex) - Fixed exported audio and video files not having an extension and being hidden (reported by @Shifty) - Enter and Tab keys on the virtual keyboard now ignore the shift key, fixing them not reacting when shift/caps-lock is active - Fixed several tooltips (Glue, RawDataTooltip and others) not respecting TipReference (reported by @Aegis_Wolf and @Shifty) -- This should fix using those tooltips with the tooltip multiplexer - When host receives invalid/corrupted network message, Neos will now just disconnect the client that sent it, rather than crashing the whole world (based on report by @Enverex) - Fixed Userspace avatar proxy corruption resulting in avatar duplication when transferring avatar with SimpleAvatarProtection from one world to another (big thanks for @Alex from Alaska for investigation, previously reported by @ProbablePrime and others) - Added a delay to video stream loading - it will wait until the world has ran long enough, the framerate has stabilized and a few seconds after last stream loads -- This should fix stream videos not loading properly when loaded during the world startup - Fixed exceptions coming from userspace tool proxies when shutting down Neos (reported by @Turk)
Hello again folks! Welcome back to our weekly update, where we keep you up to date on our progress and community creations. We have a very interesting milestone to report this week, as a public project in Scheibbs, Austria has utilized Neos for their election!
This evening, Karel, Co-founder and CEO of Solirax Neos will be joining us for the first time on our livestream to hang out with the community. He'll be answering questions on a lot of the business topics of Neos like NCR and our ICO. Feel free to join us either on Twitch or in Neos and say hi!
Scheibbs, Austria Elections using Neos
This past week, Scheibbs, a town in Austria known for it's long history of support for new technologies, has utilized Neos in its elections! The citizens of Scheibbs were given the opportunity to wear a VR headset and view the different architectural versions of bridges from within Neos.
The citizens would walk around on the bridge and judge how each one would look from a real first-person perspective. The 3 bridge designs would be loaded up for citizens to walk around in and allowed them to see the bridge from multiple perspectives, superimposed over a 3D scan of the environment.
This marks the worlds first municipality vote which took advantage of VR to help citizens make a more informed decision! Neos and the VR headset used were very well received with the citizens of Scheibbs, and will possibly be utilized in further elections in the future!
The winning design is the Tetratop bridge design shown below. We're so proud to have been a part of your elections, Scheibbs! Thank you for using Neos!
Karel joining Livestream to talk about NCR and ICO
Karel will be finally joining our Livestream tonight, showing off his wonderful new avatar Gearbell created for him. He'll be answering your questions about the financial future of Neos, how NCR is progressing and about our ICO as well as any other questions about using Neos in business you may have. Please join us tonight either in Neos or in the Twitch stream chat and say hello!
Metaverse Training Center
After a lot of time and effort, the Metaverse Training Center is being finished up for its first release. We've got the Avatar creation room, Art room and Streamer rooms set up, with the World Building room coming soon!
This world will be the first destination for new users to learn the ins and outs of using Neos, and will be easily accessible by everyone once it is complete. There are many build streams archived, so if you're curious how it looks and what our building process is like, check them out on our Twitch or YouTube.
Memory Leaks Fixed
We've fixed many problems regarding memory leaks and have optimized how memory is utilized in a few ways. One optimization is the addition of the SlimList internal data structure which doesn't allocate memory if the list is empty or has one element (a very common scenario).
LogiX is using this list system now for operators and outputs, making them a lot more memory efficient in most cases as well as other parts of Neos' internal datamodel. Lots of fixes and optimizations to make your Neos experience much smoother!
Community Highlights
Fan-made Minecraft block placing system with functioning redstone
Fans of Creative Mode will absolutely love this! Thanks to Anomalous, RueShejn, Shifty, LucasRo, Turk, Medra and Vigilabo, the community has a fun way of building Minecraft style worlds.
Lucas even made functioning redstone. It acts like true Minecraft redstone in how it interacts with other objects such as levers and lamps.
RueShejn remade a very popular Minecraft survival map in Neos called Skyblock. It's in the published worlds list so go give it a visit.
What's Next?
Currently we're finishing the first version of the Metaverse Training Center for its initial release. There are only a few things to do before you'll be able to jump in and explore. It will also serve as a framework for learning resource in Neos and we'll keep expanding and improving it as we go, incorporating your feedback as well.
The new UI framework for Neos is also currently being engineered, which will fully replace the old one, heavily improve performance and allow for building a lot more user friendly and better looking UI's. Join our Discord to check out the #devlog channel to get the latest behind the scenes sneak previews.
Thank you all for joining us this week for the first weekly update of 2020. We can't wait to share the bigger updates with you this year such as the UI, physics, screenshare and lots of others. Remember to join us this evening for our Friday Twitch stream.
Pushing out some small additions, tweaks and bugfixes!
New Features:
- Added "World Saved" event node (based on request by @Rukio) - Added multi-input version of the - (subtract) node (based on request by @Turk) - Added % progress of syncing to the Neos exit screen (based on suggestion by @BlaXun | Ingo) - Added "Remove All Instances" button to SimpleAvatarProtection, which allows quick removal of all instances of this component on the SimpleAvatarProtectio (based on feedback by @Erk)
Tweaks:
- When spawning new multi-type LogiX nodes, initial variant prefers versions with datatypes in order of dummy -> float -> int -> regular (based on feedback from @ProbablePrime and @Shifty) - More Interactive camera settings are now saved (Avoid Occlusion, Movement Wobble, Hide Badge, Hide Lasers and others) (based on feedback by @ProbablePrime) -- Hide Camera is not saved, to avoid confusion when enabling the camera - Added "Hide Slicers" property to PBS Slice materials, which allows easily temporarily disabling the slicers without removing them all from the material
Bugfixes:
- Fixed incorrect rounding/flooring of negative numbers, causing random subtle errors (discovered with @Coffee) -- This fixes broken Neotoshop when changing its size, among other things - Fixed some userspace components being usable in a regular world (based on feedback from @Coffee and @Vigilabo) - Fixed some userspace dialogs (e.g. Session dialog) being duplicable, corrupting their function (based on report by @Rubik) - Fixed entire object getting destroyed when destroying a reference node under it and the object has an object root - Fixed Neos not exitting properly if there's an exception when disposing of the engine resources (reported by @Vigilabo , @GearBell, @BlaXun | Ingo and others)
Notes: - I've looked more into the saving data memory leak, but there doesn't seem to be a significant leak in isolation right now, so it's likely involving something else
- Impulse source storage now also uses slimlist, reducing memory allocations when there's only a single source present - Added memory pooling to LogiX node packing, reducing memory allocations
Bugfixes:
- Fixed QuadMesh using incorrect rotation for the other side quad when using dual sided (reported by @Hayden (PolyLogiX - ZyroDesign)) - Fixed exceptions when trying to start async tasks on already disposed workers (discovered in log from @Vigilabo) - Fixed exception when disposing FocusManager - Fixed world not ending correctly when the link to that world from another has been disposed (discovered in log from @Vigilabo) - Added a guard for removed slots when packing LogiX nodes. This prevents exceptions breaking the packing process (based on issue reported by @SmolCookie) - Fixed TooltipMultiplexer using wrong tooltip offset if the multiplexed tooltip has an offset relative to it (based on report by @Aegis_Wolf)
More patch ups for bugs introduced by the rigorous resource cleanups and some more general memory/GC optimizations (especially when having lots of objects and LogiX)!
Optimizations:
- Implemented SlimList<T> internal data structure, a highly efficient list that avoids allocations when storing just 0 or 1 elements -- LogiX Operators and Outputs now use this for their internal storage, making them in most cases a lot more memory efficient -- Slots now use this for internal child management as well, removing allocations when they have only a single child (or none)
Bugfixes:
- Added protection to instantiating the wrong generic type to some common components (based on feedback by @Anomalous) -- This is just temporary solution that doesn't catch all cases, BE CAREFUL when picking a generic data type - Disposed slots/workers will no longer return any components when queried, preventing bugs resulting from accessing disposed parts of hierarchy -- This fixes lasers/tools/hand-menus breaking in some cases (reported by @Alex from Alaska, @Hayden (PolyLogiX - ZyroDesign) , @IAMERR0R404 and @alex derpy avali 🐦 ) - Slots, SyncBags, SyncLists and SyncDictionaries now clear their internal collections when disposed, this prevents more bugs and strange behaviors due to accidental accesses to disposed elements and allows for better GC by breaking up the references - Fixed AvatarLiveIndicator preventing avatar badges from displaying and the default one not getting cleaned up properly (reported by @LeonClement and @Shifty) - Fixed update and change events sometimes running on components that were disposed, but haven't gone through the destruction cycle yet - Fixed Logix inputs not correctly unregistering themselves from inputs (this should fix crash/freeze when working with LogiX reported by @Vigilabo ) - Fixed TouchValueOption<T> hover indicator getting stuck after the element is selected