#development-advanced
1 messages · Page 3 of 1
And for some reason ever since implementing inheritance, my Unity crashes a lot more when recompiling udon prograsms
Yep, I cannot recompile my Udon programs now without Unity crashing.
reimport
Assets > UdonSharp > Settings > UdonSharpSettings > Auto Compile On Modify
Also disable Edit > Preferences > General > Auto Refresh
I am getting lots and lots of editor errors now. Restarting and reimporting do not work and most of my behaviors do not display in play mode. It seems that it is having trouble serializing inherited members
InvalidCastException: Specified cast is not valid.
(wrapper castclass) System.Object.__castclass_with_cache(object,intptr,intptr)
UdonSharp.Serialization.UdonSharpBehaviourSerializer+UdonSharpBehaviourTypedWrapper`1[T].Read (T& targetObject, UdonSharp.Serialization.IValueStorage sourceObject) (at Packages/com.vrchat.udonsharp/Editor/Serialization/Serializers/UdonSharpBehaviourSerializer.cs:210)
(wrapper dynamic-method) System.Object.Dynamic_GIB.VRpg.BNSVampire.VRpgManagerBNS_Read(UdonSharp.Serialization.IValueStorage[],GIB.VRpg.BNSVampire.VRpgManagerBNS&,bool)
Apparently SendCustomEvent (i.e., from a Ui element) also does not invoke child methods?
public class Foo : UdonSharpBehaviour
{
public void Bar() { }
}
public class FooFoo: Foo
{
public void BarBar() { }
}
In the above example, UI elements are not able to call BarBar as an OnValueChanged event.
Any ideas @grizzled jackal ?
You can have only one class per script
Also remember udonsharp is not csharp, there are limitations:
I know there's only one class per script. In the above example each class is on its own script
@warm niche So you're saying inheritance doesn't work? because everyone's been telling me it does
nevermind, I was reading the wrong doc, u# 1.x apparently does support Inheritance
but it seems vrc still filter blacklisted methods
again nevermind it works if you call UdonBehaviour.SendCustomEvent on your button. (I really need a coffee this morning x))
But it doesn't. That's the issue. It is not calling the method.
UdonBehaviour.SendCustomEvent will not call events on derivative UdonSharpBehaviors.
I just tested it and it worked with clientSim
This is outdated.
What did you put as the event name?
The method I am trying to call.
That's strange, I'll try to repro later today
Check what it gets compiled to in the assembly, maybe inheritance is adding additional characters for disambiguation?
Is there any statements from VRChat as to which version will be running on the quest3?. The pc one or the same standalone bare bones version?
standalone
Aw that's a let down.
A standalone headset is not capable of running the PC version as that's compiled for x86 and all standalone headsets are arm-based processors
In case anyone here use libwebp in VRChat or if VRChat uses it there is a now known security vulnerability in that dependency: https://www.helpnetsecurity.com/2023/09/27/cve-2023-5129/
@sterile cipher sorry for the ping but mind checking if this applies to VRChat at all by chance? Would hate to find out that it does in some way apply to it.
We don't use any WebP libraries, and neither does Unity runtime iirc.
by any chance
does Udon support Regex?
trying to make a script that types dialogue character-by-character and finding it difficult to make Rich Text formatting not briefly appear onscreen, because I can't find the function that accepts the regex I wrote to tokenize the input
Just submitting a bug I restarted my PC went to open vrc somehow eac triggered and which chained into a bluescreen, restarted my PC again and vrc is working fine, the fact that eac can even trigger a bluescreen is something that needs to be fixed
hi i have weird issue with vrchat's-SDK:
i have a windows project that i want to change the platform to android, so i did it from the vrc builder and waited until it finished.
after that i started working on adjusting the avatar and after a few minuets, unity starts to import again all of the assets from the folder by itself without any warning or dialog box (and no, i did not click reimport).
it also happend to me in another 3 projects i tried to work on, so i could not done working on them.
any idea why this is happends?
Ok, before I buy VRCLens.
Does anyone know of any way to simply control the location of the VRChat stream camera, within the Avatar?
Before you state the obvious, no, the standard settings do not work because of an edge case method of walking I use.
TLDR, I realwalk, meaning my origin point is sometimes hundreds of feet from my actual location, and the camera is tied to origin of play space, not avatar. I've checked that, several times.
So, if anyone has a way to change that, and ideally have more granular control of the camera in a relatively performant manner, please LMK.
I am looking for something camera related, but not vrclens.
I'm wondering if it's possible to make something like i've seen in some worlds, but on an avatar. that something being a "orb" that you stick your camera in, and then someone can grab... say a physbone with a unity camera script on it.. and control what that orb shows to your camera. So essentially you give control of your camera's position to someone else so they can direct photos or videos
Has anyone used Chat GPT API to connect to a drone that follows you in VRChat and it only focuses on the avatar owners voice to ask it a question and it will repeat back a TTS response based on what ChatGPT typed?
That would require sending a large amount of data out of the VRC client. This is very hard to do, and really slow.
Hmm I see
Cause I had a idea "what if I had a actual functioning AI that responds to my commands"
Cause I am not a expert in API hook ups even though I know its easy based on what I been asking around for
But if there is a limitation to make it function well do you think there is another approach to achieve this?
As I said, you need to send data out of VRChat. Doing so is made hard on purpose because VRChat needs to comply with user data protection laws.
There are a few ways to accomplish this.
You can use a huge amount of prebaked URLs to send small amounts of data sequentially that you then piece together on your server.
The cooldown only applies per type of loader, so to speed things up you can use a string loader, image loader, and video player in parallel.
Another way to do it is through localhost (VRC is working on closing that down, so don't expect it to keep working forever)
Yet another way is to just Debug.Log the data you want to send out.
You can then use a program to parse the VRC log file
None of these approaches are particularly applicable to your use case
The most feasible way to do it is to have a bot VRC account in the instance.
It is more feasible if you do not do it world side.
The "drone" will just be a facade attached to your avatar and you can't actually change where a voice is coming from, but it can be done.
Essentially, have program listen to your voice, make it into text to send to ChatGPT, put returned response into a text to speech program and route it to the input microphone.
Ahh I see thanks for the insight you 2
Having a very weird issue. I have a script that teleports the player (using player.TeleportTo) when Interact is called (such as on a door handle). This has always worked since, well, forever. However, now it suddenly it doesn't. It actually works in editor, but it is not working in VRChat. Clicking the object just does nothing. No errors, nothing.
Is this object perhaps enabled by default but then disabled by something immediately on start? Like an animator?
Oh, yes! Does that make a difference?
I have a script that deactivates regions of the world on start to save resources, and they get activated later.
unfortunately there's a bug that has been around for a while which breaks interacts if they started to initialize but then get disabled before they initialize. The solution is to have those objects already off or have the system to disable them happen after a delay
That explains a lot. Truly I have been pulling my hair out. 🙂
It also explains why the interact itself didn't work, but a button that calls a method that does the same thing does.
Certain avatar testing worlds have a tri/quad projectors so people can check their avatars topology, where could I find something like that? Tried searching myself but couldn't find anything.
There's a wireframe projector in this repo. https://github.com/netri/Neitri-Unity-Shaders/tree/master
I really don't like to complain but what is the purpose of canny and your community feedback if at the end you just ignore half of the reports and ship bugs discovered in beta into live? It's happening so many times what's going on
Any idea what causes an image downloaded with an imagedownloader to look like this?
personally it looks like it’s being saturated way way wayy too much
Not sure what’s causing it but that’s what’s happening
even then it's the wrong colors. I'd guess something like a wrong pixel format, but idk how that would happen
They're all .png, I dunno what settings are wrong
yes it is probably pixel format. for png you wanna stick to 8 bit per channel RGB/RGBA
32 bit per channel definitely causes problems, from experience
You mean like how Second Life worked nearly 20 years ago? lol
Hi everyone, I'm using a drawing tablet and for some reason what I see doesn't match up with what other people see.
The tablet uses a camera to sample a color, and then draws that on top of a camera that acts as a way of capturing the drawing.
Here is what I see:
And here is what other people see when I also show them the rainbow:
Person A
Person B
@gleaming bane Sync problems, unfortunately, though it does work locally
@proud meadow Hi! excuse me, but is this something you'd understand the cause of? I had searched for discussions on how painting works with orthographic cameras and found a post from you way back in 2019 that mentioned it. maybe you recognize the cause of this desync on a drawing tablet meant for avatars?
@wet tinsel is the screen in one of your hands? or is it being dropped into the world?
if it's dropped into the world, you're never going to get sync. you could try using physbone posing since I think those get synced a bit more reliably, but it might still be different remote and locally
if you do want it dropped in the world, you can use a cursed technique like floating point precision constraints (constrain to 1e+7,1e+7,1e+7 world space or something) so it kinda snaps. but even then I don't know how to make it sync precisely
sorry I'm not up to date on the latest technique for precisely syncing position of objects constrained to world
Ah! It is indeed dropped into the world. Thanks so much for giving me a new lead!
Does somebody know which command line args VRChat passes to yt-dlp when I'm entering a url in a video player?
--no-check-certificate --no-cache-dir --rm-cache-dir -f "mp4[height<=?720][height>=?64][width>=?64]/best[height<=?720][height>=?64][width>=?64]" --get-url "https://youtu.be/up2K7w2RQPg"
@haughty blaze
Hi! Is there any way to fix this sync issue that happens with the Graffiti Marker? Or is avatar sync something that can't really be perfected further than this? Here are a few examples of what I've experienced:
An image my friend drew
What I see
Syncing for things like the spray paint and the camera thing you mentioned above are done by essentially seeing what the other person is doing.
So if you aren’t in the same room or ideally watching them then they may not see you do the movements or animations that make whatever image they are creating an an actual image rather than blobs.
TLDR: watch them draw the thing to see it the way it’s meant to be seen
That makes so much sense. Thanks!!
just adding: the 720 is actually the value that is set for the maximum resolution in the video player component. so it may differ from world to world
Just to add, the question was about parameters, not the values of these parameters.
The fact that this is set by the screen size is already obvious.
@haughty blaze Is the method you described the same method that's used for more conventional avatar markers and pens?
yes, but sometimes prefabs will have partially successful mitigations like using a big cube to prevent yourself from getting culled
Huh, interesting, I did notice that avatar pens seemed to have way less issues than painting systems/graffiti systems where you paint onto a given plane, but I didn't know something like a cube could be what's causing it to have that kind of success
yeah you would use a large invisible cube, which increases your bounds so that someone is always looking at you
im unsure if this will mitigate how network IK accuracy falls off over distance though
Hi I am writing a Unity custom editor that automatically switches materials on Quest to another material.
In the SDK it reports shaders as being incompatible. My plugin intends to switch them out to compatible shaders at build time using the OnPreprocessAvatar hook.
How can I stop it validating my materials? I know I can extend IEditorOnly to exclude from validation but the Renderer component is built into unity
Can't you already do this with EasyQuestSwitch?
That plugin isnt very good and isnt maintained anymore
I found a solution using reflection. Not pretty but it works 🙂
var field = typeof(VRC.SDKBase.Validation.AvatarValidation).GetField("ShaderWhiteList", BindingFlags.Static | BindingFlags.Public);
var originalShaderNames = VRC.SDKBase.Validation.AvatarValidation.ShaderWhiteList;
field.SetValue(null, newShaderNames.Concat(originalShaderNames).ToArray());
If anyone wants to do it themselves until the devs give us a way to whitelist our own
Anyone know how to bypass avatar validation on Quest? As above - I am writing a plugin that at build time will strip unsupported components and switch materials so the avatar validation rules dont make sense anymore.
I can clear the validation errors every frame which allows me to click the upload button however it does a 2nd round of validation I cannot bypass.
why
Are you in debug mode for your inspector?
That's something of a moot point. VRC will never get a video higher resolution than 720p/30fps from YouTube because it's limited to only being able to play the pre-muxed (audio and video merged) version of videos. Of which YouTube doesn't provide higher than 720p.
(that limitation doesn't apply to standalone media files you provide directly, obviously - only YouTube)
i'm quite aware of how that works, but it may matter for extractors other than youtube
That was for everyone's benefit as 99.9% don't seem to be aware.
So from what I have heard Unity's terrain system is bad and I shouldn't use it, but why is it bad?
For my world I need a lot of grass for it to look proper, using particles or drawinstanced() (why can't we have drawinstancedindirect()) costs too much performance. All I am using the terrain system for is to place down grass, I am disabling the actual terrain renderer.
So my only options left are to manually place down grass objects (||which I have been doing slowly with polybrush||) and after mesh combining the performance is actually pretty good, it just takes forever.
However Unity's terrain system seems to run far faster (even with more grass instances) and the tooling around placing down a lot of grass is just quicker.
So, why exactly shouldn't I use the terrain system?
File size is a problem at some point and culling sucks for terrain but once upgrade will be a bit better
Presumably those changes are already live, since old Unity 2017 terrain has been affected.
There's also a pretty notorious issue where there's a huge lagspike every time you load someone's avatar in some worlds that use Unity Terrain.
Assuming it doesn't appear again, it has apparently just been fixed for a while, they just aren't sure why.
That's... a really bizarre bug. No wonder it was around for so long.
I'm guessing they never figured out the root cause?
Would anyone know why the package resolver window is throwing errors?
ArgumentException: Default Index is beyond the scope of possible value
UnityEditor.UIElements.PopupField`1[T]..ctor (System.String label, System.Collections.Generic.List`1[T] choices, System.Int32 defaultIndex, System.Func`2[T,TResult] formatSelectedValueCallback, System.Func`2[T,TResult] formatListItemCallback) (at /home/bokken/buildslave/unity/build/Editor/Mono/UIElements/Controls/PopupField.cs:130)
UnityEditor.UIElements.PopupField`1[T]..ctor (System.Collections.Generic.List`1[T] choices, System.Int32 defaultIndex, System.Func`2[T,TResult] formatSelectedValueCallback, System.Func`2[T,TResult] formatListItemCallback) (at /home/bokken/buildslave/unity/build/Editor/Mono/UIElements/Controls/PopupField.cs:122)
VRC.PackageManagement.Resolver.ResolverWindow.CreateDependencyRow (System.String id, System.String version, VRC.PackageManagement.Core.Types.UnityProject project, System.Boolean havePackage) (at Packages/com.vrchat.core.vpm-resolver/Editor/Resolver/ResolverWindow.cs:180)
VRC.PackageManagement.Resolver.ResolverWindow.Refresh () (at Packages/com.vrchat.core.vpm-resolver/Editor/Resolver/ResolverWindow.cs:72)
VRC.PackageManagement.Resolver.ResolverWindow.CreateGUI () (at Packages/com.vrchat.core.vpm-resolver/Editor/Resolver/ResolverWindow.cs:135)
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
Rethrow as TargetInvocationException: Exception has been thrown by the target of an invocation.
System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) (at <eae584ce26bc40229c1b1aa476bfa589>:0)
UnityEditor.HostView.Invoke (System.String methodName, System.Object obj) (at /home/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:381)
UnityEditor.HostView.Invoke (System.String methodName) (at /home/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:375)
UnityEditor.HostView.SendCreateGUIIfNecessary () (at /home/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:512)
UnityEditor.HostView.RegisterSelectedPane (System.Boolean sendEvents) (at /home/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:396)
UnityEditor.HostView.OnEnable () (at /home/bokken/buildslave/unity/build/Editor/Mono/HostView.cs:127)
UnityEditor.DockArea.OnEnable () (at /home/bokken/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:169)
UnityEditorInternal.InternalEditorUtility:LoadSerializedFileAndForget(String)
UnityEditor.WindowLayout:LoadDefaultWindowPreferences() (at /home/bokken/buildslave/unity/build/Editor/Mono/GUI/WindowLayout.cs:52)
and it spawns an empty ui window in the corner of my screen
ok....trying to generate a new project via vpm new "ImporterTest" Avatar -p ~/Projects/3D_Projects/VRChat/Avatars/ with no other packages except the latest Avatar template immediately causes unity to crash and open bug reporter?
several crash report windows
all on top of each other
resetting the layout to factory default seems to have...fixed things??
@limber gorge Heya, buddy! I've got a new PR for you!
I am starting to figure out how to use C#, and I finally was able to put in something that I thought was missing in Gesture Manager (I looked everywhere, I swear!). Because it was missing, I went ahead and added it in myself...
Say hello to "Earmuffs" Toggle in the Radial Menu! I added this to test the VRChat Default Parameter Earmuffs right in Gesture Manager Emulator!
Please take a look at my PR #38 and test this out to ensure everything is still stable on your side with my changes. I've already done some testing myself and saw no issues, but it doesn't hurt to have a second eye. Hope this contribution helps!
https://github.com/BlackStartx/VRC-Gesture-Manager/pull/38
Uh @random peak, I've just seen the two push request and reviewed it~ :3 🌺
I can say that I'll merge them asap since they look good indeed~ ;3 ✨
Awesome, thank you!
Yeah, I noticed the old Documentation URL in the script and thought it would be good to patch that as well. Hence why I made a separate branch for that PR.
I've got a unity plugin that every second clones all VRC avatars in the scene and does modifications on them to make them Quest compatible. When my editorwindow loses focus it stops cloning (so the SDK should only see the cloned gameobject and not any new ones).
When I open the SDK it says my polygon count is 0 and when I try and build it errors about null reference.
In the screenshot my plugin adds a listener to the SDK to remove some stuff so the gameobject does exist but some reference is lost. What do I do?
VRC.SDKBase.Editor.BuildPipeline.VRCBuildPipelineCallbacks:OnPreprocessAvatar (UnityEngine.GameObject)
VRC.SDK3.Builder.VRCAvatarBuilder:ExportCurrentAvatarResource (UnityEngine.Object,bool,bool,string&,System.Action`1<string>,System.Action`1<object>)
VRC.SDK3.Builder.VRCAvatarBuilder:ExportAvatarBlueprint (UnityEngine.GameObject)
I don't know if this is where I go to get some advice. But I've been having some issues with unity doing a VRCSDK build request call back. I can't figure out how to fix it. Can anyone help me with that?
Check your console and post error and warning as screenshot.
I just fixed it after 3 months I removed audio link and fixed it
oh
FYI, AudioLink is now VPM based.
Hey everyone, sorry to bother but I have some issues with the avatar i'm making and would need some help. When I log on USAW instace all the proximity contact values gets stuck at 0 until the avatar is reset. It does NOT happen if i log on a EU instance
is there a different version of servers running between US and EU ? Is it cause of lag ? ( I'm in Europe )
You could use an object's offset moving towards a proximity receiver
So that as the animation plays, the sender gets closer to the center of the receiver, and ends in the middle of it
that way it will go from 0 to 1 in the same time it takes for the animation to play if it starts right on the outside of the proximity range (and is set to linear interpolation)
I don't understand how would the other person's avatar get that information then?
Unless the object was from your avatar, but then I don't know how you would keep it anchored to their position
by locking these systems to the world origin using a world constraint
on both avatars
Well then I have no idea how they work on quest
I've seen them work before though
There's this one avatar
Idk what it's called
My friends call it goober
well yeah but there's no way to lock things to the same coords, for the purposes of late sync
it will sync from the beginning but you won't be able to catch up if you switch late
It has dog ears and a bunch of outfits and it's in a "cute" style. Very popular avatar. The dances sync so flawlessly even on quest
Maybe they don't do late synce
But they still sync so well
Mine if you are the one who initiated it, the other person's will be like 0.5 seconds behind
But if someone else initiated then it is perfectly synced
Maybe I need to do a check from both sides
think that's just because there's always latency between your local game and what the other person sees
due to networking
Like reuse the animation from the local side
Anyways I have to go now
It was nice talking to you
has anyone tested if vrc allows vfx graphs?
VRC uses BiRP (Built-in Render Pipeline) which is not compatible with VFX graph.
well it isnt officialy but most of it works. lit particles are a nono though
hi there... I'm delving into the video player a bit more. I'd like to confirm that for VRC purposes I should probably set the max resolution to 720 is that right? Also is there a way to bypass calls to yt-dlp if that is done on each URL request?
And... I notice the UdonSyncPlayer script is set to manual. Is that optimal, necessary or what? And is that connected with the syncing of the video between other players? I'm controlling the player through a script. Is there a benefit to setting the syncFrequency higher or lower? And I am guessing that allowGuestControl is referring to the video controls right? Again I'm handling it through code so I believe I can turn that off.
I noticed yesterday with several people located around the world that coordinating the play & sound was tricky. Some people couldn't see it, some couldn't hear it. Pausing the video seemed to help the sound issue, sometimes I restarted the video but of course it runs thru the entire process one more time.
Due to the request that VRC sends (combined only) the best it'll ever get back anyway is 720p so it doesn't really matter if you set it higher. Unfortunately you can't bypass yt-dlp which is why videos always seem to take a few seconds to load, even on direct media.
Any ideas about the syncFrequency? I assume it syncs according to the video position of the owner of the player? Do you imagine stuttering would be lessened if this was set to 30 rather than 15? I'm trying to imagine why some people seem to get a lot of stuttering and I'm guessing that their player is being told to catch up fairly often.
Is that on the VRC/Unity component, or a specific user created video system?
The VRC/Unity component
Can you show a picture of it? I don't think I've ever seen/used that component specifically.
I'd open the graph and check manually. I've never personally used that one. It could check for drift and resync the timer if it's over X seconds out or something, but that's a guess.
let me look... thanks
there's no real harm setting it higher but yeah as far as youtube goes you'll get 720 max currently. no way to bypass ytdlp calls
think i'd generally recommend using another player prefab instead of the ones that come with the sdk
USharpVideo's playback time sync is rock solid in my experience, ProTV a little less solid on the sync but it has a huge feature set, etc
Protv v3 is pretty solid in general
He isn't? i was lied to this whole timmeee
okay I wanna know why the VR Spatial Audio Source component forces my audio falloffs to be logarithmic and enabling specialization breaks reverb zone support
I have a reverb zone and I want the ease in/out custom falloff that it starts out with, but now I have to live with the ⚠️
I'm just confused, and not confident if I'm doing something wrong or not or how to fix it
#development-advanced message
#development-advanced message
I revisited this, successfully did it, then somehow UNDID it and ruined it. Idk what I did, I don't know if I will duplicate it.
If I do it before tomorrow ends I'm going to make a tutorial for it.
Fall off override in the advanced drop down
Or whatever the check box was called
I've done it. I made a VRC studio world that worked where the main camera took over the VR View without ruining your VR headset, with a camera switcher/selectable cameras, and sent the feed to your PC session. I will make a tutorial for it sometime in the future.
This is here for people who might search for it and need to find someone who has knowledge on it.
Any updates on, wasm udon 2 ?
It's been complete silence about it for a year now as far as I can tell
Does anyone have tips when parsing the blank new lines in VRC log files?
I am not using it for nefarious reasons I swear. Here is mundane proof
you could peek at VRCX's log parsing code, seems to be reliable
If you're talking about the standard log files (and I think you are) there is nothing nefarious about looking at them. Your debug lines will be in there as well. What are you using to view the file? Any number of tools can strip blank lines. I use Notepad++ and you can just select Edit / Line Operations / Remove Empty Lines. Lots of other options too including filtering and such.
Powershell
My previous attempt was C# System.IO and it got worse as the log file size got bigger.
The issue there was that I had to account for the 3 extra new lines at the end of the log and that brought in extra processing time that scaled badly
The current Powershell implementation right now seems promising in terms of speed
Techa is trying to pass force feedback data out of VRC so players can use FFB wheels while driving cars in VRC.
< 1000kb is less than 20ms latency and 12ms at best
4000kb brings it up to 50ms
Ok 🙂 Is it possible to get this from each player's log? Some other software running locally or something? Wild ass guess but something could monitor the log and possibly extract the lines of interest.
I wrote software to parse it last night and ran into the said scaling issues
as the log file grows, it takes longer to parse
I have a powershell one written up now but can't test until I am home
I don't think parsing it is the answer... I'm suggesting placing the lines you want into another file.
That is what's happening so I don't get locked out by vrc accessing the file
as they are written
Oh so your file with the data is getting too large?
Do you need the entire file all the time? Can you write smaller batches?
It seems I couldn't get around it with StreamReader or LinQ with File.ReadLines.
So I am trying something else when I get home
This Powershell solution I just came up with may be the answer to the performance issue
I don't know the answer but if you only need the "latest" perhaps writing to an in-memory Queue would work.
What tech stack is that in?
What are you using/planning to use? C# can do it, I assume TypeScript can do something similar.
I am planning on sticking with C# for most of it and want to keep it below 20ms latency
I have to guess that C# is the easiest solution available at the moment. These are your log messages correct? You're just marking them so you can recognize them?
Like so many things, it is going to be tricky 🙂
HOLY C
went from 10ms - 50ms
to this
here it is in action. I will need to tune how the force is delivered to the steering wheel motor when the steering is near the neutral position
hardware used for this:
Oh are you the Developer of that test world with those cars? The one with the loop, jumps and Floating highway etc? Or is that a prefab available somewhere?
If so... Add a Porsche 👉👈
Those cars handle in a very realistic way so you would definitely do it justice.
Hello, eventually a notPorsche will be added. Please don't sue me
Haha great. Amazing work. The best car physics Ive ever seen in vrc. Just feels snappy and responsive. Others usually feel like you're driving a 50ton truck lol
Glad to see you're working on it all again
Thank you. I don't plan on stopping work on these any time soon
This doesn't have everything in here or up to date but a rough record of progress https://trello.com/b/YcaEFyuA/udon-car-simulation
Organize anything, together. Trello is a collaboration tool that organizes your projects into boards. In one glance, know what's being worked on, who's working on what, and where something is in a process.
Niceee
I'm working on a dialogue box script with per-token typing animation, and I have a question: for performance reasons, should I use concatenate or StringBuilder?
unfortunately, stringbuilder is not exposed to udon. And really, even then, stringbuilder doesn't solve this problem because all it does is avoid allocating intermediate strings. But in that particular use case, you need the intermediate strings. So you're gonna have to allocate them either way.
all I know is somebody online basically said "use StringBuilder it's good", so I immediately went over here to ask if that still applies to VRChat
I guess not haha
thank you!
yeah, stringbuilder is good because most of the time, people are asking how to put together strings. However what you're asking for is how to take apart strings
really you won't use concat either. Probably substring
You shouldn't ask the question if someone is good with something. What about they volunteer to answer, but your question can't be answered, or not relate to the the topic? Read more info here https://dontasktoask.com/
Always ask the actual question you want to get an answer.
Forget it, it doesn’t matter
Hey guys just a warning if you upgrade to 2022. If you have custom U# that you are keeping in UdonSharp folder, UdonSharp1 folder, or a sub-folder in any of those root folders, THE MIGRATION WILL WIPE THEM AND YOUR NORMAL VCC BACK UP SKIPS THEM. I learned this the hard way, and had to go back to a previous branch in my Plastic SCM cloud save to recover the scripts.
Hopefully this saves you the headache that I will be spending my week straightening out 😂
Have you made a canny for this?
I made a bug report 🙂
https://github.com/vrchat-community/creator-companion/issues/402
Ty
I 'can" 🥁
I might be on some crazy juice though it may be a user error thing
I need to do some more investigating
Can someone tell me if this is possible? Is it possible to make web API calls using avatar code?
Is it possible to load new images into the avatar?
I want to create a camera rig that can then show the results to other users, but can also pull edited photos after they have been processed by software on the computer that takes Web API calls.
So... Take photos -> send via web API (local) -> save processed image to computer (automatic) -> load image from computer to be displayed by avatar.
Easier if I can use Python, but I could do raw API calls as well if that's the only option.
This can't be done on an avatar.
Is it possible on a world?
Kind of
Udon can load images from the internet and display them as UI elements or as textures on world objects. Our example world below demonstrates how the system works and how to use GitHub to host the images and captions.
contact sender / receiver components exist in the Worlds SDK...
is it possible to send world information (ie: interior vs exterior) to avatars via contacts, or is its inclusion a bug?
Hello, in the course of developing a display driver, I'm seeking to integrate a laser pointer feature that responds to both mouse and Xbox controller inputs, especially when VR controllers are not in use. I've noted that this functionality is not operational on AirLink and specific mobile VR apps like iVRy or ALVR. Nevertheless, it performs seamlessly on Index and RiftCat (mobile VR). Could you kindly share your expectations or requirements for a VR headset to support this type of pointer?
hello, what's length of chatbot on vrchat for OSC accepts.
i trying pull my GPT NODE but text keeps overlap length be of OSC chatbox.
144 chars max
is KillFrizzyAvatarText higher then 144 char i did my GPT stuff now but now need find way add Chess in chat using chess.js NPM
but higher then 144 char and not sure any other way
since everything needs be done voice commands
Their chat package is not bound by the global limits chatbox endpoint. That endpoint is 144 char 1.5s update rate.
Because that shader is on the avatar endpoints, it has the avatar limits: 256 bits synced at lossy 10hz
Avatar endpoints are better, but require per avatar setup.
Chatbox end points are more limited, but work regardless of avatar
You could always use oscq check to see if the avatar endpoints are setup. And switch dynamically in your script.
is there any way to get the players correct orientation? something im doing requires teleporting a player to themselves & their current rotation but if i do that as late as possible (post render), it results in this behaviour:
https://x.themrgong.xyz/RvTk.mp4
void OnPostRender()
{
if (isClickingTrigger)
{
localPlayer.TeleportTo(localPlayer.GetPosition(), localPlayer.GetRotation());
}
}
The rotation you get from GetRotation is not exactly the same as the rotation expected in TeleportTo. This has nothing to do with the update order. What matters is that you use the right interface that matches. The most stable, reliable method is to use trackingdata origin paired with AlignRoomWithSpawnPoint, because those two actually match and refer to the same point
localPlayer.TeleportTo(origin.position, origin.rotation, VRC_SceneDescriptor.SpawnOrientation.AlignRoomWithSpawnPoint);```
Ooooo, thank you! i wasn't aware there was a third parameter ^^
ill give this a shot when i've gotten some rest
i noticed this while debugging avatars using a quest pro via steamlink and im also quite curious
Anyone?
Is there a way to have the trail renderer offset the texture that's being rendered by the same distance the trail has moved so it can leave behind the image rather than pulling it along? Similar to the effect they're doing with the LED ribbons in this video:
Panosphere shader that has the movement set to 0
Is there a way to get the position/settings of the handheld camera in a U# script?
I know there's no built-in way. But I feel like there could be a hack.
You can get the position and other camera settings in a shader by checking _VRChatCameraMode and accessing things like _WorldSpaceCameraPos. I also know that I can read back texture data to U# using VRCAsyncGpuReadback.
But I'm missing a middle step. How to get the camera data into a texture. If I use a CRT or a camera with a RenderTexture, then the camera data I get back doesn't correspond to the handheld camera. (makes sense)
world constraint
gesture and contact to grab
Hi everyone, I'm new to game dev with VRChat, have a question I thought someone could help me with.
I want to start working on a drone-like flying control script, but I have no idea where to start.
I want the script to have normal drone piloting controls(Yaw-throttle for left analog and pitch-roll for the right). Ideally, it should be mapped to the analog sticks, but I don't know if VRChat supports that. Any help is appreciated!
All of that is very possible!
Are you familiar with programming?
yeah I am, not too advanced but getting there, I am pretty familiar with Unity-C#
Nice, would you be able to make your drone game in standard unity?
Following tutorials with understanding of the code, yes doable
Alrighty, doing it in a VRChat world will be pretty similar.
Here are some key differences:
- You can't derive from
MonoBehaviour. All your scripts must beUdonSharpBehaviour. You can make an U# script in the create context menu. This will use the U# script template and make and link the Udon program asset for you! - Udon does not have access to every C# feature, but it does have access to many of them!
- VRChat has their own input system you can get the events from, as well as specific string names for the controller axes.
Btw let's move to #udon-general
u mean talk in that channel?
Is there any documentation on using async readback to pull bands from the audiolink render texture? I've never used it before
i've confirmed a bug with the latest VRChat SDK for Unity 2022 (com.vrchat.base and com.vrchat.avatars 3.5.0)
TLDR,
[API] Request body - json: {"name":"Avatar - VRChatSDK_Unity2022_Test_Upload - Asset bundle - 2022.3.6f1_1_standalonewindows_Release","mimeType":"application/x-avatar","extension":".vrca"}
[API] Failed to send request
[API] Exception has been thrown by the target of an invocation.
[Always] Failed to upload avatar!
[Always] Exception has been thrown by the target of an invocation.
NullReferenceException: Object reference not set to an instance of an object
fails with a 404 not found
how did it wipe your assets?
I wish there was a way to add in a way that when I go into camera fly mode to instead of just capturing pictures to have a way of video capture from within vrchat on desktop itself. I feel that is one major thing I need that is afaik missing and Win+G (game bar) does not work well with it as then I have to use a world with T and G (for free roaming) similar to the shrink room and other worlds like that. Having it native in the camera on VRChat would be great.
apparently this is how VCC actually behaves when installing/upgrading the SDK, it scan for legacy Assets and delete those without making any backup. That means that if you organized all your scripts in udonsharp folder, then goodbye all your work 🔥
Would also be cool if one could have stream camera on desktop mode as well when using camera fly mode 💀.
bruh they should just check filenames within the folder and hashes of said files first 💀
Or just make a text file in that folder and call it "do not put anything here!"
not like SHA512.HashData in System.Security.Cryptography does not exist in their version of the dotnet/runtile that vrchat uses
like bruh how hard is it for VCC to use this code?
private bool CompareSHA512(string duplicateFile, string originalFile)
{
try
{
using var originalFileContents = File.OpenRead(originalFile);
using var duplicateFileContents = File.OpenRead(duplicateFile);
var originalHash = (stackalloc byte[64]);
var duplicateHash = (stackalloc byte[64]);
_ = SHA512.HashData(duplicateFileContents, duplicateHash);
_ = SHA512.HashData(originalFileContents, originalHash);
// Encoding.UTF8.GetString does not work here.
this.DuplicateFileHash = Convert.ToHexString(duplicateHash);
this.OriginalFileHash = Convert.ToHexString(originalHash);
return this.DuplicateFileHash == this.OriginalFileHash;
}
catch (FileNotFoundException)
{
Debug.WriteLine($"Calculating Checksum failed for '{originalFile}' or '{duplicateFile}'.");
this.DuplicateFileHash = string.Empty;
this.OriginalFileHash = string.Empty;
return true;
}
catch (IOException ex) when (ex.Message.Contains("The cloud operation was not completed before the time-out period expired."))
{
// Try again. Sometimes happens for some reason.
return this.CompareSHA512(duplicateFile, originalFile);
}
}
something similar to that
Yes I made a little tool that uses this code to compare files duplicated by onedrive when one resets it due to sync issues and it "cannot merge the files" so it duplicates them.
yes but
yes having some check before stupidly erasing users files should be nice
not when VRCSDK is part of gitignore ^^
I am willing to share the code file I use as well that it can use too
You wouldn't gitignore your scripts?
that or a way for the user to opt out of it
not me, VCC has udonsharp in their gitignore 🤦♀️
I'm just saying that if you were actively creating scripts in the udonsharp folder, you would include those files in your repo
so if VCC pulled the rug on you
you would be fine
The main issue I have with VCC deleting that folder all the time is that that's where the U# settings ScriptableObject is stored lmao
so all your editor preferences get reset every time the sdk updates 
LOL
now that is funny
the problem here is not how people should backup their work to avoid a stupid VCC design^^
just saying
yeah the code I did for my onedrive tool would help them out a metric ton then
I find it funny that 5h of my work will be saving 5h of work on the VRC team's time.
🤔
because debugging is always something important to me and I do dry runs to simulate file delete using debug writes to prevent data loss.
Not the first time I accidentally deleted every single file on my computer due to a single character that I forgotten in my code in the past.
😂
I am sure with some slight modifications it can work for VCC.
Your welcome VRChat 😂.
I mean, they could simply *not * ignore udonsharp folder when creating a backup?
the problem is that VCC assumes that this folder is only used by the sdk
Edit: After testing it again, it does seem to backup udonsharp folder now
and another question that comes in my mind is why this folder is there and not fully integrated in the packages with the rest of the VRCSDk?
wym?
I mean since VRChat included ClientSim and U# in the VRCSDK, and those are supplied as packages and no longer as Assets folders, why is there still an useless udonsharp folder created in Assets, it just contains examples scripts so why it is not part of the packages
because they want people to be able to view and edit the example scripts
but it is funny because the robot avatar files when making an avatar DOES NOT get copied 😅.
if I want to create a custom avatar parameter I just copy the example in my assets, I don't see why it should be different for udonsharp
exactly
People (regardless of their profession or hobby) have a responsibility to protect their assets. Ask ChatGPT whether you should make a backup.
it will say to ALWAYS make backups before you do anything
or use git
Am I right in thinking VRChat only currently supports Unity's 'Legacy' AI functionality? Not its new 2022 components yet?
Aside from the bare essentials I don't think any new components from Unity 2022 have been whitelisted yet.
Yeah. At least the old stuff still works, just have to deal with Unity going wah at me for using it.
They did release the 2022 SDK at pretty much the last minute before their holiday, so we'll hopefully see new things getting supported soon, I hope.
So I have a problem with my SDK, every time I upload an avatar it uploads with a pink thumbnail and when I try to change it, it just stay like this for long time
is there a good way to get a post upload callback via editor scripts? doesnt matter if the upload is successful or fails, just a confirmation that it is complete?
does udon have some sort of "copy to clipboard" function? or would you have to do that via like input fields?
You do that using input fields, there is no to clipboard function exposed to us.
Has the benefit of that then the user can choose if they want to copy or not.
I'm trying to migrate my project from using unity 2019 to using unity 2022.3.6f1, my steps were to update the project to the latest vrc sdk in unity 2019 and then to update the unity version, but I'm getting all these errors. Is there another step to go through?
(I'm on linux so the creator companion isn't an option)
by doing the old trick of making a new empty project, loading the sdk into that, and copying the files over (seems messed up that that tip isn't in the vrc docs anymore) I was able to get to the point where I can start uploading an avatar, but it fails at the end. so that's progress at least
does anyone know how i should go about moving probuilder vertices through an editor script?
ive tried like 10 different approaches and all of them failed. It seems to be one of the worst documented parts of unity ive found so far, if anyone could help that'd be awesome
Trying to go about creating a series of helper functions on a class to be used in UdonSharp scripts (something that could be VCC installed, and then imported and referenced in the end user's own UdonSharp program), but I made the mistake of structuring it as a collection of static methods on an importable class, until I finally remembered UdonSharp doesn't support the use of user defined static methods. If instantiation of user defined classes was supported I could have gone that instead route, but since it's not I know that also wont work. Such being the case, are there any other better ways of going about this, or would such a thing really require the creation of a prefab and a GameObject with an attached UdonSharp script?
For context, this was to be for a set of functions that, as an example given a VRCPlayerApi, returns relative bone positions, or another that returns if the designated bones are even present on an avatar. The objective was to have it be callable on either the local player or potentially on other players for networked purposes to avoid the sync overhead.
I suppose this would have also been valid to ask in #udon-general, but felt a bit more on the advanced usage side of things.
static user methods are supported to an extent though
Exactly the example I needed. So we just can't define our own, but we can add static methods to existing classes. After a quick test, looks like this will work with some fairly minor changes on my part. Thank you very much! ^_^
Np! They don't have to be extension methods though.
Do you have an example of what a non-extension method might be that would work? As a quick trimmed down of what I tried previously that wasn't working:
public static bool BoneExists(VRCPlayerApi player, HumanBodyBones bone) {
return player.GetBonePosition(bone).magnitude != 0;
}
}```
If I then referenced `Test.BoneExists(player, bone);`, I'd get the error `Static fields are not yet supported on user defined types`
Converting the method there to
return player.GetBonePosition(bone).magnitude != 0;
}```
Seems to work as an extension method solution. But supposing I have a generic helper function on the class that I don't want to extend from a `VRCPlayerApi` object, what might be the way to go about that?
This compiles fine for me
So it does 😐
Well for starters, me making assumptions and building up a 200 line class with a variety of methods and fields without testing it first. Trimming down to what you shared there does indeed work, so let me see where precisely I've gone wrong with the rest of it
Ah, so no static fields then?
yeah
statics don't exist in udon
it just copies the "static" method into the class at compile-time
Gotcha. Well bummer. I was using those for various predefined sets of data, such as:
HumanBodyBones.RightHand,
HumanBodyBones.RightThumbProximal, HumanBodyBones.RightThumbIntermediate, HumanBodyBones.RightThumbDistal,
HumanBodyBones.RightIndexProximal, HumanBodyBones.RightIndexIntermediate, HumanBodyBones.RightIndexDistal,
HumanBodyBones.RightMiddleProximal, HumanBodyBones.RightMiddleIntermediate, HumanBodyBones.RightMiddleDistal,
HumanBodyBones.RightRingProximal, HumanBodyBones.RightRingIntermediate, HumanBodyBones.RightRingDistal,
HumanBodyBones.RightLittleProximal, HumanBodyBones.RightLittleIntermediate, HumanBodyBones.RightLittleDistal
}, defaultLeftHandCalibration = {
HumanBodyBones.LeftHand,
HumanBodyBones.LeftThumbProximal, HumanBodyBones.LeftThumbIntermediate, HumanBodyBones.LeftThumbDistal,
HumanBodyBones.LeftIndexProximal, HumanBodyBones.LeftIndexIntermediate, HumanBodyBones.LeftIndexDistal,
HumanBodyBones.LeftMiddleProximal, HumanBodyBones.LeftMiddleIntermediate, HumanBodyBones.LeftMiddleDistal,
HumanBodyBones.LeftRingProximal, HumanBodyBones.LeftRingIntermediate, HumanBodyBones.LeftRingDistal,
HumanBodyBones.LeftLittleProximal, HumanBodyBones.LeftLittleIntermediate, HumanBodyBones.LeftLittleDistal
};```
The closest we can get to a static fields is a normal field on a make-believe singleton
So I suppose I'll just need to change how I define them
I love how you describe that XD

My first thought is to just make a static method to provide those values instead
that won't work
But that's also cause I'm honestly not a C# dev and I'm pushing the limits of my knowledge here
Drat
I usually use @radiant nexus' VRRefAssist to automate the process of assigning the references to my "singletons"
https://github.com/LiveDimensions/VRRefAssist/
A set of custom attributes to automate time consuming references and repetitive tasks - GitHub - LiveDimensions/VRRefAssist: A set of custom attributes to automate time consuming references and rep...
I see where the "make-believe" comes from...

Okay, gonna be a bit more work than I hoped, but I'm willing to put some time into it once I'm off work and see what sticks. You've provided me with excellent resources and guidance, so thank you very much
Np! Any time 
This seems to work actually:
return new int[] {
(int)HumanBodyBones.RightHand,
(int)HumanBodyBones.RightThumbProximal, (int)HumanBodyBones.RightThumbIntermediate, (int)HumanBodyBones.RightThumbDistal,
(int)HumanBodyBones.RightIndexProximal, (int)HumanBodyBones.RightIndexIntermediate, (int)HumanBodyBones.RightIndexDistal,
(int)HumanBodyBones.RightMiddleProximal, (int)HumanBodyBones.RightMiddleIntermediate, (int)HumanBodyBones.RightMiddleDistal,
(int)HumanBodyBones.RightRingProximal, (int)HumanBodyBones.RightRingIntermediate, (int)HumanBodyBones.RightRingDistal,
(int)HumanBodyBones.RightLittleProximal, (int)HumanBodyBones.RightLittleIntermediate, (int)HumanBodyBones.RightLittleDistal
};
}```
Couldn't have it provide a HumanHandBone[] since Udon didn't like when I tried to instantiate an array for those, but the values are effectively enums anyways, so casting to int worked for it.
I don't know your use case of course but you have a few options (it seems to me). One is to actually generate enum values to match all that HumanBodyBones.Righthand stuff. Might be more work for little benefit but I regularly trade processing time for readability/maintainability. I can always devise strategies for improving speed should the need arise. Meanwhile my coding goes much better because I can read/follow my code.
using System;
namespace VR_Example
{
public enum GroundState
{
Tile,
Grass,
Carpet
}
public static class GroundStates
{
public static String Name(GroundState value) => Name((Int32)value);
public static String Name(Int32 value) => new String[] { "Tile", "Grass", "Carpet" }[value];
public static GroundState State(Int32 value) => new GroundState[] { GroundState.Tile, GroundState.Grass, GroundState.Carpet }[value];
}
}
Ah, I was under the impression you meant making a static getter for a member variable 
You don't need to index the value into an array of groundstates. You can just cast the int to the type of enum you want.
I think you will see you get the enum, the cast to an int, the name if you provide the enum, the name if you provide a value (directly or indirectly) and the enum if you provide the int value.
I'm leveraging the Name override so I don't repeat the code.
I'm not talking about the Name method. I'm talking about the GroundState method.
It should just be
public static GroundState State(int value) => (GroundState)value;
ah, so cast the integer to a GroundState
handier yet.... off to go convert those
thanks
np! it's easy to get caught up in a specific way of writing something! happens frequently to me too 
yup... consistency in the code though is handy when you find a better solution. I know I have to go change the core behavior and everything continues work
The Name using the String array is a bit problematic if one uses assigned enums. They numbers won't line up with the elements. I didn't want to go lookup in a dictionary though.

how does one export a unitypackage of files that are in packages (not assets)?
its impossible to google because "unitypackage" also includes the word "package"
oh that only works for vpms though I guess, hmm
dont mind me just doing super cursed things to get vrsl on an avatar lol
It works on any package.
C# switch expressions would solve this but alas we can't use it yet. The project insists on using C# 7.3
public static String Name(Int32 value) {
return value switch
{
1 => "Tile",
3 => "Grass",
5 => "Carpet",
_ => ""
};
}
error CS8370: Feature 'recursive patterns' is not available in C# 7.3. Please use language version 8.0 or greater.
Not that I'm using the values 1, 3 and 5 other than for the demo
Does the current vrc only support the legacy shader pipeline for shaders?
Check out #shaders for shader-specific stuff, but yes VRC is BRP only.
did vrc change something with the way particals on avatars and maps interact?
Maybe? If you elaborate on what the problem is we might be able to help.
I have a partical that fires normally in certain maps but in others it doesnt show/shoots in wrong direction when looking or being in a certain areas on the map. It isn't all maps tho. I've done some testing between my own maps from 2019 and 2022 but nothing reliable is holding up.
Hey Guys! can someone tell me if i can create a prefab of a "kick hammer" using the Kick option in group instances?
i would like to hit people with a hammer, to kick from the instance.
Does anyone know if it's possible to emulate the effects of the "motion time" option in blend trees? (Using a blend tree state and a parameter to control the motion time of an animation)
Trying to condense my layers down. I can't do standard 1d blending with this animation, it's controlled by a slider but there's too many keyframes to justify turning them into separate animation clips
why is vrchat menu so heavy?
its literally taking down half of my fps, meaning its doubling CPU time
unity ui is inefficient as fuck from what i can tell
the safety tab has almost no impact on FPS so I believe vrchat is doing unnecessary things on others UI tabs
especially the smooth scrolling effect can be improved a lot, its currently dropping 100 FPS itself and can easily be stuck in this state for too long
the mouse dosn't need to have this fancy effect on the background
etc..
ive noticed performance drops from opening my qm but nothing major enough for me to care tbh
tho for low end machines its probably enough to make the game unusable xd
should probably be looked at
I pressed it wrong. I'm sorry.
i bought a beautiful nature asset pack but i dont know how to fix this white aliassing stuff that happens on any object further than 10m or so from the camera. ive tried like a billion things and have searched online for solution, but still have no idea how to fix this. Does anyone know where i might begin solving this issue?
I'm not sure I can see it, can you post an up close image of the issue? Or like draw an arrow to it
Can't see anything either, but check if turning off anti-aliasing does something, anti-aliasing doesn't affect the depth texture.
this is the kind of nice "green look" not sure what else to put it that is to be expected
in the distance things become weirdly white-ish like this
if i get closer to that tree in the bottom image, it corrects itself and looks like the above
here is a picture from the asset store page that uses the exact same assets as used in the picture above. Both come from the same demo scene, it doesn't have the issue
marked red some of the problem areas, marked green what it should be looking like, even at a distance, color wise

Think I get it now, would assume LODs if premade asset and mipmaps if not, but not sure how you'd manipulate the mipmaps.
Could it be the realtime shadow distance too? I can't really tell on my phone
Check that the LODs have consistent lighting too e.g. the materials they use
dont really see what youre seeing
if this is in the unity scene, that doesnt have anti aliasing
test in-game with msaa on x4 for actual results
huh that's so crazy are you guys saying you can't see anything there?
I mean i don't know what to say, the red circled areas are supposed to be green
obviously they're not?
ill make a video recording i guess
I can and I have ran into that issue before, I think the issue is MSAA sampling the edges of vertices as if they aren't in shadow so the edges become bright.
At least that's the basic observation of what appears to be happening, MSAA has other issues that cause similar aliasing as well that I have seen.
oh right i forgot i had to still turn off the MSAA on the maincamera post processing layer thing. I havent ventured into rendering and all that too much, this is pretty new to me
Post processing AA and Unity's MSAA will both cause those lines to appear assuming it's the issue I've ran into
just noticed there is also a bright line on a branch in the green circle thats not supposed to be there
If you turn off shadow casting on your lights or disable PP and MSAA on the camera is the issue still visible?
i turned off MSAA on the camera and built, this s what it looks like in game. It actually looks really pretty darn good in some sections but a butcher in others 😄
Your editor MSAA setting wont carry over into the client you would need to change your VRC graphics settings to turn off MSAA
this is shadow type: no shadows
thats what you meant right?
ah right on
same pic with aa completely off
and thanks for helping to think along by the way, really apreciate it
Do the white streaks still appear when you get close or do they become completely invisible?
they become completely invisible, which i realized is another reason why it might be more obvious in the software than it is on an image
you can very clearly see that there is a certain distance to where things look pretty good, and beyond it this problem starts occuring
so you can gradually see the problem appear/disappear as you move
my own guess right now is that there is SOMETHING about the tree LODs or their settings
but what it would be i have no clue
Yeah I have had the same thing but the cause was MSAA, having it still happen even without MSAA is something I haven't seen
ive tried adjusting any settings i could find just to see if it would change at all
before eventually reimporting the assets and going back to square 1
i feel like nothing has really changed at any point 😄
other than it maybe becoming worse in cases like these
do you perhaps have recommended settings for the textures? Like the compression format, max size and other stuff like that
for example MSAA enabled / MSAA disabled in a basic test scene
huh yeah that seems to be almost if not the same problem
Only thing I have to recommend at this point is set the reference camera HDR setting to off but that is not always a reasonable trade-off as it doesn't completely prevent the issue
thanks again for your help
id use fade looks cleaner in my view
show us?
ok I'll do the comparison for us
With fade, how should same-object rendering order be rectified without splitting them into individual objects?
vs cutout
an any word on when the vrcheadchop being implimented/downloadable at some point?
was mentioned in the december developer update
Nope.
They brought it up 2 weeks ago I think, other than that, no news.
Why is the navmesh working in the editor but not in the build, my agents are stuck in the air and can't navigate anywhere but are working fine in the editor
You need to use the deprecated ai system
im using the old Nav mesh Agent component, is this what you mean?
The strange thing is that the old navmesh bake from unity 2019 was working with the agents in the build but i had to remove it because it was bugging my scene, after moving to unity 2022 with the vrc sdk update i used the new navmesh component bake and thats when the agents stopped working in the build.
Perhaps my lack of familiarity with C#/Unity is showing, but is there a way to reference the class on an Udon# behavior that used to be a prefab in a project, but has since been moved to it's own package?
Back when it was a part of the project I could reference it within it's namespace with using Prismic247.<namespace>; and then referring to the class. Since converting to a package however, that no longer seems possible? I'm trying to create an external interface for my package that can call functions on it to enable or disable it. Previously I could reference the prefab gameobject as a public variable on the other script and refer to the public methods on the class, but no longer.
I've not made a package before and while I think I've got it working otherwise, this part is baffling me 😵💫
Nevermind... Just like that it started working after hours of not... No idea what fixed it ¯_(ツ)_/¯
Aha. It was a rogue asmdef in the package Editor folder
Hello everyone, i'm making a world with some npc's that will chase the player but i ran into some trouble and i can't seem to find a solution, my Nav Mesh Agent's don't recognize the navigation in the build of the game and they are stuck in the air unable to move, however everything is working fine in the editor so the problem is only in the build, it used to work when i used the navigation that i baked on the old vrc sdk in unity 2019 but i had to delete it and bake a new one because i changed my level a bit and because the navigation baking method was different in unity 2022 when i updated the vrc sdk. I would really appreciate if anyone can help or give some advice, thank you.
The new one doesnt work with udon, the legacy nav mesh system is still available though, you need to use that instead
is it possible to change the settings of a Terrain on runtime somehow? Most ways of trying it that i came across are not allowed in udon
Yes, you can animate the change and then set the animator parameters through Udon.
and what about toggling post processing settings like AO enabled/disabled?
Can't you just change those directly in Udon?
i guess i was using the wrong way? i couldnt find out how
if not, you can just have several different post processing volumes using different profiles that you then toggle on or off via udon
var _ao = profile.GetSetting<AmbientOcclusion>();
_ao.enabled.value = pp_AO;```
was not exposed to udon
toggle the gameObject on or off
wouldnt it be a performance hit if i stack like 5 postprocessing volumes on top of eachother that way?

I was suggesting that you disable all the other volumes and only enable the current one, but stacking them could probably work idk
do you have to keyframe every possible setting in these animations, or can you map an animation to represent a value range from say 0 to 1000 ?
it seems to be working really well
Add a float parameter to your animator and then enable MotionTime on your animation.
When the float is 0 it will be on the beginning of the animation, and when it's 1 it will be at the end.
Is there a way to move an object along a bone and across multiple bones? Say like a bracelet or sleeve, but it can criss the lower arm and upper arm bones.
does anyone know if VRRefAssit is known to be buggy right now?
It worked perfectly in another project, but in the current one it's not setting hundreds of references
Apparently vcc broke the latest update, either downgrade or install it via git
thanks for replying. Which version should i use?
if you want to use vcc, version 0.0.8, if you want the latest version, clone 0.0.9 from git
Version 0.0.8 and 0.0.7 are scuffed. I'd suggest using 0.0.9 or 0.0.6
@near nymph
But yeah, like Teal said, clone via git link instead
Much more reliable than VCC
Hi
Cloth no longer works right in Unity 2022? Or rather, it works right in Unity but not in VRChat. Any idea if there is a way to get it working again or is this just our new reality we live in?
cloth phys has always been super wacky tbh, tho 2022 is definitely worse for it I've noticed
migrate it to physbone and itll be easier long term
Cloth was working as expected when the mesh was correct... Not anymore. And it's not a "unity issue" - VRChat is doing something fishy with it...
Really obscure question, but does anyone know a way to set a default thumbnail for an avatar in the SDK Control Panel? Been trying to make a button in my editor script that will set the thumbnail to a .png file in the project but I can't find a way. I just find it really annoying that you have to select the file manually now when I used to just be able to put a texture down in front of the upload camera.
Immer wieder da
Yeah, a multi-source parent constraint will do this.
whoa, didn't think of that. Thanks a ton!
What are your favorite assets from Unity's asset store? https://ask.vrchat.com/t/what-are-your-unity-asset-store-favorites/23387
Did you know that VRChat has a curated list of assets on the Unity Asset Store? … Yeeeeah, we forgot, too! “Dynamic Bone” definitely doesn’t need to be on that list anymore. 😅 We’d like to update this list! Do you have any assets from Unity’s asset store that you’d recommend to the VRChat community? (If you have a long list of suggestion...
does anyone work with the python version of the vrchat api?
The sky resource pack.
Before physbone.
Dynamic bones.
Imagine using unity
I don't have to imagine because I'm using it everyday.
I feel ya pain
Not much pain since I pretty much have tamed it pretty well.
same here with unreal, but unity
unity is like linux
you can go without using linux but if you need smth you gotta learn it
its not same compared to other egines
it got undeveloped UI
one thing coming from me about unity is the particle system
How so? It sounds like you're just inexperienced with it so you're writing it off as bad
Hey everyone ! Quick question: Is there a way to correct the avatar stats and rank in the control panel ? I have many optimizations happening on the fly during the build and so the stats and rank shown is completely wrong
The SDK is unaware of whatever extra processes you're doing on build. Your final output's performance rank will only be accurately shown in VRChat.
Hi, I'm trying to programmatically change an avatar's ID before building
locally the build succeeds, but in game the security checks fail
my current approach is inside IPreprocessCallbackBehaviour::OnPreprocess
public bool OnPreprocess()
{
// (other preprocess stuff)
var pipeline = GetComponent<PipelineManager>();
pipeline.blueprintId = blueprintID;
return true;
}
uploading with my preprocessing, but without changing the id works fine
btw my use case is that I have multiple versions of an avatar and my script changes / removes certain Objects and components
my question is if I can still change it after clicking the build button in the SDK Panel
or if I need to replace it first and then start a build myself
So while I'm trying to clean up my avatar project, I noticed the following .gitignore inside Packages/ the Avatar template
/*/
!com.vrchat.core.*/
so it's excluding all packages except the vpm-resolver?
that would mean i'm committing raw binary executables to my git repo.
and i feel like this may be bad practice for git project management
I just made a small script that let you spawn in the scene view, I think that is really convenient for testing and should definitively be a feature added to ClientSim
Wanna share? 
drag and drop the prefab in the scene, if the gameobject is active, it will spawn the player at the scene camera position instead of the the VRC World Descriptor spawn transform
I wish I could just add such feature in ClientSim myself, but since its part of the VRCSDK, it makes hard to work on forks and do pull requests
so its kinda a ugly workaround rn
i feel like the discussions here in this feedback post are the exact opposite of what i was trying to imply
that's what a package-lock.json is supposed to be for, and the required packages should be available to be fetched from a repository before work can be done
with the exception of packages (or even paid packages) not availabe within a public/private repository
oh i see, vpm-resolver needs to run beforehand
that's....weirdly designed but ok
I ended up just subverting the bs and adding partial prefix ignore exclusions and then explicitly add the packages I didn't want tracked like so:
/*/
!com.vrchat.core.*/
!at.*/
!com.*/
!dev.*/
!sh.*/
!tlp.*/
dev.onevr.vrworldtoolkit/
This worked for me as a workaround.
i see
maybe someone from vrchat should come around and look into implementing a proper package-lock resolution system so that you don't have to commit all your project's included packages in git
I turned it into a proper ClientSim feature 😉
nice 
The problem is vcc is not suited for multiple people working on one project as you can't list sources per project
So if someone has vpm X added and the person you are working with doesn't, 💥
Hopefully someone more knowledgeable can help me with this, this strange exception is getting spammed in my world and it has no trace in unity even while listening. Does anybody have any ideas as to what could be causing this?
Ok, but this is really strange; When I reupload the same exact package to vrchat it no longer appears.
If I upload it again it will then re-appear and need a 2nd upload again to fix itself...
It breaks sync and ownership transfer of most objects.
so then what if i minimize my dependence on vcc/vpm then and get most of my vrchat packages through OpenUPM, and only go the vcc/vpm route when there's no other way for a particular package? 🤷♀️
would be nice if for proprietary copyrighted packages there was a way to essentially "drop them in" to a managed project without tracking the entire package itself
i am unable to use the vcc ui on my system anyway, so i need to use the vpm utility direct from the command line, and i'm already pretty deep into unsupported territory, so how far could i stray from the beaten path before total project collapse? 🥹
So here's a new one. I've tried reimporting, reinstallig sdk, deleting Library folder, nothing worked. Trying to save implanting my Asset folder into a new project if I can but I don't think there's much hope. The errors from the script in Assets/ stem from a line in my code unable to find Networking.LocalPlayer it doesnt believe it exists anymore
Can you post the code for OnEnable()? OnEnable is tricky since the first time it executes the script hasn't run Start() yet.
{
Vector3 myVec = Networking.LocalPlayer.GetPosition();
if (thisCollider.bounds.Contains(myVec))
{
Unlock();
}
} ```
This is the method, its for a trigger zone that starts disabled but can become enabled locally at runtime upon passcode entry. This script works fine in other projects, which leads me to believe something is seriously wrong with client sim or maybe the udon sharp data locator? Those errors above saying that those basic system types dont exist scares me 😨
Ive narrowed it down to being scene related, a fresh scene seems to work fine within the same project
So definitely could still be related to that as a possibility but I guess the question becomes how to troubleshoot this
Thanks for your help you put me on the right track for sure. I isolated the issue to something horribly wrong with ProTV (dispite it not appearing anywhere in the logs 🙃)
Great! And sorry I missed the replies until you had narrowed it down! Lol
🤔
I put this in #udon-general and I'll put it here too just in case. I'm trying to make an AI that goes to a set destination when you interact with it (using the AI Agent stuff). It works fine in unity but whenever I build and test it in actual VRChat it doesn't move at all. Is there something I'm missing?
Have you tried this? Using the obsolete navmesh baking instead of the supposedly new navmesh component in 2022 #udon-general message
You can pipe errors to your unity editor while vrchat is running by going to your unity preferences for udon. Sorry I don't have a screenshot of this rn
hmm okay ill try that since im pretty sure im using the new stuff
ill inform you what happens
holy shit it actually works after all these hours tysm!
That's great to hear!
Any chance you updated protv recently?

That error is caused by outdated prefabs referencing wrong scripts
There's likely a weird message a lot further up
Something like X does not match Y on Z
Yeah its with the 14.5 beta I had to downgrade to fix it
Back to v13
I have figured out the problem with it. It's related to some script migration logic. I have a solution, but some other matters are pressing atm.
The gitlab issue will be notified when it's fixed.
Oohhh gotcha! Thanks for looking into that
Question is anyone familiar on how I could write unity editor code that would allow me to:
- grab the instances of
VRCAnimatorPlayAudioanimator state components inside of an animation controller?
Is there a list of all possible actions that can be recorded in the output log? Thinking of making a OSC program that reads it and theorize what kind of cool stuff could be done
Ultimate logging parameters (so I've been told)
--log-debug-levels="API;All;Always;AssetBundleDownloadManager;ContentCreator;Errors;NetworkData;NetworkProcessing;NetworkTransport;Warnings" --enable-debug-gui --enable-sdk-log-levels --enable-udon-debug-logging
Hello!
One question:
Is it possible to create different scenes and switch between them
in vrchat?
I know its a normal practice on videogame developement but never tried on vrchat!
Thank you ♥
It is not, you only have one scene to work with.
Hoping we get that capability eventually though.
okie
is just i know when u change scene it deletes all scripts and prefabs and everything from the other one
that means u can put zones withouth charging others cause they don't load them
that's what i want to do in my world
I tried making a toggle, but some codes and prefabs still using lot of memory even if are not activated
and i paid for some games i can't use because of this xD
Not sure if this should go here or somewhere else, but I have a question regarding the VRChat SDK in Unity. I am working on avatars for myself and my wife, but whenever I want to switch VRC accounts in the SDK, it always makes me re-verify the email address using a code. It's not a huge deal, but it's definitely a pain to work around and I'd rather not have to do it every time if possible. With that said, does anyone know of a way to either keep both sessions logged in or prevent it from asking for verification every single time?
Create two separate projects and log on each account per project. If you need to share avatar files between them then you can just overwrite the assets folder when you make new changes. It's not an elegant solution but you won't have to relog every time.
You should be able to determine which (few) files change. Log in with one account (copy the folders), log in with the other account and then compare the folders to see the differences. Create a command file that will copy the files you need when you need the account changed.
oooh, that's a great idea! I'll give that a shot later today and see how it goes.
I have a couple of on-going items I would like ot resolve, perhaps someone has an idea. First one is to confirm that there is no system for referencing a singleton object correct? We can in fact create a static C# class with static methods BUT... importantly there is no support for static properties. So this means there is no way to assign a game object "once" and reference it through that static class. While we can place a U# object in the world treating it for the most part as a singleton the reference must be assigned in the editor or looked up at run-time.
Assigning it in the editor is problematic if almost everything needs to know about the object. Obtaining the reference at runtime is doable but given that the reference doesn't change looking it up more than once is a bit nuts.
So I was thinking how nice it would be (unless static properties are coming soon) to have a single world-defined static object. Is this something that would be useful for VRC to add as part of the API? It can be a null reference if you don't use it but it would be a place to "park" a reference that can be retrieved in a static context. Something like World.Settings but it wouldn't need to be called that of course. It couldn't be strongly typed but seemingly it could be an UdonBehaviour and perhaps cast to whatever object the developer wanted to use.
In my particular use case I have a UI logger which I would prefer to write to with UILogger.Log("message") but (as mentioned above) any class that wants to write to it needs to go find the game object and U# class.
@tribal horizon Take a look at VRRefAssist: https://github.com/LiveDimensions/VRRefAssist. It provides support for automatic assigning of singletons in the editor/compile time.
I have heard of it and I imagine it can be useful but in this case it still means defining the singleton reference in any class that "might" use it right? That isn't the case with my C# logger class. Anywhere and anytime I want to log something locally I just call Logger.Info() with nothing to assign. In this new case the problem is that it is a U# class so I can't do it the same way.
There are built-in static classes that represent Networking an Players so I figured one developer accessible one would be handy.
Singleton in VRRefAssist is actually an attribute of the class rather than the object. You assign [Singleton] on the class, and the references are [SerializedField]. I've never tried that via "using" but yes, I doubt it would work.
My guess is we'll be able to do what we want more directly with Udon 2.0.
I'm hoping so 🙂 Funny now small improvements can open so many possibilities.
So while I've got you here. Onto my second problem to solve. I need a clean mechanism that permits each player to "post" event messages.
My UI Logger works great for the local player but I need to track failures on other players so they need to post to it when (and if) an exception occurs.
I have worked out that each player should have their own "communication object" or there will be conflicts trying to sync the messages.
Can't pass a string in a custom event so we're stuck with sync'ing variables right?
As far as I know, yes. What I did in my New Year's Eve world to toggle the open arms->fireworks and raise hands->confetti was to sync variables. Each player got their own object from a CyanPlayerObjectPool, modified their state accordingly, and performed a RequestSerialization().
My particular need at the moment is to monitor whether the video player throws an exception for anybody in the world. I can't see why it fails once in awhile for some people.
Don't know if a retry would work, etc. until I see the error.
I was thinking about an Object Pool let me investigate that a bit more. I think it would be a pool of "error reporters". If I understand it correctly only the spawned objects would be used and therefore sync'd and all the sync'ing takes place behind the scenes so I only need to monitor the serialization call.
Hey @rocky crescent would you recommend CyanPlayerObjectPool? I'm reluctant to depend upon too many 3rd party libraries but this one seems to cover what I need so I should probably try it. I can always roll my own should the need arise.
Yes, I'd recommend it. I know what you mean about depending on too many 3rd party libraries, but this one seems to work well. For me the biggest problem with them is that you don't really know how well tested they are.
it took a couple of false starts but it is working now. I think they did a very good job with the documentation which has examples. Nothing beats an example (especially a simple example) when explaining something to a programmer. A tiny bit of tidying and maybe adding a way to toggle the logging and I should be done.
My build appears to be failing and it's not precisely clear why. If I comment out this line then build for test, it works. Otherwise I get this error whether building for test or to upload.
You must not edit the sdk. The particular line is for reporting error if build has been failed. If you deactivate that part, the failed build result will be failed silently. So this doesn't fix your issue.
Yeah but the error I get in console from this line is "Unexpected Error Occurred" and a link back to this line, so there's no information either way
I'm a professional software engineer so changing code for debugging purposes is pretty basic for me
There usually are other error get reported right above this error.
If you're a professional SE then you should be able to understand the purpose of that particular line.
Renfrew I'm not commenting out that line to make it work, I'm commenting out that line to learn more about what happens
What I have learned is that the build does succeed but that the path is null so the SDK doesn't know where to look
Error usually doesn't get reported as a single item. Multiple errors are chained together as side effect of another. You're looking at the last side effect error, so that's somewhat pointless.
Yeah I'm not seeing anything above this, but maybe it's truncated, I'll look for log files.
The reason there's no error above this in the stack trace is because there is no error causing this error, there is just a null check here that throws an error
the error originates here so from here I have to read up in the code to see if I can spot the issue, or run live debugging in Visual Studio
But there's not much to look at, the code that makes this null is right above it so
result is not equal to avatarProcessedTask, so it sets the bundlePath to null
Oh you're right, it should be throwing errorTask.Task.Result
Something got super hosed when I restored from a backup, ignore me :/
Hello. I am curious what it might cost to hire a scripter for a world? Thinking about things like creating a menu system, interactive object system that allows for splitting of objects, and detection of what an object material consists of
Can I dm you about this
Sure
Hello, i don't really know the good keyword to find the sollution to that, i'm making a script for editor debugging on my avatar (so a script that i put on a gameobjet for debugging and testing) and i would like this script to not be recognised nor build by the SDK i used the #if UNITY_EDITOR state to avoid building that but it still being recognised by the sdk
Extend the class with IEditorOnly interface.
like just adding an IEditorOnly after the class like if my class inherited from IEditorOnly ?
okay i see, odd but it works thanks
Just so you understand it better... the Interface isn't an "inherited from" thing it is an "agrees to implement" thing. Meaning your class can be used in cases where IEditorOnly objects are required.
What are the odds of VRChat implementing OAuth/JWT for authentication of applications? I've seen them do something for Canny where it prompts for permissions and info. I think it would be a good idea to allow developers and creators to use it to authenticate users on their external integrations. For example, I am working on a World Manager API that influences the World Manager Udon Scripts and I want to make sure the rightful owner has their worlds accessible to their dashboard.
VRChat doesn't have a public oauth/openid API. I would love if they did because then using applications like vrcx would be so much less of a security risk. As far as I know they have a simple openid endpoint (like you see on canny, etc) but it's private for their own internal use and a few select partners.
Is anyone familiar with how VRchat handles mirrors keep getting this and I am not sure what is causing it
Do you think I would be allowed to make a version of old VRChat run on my own custom api, I already made the api I just don't want to get into any trouble with VRChat.
Vrc issued takedowns in the past to people doing this

vrchat private server owner was issued a cease and desist years ago for exactly this
What if it was completely private and I did it for the sole purpose of seeing if I could do it?
I mean sure, if you take the it's not illegal if you don't get caught route. It would kinda be a waste of time/resources though
i think ur time would be better spent applying for vrchat as a network engineer and fixing their photon implementation
⛷️
fair, I’ll probably consider doing something like that in the future
Anyone know how to rename vive trackers in steamvr? I can't find anything
I would like to ask how avatar animator parameters are synced with remote player. Are they send all in once after a interval/latency or individualy send when change occurred with their own interval/latency?
as far as im aware theyre sent as a list
can you elaborate a bit more?
just a big list of the parameters, and they drive the position of the list theyre in
this is a presumption based on how face tracking parameters sync between fallback and standard anyways
say cheek puff parameter was 1st in list on your main, but tongue out was 1st on your fallback, itd drive tongue out rather than cheek puff for the fallback avatar
is it possible to ensure 2 synced parameter arrive at remote player exactly the same time? given that the 2 synced parameters are changed at exactly the same time
i believe they should
thank you for the insights, appreciated
they're sent as raw bits, the order of "synced" parameters is the only thing that matters as vrchat does not sync the parameter themselves, just the raw bits, the parameter list on the avatar is what's used to resolve the bits into parameter values, so if the list mismatches (cross platform, fallback, etc) then the data might drive different parameters than intended
Does anyone know if there's an existing Canny open for user respawn not triggering onPlayerExitTrigger?
I don't think it's supposed to. Respawn really just moves the avatar. Reenter should trigger and exit/enter.
I mean, you'd expect player exit to trigger given that... well, that's what literally happened.
Ah, I misread your question and thought you were talking about onPlayerLeave. nvm
so the default gitignore for the VPM template allows through !com.vrchat.core.*, and the instructions don't mention removing that line, but surely I shouldn't allow it to commit com.vrchat.core.vpm-resolver to my repo right?
According to "Using Source Control with the VPM" you are meant to commit "Packages\com.vrchat.core.vpm-resolver". https://vcc.docs.vrchat.com/vpm/source-control
We're big fans of source control systems for saving your work and collaborating on content. We use Git for our own packages and even the main VRChat client. The VPM was designed to play nice with source control, here are the specifics of how things work. If you use another system like Plastic you can send us tips to share via Feedback.
Best advice, remove that gitignore and commit the entire package folder if it's your own repo for backups etc, else you don't have a fully usable copy on clone if vcc is missing any repos / packages
nah this is for a vpm
I dont know if I should make a canny for this but I would just share something I realized today. When you disable the vsync, there does not seem to have a limit in the framerate, but this is also affecting the menus, I usually hit +700 fps. I know many games will intentionnally limit the fps during the loading screen because:
- It gives them more ressources for the actual loading process.
- it's wasted ressources, especially when you have to wait many secondes/minutes depending on your internet connexion.
so having your gpu running at 100% for this is triggering me, idk what you think maybe its something the devs can add ?
HI, so im using the vrchat IVRCSDKPreprocessAvatarCallback to replace a dummy Expressions Menu with a different menu which i load from a file path using AssetDatabase.LoadAssetAtPath<VRCExpressionsMenu>("file path here") and i just replace the menu for the avatar but when its uploaded there is no menu in game so am i doing something wrong ? any pointer in the right direction will be helpful 
as a workaround, I found you can safely force on vsync for vrchat in the nvidia control panel without it affecting vr mode
I need my fps to be uncapped, just not in the loading screen 😅
We need to add Constraints To Quest!
I cant give my lightsaber to work on quest side due to limitations, quest is advancing and so we have to as well!! At least I can use particles now for quest avatars but i cant make it any better because of the restricted constraints, I thing its fair to say as a pro unity and blender content creator that constraints will be fine and I can also say If you want to be cautious on this subject like the mobile particles addon, Then do so Just add constraints.. so many want to see my creations and they simply cant due to something so needed for my content I Create what I really need out of. It is to be able to drop in place an object, Thanks.. Wishes
Good news, VRChat is making their own constraints, estimated to come out in July Summer
Finally, it’s about time
Hello, world and avatar creators! We’d like to give you a look at some of the planned features for the VRChat SDK: Status Name ETA Coming soon Inspector improvements for Worlds SDK Components Coming soon Allow world creators to change Physics bounce threshold In progress Upgrade the SDK to Unity 2022.3.22f1 May 2024 In progress...
In case you missed my edit, not July, sometime Summer.
Sweet I wonder I mean I have no doubt I wasn’t the only one who wanted this
It will help so much now
I need to mass-add LOD components to a lot of objects. I can do that easily enough my setting up an LOD component how I want then assigning it to multiple prefabs, but that has the issue of still needing the meshrenderers assigned. Does anyone know of a way to mass automatically assign mesh-renderers to LOD components? It only has 2 levels - LOD0 and culled so it's obvious where it has to go.
Unity will automatically add a LODGroup if you call your meshes something_LOD0, something_LOD1, etc..
Interesting, shame I wouldn't be able to do that in this case though. I wonder if it's scriptable...
I'm having a nightmare of a time getting baked occlusion culling to work properly so I'm trying to leverage LODs for culling purposes more. Not ideal but little other choice
What's your issue with occlusion culling? Biggest thing is to make sure only things that would reasonably block other objects to be set as occluders. Eg a tree with leaves would not be a good occluder because there are too many little holes you can see behind it with.
The main issue I've had is things wrongly being occluded by seemingly nothing. Nothing is set as an occlusion culler except for large walls, floors and dedicated blockers.
unity’s occlusion baker is awful, the rays commonly pass right through solid walls
sadly they don’t expose an api for people to be able to make a 3rd party replacement
My issue was the opposite, they kept being blocked by absolutely nothing.
you can usually fix things occluding too much by splitting your objects into smaller parts. For instance if you have 4 walls make each wall a separate object. The rule of thumb I use is to avoid concave objects (relative to the size of an average player) as much as possible.
I didn't find that helped in these scenarios unfortunately, it also went counter to trying to reduce draw-calls too.
Hello, is there any way to make custom camera that would override the VRChat's default in-game camera? Basically it would be like VRCLens/VirtualLens2. I have 0 knowledge in coding so im just asking in general.
Question for the VRC team specifically most likely, in the docs. https://docs.vrchat.com/docs/using-vrchat-in-a-virtual-machine they state that Proxmox should work out of the box. However EAC does not seem to be working out of the box I am still struggling with EAC's VM launch error. And my CPU is displayed as Virtual Machine. Does anyone have any info regarding how I could get around this? I've already attempted changing the cpu flag's vendor id but no difference seems to have been made.
🚧Advanced Users Only!This information is generally only useful for advanced users and specifically only those running VRChat in a virtual machine. It will contain language that may not be recognizable or useful for most users. ❗️Running VRChat in VMs is Unsupported!Using VRChat via a Virtual Machin...
I feel like this is the best area for this question as it's pretty quiet and I feel a VRC member would look in here more often rather than one of the basic channels. 😅
I managed to get around it by fiddling with some proxmox settings the only issue now is trying to figure out why oculus refuses to connect with my headset
hi! i was wondering if there is any way to change the character's mesh without breaking the armature,i want to edit something but i kinda realised it too late
If you don't touch the armature then you could overwrite the file when exporting back to Unity.
You just need to export using the same settings it was originally exported as (always turn off leaf bones and if armature scale is 1 then FBX all, if 100 then All local.)
do i need to export the whole avatar?
i tried only exporting the part i needed but re import broke it
If that part is a separate model file then it should work.
Could you explain how it broke?
well my char's legs,arms are separated into a custom mesh like that
i exported the body into blender as fbx
made changes and when i re imported it it deattached from armature
i just changed the mesh
Do they come as one model file or as several separate ones?
one single fbx
Then you should be editing that fbx, armatures are weird in Unity and aside from code solutions you can't tell a mesh what armature to use.
alr ty ill try
looks like these aren't blue, which means you unpacked the avatar prefab, updating isn't going to work properly
i imported them from a different one into the avatar
so all the other things don't get lost
To my knowledge only some things won't work, like new rigging, but if you straight up overwrite the model file then the mesh will update without any issues, at least I haven't noticed any issues doing that.
it works fine for me
all functions as expected
i just need to edit the mesh thats my issue atm
Great, if it works for you. I've found that it tends deform weirdly when I try it, and there's really no reason to unpack in most cases anyway
well i had to replace the original body mesh into 5 separate one
for the functions i wanted
I was curious what those were, but it's cool if you don't want to share.
secret :P
well whole avatar disappears lol
are these export settings alright?
The most important one, generally, "Apply scaling" is one I cannot say whether it is correct or not since it depends on how the original model was exported.
100 scale on armature = All Local
1 scale on armature = FBX All
Your setup is strange though so possible you just have to set it up again
is there a scaling value set in Unity at the top of the 'Model` tab in the inspector for the FBX file?
scale is 1 for all axis
there's no axes listed where I'm talking though
that - that's good
what's your scale on the objects in Blender? Is that also just 1 for everything?
ok good. But is it like, really short there?
its the perfect size
always been like that
the interesting thing is that i export it from unity to blender, back to unity (even without changing anything) and it disappears
if you unpacked the avatar prefab, yep, that's what happens.
at least in my experience.
well all i did was import the base unitypackage, delete everything from inside, then drop the armature and the stuff into it from the modified one and it worked so i worked off that
Does anyone know how I'd detect punching I thought of using a physbone but it just moves out the water when I go to punch it Im guessing cause its a child of what im moving but I kinda need it to be a child so it moves next to it does anyone know what I could do?
there's a punchable system which does this via contact receivers (hands by default are contact senders), with a velocity threashold. I'd use the same method
oh wow that was way old and I didn't notice 🙂
Hi, Im developing a C# script to install a vrc asset on peoples avatars. The script is for use in the editor exclusively but the sdk will remove the component before the avatar can even be uploaded.
'The following component types are found on the Avatar and well be removed by the client'
I know its possible because vrcfury components do not have this issue.
Any help appreciated.
try add this class to your class inheritance
IEditorOnly
from using VRC.SDKBase;
OMG that worked thanks! ❤️
Alternatively, just use vrcfury / modular avatar if possible and save yourself some headache
Summat screwed up. Unity crashed seemingly outta nowhere while I was updating some shaders, and now it keeps crashing before it can initialise the asset database. Any ideas how to fix?
Remove the problem asset from the assets folder, if you have any idea what it is.
Hiya, thanks for the tip! Had a play around last night though and in the end it was something in the library folder that got corrupted, either the shader cache or the asset database file. Wiping and rebuilding the library fixed the issue.
Nice, that one's less hassle at least.
Yup yup! Currently in the process of converting shaders from poi to liltoon, but with so many variants in the project folder and unity's rock solid stability™, things can get unwieldy 😅
Just wanna match the style from zzz dammit
Seems converting from poi to liltoon would be a fairly big downgrade 
I'm normally converting the other way around
i prefer liltoon to poi personally
Liltoon is more lightweight
Not when it's incompatibility with material merging with d4rks tools for example
We just added a contribution guide to our documentation! Check it out:
https://ask.vrchat.com/t/contribution-guide-for-vrchat-creation-documentation/25721
We just added a contribution guide to VRChat’s Creation documentation! Please read it if you’d like to contribute to our documentation. Different writers have different styles, so we wrote this guide to improve the consistency of VRChat’s documentation. The contribution guide consists of three sections: The accessibility guide explains how...
nice
working on my tool and for a specific reason i needed to adjust json settings, turned out to break the SDK because of type casting (list to array) via json for content warning tags https://feedback.vrchat.com/sdk-bug-reports/p/changing-jsonconvertdefaultsettings-breaks-sdk-uploads
Can any vrchat devs explain this? I have an object with a rigidbody and a vrcstation. While a player is in the station, and the rigidbody collides with another player, the player in the station is forced to exit.
hi 👋 i believe this is the right channel not sure but i'm working on my avatar but im running into issues with the VRC SDK and i don't know why exactly, it seems that ScriptableObjects don't exist?
error CS0234: The type or namespace name 'ScriptableObjects' does not exist in the namespace 'VRC.SDK3.Avatars' (are you missing an assembly reference?)
'VRC.SDK3.Avatars' is there, but it doesn't have anything past that, im using a .dll version of the sdk not the directly appended sdk from the VCC app not sure if that matters
A dll version...?
yes it's redistributed with warudo which has official integration, the problem is the avatar is failing for vrc as one sdk is running into that error
the tldr is, vrc sdk is needed by two sdks in the project the both depend from each other but one comes with it's own vrc sdk due to official support causing duplicate assemblies, the result is the sdk with it's own vrc sdk seems to make the other sdk fail with error CS0234: The type or namespace name 'ScriptableObjects' does not exist in the namespace 'VRC.SDK3.Avatars' (are you missing an assembly reference?)
Just sounds like it's using an outdated version
i see, weird tho as it's still VRCSDK3A, thought could ran into problems between sdk2 and sdk3 not within sdk3 versions
Is there a way I could get the data for a world (the icon for example) and display it as the texture on an object using the VRC API? I'm making a world which needs the ability to display stats of other worlds; here's an example I made
(The person is how many visits the world has, the heart is how many people have favorited it)
https://vrchatapi.github.io/docs/api/
"Get World by ID" is way down at the bottom of the list on the left.
(can't figure out how to link to that "page" directly)
Just be aware that you can only do a request every 5 seconds, a VRChat client limitation, so if you are going to request the data from a lot of worlds, it might be worth hosting the data on github pages (a whitelisted url) and have github actions periodically update it for example.
Altighry. Thanks!
LittleBigPlanet world select?! Sign me up!!
Yea!!! I honestly have no idea what I'm doing, but I'm trying my best to get it working lol
How can I pull analog grip button data? would Input.GetAxisRaw() work?
Trying to get a pen that changes size based on analog input
Yes, Input.GetAxisRaw works. These spreadsheets show all the input that isn't covered by normal Input Events. https://docs.google.com/spreadsheets/d/1_iF0NjJniTnQn-knCjb5nLh6rlLfW_QKM19wtSW_S9w/edit?gid=1150012376#gid=1150012376
var leftGrip = Input.GetAxisRaw("Oculus_CrossPlatform_PrimaryHandTrigger");
var rightGrip = Input.GetAxisRaw("Oculus_CrossPlatform_SecondaryHandTrigger");
Dammit. Just ran into this same damn thing and this is a post from a year ago.
Need to rearchitect my entire event bus and other design principle and pattern docs that my team was using.
Udon 2 please dear god be soon
Is there an exposed endpoint for converting a regular Unity constraint to a VRChat constraint or is it just limited to the SDK itself.
I'm creating an auto setup tool for a VRCFury prefab and I don't seem to have a way to adjust values of a VRC Constraint from editor code
I'd like to just automate that step too, but as it stands I might need to ask the user to convert it themselves which is not super non-developer user friendly
afaik, VRCFury auto converts constraints on its own
anyone figured out a reliable way to measure finger curl in an avatar?
gonna try proximity contacts first, but I’m open to ideas
how would I (in a relatively lightweight manner) have an event fire every n seconds? (it doesn't need to be exactly n seconds down to the frame)
https://creators.vrchat.com/worlds/udon/graph/special-nodes/#sendcustomeventdelayedseconds
The sendcustomeventdelayedseconds function
The "Special" category contains nodes for custom variables, custom events, flow control, and communicating with other UdonBehaviours.
Just have it call itself repeatedly.
that sounds like it would be unstable, like if I were to lag it would fail eventually?
I mean I'll try it
I of course don't know how the underlying code works, but I have never seen or heard of it failing.
No matter if you have lag or not you could never have something run precisely, it will just be queued for the next time it can be run.
Does anyone have experience teleporting Phys Bone Components and/or Phys Bone (inside-out) Colliders around really fast to use one component/collider pair to drive multiple _Angle-based parameters?
I know someone a long time ago had something similar going on for their toes, I think they maybe were somehow just using one phys bone component to make every toe grabbable… like it teleported around until you grabbed it, then based on which toe you had, their avatar’s toe would constrain to the phys bone, and so the one single phys bone component was articulating all ten toes on the cheap.
I might be remembering it wrong—basically, I’d like to grab five different simple _Angles, and if anyone has experience with this it would be helpful. Like does this still work, can I really use just a single frame for each position, etc? Are there weird pitfalls preventing me from doing this or will it just work?
I’m working on a base rig intended for use by others, so I’d like to use as few phys and contact components as possible out of the gate so people have more room for their own. Thanks for any help or guidance.
I've seen this done w/ local contacts on an avatar. Don't think I've seen it done w/ physbones before.
Can definitely try it, though it may be framerate dependent if it goes too fast
is there any update on wether accounts with tilia transactions can be merged or if i can have my tilia transactions cleared
Hi hello, just wondering if the player collider capsule is on the Player layer or a different one?
It should be on the PlayerLocal layer
Does that include other player's?
Ooh thank you!
np!
Does this mean you can do particle collisions that collide with people remotely??
Maybe??
Only locally for them
So there's things like VRCFury which are components that you place on a VRChat avatar, but VRChat doesn't recognize them, however a little utility component I made myself makes the error "The following component types are found on the Avatar and will be removed by the client" appear in the SDK
How can I make VRChat ignore it and not cause that issue to appear?
need to make the components "editor only"
not 100% sure how to do that myself though
I don't have time to fully dive into it, but it seems like VRCFury and the others like it are patching the SDK's component whitelist, of course doesn't mean you can upload the components, but does mean no unnecessary warning.
Check the WhitelistPatch.cs file in VRCFury.
maybe im dumb or something but i setup oscquery in my application like so
public OscQueryManager()
{
QueryPort = Extensions.GetAvailableTcpPort();
UdpPort = Extensions.GetAvailableUdpPort();
}
public void Start()
{
_service = new OSCQueryServiceBuilder()
.WithHostIP(IPAddress.Loopback)
.WithOscIP(GetLocalIPAddressNonLoopback())
.WithTcpPort(QueryPort)
.WithUdpPort(UdpPort)
.WithServiceName("MultiShock-Client-" + + new Random().Next(1000000, 9999999))
.WithDefaults()
.Build();
_service.OnOscServiceAdded += service =>
{
Logger.Log($"OSC Service Added: {service.serviceType} {service.name} at {service.address}:{service.port}");
};
}
and i have my UDPListener setup on the UdpPort and in vrchat it logs that its sending osc data to my program but it shows the TCP port not the UDP port and my program doesnt receive any osc messages but if i send osc messages from something else directly to my programs UDP port it recieves them so did i just setup OSCQuery wrong? or am i being dumb about something else
didnt realize i needed to add the endpoints
I posted this in Udon but perhaps here would be a better option: Does anyone know of a way to monitor when all the "startup" code has finished and the world and the player set up is complete? I'm pouring over the logs and for the important parts that I can see include "calls to all Start methods" followed by "calls to all Init methods" (Init being my initialization cycle). Then "held events" process which is where sync'd objects get their values. Eventually we get to "World download" and "World loading" messages which tells me the world is done. But we don't have any events for this do we?
I would happily write whatever was necessary but I can't think of any way to determine when all the initial sync'ing as finished.
Are damped (self-referencing) constraints causing constraint depth calculation problems...? Every single one of my constraints is counting towards my constraint depth right now, I can't figure out why except that maybe it's because I have some damped ones?
There's a known issue in SDK version 3.7.0 where the constraint depth shown in the client may not match what's shown in the SDK. You could try enabling Show All Avatar Performance Details in the settings tab of the SDK window and checking if the constraint depth there is different. If it is, the beta SDK 3.7.1-beta.1 should contain a fix for this issue if you want to try a Build & Test with that (maybe back up your project first).
Constraints referencing themselves shouldn't increase the constraint depth.
So odd question.
I made an asset- on which, after adding it to my avatar, and uploading it, has removed every single expression option on it.
However- uploading an older version, without said asset still doesn't fix the issue, and instead, the whole Avatar Blueprint ID Seems to be corrupted.
I"m at a loss as to what could've done such a thing in this asset.
This asset does include particles, And sound clips, plus vrc fury components such as a full animator, and parameters, and armature links.
i have tried also uploading to a different id:
The backup right before the addition worked fine- but the second i added the asset- The same corruption happenned- even after closing the game, uploading the backup, and hopping back into the avatar has not fixed it.
I am not using any form of Modified SDK either.
further debugging lead me to a mesh rendering issue on one of the copies.
see messages from myself starting #avatar-help message, TLDR is changes with server side checks, fixed now but existing content won't immediately be fixed, reupload should fix things now
It might've also had something to do with a prefab behaving a bit poorly-
after remaking the asset's prefab from the ground up, it seems to be acting proper now.
Enjoy!
#Clarkinc
Disclaimer:
Copyright Disclaimer Under Section 107 of the Copyright Act 1976, allowance is made for "fair use" for purposes such as criticism, comment, news reporting, teaching, scholarship, and research. Fair use is a use permitted by copyright statutes that might otherwise be infringing. Non-profit, educational, or personal...
Seen this before but it actually makes no sense if you think about it
Only you
?
The Platters performing "Only You, And You Alone", released originally in 1955.
The Platters, an American vocal ensemble, were one of the foremost singing groups of the early days of rock and roll and also often associated with the doo-wop style. They were managed by songwriter Buck Ram, who was taken with Williams's dramatic soaring voice and ...
Any news on “VRC OAuth”?
The last time it was mentioned was this link.
Good luck with that
They make money by restricting it to partners


(I was told to repost this question here, instead of #avatar-help )
I have a script that is modifying Rotation Constraints, How do I edit the script to use VRC-branded Rotation Constraints without an include error?
The only workaround I would have right now is to continue using Unity constraints, and then call ConvertUnityConstraintsAcrossGameObjects afterwards, but that doesn't seem great.
I am also getting a namespace error when attempting to add "using AvatarDynamicsSetup", so I'm not sure if I can even do that
Have you configured assembly definition?
(p.s. this is an idiot answer. never mind.)
Are you referring to these?
The question I am asking is how to write these, or whatever preprocessing is needed.
I am unable to find any documentation regarding how to "include" "using" "get" these
heck, I didn't even know these were called "Configured Assembly Definitions", until now
Here is what I have tried:
Here are my only references:
https://creators.vrchat.com/avatars/avatar-dynamics/constraints/ <---- mentions using AvatarDynamcisSetup class include
https://creators.vrchat.com/sdk/public-sdk-api <---- talks about how to "use" the sdk
VRChat provides its own custom constraints system, which allows bones on your avatar to move, rotate, and scale relative to other bones.
The VRChat SDK provides a set of interfaces and methods you can use to enhance your world and avatar build process.
Where you referenced RotationContraint (in your image above) it should most likely be VRCRotationConstraint
What I am asking is that my script uses:
headRotationOffseter.GetComponent<RotationConstraint>().constraintActive = true;
This works fine, BUT
when I change the line to
headRotationOffseter.GetComponent<VRCRotationConstraint>().constraintActive = true;
I get namespace / context errors
How do I add the namespace / context?
(stuff like this)
using VRC.SDKBase;
using VRC.SDK3.Editor;
using VRC.SDKBase.Editor;
using VRC.SDK3A.Editor;
using VRC.Core;
you should add using VRC.SDK3.Dynamics.Constraint.Components;
aaaand that worked
Where did you find that?
use Unity editor extention in VSCode
huh, and that information is nowhere else online?
good to know I can find that information using that tool, but it was definitley frustrating that I never could have found this out online
huh I thought some of this stuff was published. though it's pretty bare-bones. Unity docs are usually pretty ok
I think you can see them directly in udonsharp class tree in unity. Or with vscode intellisens as well
VRC docs aren't very C#/U# friendly overall, gotta rely on digging into the assemblies to see what's exposed to get anything done
The udonsharp class exposure tree tells you exactly what is exposed and not exposed
The Class Exposure Tree will tell you what classes and methods that are available in Udon.
uh oh, it looks like VRCConstraint is in some sort of dll / sealed class, and the SetSource method isn't exposed
I am not using Udonsharp
I was just trying to create a simple utility to recursivley add vrcrotation constraints onto my avatar (avatar sdk)
Nice, this was on my todo list somewhere
My bet is that it's impossible to work with VRCconstraints directly, but I could probably use ConvertUnityConstraintsAcrossGameObjects, now that I got that assembly defenition working
They have a converter in the SDK so I'd think otherwise
wait is that just a function to convert? ha, that's a way to do it
Got everything working
Would be awesome if the UI wasn't so slow to load in all the assemblies every time you open it and the search was nicer and if it included exposed Unity events
Your final solution works so just as general info, while our API isn't identical to Unity's, VRC constraints expose a Sources collection that you can modify directly, like this:
Transform sourceTransform = transform;
// ...
VRCParentConstraint parentConstraint = gameObject.AddComponent<VRCParentConstraint>();
VRCConstraintSource source = new VRCConstraintSource(sourceTransform, 1.0f, Vector3.zero, Vector3.zero);
parentConstraint.Sources.Add(source);
Using the parameterless constructor for VRCConstraintSource is not supported yet as it overwrites the object with default values, but we're planning to change this soon in a future SDK version.
my chatbox is pretty much feature complete but it wont run on android because of a stupid javaosc bug 
downgrading it worked, and it's almost ready !
Unity 2022.3.22 with 3.7.1 of the VRChat SDK doesn't support the current version of AI Navigation only the AI Navigation (obsolete)?
afaik both are now supported
I am curious. Is rtmp playback on vrchat broken? Stuff plays fine in vlc but i drop it in a vrchat video player and it keeps attempting to reload the video
i sometimes gotten rtmp to work after a few reloads or though the local network so its kinda strange that only vrc seems to suffer with this and not vlc. Only being behind a public ip seems to confuse it
avpro fun times
yippeee
https://github.com/bluenviron/mediamtx/issues/3585 i did find this issue but it also got closed like instantly sooo
it litterly is only if i pass it though my domain name
if i do direct local ip
it just works
public ip directly also does not work
i tried to see vrc logs if anything curious pops up
cant tell if this is mediamtx or avpro
hm wait... its trying udp?
udp is failing
thats it
forcing tcp works but it has delay
MTX_PROTOCOLS: tcp
MTX_WEBRTCADDITIONALHOSTS: yourdomain.com
MTX_HLSALWAYSREMUX: yes # constantly remuxes stream regardless if anyone watching or not
# MTX_HLSVARIANT: lowLatency
# MTX_HLSPARTDURATION: 1s
MTX_HLSSEGMENTCOUNT: 7
MTX_HLSVARIANT: mpegts #mpegts fmp4 or lowLatency
MTX_HLSSEGMENTDURATION: 3s```
heres my mediamtx config if it helps
credit to @grave bronze
<3
Is it by chance in a docker container
RTSP UDP does not work in docker
As for rtmp I've only been able to get that working on quest native
RTSP works on desktop
HLS works on both with 30 second delay
It does as long as you set your network interface to be the host
Plus udp works just fine on the local network
I will do some more digging later today, will take a network trace
ahhh that makes sense
extra logging on vrc does not seem to give anything useful
left is connecting to the player via local ip right is via public
it just suddenly stops and sends teardown???
Vlc works fine so this is not a rtmp server issue
this is vlc for comparison
ok so
the fix is
instead of rtsp:// you do rtspt://
idk what the t here does i cant find jack shit on google about this but this connects????
i figured it out after being forced into the vrcdn discord cause i bought a subcription to test
looks like rtspt just forces tcp
Many ISP's block RTSP UDP traffic
are you hosting this on your home network or a vps?
that would explain why local ip works but not public
do you have a vps? @grave bronze can explain how she hosts her stuff on home network and somehow tunnels it to her vps to expose it there
i can test on a vps real quick but its kinda goofy
well would explain the wierd behevior
but yeah if you can tell me how to tunnel this that would be awsome
I host MediaMTX on the VPS as it uses basically zero resources besides network, its something stupid like 80 MB ram?
ohhhh
then I OBS stream up to the MediaMTX instance and have it re-distribute
that way my limited home bandwidth doesn't suffer
i mean rtsp over tcp seems pretty ok
like 1s latency
testing against vrcdn its quite similar
and they use tcp only too
yeah rtsp over tcp has been reliable for me
vrcdn is nothing special at all
the only difference is they distribute your video feed to multiple edge nodes in different countries, which in my experience on shitty DSL / mobile internet going across the ocean to germany (packet loss and iffy ping to the US) streaming is fine
but it really comes down to TCP throughput and latency at the end of the day, having "repeater" nodes does increase throughput
TCP throughput directly corresponds with latency
you can have a gigabit connection but if the latency is bad then your throughput will be too because TCP has to wait around and get acknowledgements
i mean one thing i am noticing, my stream is like 2s~ of delay with vrcdn being 500ms~
i guess it is what you are talking about
I'm sub 1s on my box
it shouldn't be much higher latency than your ping
when I say throughput, I mean mbps only
a US server would be able to get me a 50mbit/s rtsp stream whereas overseas wouldn't, even if you have gigabit internet, just because of the time between acknowledgements
but 99% of people stream at like 3/5mbps and it's plenty for movies at 720p
it seems to go out of sync over time now that i look at it closer
out of sync with audio? where are you streaming from?

™️

