1. Neos VR
  2. News

Neos VR News

2021.8.26.1129 - Various bugfixes for BEPUv2 upgrade

Hello everyone! Just a small patch, fixing up some bugs found with the BEPUv2 upgrade! I've got more coming, but I wanted to get those out first. If you find any more, please make a report on GitHub!

This build is compatible with previous one so no need to update, unless you want the bugfixes right away of course!

[h2]Optimizations:[/h2]
- Added some inlining compiler hints for vector and quaternion types for potential extra optimizations

[h2]Tweaks:[/h2]
- Meshes with invalid vertices (e.g. NaN or Infinity) will now have triangles/points affected by those filtered, rather than filtering out the entire mesh
-- This preserves collisions with the rest of the geometry that's still valid when there are a few stray invalid vertices

- Merged Dutch translation update by @AnotherFoxGuy

[h2]Bugfixes:[/h2]
- Fixed step up logic for CharacterController getting blocked by colliders with CharacterCollider set, but that do not actually cause collision response (e.g. Trigger or No Collision), resulting in it randomly breaking (reported by @Veer | CMO)
- Fixed step up logic not working when character collision is enabled for given locomotin module
- Fixed applying forces/impulses or other velocity changes to CharacterController that do not actually change the existing velocity causing the ground supports to be cleared, resultig in no traction (character being slippery) (reported by @Hayden, GH #2858)
- Fixed InstallLocomotionModule keeping the global transform of the installed module, rather than local one, causing it to be offset, rotated and scaled when installed on the user (reported by @Shifty | Quality Control Lead, GH #2856)
- Zero-width spaces (U+200B) are now respected when layout out text for rendering (reported by @Earthmark and @kazu0617 Neos:kazu)
- Fixed mesh colliders for extremelly large meshes (e.g. with vertices at 1e+38f offset) corrupting the physics simulation and resulting in a crash (reported by @orange and @kazu0617 Neos:kazu, GH #2855)
-- Those mesh colliders are now simply ignored and won't be part of the simulation
- Added workaround for some meshes producing invalid convex hulls (reported by @Kal)
- Invalid mesh vertices will no longer produce empty convex hull, but will simply be filtered out

Metaverse Maker Competition 2021 by Creator Jam - September 1st to October 1st

[h2]Introduction[/h2]
Come take part in the excitement with the biggest contest in Neos ever—Metaverse Maker Competition. More prizes, More categories. More fun. Work collaboratively or alone. Create whatever you wish: worlds, games, avatars, effects, code, gadgets, tools…

Since MMC2020 Neos’ community has doubled: more features, more documentation, and lot’s more talented people. We’re super excited to see the crazy stuff you all will make!

Special thanks to our sponsors: Neos(Solirax), Engi, DeliriousJax, ViARsys, Tekno Catron, Elektrospy, Ultranique, guillefix, Storm_DPD, IDA, Havok, Canadian Git, Jason, Laygeaux, Medra, Anomalous, orange, Shadow Panther, rhenium, ProbablePrime, June, Lazhannya, Mentalish, Rabbuttz, kazu, anythingitdoesnt, Firr, Komdog, Kung Fu Monkey, reddragon, FRICK, ukilop, Cataena, komashiba, GONT_3, Zaytha, Dante, LucasRo7, MotoMaid, Vegasx, Tom, Rezillo Ryker, Toxic_Cookie, StabbyDerg, Beaned.



[h2]Quick Info[/h2]
[h3]Requirements[/h3]
Free entry. Anyone can participate. Individuals or groups allowed.

[h3]Date[/h3]
September 1st - October 1st 2021.

[h3]Prizes[/h3]
  • 40,000+ NCR (~$7800) Total
  • 150,000 CDFT Total
  • Official Badges (supported by Neos)
  • Digital Trophies
  • 25GB Cloud Storage


Prize is in the form of NCR (not USD) and CDFT. More info on both can be found here.

Prizes are split by category and placement (1st, 2nd, 3rd, and honorable mention).

[h2]9 Total Categories[/h2]
  • World: Social - environments focused on social gatherings and groups
  • World: Game - worlds that are games
  • World: Misc - any world that doesn’t fit into the Social or Game subcategory.
  • Avatar: Avatars - if the avatar is equippable, it counts
  • Avatar: Accessories - any wearable item for use with avatars such as equibbables, clothes, user interfaces, etc...
  • Avatar: Misc - anything avatar related that doesn’t fit into Avatars or Accessories subcategory such as avatar creators, avatar animation systems, etc…
  • Other: TAU - objects that create additional functionality such as tools, apps, and utilities.
  • Other: Misc - any object that doesn’t fit into the Tools such as weapons, code, special effects, music, art, etc…
  • Meme - humor and parody category. Works will be a form of parody and comedic use so any asset is acceptable.


[h2]Entry Submission[/h2]
All entries are submitted as a World Orb. Information on how to submit an entry is in the rules and here

[h2]Timeline[/h2]
Start Date – Begin Creating.
End Date – Submitted as a World Orb tagged with "mmc21” and category name.
Voting/Judging Period – Explore submissions. Participate in the audience vote.
Winners Announcement – Participants gather together. Winners are announced and prizes awarded on the Creator Jam Twitch Stream inside Neos.

[h2]Important Dates[/h2]
Start Date: September 1, 2021 14:00 EST (UTC 18:00) Wednesday
End Date: October 1, 2021 14:00 EST (UTC 18:00) Friday

Audience Voting Begins: October 2, 2021 14:00 EST (UTC 18:00) Saturday
Audience Voting Ends: October 11, 2021 14:00 EST (UTC 18:00) Monday

Winner’s Announced: October 16, 2021 14:00 EST (UTC 18:00) Saturday

[h2]Prizes Breakdown[/h2]
Each category has a First, Second, Third Place winners, and Honorable Mentions:

Winners


[h2]Rules[/h2]
By participating, you agree to be fully unconditionally bound by these Rules. In addition, you agree to accept the decisions of the MMC Team, as final and binding as it relates to the contest.

[h2]Registration[/h2]
All participants must register to be entered in the Metaverse Maker Competition 2021.

Registration start and end date are the same as the competition:
Start Date: September 1, 2021 14:00 EST (UTC 18:00) Wednesday
End Date: October 1, 2021 14:00 EST (UTC 18:00) Friday

Register here: https://forms.gle/2SuqzgmmjJuijrBRA

[h2]Participation Rules[/h2]
  • Multiple entries are allowed.
  • Teams are allowed. Participants can be on multiple teams. Every team should have a lead. Team lead is the primary contact and determines prize breakdown among the team. Ensure you’ve entered team information as a part of your registration.
  • Sponsors can participate.
  • Judges cannot participate.
  • MMC team members cannot participate.
  • Neos team members can participate but cannot place or receive prizes. If a member of the Neos team joins the team, the team cannot place or receive prizes.


Entry Requirements

All entries must follow the Neos guidelines. Information about the Neos guidelines can be found here.

[h2]Contest Period[/h2]
Participants start creating on the Start Date. This is in the spirit of the competition.

[h2]Permitted[/h2]
  • Thinking of ideas and formulating a team is fine beforehand.


[h2]Not Permitted[/h2]
  • Everything else. This includes but is not exclusive to acquiring assets, building assets, writing, and coding.


[h2]Credits[/h2]
Credits should be displayed somewhere easily seen or able to be found easily in the world. Include:
  • Creators / Collaborators
  • Playtesters
  • Assets Used and their Creators:
  • Models, Sounds, Textures, Materials, Fonts, Music
  • The Entry licensing (see here)


[h2]Assets and Copyright[/h2]
Any assets used must be credited properly with appropriate licensing stated.
  • Turbosquid and CGTrader licenses do not allow use in Neos.
  • Minecraft asset’s license does not allow commercial use in Neos (contests, etc…)
  • A list of websites that are not allowed will be compiled as more information is known.
  • No Unauthorized copyrighted material.
  • Fair use is allowed but major caution is advised. Fair use is a very misunderstood subject. If fair use is used incorrectly, your entry will be disqualified. For more information on fair use and copyright go here.
  • Rips, re-skins and kitbashing of copyrighted materials are not fair use.


[h2]Licensing and Permissions[/h2]
The Entry itself can use a variety of licensing and permissions. It is strongly recommended to use one of the following licenses:

  • Creative Commons Attribution 4.0 International (CC BY 4.0) license https://creativecommons.org/licenses/by/4.0/
  • Creative Commons Public Domain 1.0 Universal (CC0 1.0) license https://creativecommons.org/publicdomain/zero/1.0/


Permissions in The Entry can be restricted in such a way to not allow the content to be copied. This is very important for certain asset licensing that is not CC-BY or CC-0. It is the Participant’s responsibility to make sure they use and understand the proper licensing for assets and The Entry. Any violation can result in disqualification.

[h2]Entry Submission[/h2]
  • All submissions are in the form of a submitted (published) World Orb properly tagged.
  • All world orb submissions must be tagged with "mmc21" in their tags.
    • You can add this by editing the world metadata through its world orb and adding the "mmc21" tag.
    • Ensure the tag is entered exactly as it appears here. Each tag must be a separate word delineated with a comma. Case sensitivity and spelling are very important.
  • All world orb submissions must be tagged in the appropriate category:
    • “world”, “social”
    • “world”, “game”
    • “world”, “misc”
    • “avatar”, “avatars”
    • “avatar”, “accessories”
    • “avatar”, “misc”
    • “other”, “tau”
    • “other”, “misc”
    • “meme”
  • If a world orb has multiple, incomplete, or no tags, the entry will be placed in a category that the MMC 2021 team chooses. This may not be the same as the creator intended.
  • All entries must be submitted before the End Date or they will be disqualified.
  • Do not make any edits to submitted worlds after the End Date or during the judging period or they will be disqualified.


[h2]Entry Recommendations[/h2]
Factors that will be preferred and can help benefit during the judging. Entry recommendations are not required.
  • Original works
  • Open source
  • Building “from scratch”
  • The Entry and all assets within are public domain or Creative Commons Attribution 4.0 International (CC BY 4.0) license https://creativecommons.org/licenses/by/4.0/
  • Open permissions within the world (ie. Builder)


[h2]Judging[/h2]
The judge team will be announced at a later date. The Judging team consists of Neos and non-Neos vr users with varying skills and interests.
Works will be judged on creativity, skill, uniqueness, usefulness, and many other qualities.

[h3]Audience Vote[/h3]
Audience Voting Begins: October 2, 2021 14:00 EST(UTC 18:00) Monday
Audience Voting Ends: October 11, 2021 14:00 EST(UTC 18:00) Monday
  • During the audience voting period Neos users will be able to access the voting booths in multiple voting worlds inside Neos.
  • Any registered Neos user can vote during the 7 day audience voting period.
  • Each registered user can “thumbs up” as many entries as they choose.
  • The audience vote will add up to 49% of the scores of an entry. The remaining 51% will be decided by the judges.


[h2]Winner Selection and Notification[/h2]
Winner selection is a result of the audience vote and judging. Winners are announced and prizes awarded on the Creator Jam Twitch Stream inside Neos after the judging has been completed.

ANY VIOLATION OF THE OFFICIAL RULES BY ANY PARTICIPANTS WILL RESULT IN DISQUALIFICATION FROM THE COMPETITION AND ALL PRIVILEGES AND PRIZES WILL BE IMMEDIATELY REVOKED.


[h2]Prizes[/h2]
Prize is in the form of NCR (not USD), CDFT, Trophy, Badge, and/or 25GB Cloud Storage.

NCR is Neos’ in-game currency. CDFT is a token related to NCR. Information can be found for NCR here and for CDFT here.

Prizes will be distributed based on registration entry record.
If a registration entry record is missing, prizes will be given to the Entry Publisher Only.
The Team Lead determines if prizes are equally split to members.
Proper Neos usernames must be given to receive prizes.

[h2]Contact MMC Team[/h2]
Forward all questions to the MMC team:

  • message @Medra#4918
  • post in Creator Jam discord’s #mmc-2021 channel https://discord.gg/z8KjeAx
  • NeosVR discord’s #mmc-2021 channel https://discord.gg/QaGRvew


[h2]Additional Links[/h2]
MMC 2021 Registration
https://forms.gle/2SuqzgmmjJuijrBRA

Want to find a partner to work with? Go here:
https://docs.google.com/spreadsheets/d/1I5HImwwF312q3yMS2Gs93BPtp8igKNnNN6xwrnZj4o4/edit?usp=sharing

Metaverse Maker Competition 2021: Japanese Translation
special thanks to Litalita
https://docs.google.com/document/d/1obvajzDou_D6VLVaiL6O_qiObtaiQUIZhawW42uUWyo/edit?usp=sharing

Metaverse Maker Competition 2021: Korean Translation
special thanks to Holy Water
https://docs.google.com/document/d/1VvaayxQnDqNjTVfnIsEVjXe0ugtfTGA7wDjg1L_Vcc4/edit?usp=sharing

[h2]How to Tag, Save, and Publish an Entry:[/h2]
This is last years’ 2020 tutorial. The process is the same but categories are different. A new tutorial will be updated.

[previewyoutube][/previewyoutube]

[h2]Fair Use and Copyright[/h2]
Internet Copyright Infringement 5 Myths vs. Facts
Infographic

Understanding Copyright, Public Domain, and Fair Use
[previewyoutube][/previewyoutube]

Copyright infringement and fair use - The Basics for Art and Artists
https://www.artbusinessinfo.com/copyright-and-fair-use-for-artists.html

Debunking Copyright Myths
https://www.americanbar.org/groups/intellectual_property_law/publications/landslide/2018-19/july-august/debunking-copyright-myths/

[h2]Important Updates[/h2]
Please check the official document for latest information!
https://docs.google.com/document/d/1d8A8SjqvB5uLWQgceZBRTl0XeYc2aS2wYPOxAVyvHCo/edit#

------------------------------------------

[h2]BEPUv2 upgrade released to public[/h2]
Just a small note, today we have also finally released the BEPUv2 upgrade! We're going to talk about it some more in the next weekly update, both to avoid too many big topics in the weekly update and to polish up some last issues that are found by public use.

In the meanwhile, you can find more information in the release notes here: https://store.steampowered.com/news/app/740250/view/2944778418489689559

2021.8.25.1127 - Upgraded to BEPUv2 physics engine, new features, optimizations

Hello everyone! I've got a huge update for you this time! :smile: The upgrade from BEPUv1 to the BEPUv2 physics engine is now complete! BEPUv2 itself is a complete rewrite of the engine (the only thing it shares is a name and developer) and highgly optimized. The way Neos integrates with the engine has also been completely scrapped and rewritten.

In combination, this build brings numerous performance improvements (especially in collider heavy worlds and loading worlds), numerous improved interactions with colliders (less jitters, less passing through colliders at high velocities, no more bumpy colliders that are actually smooth, no more physics interactions lagging a frame behind or users getting dropped out of vehicles and many more) and even some new features!

For example we now support step up logic, making it easier to walk up not only small, but also really large obstacles. CharacterController can now use any shape and even simulate rotation and it will respect your height - if you crouch, you can now pass under obstacles! There's much more, including new collider types, check the details below.

Also importantly this upgrade lays foundations for futher optimizations and new features like full rigidbody support (that is NOT part of this update, although you can get simple rigid-body like behavior with CharacterControllers, you can learn more here: https://github.com/Neos-Metaverse/NeosPublic/issues/22). There's a lot more coming in the future, check out the Physics roadmap to see what's coming: https://github.com/Neos-Metaverse/NeosPublic/projects/19 As long as you understand the current limitations though, please have fun! :smile:

Hopefully you'll see a nice performance boost already though - it will probably depend on the situation and world - some worlds will see a significant boost, while others not as much. There are more optimizations planned however, so this is just an important step forward for those.

There's also a huge thanks to @Shifty | Quality Control Lead and her QC team for helping out catch all the early bugs, as well as @Danger Tester's who participated in the public testing: @Shadow Panther [RU/EN, UTC+3], @Beaned, @ohzee, @Zyzyl, @Alex from Alaska, @Snooper, @Pat cat, @LucasRo7, @Turk, @Enverex, @MattyK, @Cyro, @Modern, @1amNick, @Hayden, @Toxic_Cookie | NTC CEO, @Elizabeth Dayax , @Epsilion, @epicEaston197, @DrFrank, @TheBasementNerd (she/her), @Alex rainbowdashie, @Sloppy McFloppy , @Ian Corvid, @Kulza, @Tatsu Kimiero, @Sylva, @Gawdl3y#4269 and everyone who tested without reports

There might still be some bugs and such, but hopefully nothing too game breaking anymore. We'll fix anything that comes as we go, so please make a report on GitHub if you find anything!

Also note that initially some worlds might be a bit heavier on load, as existing content doesn't have the new asset variants generated. As those worlds are loaded and visited, this should get gradually better.

[h2]New Features:[/h2]
- Replaced the BEPUv1 physics engine with BEPUv2 (find more here: https://github.com/bepu/bepuphysics2) - prioritized due to being one of the top voted GitHub and Patreon issues (typically moving between 1st and 2nd place)
-- This is a complete rewrite ot the physics engine, the only thing it shares with BEPUv1 is the name and it's developer
-- This version of the engine is significantly more optimized, reducing CPU and memory usage
-- It uses its own memory management system, reducing stutters and performance loss caused by the Garbage Collector
-- Collider interactions are significantly improved, fixing numerous issues (e.g. some mesh colliders being bumpy despite having smooth surface and you should pass through colliders less)
-- Numerical stability of collisions has been improved, reducing jittering with large offsets and colliders or when you're very small
-- It's low level interface allows much more efficient integration with Neos and better fit the functionality with Neos' systems
-- This should fix Cylinder Collider hull sweep issues (reported by @H3BO3, GH #1083)
-- Reimplemented fast boolean sweeps directly into BEPUv2 in a more efficient manner, significantly reducing (potentially fully removing) memory allocations of those operations

- Re-engineered physics engine integration with Neos
-- This is a complete rewrite on how physics engine integrates with Neos for better efficiency and flexibility
-- BEPUv2 is significatly more tightly integrated with Neos, rather than being separate part, reducing performance overhead and simplifying fixing of issues and addition of new features
-- All existing colliders and interactions have been reimplemented for feature parity to preserve functionality of existing content
-- Main world interactions and colliders used for Haptic feedback are now completely separate simulations that also compute in parallel, improving performance

-- Parts of physics update now run asynchronously, improving the overall framerate
-- Moved/scaled transforms are now tracked separately for physics and other components
-- Implemented RaycastOne as natively supported operation, skipping any raycast tests for objects than the current nearest found hit and completely avoiding list allocations to hold the temporary results
-- Implemented SweepOne and BooleanSweepOne as natively supportd operations, analogous to RaycastOne
-- Expanded and re-ordered engine update stages for more consistent behaviors - physics now updates early in the stage, rather than late
--- This (in combination with other changes) fixes physics lagging a frame behind for non-host users when parented under fast moving objects (reported by @Hayden, @H3BO3, GH #2248)
-- Ensured that collider types properly sleep and avoid waking up each other, significantly reducing CPU usage in collider/trigger heavy worlds (e.g. Minecraft import maps)
-- IMPORTANT: BEPUv2 doesn't support Cone Colliders natively, Neos transparently emulates them with a convex hull, but they are less efficient as a result. It's generally recommended to user other primitive shapes where possible, but they will still work
-- ConeColliders being offset incorrectly is now fixed (reported by @chemicalcrux, GH #1471)
-- Convex Sweep hits at zero distance are now properly handled (this fixes laser curling back when at inspector edges and randomly jumping around in some other cases, reported by @H3BO3, GH #492)
-- Added ability to internally sweep collider components using their current shape
-- MeshCollider and ConvexHull acceleration structures are now double-buffered for procedural meshes, fixing some mesh interactions randomly flickering (e.g. when deleting LogiX wires that are moving)

-- Implemented a more efficient event system, significantly reducing memory allocations and CPU overhead when collisions are occuring and skipping computations in some cases when collisions aren't listened to
-- Reimplemented timestepping to provide more stable stepping for the physics system, reducing instability issues that could cause jitters or passing through colliders in some cases
-- Implemented heuristics for MeshColliders for computing speculative margins based on average triangle density, to improve interactions, but avoid performance issues with denser meshes
-- Fine tuned the integration for good overall performance and behavior

- CharacterController can now use any convex collider shape instead of just capsule
-- It will use the first Collider placed on the same slot that is set to "CharacterController" type
-- Existing CharacterController instances are auto-upgraded
-- This also means you can customize the offset and change shape in realtime (previously requested by @Robyn (QueenHidi), GH #1843)
-- The Mass property is now localed on the Collider, but only applicable for dynamic bodies (e.g. CharacterController)

- Implemented step up logic for CharacterController, which allows walking up both small and tall obstacles (previously requested by @Enverex and many others)
-- Technically the step up height is unlimited, but sensible values (probably 100 cm at most) are recommended, as higher values will cause odd behaviors.
-- When colliding with an obstacle, the current shape is offset upwards and swept in the direction of movement to check if the space in front is free. If there are no obstacles, the character will step up the obstacle (it'll be considered a support)
-- StepUpHeight determines the maximum height that the character controller can step up.
-- StepUpCheckDistance determines the distance the shape is swept in the movement direction to determine if it's free of other obstacles

- Completely vertical (90 degrees) MaximumTractionSlope and MaximumSupportSlope is now supported on CharacterController, allowing you to configure the CharacterController to climb up walls
- Added "Debug Visuals" property to CharacterController
-- Non-null value will display the visuals for specified amount of seconds
-- This shows all potential contacts when interacting with the environment, which can be useful for debugging purposes
-- Note that this is very performance and network heavy to use! Only use for debugging purposes

- Implemented SingleShapeCharacterControllerManager which manages the capsule collider height based on user's height, making the character shape respect player's height (previously requested by @Enverex, @Abysmal, @Shadow Panther [RU/EN, UTC+3], @Raith (CytraX) | Programmer, @Turk and others)
-- This means if you now crouch, you can pass below obstacles, but you also become slightly wider (this is configurable)
-- Increased the default radius of the character controller slightly for better interactions
-- Desktop HeadSimulator is now aware of obstructions when crouching, preventing the player from standing up after crouch is released if they're under a character collider

- Added "KillVerticalVelocityAfterStepUp" to the CharacterController (based on report by @Shadow Panther [RU/EN, UTC+3])
-- This will convert any vertical velocity into directional one in the current planar direction of the movement and push the player back down, preventing the player from getting too much air when running off a ramp or stairs
-- Note that this is off by default, as it can make stairs feel very bumpy

- Added ability to unlock rotation simulation on CharacterController
-- IMPORTANT: While this allows you to use character controller as simple rigid-bodies, this is NOT a proper rigidbody support. You will run into following issues:
--- High CPU & Network usage
--- Glitchy behavior - character controller has extra things and simulates on a single user, making it randomly teleport if another user interactions
--- Lack of control - it's always frictionless and you cannot create constraints and build more complex things
-- This is primarily meant for more realistic Zero-G locomotion and similar uses, but if you understand the limitations, have fun with them!
-- Learn more about Rigidbody simulation here: https://github.com/Neos-Metaverse/NeosPublic/issues/22

- Added Sidedness to MeshCollider
-- Mesh colliders can now be Front sided only, instead of always being DualSided, providing better efficiency and improved interactions (e.g. you won't get trapped behind geometry or partly through the ground, but get pushed out instead)
-- Added heuristic that automatically converts CharacterCollider MeshColliders to Front sided in most cases for improved interactions
--- If there are dual-sided materials on the same Slot it will stay dual-sided
--- If there's negative scaling on the collider, it will be kept dual-sided as well

- Added StaticTrigger and HapticStaticTrigger collider types, which provide more efficiency as long as they are not moved in the world
-- If you know for certain that your trigger won't be moving in the world (either directly or through its parents), it's recommended to use these types
- Added StaticTriggerAuto and HapticStaticTriggerAuto.
-- These behave same as the versions above, but they track whenever they're moved. If they're moved for a few frames, they will auto-switch to Trigger/HapticTrigger
-- Any old content using Trigger or HapticTrigger is autoconverted to these types, so they can get benefit of static triggers without being manually updated
-- For new content it's not recommended to use these. Instead make a decision betwen Trigger / StaticTrigger on the usage pattern for your content to avoid the overhead of tracking

- ApplyCharacterImpulse and ApplyCharacterForce now respect the CharacterController mass by default (based on report by @Zyzyl)
-- This can be disabled by passing true to the new IgnoreMass input
-- Old nodes are auto-upgraded to have True value plugged for backwards compatibility

- Added TriangleCollider
-- Note that the triangle is one-sided, you will only collide from the front. Colliding with edges will be currently random - sometimes you'll pass through edges, sometimes you'll collide with them (see more here: https://github.com/bepu/bepuphysics2/issues/134#issuecomment-904201884)

[h2]Minor New Features:[/h2]
- When pasting neosrec:/// URL from the clipboard that links to a world, the world is now loaded
- Added TriangleDiagnosticMesh, which allow vertex coloring a single triangle with given index and displacing it along vertex normals
-- This is mainly for diagnosing geometry issues in-game, but can be useful if you need a single triangle
- Added ability for highlights to avoid tracking the position (currently internal)
- Added "Triangle" to Create New -> 3D Model dialog

[h2]Optimizations:[/h2]
- Mesh Collider acceleration structures and Convex Hull colliders for static assets are now computed using the asset variant system
-- This significantly reduces memory and CPU usage when loading worlds and items, since previously those were always computed on the fly, but they are now pre-computed and cached
-- This should also speed up the loading process and make colliders available sooner, since loading a pre-generated copy takes a fraction of time than computing it from scratch
- Replaced many common usages of RaycastAll with RaycastOne for improved performance and reduced memory allocations - this includes particle system collisions too, which are very raycast heavy and RaycastOne and Raycaster logix nodes
-- This should produce no change in behavior, only save some CPU time and memory allocations
- Replaced common usages of convex sweeps and overlaps with (Bool)SweepOne and OverlapOne where applicable for some small performance gains in those behaviors
-- Similarly the behavior should be the same, but CPU and memory usage can be reduced
-- Interaction Laser sticking or spawn area player checking now use these checks
- Added triangle density heuristic to interaction laser to prevent convex sweeps against mesh colliders that are too dense relative to the size of the sweep, causing performance issues when the laser tries to stick to a dense mesh collider
-- Instead the laser will just stick to the last known point, instead of sliding around the object
-- If you'd like the sliding behavior when sticking, please setup your objects with primitive colliders (ideally), convex hull collider or at worst optimized mesh collider with large triangles
-- There's extra heuristic for laser avoiding sticking to dense meshes when the metadata isn't computed yet
- Added ability to internally configure convex sweep convergence and iteration parameters, allowing various sweep queries to trade off precision for performance
-- Fine tuned laser sticking convex sweep for better performance
-- Boolean sweeps/overlaps now have any iterations completely disabled, as they do not need them
- Implemented an IL patcher for System.Numerics.Vectors to optimize it for Unity's embedded Mono runtime, removing numerous memory allocations and significantly improving performance within Unity
-- This library is used not only by BEPUv2, but also other libraries like System.Text.Json (used for communicating with the cloud API)

- Transform change tracking is now split between scale changes and position/rotation changes
-- This reduces wasted calculations, since calculations that only need to happen due to changes in scale (which are rare) happening when the hierarchy is moved/rotated (which happens frequently)
- Optimized background worker to reduce stalls and wasted cycles
- Asset variant system will re-check the cloud for generation variant prior to computing it locally if sufficient time has passed between scheduling the computation and actually computing it
- Asset References set to null will now free the previous target asset, allowing it to be unloaded
- Reworked scheduling of local asset metadata computations, to only run on limited number of cores, rather than starting unlimited number of tasks, resulting in heavy system resource usage (essentially it should now murder your PC less, previously reported by @Hayden)
-- It will run at most on quarter of the available CPU cores
-- The computation tasks will check if the cloud metadata has been computed in the meanwhile if enough time passes between scheduling and actual computation, skipping unecessary local computations
-- This would be particularly noticeable when going into new regions of the Minecraft import maps due to heavy number of mesh assets, but should help reduce overall amount of stuttering in Neos
- Tweaked asset loading process to avoid running lock-heavy parts on the dedicated background workers, but ensure that actual loading of the data is done on dedicated backgrounds threads
-- This should help improve stuttering and overloading the system when loading significant amount of assets due to Task scheduler spawning large numbers of threads (based on a report by @Hayden)
- Restricted local asset variant generation to just a single core, to avoid the heavy processing from impacting the regular performance too much
- Fixed asset variant generation sometimes not running on the dedicated background worker threads, potentially causing singificant stutters and freezes

- Headless now runs audio events at the actual rate they would fire at, rather than every frame
-- This can help reduce CPU usage in certain cases, particularly with higher tick rates
- Headless no longer setups avatar proxy objects in Userspace, saving some extra performance
- Fixed CharacterTeleporter sometimes keeping references to objects after being destroyed, potentially preventing GC from deallocating large chunks of memory

[h2]Tweaks:[/h2]
- Removed deprecated SphereDetector LogiX node
- Added diagnostics to serialization errors when communicating with the cloud API
- Automatically switch any MeshColliders set to Active to Static, since these were previously filtered
-- It's strongly advised against using Active collider with MeshCollider, as it will have very adverse performance effects. Use primitive colliders instead.
-- If this breaks any existing content, let us know and we'll see if we can make some tweaks
- Updated Minecraft importer to use StaticTrigger for new imports for its culling system (based on report by @Enverex)
- CharacterForceField/Parenter/Teleporter will no longer act on character controllers that are currently kinematic (not simulated)
-- This fixes them interfering with vehicles and similar setups, applying the actions only on the vehicle character controller (reported by @MattyK)
- Increased maximum SmoothTurnSpeed and NoclipSpeed in the Settings
- ConvexHull collider now updates itself when the referenced mesh updates as well, making sure it respects its changed shape
-- Note, it's STRONGLY discouraged to use mesh that changes frequently (e.g. procedural mesh) as collider, as rebuilding the collider is relatively slow operation
- AxisRotationAligner now immediatelly updates rotation when written by external source, preventing 1-frame jitters
- Added TriggersOnly to any collision listener components (e.g. Character Parenter/ForceField/Teleporter/Trigger) which will filter any events coming from non-triggers (true by default)
-- For any existing content, auto-upgrade heuristic is performed - if there's no triggers on the same slot, it will be disabled. This preserves function of old content, while fixing glitchy behaviors when both trigger and static colliders are present
- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]
- Merged Korean locale additions by @MirPASEC
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese locale additions by @Aesc/あすく

[h2]Bugfixes:[/h2]
- Installed locomotion modules no longer have random offsets
- Fixed LogiX collision events sometimes not unregistering
- Fixed Character EventTrigger/ForceField/Parenter/Teleporter double-triggering on event coming from static colliders when they're present on the same slot as the trigger
- Fixed CharacterParenter dropping users due to rapid movement (reported by @Shifty | Quality Control Lead, @H3BO3, @Enverex, @Beaned and many others, GH #1327)
- Added guard against exceptions in the LogiX tip when deleting wires and the current distance between the initial point and Tip is zero
- Fixed CDFT awards sending CDFT token withdrawal notifications (reported by @Karel | CEO)
- Fixed meshes with invalid bones (e.g. NaN bindposes) causing exceptions when computing the mesh metadata
- Fixed help buttons not working for VHACD, NewWorld Dialog and others
- Fixed items and tools with driven root equipping at an odd angle (reported by @Modern and @Shadow Panther [RU/EN, UTC+3])
-- Note: It's not recommended to drive position, rotation and scale of the root of a tooltip, but rather drive a child underneath!
- Fixed BoundingBoxDriver driving position to near-infinity when the target bounds aren't valid
- Fixed TextGizmo edit icon being moved to near infinity before the text fully initializes
- Fixed cached transform parameters getting out of sync when position, rotation or scale of the object is driven and it gets reparented (reported by @Shadow Panther [RU/EN, UTC+3])
-- This could cause the colliders, bounding boxes and other things to lag behind, staying in the old place before reparenting

Updated Branding, BEPUv2 upgrade & Color Management have entered testing phase

Hello everyone and welcome to another of our weekly updates!

First, sorry for being a bit more sparse with them recently. Majority of my (Frooxius) focus went into finalizing BEPUv2 upgrade. This has now reached an exciting stage, where it has feature parity with the old build and we are working out bugs and issues before it gets ready for release.

The main focus of this upgrade is replacement of the physics engine that Neos uses for basic interactions. It doesn't include proper rigidbody support - this will come at later point as another big chunk, but this work will also serve as a foundation for that.

Thanks to some small, but impactful additions, one of the fun things you will actually be able to do is get "proto-rigidbodies" from the CharacterController. Those are very fun to play with, but it's important to understand their limitations to know why the full support needs more work. Please give the article below a read to know what's coming. It also includes a video of them in action to give you a little taste!

We have also updated our branding across different platforms! Neos now should have a more modern, unified look, which should improve the perception of the platform, especially to newcomers!

There is another major feature currently being tested as well - Color Management! If you'd like to be part of the testing, check out the section in the post below for details on how to join and what's involved.

We are also looking for your feedback on Neos Essentials reorganization and general feedback for the Neos Team! We've opened up a form here: https://forms.gle/NSgoXebWx7D36gsR6 More details on the reorganization are below as well.



[h2]Updated branding[/h2]
A few weeks ago we announced the upcoming update to our branding. This has now officially unrolled and we updated the logo and backgrounds across Steam, Discord, official website, Wiki, Reddit and Neos itself.



This change has been long overdue and should give our representation on those platforms a more professional and consistent look, which can be quite important, especially for new players who haven’t discovered Neos yet.

There is still much to do. We plan on expanding the background graphics with more detail and there are still a few places which need to be updated as well, so expect to see more come in the future!



[h2]Games of Neos - August Livestream[/h2]
On our regular Friday livestreams we like to go around and play some of the awesome games built in Neos. If you missed our latest one, you can check out the archive footage here:
[previewyoutube][/previewyoutube]

[h2]July Monthly Recap, Chroma & Geenz interview[/h2]
We have also published the archival footage of another of our livestreams from earlier of this month, recapping Neos' development over the month of July and interviewing two of our team members - Chroma and Geenz!
[previewyoutube][/previewyoutube]

[h2]BEPUv2 upgrade entered testing phase[/h2]
We have a bit of an exciting update on BEPUv2. It has now pretty much all the things for feature parity implemented and we started internal testing (more public will likely come soon after) to work out any kinks and breakages.

So far the results seem pretty good! Some maps are getting quite a noticeable performance boost, especially collider heavy ones. For example Dark City 2 by Enverex on a test machine runs around 70 FPS in a particular spot with the current public build, while 120 FPS in the same spot with BEPUv2.

[previewyoutube][/previewyoutube]

One of the even more extreme cases, a really huge Minecraft import map (has about 51000 chunks and thousands, if not dozens of thousands of colliders) runs over 120 FPS, while it chugs at 20 FPS on the main one.

Some maps won't see as much of an improvement due to having different bottlenecks and a lot of things will still bring the framerate down. This is expected as this upgrade just improves one of many areas and performance is a complex problem.

There are many more optimizations in different areas that will help solve other bottlenecks. Some of these will be built on top of BEPUv2 (for example efficient dynamic bone player collision queries), some will be completely separate and many will synergize well together to further improve performance over time.

[previewyoutube][/previewyoutube]

Once we work out the issues internally, we’ll open up the testing to the public. You can keep an eye on the #testing channel in our official Discord. Once everything is stable enough we’ll release the upgrade to the public and continue the work from there!

[h3]Full rigid body support coming as separate update in the future[/h3]
Our main focus with BEPUv2 upgrade is to achieve feature parity, so we can get it released without breaking any existing behaviors and content. However thanks to the new engine and re-engineered integration, there are actually a few small additions and improvements, one of them particularly powerful - ability to unlock rotation on character controllers.

However it is also somewhat misleading, so let us say this upfront: Rigidbody physics is NOT coming as part of this update, it's mainly a feature parity upgrade of the underlying physics engine and full rigidbody support is a significant chunk of work that'll come at a later point.

However the upgrade does add some new features and abilities, one of those is the ability to unlock rotation on the character controller. With that, you can actually get them to behave like simple rigidbodies.

I've been messing with those more than I'd think and it's lots of fun! I don't want to deprive anyone of this fun either, so you will be able to mess around with these when this goes public too.

However before you do, please take a moment to understand some important limitations of these. These are more like "proto-rigidbodies" than a full blown support that's coming later. Notably:

  • They're optimized for character locomotion and will have odd behavioral quirks when used otherwise, these will be addressed by the actual rigidbody support, so before that comes you'll have to deal with them
  • Having many of them won't perform well, both on CPU and network. They're not optimized for this use case
  • You have limited control. You can't control aspects like friction or create constraints (e.g. joining bodies with joints, hinges, motors etc) that actual rigidbodies support.
  • We STRONGLY discourage building too complex long term content with this mechanism, other than one that involves actual character control.


But understanding that, here's a bit of a taste of what's to come:

[previewyoutube][/previewyoutube]

[previewyoutube][/previewyoutube]

[h3]What will full rigidbody support offer?[/h3]
Even in this limited form, it is a lot of fun to play with. Tinkering, messing around and playing with features like this is at the heart of Neos and we want everyone to be able to experience this.

However proper rigidbody support still requires a significant amount of work after BEPUv2 upgrade is released, so it will take some time to arrive. There are some major things that this support will focus on:

  • CPU and network efficiency - with engine optimizations, efficient handling of many bodies in the simulation and specialized network encoding will allow you to have many bodies in the world with significantly lower impact
  • Simple to use with less glitchiness - controlling the friction, bounciness, applying forces and impulses and more, without the extra “cruft” that character controllers have - these will be pure rigidbodies
  • Constraints - you will be able to connect the rigidbodies with a number of constraints - joints, springs, hinges, motors and more, to create complex setups and interactions
    Smooth simulation and interaction for everyone - character controllers are simulated by a single user only and can be quite choppy and glitchy (for example when grabbing) for others if not setup properly. Full rigidbody support will be designed to not have these issues.
  • New features and tools - instead of having to go through convoluted process to enable the simulation, we’ll add quick tools and integrate physical interactions across Neos, to make it very easy to start playing with them and building cool content


You can watch the planned features for physics and other details on our official Roadmap on GitHub. Feel free to reach out to us if you have any questions on this as well!

[h2]Testing Color Management[/h2]
Color management is in alpha testing! To assist with alpha testing, we're looking for suggestions of different worlds to test with from the community!

Due to the deep changes that color management brings with many aspects of the rendering pipeline, this results in lighting looking pretty different compared to how it looks today. Although we have received great feedback during our closed alpha, we would like to expand our testing a little more to include some world suggestions from the community.

For those of you unaware, Color Management is our approach to the much requested Linear Lighting feature which enables users to author worlds for a particular color space, while leveraging Linear Lighting at the same time! In the future we plan on supporting a wide variety of input and output color spaces, such HDR monitors, headset specific calibrated color spaces, and so on!

If you have a world you would like to have included, just @Geenz in #neos-full-dive with a specific world you would like included for this early testing phase!

[h2]Neos Essentials Reorganization[/h2]
Neos Essentials is being reorganized to provide an easier to navigate experience. The folder structure of Neos Essentials has slowly expanded over Neos’ lifetime as new features and assets were added, and this will give us an opportunity to structure the folder system in a way that will allow for future additions to be intuitive to find. Of course, we would like community feedback on the proposed new structure! You can view the currently planned layout here:

https://docs.google.com/document/d/1zgQpM6DTZpsflBDPmL7GPAhGNoEDCmEd4di8N3IeDio/edit?usp=sharing

If you have ideas or suggestions to improve this layout, please make use of our new feedback form described below to submit them:

[h2]We Want Your Feedback![/h2]
For those who would like to anonymously provide feedback directly to the Neos Team, we've opened up a form at:
https://forms.gle/NSgoXebWx7D36gsR6

Please note, feature requests and bugs are best directed to GitHub, whereas exploit reports should be submitted to the moderation ticket system. This is for general feedback on the Neos platform, team, community issues, and other miscellaneous concerns.

You'll be able to find a pinned message for this form in the #🐜bugs-and-feedback channel, and a permanent link in the #👋welcome-and-links channel.

---------------------------------------

Anyway this is all for this week! With BEPUv2 in testing phase, it now shouldn't be much longer before it's ready for public, which should bring some notable improvements and also serve a foundation for exciting features and more optimizations in the future.

If you'd like to keep up with the latest, we recommend checking our official Discord, particularly the #devlog channel and keep an eye on the #testing for any public callouts for testing phase.

And as usual, huge thanks to everyone for their support! Without your help we couldn't be working on all of these updates, both big and small and pushing Neos forward every day!

2021.8.18.1077 - Security improvements, fix shaders not loading while offline

Just a small patch with some security fixes and bugfix for shaders no longer loading while you're offline. Sorry for small build, most of my time now goes to finalizing the BEPUv2 upgrade!

Compatible with previous build.

[h2]Tweaks:[/h2]
- V-HACD 2.0 convex hull decomposition is now localizable

- Merged Russian locale updates from @Shadow Panther [RU/EN, UTC+3]
- Merged Esperanto locale additions by @Yellow
- Merged Japanese locale additions by @Aesc/あすく
- Merged Chinese locale update by @Holy_Water

[h2]Security:[/h2]
- Sensitive World Orb operations are now confirmed in the Userspace to improve seucirty (based on report by @art0007i, ticket #146169)
- Clipboard Importer no longer works in userspace to avoid potential misbehavior and exploitation (based on anonymous report, ticket #526005)

[h2]Bugfixes:[/h2]
- Fixed regression causing shaders to not load while offline (reported by @seif1, @art0007i, @sls and @3x1t_5tyl3, GH #2797)
- Fixed asset removals failing when the asset was uploaded by a member of a group, who was removed from the group in the meanwhile