Neos is now available in 9 languages! Dynamic Variable System ready to use.
Hello and welcome back to the Neos Weekly Update!
This week we thank all of our wonderful translators who’ve been working hard this week! Thanks to them Neos is now available in 9 different languages! We’ve got some more technical stuff in this update so check it out below as well.

[h2]Thank you, Translators![/h2]
The Neos UI is now available in multiple languages! It’s been a long-requested feature to add translations to the UI and with it now being implemented, we’ve seen a large number of community members contributing translations of Neos into other languages.
We haven’t expected to see this many so soon, but we’re really excited by your enthusiasm in helping to make Neos more comfortable for non-native English speakers. As a small thank you, we’ll be giving everyone who contributed a 25 GB bump in storage.
On our official Discord we also have a new Translators role, so we can notify whenever there are new strings to be translated. If you’d like the role, just ask a team member to assign it to you! We’d also like to shout out to all of the individuals involved in helping with this project!
A special thanks goes out to Orange for Japanese, Melnus for Chinese and Esperanto, Nammi for Icelandic and British English, MR Alex and Avunia for German, BlazeVR for Turkish, MirPasec, LUA and R3C0D3r for Korean and of course, a thanks to Frooxius for providing Czech! You can see a full list of contributors on the official GitHub repository.
We have also approved temporary addition of Metaverse Maker Contest strings by ProbablePrime, which will make the voting UI of this community-held contest available in different languages. However those will be removed once the competition is over.
[previewyoutube][/previewyoutube]
[h2]Stabilizing the dynamic variable system[/h2]
The dynamic variable system was originally introduced for the new World UI, but it has been designed for general use. However since we weren’t fully settled on some parts of its design, we have recommended to be careful with its usage due to potential breaking changes.
This week we have finalized those parts and the system should now be ready! One of the major additions is the ability to directly bind variable spaces by their name. This allows variables to link up with a particular space in their parent hierarchy, even if there’s a closer DynamicVariableSpace to them.
Each world is now also setup with a space named “World” at the root and each user with one called “User”, which allows for convenient scoping of variables within each user or within the whole world.
To achieve this linking, we have reserved all Unicode symbols and punctuation, except spaces, periods and underscores for a custom syntax. If you used those symbols in your variable names then you’ll need to change them, but otherwise your existing setups will be unaffected.
If you want a variable to bind to a particular space, simply prefix it with the name of the space and a forward slash, like “User/Health” for example. We’ll keep extending the syntax in the future to allow for things like optional bindings, binding multiple names and potentially more complex pattern matching.
[previewyoutube][/previewyoutube]
We have also added LogiX nodes to work with the new system, to greatly simplify and modularize setups. You can implicitly use dynamic variables as inputs. The system will automatically link up with the variable and trigger changes whenever the variable changes. This process is designed to be highly efficient and avoid expensive look-ups.
Other nodes allow to dynamically read variables from a target hierarchy and write them back. For the variables to be readable or writable, there needs to be a backing storage in the target hierarchy, for example the DynamicVariable component. However you can also use WriteOrCreateDynamicVariable node which will create this backing storage for you if it doesn’t exist.
We hope that this new system will open up a lot more efficient and flexible approaches to building interactive content in Neos and we can’t wait to see what you’ll make with it! If you run into any issues or problems, please let us know!
[h2]Sampling Color in LogiX, improving localization system and more[/h2]
As usual we have made a variety of small additions, tweaks and bugfixes to Neos over the week. Notably there is now a new LogiX node “Sample Color”, which lets you sample a visible color from a point and direction in the world, like a small color probe. Note that this is a relatively expensive operation as it renders a very tiny image of the scene and should be used only sparingly.
As part of the improvements to the new localization system we have also made contributions to the MessageFormat.NET library which implements the ICU MessageFormat syntax. Its simplified plural formatter has been replaced with a proper implementation of the ICU standard.
This ensures that the printed numbers can be grammatically correct depending on the language and allows one to one porting of the proper pluralization algorithms defined in Unicode CLDR. For example in English when decimal numbers are visibly printed, the nouns will be pluralized correctly: “1.0 items” instead of “1.0 item”.
We have also added several more pluralizers to increase the coverage of the languages and made some other additions and improvements. If you’d like to use the library with those improvements for your own project, you can get our fork here at GitHub.
[h2]Community Highlights[/h2]
[h3]Updated Kinect Tracking Driver by Groxxy[/h3]
Groxxy has brought us an updated version of the Kinect tracking drivers which includes support for the 11 point tracking in Neos! It does so by emulating 8 tracking points, which is an improvement from the usual 3 reserved for hips and feet. Now the Kinect software can capture elbows, chest, knees as well as hips and feet for a true full-body tracking experience and much more realistic avatars! Thank you Groxxy!
[previewyoutube][/previewyoutube]
[h3]Everyone working on MMC creations![/h3]
You are all working so hard, that you all deserve a huge shoutout from the Neos team! Neos team members who are not judges have been able to visit some of your worlds while you’re working, and we know you’re giving it your all! Only 10 days left until the end of the MMC! Keep going, everyone!

[h2]What’s Next?[/h2]
Our main goal right now are optimizations and related features for Neos. We have started investigation into upgrading to BEPUv2 and other optimizations, but ran into some initial snags (check out the #devlog channel on Discord for details).
However there are dozens of different optimizations planned, some major and minor, with more to be discovered as we keep profiling and finding bottlenecks, so Neos should get progressively smoother as time goes!
Thank you again for reading the Neos Weekly Update! We want to thank our Patrons for bringing Neos up to $9000 a month this past week. This project would not be able to survive without you!
This week we thank all of our wonderful translators who’ve been working hard this week! Thanks to them Neos is now available in 9 different languages! We’ve got some more technical stuff in this update so check it out below as well.

[h2]Thank you, Translators![/h2]
The Neos UI is now available in multiple languages! It’s been a long-requested feature to add translations to the UI and with it now being implemented, we’ve seen a large number of community members contributing translations of Neos into other languages.
We haven’t expected to see this many so soon, but we’re really excited by your enthusiasm in helping to make Neos more comfortable for non-native English speakers. As a small thank you, we’ll be giving everyone who contributed a 25 GB bump in storage.
On our official Discord we also have a new Translators role, so we can notify whenever there are new strings to be translated. If you’d like the role, just ask a team member to assign it to you! We’d also like to shout out to all of the individuals involved in helping with this project!
A special thanks goes out to Orange for Japanese, Melnus for Chinese and Esperanto, Nammi for Icelandic and British English, MR Alex and Avunia for German, BlazeVR for Turkish, MirPasec, LUA and R3C0D3r for Korean and of course, a thanks to Frooxius for providing Czech! You can see a full list of contributors on the official GitHub repository.
We have also approved temporary addition of Metaverse Maker Contest strings by ProbablePrime, which will make the voting UI of this community-held contest available in different languages. However those will be removed once the competition is over.
[previewyoutube][/previewyoutube]
[h2]Stabilizing the dynamic variable system[/h2]
The dynamic variable system was originally introduced for the new World UI, but it has been designed for general use. However since we weren’t fully settled on some parts of its design, we have recommended to be careful with its usage due to potential breaking changes.
This week we have finalized those parts and the system should now be ready! One of the major additions is the ability to directly bind variable spaces by their name. This allows variables to link up with a particular space in their parent hierarchy, even if there’s a closer DynamicVariableSpace to them.
Each world is now also setup with a space named “World” at the root and each user with one called “User”, which allows for convenient scoping of variables within each user or within the whole world.
To achieve this linking, we have reserved all Unicode symbols and punctuation, except spaces, periods and underscores for a custom syntax. If you used those symbols in your variable names then you’ll need to change them, but otherwise your existing setups will be unaffected.
If you want a variable to bind to a particular space, simply prefix it with the name of the space and a forward slash, like “User/Health” for example. We’ll keep extending the syntax in the future to allow for things like optional bindings, binding multiple names and potentially more complex pattern matching.
[previewyoutube][/previewyoutube]
We have also added LogiX nodes to work with the new system, to greatly simplify and modularize setups. You can implicitly use dynamic variables as inputs. The system will automatically link up with the variable and trigger changes whenever the variable changes. This process is designed to be highly efficient and avoid expensive look-ups.
Other nodes allow to dynamically read variables from a target hierarchy and write them back. For the variables to be readable or writable, there needs to be a backing storage in the target hierarchy, for example the DynamicVariable component. However you can also use WriteOrCreateDynamicVariable node which will create this backing storage for you if it doesn’t exist.
We hope that this new system will open up a lot more efficient and flexible approaches to building interactive content in Neos and we can’t wait to see what you’ll make with it! If you run into any issues or problems, please let us know!
[h2]Sampling Color in LogiX, improving localization system and more[/h2]
As usual we have made a variety of small additions, tweaks and bugfixes to Neos over the week. Notably there is now a new LogiX node “Sample Color”, which lets you sample a visible color from a point and direction in the world, like a small color probe. Note that this is a relatively expensive operation as it renders a very tiny image of the scene and should be used only sparingly.
As part of the improvements to the new localization system we have also made contributions to the MessageFormat.NET library which implements the ICU MessageFormat syntax. Its simplified plural formatter has been replaced with a proper implementation of the ICU standard.
This ensures that the printed numbers can be grammatically correct depending on the language and allows one to one porting of the proper pluralization algorithms defined in Unicode CLDR. For example in English when decimal numbers are visibly printed, the nouns will be pluralized correctly: “1.0 items” instead of “1.0 item”.
We have also added several more pluralizers to increase the coverage of the languages and made some other additions and improvements. If you’d like to use the library with those improvements for your own project, you can get our fork here at GitHub.
[h2]Community Highlights[/h2]
[h3]Updated Kinect Tracking Driver by Groxxy[/h3]
Groxxy has brought us an updated version of the Kinect tracking drivers which includes support for the 11 point tracking in Neos! It does so by emulating 8 tracking points, which is an improvement from the usual 3 reserved for hips and feet. Now the Kinect software can capture elbows, chest, knees as well as hips and feet for a true full-body tracking experience and much more realistic avatars! Thank you Groxxy!
[previewyoutube][/previewyoutube]
[h3]Everyone working on MMC creations![/h3]
You are all working so hard, that you all deserve a huge shoutout from the Neos team! Neos team members who are not judges have been able to visit some of your worlds while you’re working, and we know you’re giving it your all! Only 10 days left until the end of the MMC! Keep going, everyone!

[h2]What’s Next?[/h2]
Our main goal right now are optimizations and related features for Neos. We have started investigation into upgrading to BEPUv2 and other optimizations, but ran into some initial snags (check out the #devlog channel on Discord for details).
However there are dozens of different optimizations planned, some major and minor, with more to be discovered as we keep profiling and finding bottlenecks, so Neos should get progressively smoother as time goes!
Thank you again for reading the Neos Weekly Update! We want to thank our Patrons for bringing Neos up to $9000 a month this past week. This project would not be able to survive without you!