1. Neos VR
  2. News
  3. 2020.7.31.1099 - Custom Persistent Session URLs, Session Info access and more

2020.7.31.1099 - Custom Persistent Session URLs, Session Info access and more

I'm sorry there's not more stuff again, I ended up refactoring and extending the world/session announcing systems and things related to them as preliminary for the new World UI.This brings some new powerful functionality that you can utilize already.

A semi-major addition is support for custom persistent session ID's. This allows you to setup sessions on headless that will always be hosted on the same URL. There is also new component SessionInfoSource, where you can fill ID of a session and it will automatically fill it with live data of the session (if it's running, what is its name, how many users it has and so on), so you could create hubs or portals in your worlds that will automatically link to specific headless sessions.

This component was added thanks to a new event propagation system, which allows components to efficiently listen to session updates for particular worlds or specific sessions, which will be used by the upcoming world browser and other UI's/behaviors.

There are a bunch of optimizations as well, one major issue causing the background threads to starve was fixed and the cloud updates moved to separate asynchronous thread from the main game loop, hopefully this will improve things a fair bit. I hope to bring more stuff to you soon and get the new World UI done ASAP.

[h2]New Features:[/h2]
- Added support for custom persistent SessionIDs in the format : for the headless client, using new customSessionId parameter
-- This allows you to create permanent URLs and links to the session, which will always open it whenever it's running (even if you restart headless) (requested by @Rue Shejn | Artist 3D, @Nexulan, @Aegis_Wolf | Art Director, @jasonmo for Metamovie, @Enverex and many others previously)
-- This can be combined with the new "SessionInfoSource" component to update in-game objects based on the state of the session
-- userId needs to be your own (hosting user), you cannot use anyone else's
-- customText can only contain alphanumeric characters, "-" (dash) and "_" (underscore)
-- Example: U-FrooxLess:My-Custom-Session
-- Note that the actual session ID is always prefixed with "S-", for above example the session ID will be: S-U-FrooxLess:My-Custom-Session
- Extended the session fetching system to support local monitorying by associated world ID or session ID (this is mostly internal change that allows for new systems to be built on top)
- Added SessionInfoSource component under "World", which will automatically populate information from fetched data of a session with given ID
-- This can be utilized to build in-game behaviors and visuals based on whether the session is active or not, how many users it has, to get the thumbnail URL and more
-- Also this component can be used a world link input for Open World nodes

[h2]Tweaks:[/h2]
- Moved Cloud interface update cycle (including event dispatch) to another thread with a fixed update time rather than being tied to the main loop to avoid it affecting the framerate and running updates unecessarily often
- When typing custom type for generic instantiation of component, you can now omit the "FrooxEngine." at the start (based on feedback by @Earthmark)
- MeshCollider and ConvexHullCollider will now auto assign mesh from a MeshRenderer if it's present when attached (requested by @Enverex)
- Changed wrong default height of the capsule mesh from 1 to 2, that made it look like a sphere
- Session info now includes the ID of the corresponding record of the hosted world if it's public (this is mainly internal change at this point, which will allow linking the live session to the published world that's being hosted)
- Unified dispatching of world discovery events, preventing random glitches with discovered sessions and unecessary duplication of work
- Unified session info fetching system, automatically merging session information gathered from LAN and cloud, improving behavior when sessions are available on both and simplifying the system by not having two entries for the same session
- When joining sessions, direct connection on LAN will now always be prefered over NAT Punthrough over the internet if available
- Some internal moderation improvements in the cloud
- Upgraded to Unity 2019.4.6f1 (from 2019.4.5f1)

[h2]Bugfixes:[/h2]
- Added Mesh URL to logging of any processing errors to help diagnose problems better (based report by @Enverex)s
- Fixed Interactive Camera dialog causing freeze when exiting Neos (reported by @Davwyn through @Shifty | Quality Control Lead)
- Fixed background processing tasks getting starved when caching records during intensive inventory operations (e.g. creating inventory folder link, reported by @Vigilabo)
-- This can potentially fix UI breaking reported by others users as well (@ProbablePrime, @bobotron, @Rukio and others)
- Fixed WorldAnnouncer potentially misbehaving due to timezone or time changes and not properly announcing worlds