Introducing Cloud Variables, interviewing Creator Jam, over concurrent 300 users
Hello and welcome to another of our weekly updates!
We have very exciting updates for you. This week we have released our Cloud Variable system, a new powerful tool for persistence independently of objects and worlds, allowing you to sync settings across worlds and avatars, build world with progression system, synchronize values between your private UI and the world in real time, sync data across sessions and instances of items and much more!
The system is designed for many different use cases and usage patterns, to learn more about how you can start using it, check out the details below.
The weekly Creator Jam has also reached the magical number 100! On our last Friday live stream, we have interviewed Medra, VegasX and Cataena to learn more about Creator Jam, their background and experiences, if you missed the interview definitely give it a watch!
In more great news, we have reached over 300 concurrent users a few days ago! Our community has been constantly growing for past two and half years and we're very excited every time we reach a new record number. While it's not as high as the absolute peak at the New Years, it's one that appeared organically almost out of nowhere.
We also showcase some amazing community creations and events, like a brand new MurderX game by the Japanese community, DJ event and talk about new mentor applications. Check out the details below!

Creator Jam is the longest running weekly collaborative event on Neos started by Medra. Every Sunday users both old and new come together to build something fun and awesome based on a theme. Last Sunday, the Creator Jam hit the magical 100 - a hundred creator jams!
In preparation for this amazing achievement, we have interviewed Medra along with VegasX and Cataena on our last Friday stream, to learn more about their background, how they got to Neos, Creator Jam and their experiences. If you missed the live stream, watch the interview here:
[previewyoutube][/previewyoutube]
This week, we have implemented a new powerful system for persistence, dubbed cloud variables! While persisting individual objects and worlds is at the core of Neos, sometimes it’s necessary to persist and synchronize data across multiple objects, worlds and sessions for each user and that’s where the cloud variables come in!
We have designed this system with a high degree of flexibility, making it useful for several different scenarios and workflows, from being able to sync settings and toggles on objects, avatars and worlds across sessions without having to save a separate copy to your inventory, saving a state, scores and progression in game worlds, to syncing state across multiple worlds and sessions or between your private Userspace UI and the world or tagging users by external applications for custom tailored experiences and events.
[previewyoutube][/previewyoutube]
This way one powerful system tackles multiple different problems that content creators and event organizers have been facing for a while, adding to the repertoire of powerful world building tools and improving the overall user experience.
[h2]Variable Definitions and Variable Values[/h2]
To understand the cloud variables, you must first understand two core concepts - what are variable definitions and what are variable values. To use a variable in your creations, you must first create a definition - a structure of said variable - its name, data type, default value and access permissions.
Variable definitions can be owned by both users and groups, with the latter having greater flexibility in both the usage patterns, permission settings and higher limit for number of definitions. To create a definition, you’d use following commands:
Once a definition is created, a value can be stored and read for every individual user and group based on this definition. Typically as content builder, you’d define variables for your worlds and items, for example “Quality.Shadows” if you’d like users to be able to toggle shadows on and off in your world.
Within the world, you’ll then link the fields, for example the Enabled boolean of the shadow casting light to the cloud variable using the CloudValueVariableDriver component, using the full path of the variable you have created.
The full path is obtained by prefixing the ID of the user or group who owns the variable definition to the variable name. For example if you have created the variable definition “Quality.Shadows” on your user account with ID “U-MyUsername”, the full path will be “U-MyUsername.Quality.Shadows”.
Neos will then sync the boolean to the corresponding value of each user and automatically update their cloud variable if they change the setting, without you having to do anything extra!
[h2]Read, Write and List Permissions[/h2]
To provide control over how the variable values and definitions are used and give them a lot of their flexibility in access patterns, each variable definition has a list of read, write and list permissions.
Read and Write permissions do pretty much what you’d expect them to - control who can read the value and who can write to it. The List permission is specifically for the variable definition and determines who can see a given definition on the profile of the owner (group or user). By default this is private, allowing you to create private variables that nobody will know that they exist, unless you publish their name somewhere.
Currently following permissions are available, with each permission type supporting any combination of these (although some are redundant):
There is also an important distinction between User and Group variable definitions - variables defined by Users can only have variable_owner or variable_owner_unsafe write permission. This means that you cannot write the value on behalf of another user - they can only do that themselves.
This still lets you make items and worlds with settings, toggles and other persistent state for each individual user, but disallows for usage patterns where you (or someone else) modifies those values without the user being present - e.g. tagging them for an event. You will need to use Groups for that.
[h2]Supported data types[/h2]
Currently cloud variables support all the basic Neos primitives - numbers, booleans, vectors, colors, matrices, strings and URLs. Picking the right data type is important, as it ensures that any stored values are properly validated - e.g. when you pick float3, the User won’t be able to store arbitrary string.
The string datatype specifically allows for additional validation - you can specify maximum length, using string: as the datatype. For example string:8 won’t allow strings that are longer than 8 characters.
By default, string can be 256 characters, but you can manually increase this limit to 8192. We’ll likely revisit those limits in the future and provide a way to increase them. We also plan to allow for more complex datatypes as well, such as arrays and other collections.
Here is the full list of supported primitives:
[h2]Cloud variable management commands[/h2]
Currently cloud variables are created and managed using commands sent to the Neos account in your Contacts list. Alternatively you can use the AdminX (requires .NET 5.0 runtime) tool bundled with the Steam installation (under Tools folder), which lets you type those commands directly - if you use that one omit the forward slash.
Here is the list of commands you can use:
[h2]Usage patterns[/h2]
To get started, here are a few samples for some common usage patterns for the cloud variable that you can use and how to set them up:
[h3]User settings and toggles[/h3]
You can use this pattern to create items and worlds that have user-customizable settings that persist/sync across sessions or to have toggles for your own avatars (e.g. switching clothing options that persists without having to save the avatar itself).
For example this will allow you to create a toggle for fancy graphics in your world that persist:
Then use component CloudValueVariableDriver to drive whatever you need in the world to toggle the fancy graphics on and off and make a visual toggle that toggles the boolean value. That’s all you need, once the user toggles the value, the state will automatically be synced to their cloud variable value!
[h3]Controlling avatar/world options securely from private UI (dash)[/h3]
If you’d like to make private UI to control settings in your worlds or on your avatar without any gadgets in the world being able to alter the value for you, you can use similar pattern to above:
This will allow the variable to be read in the world, but won’t allow the world to write the value. However you can still make a custom UI as a Facet and place it on your dash to control it. Neos will sync the value in real time!
[h3]Globally syncing state across worlds/items[/h3]
If you’d like to control some aspect of your world across all of its sessions or perhaps display a global announcement/message on an item you distribute (for example when there’s a new version available), you could use the following pattern:
Once you set this up, use the CloudValueVariable component to get the current value. Instead of getting the value for each individual user, you get the value owned by the same group:
Then set the value as such:
/setGroupVarValue MyGroup gadget.globalMessage “Eat plenty of fruits!”
If you don’t own a group, you can use similar pattern with user variables too and simply link the component to the variable value of your user account:
[h3]Tagging users for events[/h3]
If you’re hosting an event and you’d like to assign different users different roles and trigger things to happen depending on their role. You can do following:
Make sure that your sessions are hosted by an account that is part of the MyGroup so it can read the variable value. Once you have this setup, you can tag users, either using the command or in the future through the API with OAuth 2.0 integration:
You can read the current variable using the ReadCloudVariable LogiX node, by firing an impulse with the path of the variable, ID of the user who joined and then perform arbitrary logic based on its value.
[h2]Current limitations of real time synchronization of cloud variables[/h2]
One of the current limitations of the cloud variable system is that they won’t be synchronized in real time across different sessions, unless they run on the same host/user. If you host multiple worlds/sessions on a single headless (or your own computer), the changes to the cloud variable will sync in real time within those sessions.
However if different users host the same world, changes in one world won’t be immediately reflected in another and will take a few minutes to refresh. Our current plan is to add full real time synchronization in such cases by integrating SignalR into our cloud infrastructure, which will help the cloud scale better for other things like active sessions or the messaging system as well, but is a bigger chunk of work.
Even with this current limitation the cloud variables should be a very powerful and flexible tool for many use cases and one that will grow as we continue pushing forward. We’re just at the beginning of its possibilities and we can’t wait to see all the awesome stuff you’ll make with it!
Hello everyone! Your friendly neighborhood Turk is here! I hope your weekend was fun because boy was Neos jam packed this weekend! Let dig into some of the goodies!
[h2]Community Achievements[/h2]
Guess what happened this week folks? We hit the milestone of 300 users organically this week! Not without other platforms just having issues and using Neos as an alternative! We had about 3-4 different music events this weekend on top of folks just checking out the platform! This means so much for us and Neos as a platform going forward as well too! This means we are going to have more Mentors and more things are in store too soon(™)

[h2]Community Maps[/h2]
[h3]MurderX by NEJ and NOF[/h3]
A recreation and upgrade of a popular game mode across multiple platforms, it’s MurderCross! In this map you can actively live build, and live create your murder map, allowing you to have templates or all kinds of interesting setups, so you not beholden to just one map all the time! Thanks Neos East Japan and Neos Onaka Force! This map is sooo cool!

https://twitter.com/mikan3134/status/1385171527319101441
[h3]CJ 100: Ghost Talk & Centijampaede[/h3]
This week at Creator Jam we have Creator Jam 100! That means the folks at CJ have done 100 events where every week they have had a creation theme different each week! This week they went through all previous 100 jams to find the goodies and treats that folks really enjoyed from past jams, along with a surprise! Some folks at the CJ have been hard at work this week to make Ghost Talk! A game akin to Jar’s Spirit Speak from VRC, we now have our own version in Neos! So grab a bunch of friends and hop in and try to see how you can hint what cards are which to you friends. (P.S Yes the hints are still horrible, good luck)

[h2]Community Events[/h2]
[h3]Rebirth[/h3]
Some folks from the Wave Community have been starting to run shows in Neos! This is only the start of the weekend parties that will usually happen in VR! Orchestrated and Assisted by Rez in “Rez-A-Light” folks got together and got their boogie down in Neos!

[h3]The Bassarisk[/h3]
This weekend on Saturday we had a DJ event that is run by Kulza and has a different DJ each time! This week we had FuzeWasTrash doing some nice Synthstep tracks for folks to dance and groove too. It was pretty popping, there were people dancing on bread!

[h3]Secret Sky Saturday[/h3]
This weekend was Porter Robinson’s Music Festival Secret Sky. Being well known in the VR Community, it’s a VR Music Festival that folks can throw on a headset and chat and tune into a live performance all within the confines of a nice session to chill and chat with friends. We had about a couple different watch parties full to the brim with a whole collective of users!

[h3]Neos hit 300: More Mentors Unlocked[/h3]
Congrats Neos you did it! You achieved the secret (not so secret achievement) We now can onboard more mentors to be a part of the Mentor Program! Mentors are a mixture of Community Helpers but also Community Guides and help keep Neos with its charm and community. If you're interested in joining and want to help with the community, feel free to put in an application! https://wiki.neos.com/Mentors If you want to know more and contribute to helping out Neos!

---------------------------------------------------------
Anyway that's all for this update! And as usual, huge thanks to you, our community, Patrons and everyone else for supporting this project. Without you none of this would be possible and we couldn't dedicate our time to improving the platform every day. See you next week for more Neos news!

We have very exciting updates for you. This week we have released our Cloud Variable system, a new powerful tool for persistence independently of objects and worlds, allowing you to sync settings across worlds and avatars, build world with progression system, synchronize values between your private UI and the world in real time, sync data across sessions and instances of items and much more!
The system is designed for many different use cases and usage patterns, to learn more about how you can start using it, check out the details below.
The weekly Creator Jam has also reached the magical number 100! On our last Friday live stream, we have interviewed Medra, VegasX and Cataena to learn more about Creator Jam, their background and experiences, if you missed the interview definitely give it a watch!
In more great news, we have reached over 300 concurrent users a few days ago! Our community has been constantly growing for past two and half years and we're very excited every time we reach a new record number. While it's not as high as the absolute peak at the New Years, it's one that appeared organically almost out of nowhere.
We also showcase some amazing community creations and events, like a brand new MurderX game by the Japanese community, DJ event and talk about new mentor applications. Check out the details below!



Interview with Medra, VegasX and Cataena from Creator Jam
Creator Jam is the longest running weekly collaborative event on Neos started by Medra. Every Sunday users both old and new come together to build something fun and awesome based on a theme. Last Sunday, the Creator Jam hit the magical 100 - a hundred creator jams!
In preparation for this amazing achievement, we have interviewed Medra along with VegasX and Cataena on our last Friday stream, to learn more about their background, how they got to Neos, Creator Jam and their experiences. If you missed the live stream, watch the interview here:
[previewyoutube][/previewyoutube]
Introducing Cloud Variables
This week, we have implemented a new powerful system for persistence, dubbed cloud variables! While persisting individual objects and worlds is at the core of Neos, sometimes it’s necessary to persist and synchronize data across multiple objects, worlds and sessions for each user and that’s where the cloud variables come in!
We have designed this system with a high degree of flexibility, making it useful for several different scenarios and workflows, from being able to sync settings and toggles on objects, avatars and worlds across sessions without having to save a separate copy to your inventory, saving a state, scores and progression in game worlds, to syncing state across multiple worlds and sessions or between your private Userspace UI and the world or tagging users by external applications for custom tailored experiences and events.
[previewyoutube][/previewyoutube]
This way one powerful system tackles multiple different problems that content creators and event organizers have been facing for a while, adding to the repertoire of powerful world building tools and improving the overall user experience.
[h2]Variable Definitions and Variable Values[/h2]
To understand the cloud variables, you must first understand two core concepts - what are variable definitions and what are variable values. To use a variable in your creations, you must first create a definition - a structure of said variable - its name, data type, default value and access permissions.
Variable definitions can be owned by both users and groups, with the latter having greater flexibility in both the usage patterns, permission settings and higher limit for number of definitions. To create a definition, you’d use following commands:
/createUserVar
/createGroupVar
Once a definition is created, a value can be stored and read for every individual user and group based on this definition. Typically as content builder, you’d define variables for your worlds and items, for example “Quality.Shadows” if you’d like users to be able to toggle shadows on and off in your world.
Within the world, you’ll then link the fields, for example the Enabled boolean of the shadow casting light to the cloud variable using the CloudValueVariableDriver component, using the full path of the variable you have created.
The full path is obtained by prefixing the ID of the user or group who owns the variable definition to the variable name. For example if you have created the variable definition “Quality.Shadows” on your user account with ID “U-MyUsername”, the full path will be “U-MyUsername.Quality.Shadows”.
Neos will then sync the boolean to the corresponding value of each user and automatically update their cloud variable if they change the setting, without you having to do anything extra!
[h2]Read, Write and List Permissions[/h2]
To provide control over how the variable values and definitions are used and give them a lot of their flexibility in access patterns, each variable definition has a list of read, write and list permissions.
Read and Write permissions do pretty much what you’d expect them to - control who can read the value and who can write to it. The List permission is specifically for the variable definition and determines who can see a given definition on the profile of the owner (group or user). By default this is private, allowing you to create private variables that nobody will know that they exist, unless you publish their name somewhere.
Currently following permissions are available, with each permission type supporting any combination of these (although some are redundant):
- definition_owner - variable can be read/written only by the user/group who owns the definition. This lets you make variables that you write/read on behalf of other users/groups and can be useful for tagging purposes - e.g. event organizer will create variable definition that can be written to only by them and write values to assign given user a role or trigger specific behavior in LogiX
- definition_owner_unsafe - same as above, but can be read/written in “unsafe” contexts - e.g. public worlds. Requires presence of the user owning the definition
- variable_owner - variable can be read/written by the user/group who owns the value. This means the user can change/read their own value based on the definition. Even if you own the definition, this means that you cannot read/write it, only the user can! The value can also only be read/written only in a safe context - currently the Userspace (private UI)
- variable_owner_unsafe - same as above, except the value can be read/written in “unsafe” contexts - e.g. in a public world. It requires the presence of the user owning the value, but anything in the world can access the value. This is useful for things like settings or saving progress in a game world - but please note that it technically allows for cheating, by the user writing arbitrary value and so you should avoid using it for anything sensitive.
- anyone - the variable can be read/written by absolutely anyone, without the user being present. This is generally recommended only for read/list permissions, as writes will allow anyone to mess with the value arbitrarily (unless that’s what you want)
There is also an important distinction between User and Group variable definitions - variables defined by Users can only have variable_owner or variable_owner_unsafe write permission. This means that you cannot write the value on behalf of another user - they can only do that themselves.
This still lets you make items and worlds with settings, toggles and other persistent state for each individual user, but disallows for usage patterns where you (or someone else) modifies those values without the user being present - e.g. tagging them for an event. You will need to use Groups for that.
[h2]Supported data types[/h2]
Currently cloud variables support all the basic Neos primitives - numbers, booleans, vectors, colors, matrices, strings and URLs. Picking the right data type is important, as it ensures that any stored values are properly validated - e.g. when you pick float3, the User won’t be able to store arbitrary string.
The string datatype specifically allows for additional validation - you can specify maximum length, using string: as the datatype. For example string:8 won’t allow strings that are longer than 8 characters.
By default, string can be 256 characters, but you can manually increase this limit to 8192. We’ll likely revisit those limits in the future and provide a way to increase them. We also plan to allow for more complex datatypes as well, such as arrays and other collections.
Here is the full list of supported primitives:
bool,
sbyte, short, int, long,
byte, ushort, uint, ulong,
float, double, decimal,
float2, float3, float4,
double2, double3, double4,
int2, int3, int4,
uint2, uint3, uint4,
long2, long3, long4,
ulong2, ulong3, ulong4,
floatQ, doubleQ,
bool2, bool3, bool4,
color,
float2x2, float3x3, float4x4,
double2x2, double3x3, double4x4,
datetime, timespan
string,
string:
[h2]Cloud variable management commands[/h2]
Currently cloud variables are created and managed using commands sent to the Neos account in your Contacts list. Alternatively you can use the AdminX (requires .NET 5.0 runtime) tool bundled with the Steam installation (under Tools folder), which lets you type those commands directly - if you use that one omit the forward slash.
Here is the list of commands you can use:
-- /getUserVar - lists definition
-- /getGroupVar
-- /getUserVarValue () () - gets current value of given variable for given user
-- /getGroupVarValue ()
-- /setUserVarValue () - sets current value of given variable for yourself
-- /setGroupVarValue () - sets current value of given variable for specific user
-- /listUserVars () - lists all variable definitions
-- /listGroupVars
-- /createUserVar - creates new user variable definition
-- /createGroupVar - creates new group variable definition
-- /setUserVarType - sets the datatype of given variable definition
-- /setGroupVarType
-- /setUserVarDefaultValue - sets the default value for given definition
-- /setGroupVarDefaultValue
-- /setUserVarPerms - sets read/write/list permissions for given variable definition
-- /setGroupVarPerms
[h2]Usage patterns[/h2]
To get started, here are a few samples for some common usage patterns for the cloud variable that you can use and how to set them up:
[h3]User settings and toggles[/h3]
You can use this pattern to create items and worlds that have user-customizable settings that persist/sync across sessions or to have toggles for your own avatars (e.g. switching clothing options that persists without having to save the avatar itself).
For example this will allow you to create a toggle for fancy graphics in your world that persist:
/createUserVar myWorld.fancyGraphics
/setUserVarType myWorld.fancyGraphics bool
/setUserVarPerms myWorld.fancyGraphics read,write variable_owner_unsafe
Then use component CloudValueVariableDriver to drive whatever you need in the world to toggle the fancy graphics on and off and make a visual toggle that toggles the boolean value. That’s all you need, once the user toggles the value, the state will automatically be synced to their cloud variable value!
[h3]Controlling avatar/world options securely from private UI (dash)[/h3]
If you’d like to make private UI to control settings in your worlds or on your avatar without any gadgets in the world being able to alter the value for you, you can use similar pattern to above:
/createUserVar myAvatar.glowColor
/setUserVarType myAvatar.glowColor color
/setUserVarPerms myAvatar.glowColor read variable_owner_unsafe
/setUserVarPerms myAvatar.glowColor write variable_owner
This will allow the variable to be read in the world, but won’t allow the world to write the value. However you can still make a custom UI as a Facet and place it on your dash to control it. Neos will sync the value in real time!
[h3]Globally syncing state across worlds/items[/h3]
If you’d like to control some aspect of your world across all of its sessions or perhaps display a global announcement/message on an item you distribute (for example when there’s a new version available), you could use the following pattern:
/createGroupVar MyGroup gadget.globalMessage
/setGroupVarType MyGroup gadget.globalMessage string
/setGroupVarPerms MyGroup gadget.globalMessage read anyone
/setGroupVarPerms MyGroup gadget.globalMessage write definition_owner
Once you set this up, use the CloudValueVariable component to get the current value. Instead of getting the value for each individual user, you get the value owned by the same group:
Path = G-MyGroup.gadget.globalMessage
VariableOwnerId = G-MyGroup
Then set the value as such:
/setGroupVarValue MyGroup gadget.globalMessage “Eat plenty of fruits!”
If you don’t own a group, you can use similar pattern with user variables too and simply link the component to the variable value of your user account:
/createUserVar gadget.globalMessage
/setUserVarType gadget.globalMessage string
/setUserVarPerms gadget.globalMessage read anyone
/setUserVarPerms gadget.globalMessage write variable_owner
Path = U-SomeUser.gadget.globalMessage
VariableOwnerId = U-SomeUser
[h3]Tagging users for events[/h3]
If you’re hosting an event and you’d like to assign different users different roles and trigger things to happen depending on their role. You can do following:
/createGroupVar MyGroup experience.role
/setGroupVarType MyGroup experience.role string
/setGroupVarPerms MyGroup experience.role write definition_owner
/setGroupVarPerms MyGroup experience.role read definition_owner_unsafe
Make sure that your sessions are hosted by an account that is part of the MyGroup so it can read the variable value. Once you have this setup, you can tag users, either using the command or in the future through the API with OAuth 2.0 integration:
/setGroupVarValue MyGroup experience.role U-Visitor VIP
You can read the current variable using the ReadCloudVariable LogiX node, by firing an impulse with the path of the variable, ID of the user who joined and then perform arbitrary logic based on its value.
[h2]Current limitations of real time synchronization of cloud variables[/h2]
One of the current limitations of the cloud variable system is that they won’t be synchronized in real time across different sessions, unless they run on the same host/user. If you host multiple worlds/sessions on a single headless (or your own computer), the changes to the cloud variable will sync in real time within those sessions.
However if different users host the same world, changes in one world won’t be immediately reflected in another and will take a few minutes to refresh. Our current plan is to add full real time synchronization in such cases by integrating SignalR into our cloud infrastructure, which will help the cloud scale better for other things like active sessions or the messaging system as well, but is a bigger chunk of work.
Even with this current limitation the cloud variables should be a very powerful and flexible tool for many use cases and one that will grow as we continue pushing forward. We’re just at the beginning of its possibilities and we can’t wait to see all the awesome stuff you’ll make with it!
Community Highlights
Hello everyone! Your friendly neighborhood Turk is here! I hope your weekend was fun because boy was Neos jam packed this weekend! Let dig into some of the goodies!
[h2]Community Achievements[/h2]
Guess what happened this week folks? We hit the milestone of 300 users organically this week! Not without other platforms just having issues and using Neos as an alternative! We had about 3-4 different music events this weekend on top of folks just checking out the platform! This means so much for us and Neos as a platform going forward as well too! This means we are going to have more Mentors and more things are in store too soon(™)


[h2]Community Maps[/h2]
[h3]MurderX by NEJ and NOF[/h3]
A recreation and upgrade of a popular game mode across multiple platforms, it’s MurderCross! In this map you can actively live build, and live create your murder map, allowing you to have templates or all kinds of interesting setups, so you not beholden to just one map all the time! Thanks Neos East Japan and Neos Onaka Force! This map is sooo cool!

https://twitter.com/mikan3134/status/1385171527319101441
[h3]CJ 100: Ghost Talk & Centijampaede[/h3]
This week at Creator Jam we have Creator Jam 100! That means the folks at CJ have done 100 events where every week they have had a creation theme different each week! This week they went through all previous 100 jams to find the goodies and treats that folks really enjoyed from past jams, along with a surprise! Some folks at the CJ have been hard at work this week to make Ghost Talk! A game akin to Jar’s Spirit Speak from VRC, we now have our own version in Neos! So grab a bunch of friends and hop in and try to see how you can hint what cards are which to you friends. (P.S Yes the hints are still horrible, good luck)

[h2]Community Events[/h2]
[h3]Rebirth[/h3]
Some folks from the Wave Community have been starting to run shows in Neos! This is only the start of the weekend parties that will usually happen in VR! Orchestrated and Assisted by Rez in “Rez-A-Light” folks got together and got their boogie down in Neos!

[h3]The Bassarisk[/h3]
This weekend on Saturday we had a DJ event that is run by Kulza and has a different DJ each time! This week we had FuzeWasTrash doing some nice Synthstep tracks for folks to dance and groove too. It was pretty popping, there were people dancing on bread!

[h3]Secret Sky Saturday[/h3]
This weekend was Porter Robinson’s Music Festival Secret Sky. Being well known in the VR Community, it’s a VR Music Festival that folks can throw on a headset and chat and tune into a live performance all within the confines of a nice session to chill and chat with friends. We had about a couple different watch parties full to the brim with a whole collective of users!


[h3]Neos hit 300: More Mentors Unlocked[/h3]
Congrats Neos you did it! You achieved the secret (not so secret achievement) We now can onboard more mentors to be a part of the Mentor Program! Mentors are a mixture of Community Helpers but also Community Guides and help keep Neos with its charm and community. If you're interested in joining and want to help with the community, feel free to put in an application! https://wiki.neos.com/Mentors If you want to know more and contribute to helping out Neos!

---------------------------------------------------------
Anyway that's all for this update! And as usual, huge thanks to you, our community, Patrons and everyone else for supporting this project. Without you none of this would be possible and we couldn't dedicate our time to improving the platform every day. See you next week for more Neos news!


