misc:vrchat_knowledge
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| misc:vrchat_knowledge [2026/06/11 09:13] – natalie | misc:vrchat_knowledge [2026/06/17 01:28] (current) – natalie | ||
|---|---|---|---|
| Line 10: | Line 10: | ||
| ==== VRC Quick Launcher is a godsend for world dev ==== | ==== VRC Quick Launcher is a godsend for world dev ==== | ||
| Launching B&T clients (or not launching them!) is cumbersome in the SDK panel in the editor. VRC Quick Launcher lets you do this in a more customizable and repeatable fashion. I had to install Creator Companion to get this tool even though I use ALCOM, since I don't think VRChat distributes it any other way. | Launching B&T clients (or not launching them!) is cumbersome in the SDK panel in the editor. VRC Quick Launcher lets you do this in a more customizable and repeatable fashion. I had to install Creator Companion to get this tool even though I use ALCOM, since I don't think VRChat distributes it any other way. | ||
| + | |||
| + | === Auto-layout === | ||
| + | Auto-layout will arrange all of the selected and launched client windows to fit on your monitor. This can only work if the client starts up in windowed mode, and if you leave it in fullscreen normally, you can add `-screen-fullscreen 0` to the custom parameters to force windowed mode. [[https:// | ||
| ==== TextMeshPro fallback fonts ==== | ==== TextMeshPro fallback fonts ==== | ||
| Line 19: | Line 22: | ||
| ==== String/ | ==== String/ | ||
| The iOS client uses a different (and arguably better) user-agent format from all other platforms. [[https:// | The iOS client uses a different (and arguably better) user-agent format from all other platforms. [[https:// | ||
| + | |||
| + | ==== TextMeshPro markup can be used on Interact tooltips ==== | ||
| + | Although I have only tested the color tag myself. | ||
| + | |||
| + | ==== Fast CRC32 ==== | ||
| + | Animator.StringToHash() is faster than writing your own CRC32 in Udon. | ||
| + | |||
| + | ==== Random Udon Networking tips ==== | ||
| + | * Basic thing that took me a while to understand in the beginning: While Udon follows an eventual consistency networking model even in Manual sync mode, networked variable updates //on a particular instance of an UdonBehavior// | ||
| + | * OnPreSerialization() is a great place to transform values for network syncing if you have different internal and networked representations. | ||
| + | * RPC is kind of cursed and you should only do it when it truly suits the task. I much prefer implementing a networking model where the object owner periodically publishes a desired state, and remote clients do whatever work is required to enter that state regardless of the state they' | ||
| + | |||
| + | ==== Random Persistence tips ==== | ||
| + | * When using PlayerData, prefer using VRCJson or another method to serialize all your variables into one PlayerData key, instead of using multiple keys. The decrease in storage efficiency is worth the benefit of being able to delete keys. | ||
misc/vrchat_knowledge.1781169209.txt.gz · Last modified: 2026/06/11 09:13 by natalie
