[{"data":1,"prerenderedAt":167},["ShallowReactive",2],{"posts":3},[4],{"id":5,"title":6,"body":7,"date":153,"description":154,"discussionStatus":155,"extension":156,"hasTldr":157,"meta":158,"navigation":157,"path":159,"seo":160,"stem":161,"tags":162,"__hash__":166},"posts\u002Fposts\u002Fwhy-udon-is-not-possible-yet-in-vrcavatars.md","Why Udon is not possible yet in VRChat Avatars",{"type":8,"value":9,"toc":143},"minimark",[10,44,49,57,61,84,88,91,95,109,113,121,130,134,137],[11,12,13,14,19,20,24,25,32,33,38,39,43],"p",{},"To understand why Udon is not possible yet in other environments, we need to understand what's the main purpose of Udon (and U#). When ",[15,16,18],"glossary-popup",{"term":17},"vrchat","VRChat"," was updating their ",[15,21,23],{"term":22},"sdk","SDK",", they wanted to give users more features to the worlds. But Udon wasn't the first name of this great feature, back in the days it was called \"VRChat Node Graph\", and it was announced in ",[26,27,31],"a",{"href":28,"rel":29},"https:\u002F\u002Fmedium.com\u002F@vrchat\u002Fvrchat-node-graph-playmaker-and-soon-1a958672688d",[30],"nofollow","Jun 2018",". So yeah, ",[26,34,37],{"href":35,"rel":36},"https:\u002F\u002Fmedium.com\u002Fvrchat\u002Fintroducing-vrchat-udon-unlocking-coding-for-creators-ce411a6390d1",[30],"2 years later"," the VRC Dev team released an Open Alpha of this feature under the name of ",[15,40,42],{"term":41},"udon_noodle","Udon",".",[45,46,48],"h2",{"id":47},"mhm-yeah-cool-history-whats-the-problem-with-udon-in-avatars","Mhm yeah, cool history, what's the problem with Udon in Avatars?",[11,50,51,52,56],{},"Well... let me finish, do you know how Udon works behind the scenes? Udon is not just a programming language, it's a programming editor suite designed to work with VRChat Worlds. How the behavior of a VRChat world works? VRChat runs a ",[15,53,55],{"term":54},"vm","VM"," that interprets the Udon Assembly code.",[45,58,60],{"id":59},"uh-huh-so-wait-what-about-avatars","Uh huh... so wait, what about Avatars?",[11,62,63,64,68,69,73,74,83],{},"Avatars work differently. We still have to use ",[15,65,67],{"term":66},"unity_humanoidanimator","humanoid animators",", but the main difference is that Avatars are separate instances of ",[15,70,72],{"term":71},"ugc","someone's creation",". When you load someone's avatar, you are instantiating an object inside your game ",[75,76,77,78,82],"em",{},"(remember that VRChat is a ",[15,79,81],{"term":80},"unity_engine","Unity"," game, so everything that happens in the game is inside a Unity scene)",". So what will happen if we have to instantiate 40 objects that are running a VM in our machine? Well, it might be obvious, you might face a performance nightmare.",[45,85,87],{"id":86},"so-not-now-but-maybe-in-the-future","So, not now, but maybe in the future?",[11,89,90],{},"All depends on how the VRChat Dev team will implement Udon in Avatars. Maybe they will create a lite version of Udon.",[45,92,94],{"id":93},"hold-up-isnt-udon-discontinued","Hold up, isn't Udon discontinued?",[11,96,97,98,103,104,108],{},"Ah, yes, Udon is discontinued. VRChat has been working on a whole revamp of the Worlds SDK, this update was going to be called Udon 2. They dropped a sneak peek of this back in ",[26,99,102],{"href":100,"rel":101},"https:\u002F\u002Fask.vrchat.com\u002Ft\u002Fdeveloper-update-14-march-2024\u002F23401#p-49369-udon-2-sneak-peek-8",[30],"2024","... then they renamed the project to \"",[15,105,107],{"term":106},"soba_noodle","Soba","\" (again, a japanese name). Why the renaming? I'm not really sure but since it's a major update, in software development, major updates usually break backward compatibility, maybe that's why Soba runs in a dedicated VM too alongside the Udon VM (so technically you can run both in the same world).",[45,110,112],{"id":111},"what-about-avatars","What about avatars?",[11,114,115,116,43],{},"I see it's still so complicated to implement this feature in Avatars, Soba still relies on a VM to interpret the code. For now Unity animator controllers are the only way to implement behaviors in Avatars. What if... we run all the code to be interpreted in the same VM? We may have to investigate how the VM will perform that, do stress tests, and see if it can handle a big world instance with 40+ avatars running in the same VM. If your main concern with animators is performance, you may want to check blend trees, they are a great way to optimize the behavior performance of your avatar, VRC School has a ",[26,117,120],{"href":118,"rel":119},"https:\u002F\u002Fvrc.school\u002Fdocs\u002FOther\u002FDBT-Combining",[30],"great guide to migrate Animator Layers to Direct Blend Trees",[11,122,123,124,129],{},"There's a ",[26,125,128],{"href":126,"rel":127},"https:\u002F\u002Fdocs.hai-vr.dev\u002Fdocs\u002Fproducts\u002Fanimator-as-code",[30],"workaround to implement code in avatars"," made by Hai, but at the end of the day it's just a generator that will create animator controller layers and animations.",[45,131,133],{"id":132},"tldr","TL;DR",[11,135,136],{},"Udon was designed for worlds, it runs on a \"VM\" and now the developers are discontinuing it to focus on Soba. The best you can do now is to use Direct Blend Trees to optimize your avatar's performance. If you insist on implementing code, you can use Animator as Code by Hai. I hope in the future we can have a better solution to implement code in Avatars.",[138,139,140],"poetry-block",{},[11,141,142],{},"And remember, performance nightmare is real and most always present in VRChat!",{"title":144,"searchDepth":145,"depth":145,"links":146},"",2,[147,148,149,150,151,152],{"id":47,"depth":145,"text":48},{"id":59,"depth":145,"text":60},{"id":86,"depth":145,"text":87},{"id":93,"depth":145,"text":94},{"id":111,"depth":145,"text":112},{"id":132,"depth":145,"text":133},"2026-07-09","To understand why Udon is not possible yet in other environments, we need to understand what's the main purpose of Udon (and U#). When --VRChat-vrchat-- was updating their --SDK-sdk--, they wanted to give users more features to the worlds. But Udon wasn't the first name of this great feature, back in the days it was called \"VRChat Node Graph\", and it was announced in Jun 2018. So yeah, 2 years later the VRC Dev team released an Open Alpha of this feature under the name of --Udon-udon_noodle--.","open","md",true,{},"\u002Fposts\u002Fwhy-udon-is-not-possible-yet-in-vrcavatars",{"title":6,"description":154},"posts\u002Fwhy-udon-is-not-possible-yet-in-vrcavatars",[17,163,164,165],"avatars","udon","csharp","5WWvoYid5q-5kuE8Oemj2RgdH9cJLKRik5LPIuzQM8s",1783639936780]