I started programming with JS. I definitely know why you feel that way, and I’m sure I’d feel the same if I went from C#/Py to JS.
C# itself isn’t too intimidating. I actually love the object oriented nature that is even more structured than JS and forced with typing (so I feel at home coming from TypeScript). The problem comes with Unity and Udon.
Not only would I be learning C#/U#, I would be learning game programming in Unity, specifically as it relates to VRChat and Udon and everything else. It feels like learning multiple verticals at once, especially learning what APIs are available and how they relate to all the game objects, shaders, and other functions in Unity.
I spent over a week trying to solve something that would’ve otherwise been solved in an hour or two if the right APIs were available in Udon. But I ended up not implementing the feature because the best solution I could come up with still had bugs and other issues. The only other solution would require extensive maintenance in the Editor, which is prone to human error.
On the flipside, I was trying to have the backside of a canvas be transparent. I could barely get it working with shaders, but I realized I could use OnPlayerTriggerEnter
and OnPlayerTriggerExit
especially to actually disable its rendering, so that was nice and easy.
Edit: Oh, and about dependency hell: I do kinda get that, but also, that’s what static versions are for.
My favorite library set currently is NextJS + TailwindCSS. Two libraries and I can pretty much make anything in it. I don’t upgrade versions unless I have a reason to, and if you wanted to, you can download the dependencies you already have and host them in a private github/server.
Most of the issues of dependencies come from smaller packages, people using too many dependencies when they can make it themselves, or people auto-upgrading/removing packages from NPM.
For example, I use classnames, which is literally just a function that returns class names based on a condition. I only use it out of convenience, but if I were making a production application, I would just write it myself quickly, or pull it and store it on a private repo for production.