Add systems for local world persistence #1076

Closed
opened 2026-04-05 16:50:59 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @GroovyTeacup on 5/31/2023

This PR adds a simple wannabe world persistence system enabling world creators to communicate with VRCX to facilitate the storing of arbitrary string data in a local, persistent database. The usage and details of the system can be found here

This PR also includes the source file for the synchronous implementation of sqlite-net and a x64 pre-compiled SQLite3 3.42.0 library (which should probably just be downloaded/extracted with a build script instead of being in the repo, now that I think of it)

An excerpt on implementation:

VRCX now operates a local webserver listening on port 22500 @ 127.0.0.1. This server is your interface for retrieving data from the local database using VRChat's String Loading. However, due to limitations like the 5 second-per-request limit on string loading and static URL requirements in Udon/UdonSharp, other functions aren't feasible.

The data is stored as key-value pairs in the database with each world having a unique 'pool' of these pairs accessible only to that world.

To store data in the database, a world must log their data in a specific format that VRCX will be looking for and process. Each world has a 10MB data cap.

*Originally created by @GroovyTeacup on 5/31/2023* This PR adds a simple wannabe world persistence system enabling world creators to communicate with VRCX to facilitate the storing of arbitrary string data in a local, persistent database. The usage and details of the system can be found [here](https://github.com/GroovyTeacup/VRCX/wiki/World-Persistence-(PWI)) This PR also includes the source file for the synchronous implementation of [sqlite-net](https://github.com/praeclarum/sqlite-net) and a x64 pre-compiled SQLite3 3.42.0 library (which should probably just be downloaded/extracted with a build script instead of being in the repo, now that I think of it) **An excerpt on implementation:** --- VRCX now operates a local webserver listening on port 22500 @ 127.0.0.1. This server is your interface for retrieving data from the local database using VRChat's String Loading. However, due to limitations like the 5 second-per-request limit on string loading and static URL requirements in Udon/UdonSharp, other functions aren't feasible. The data is stored as key-value pairs in the database with each world having a unique 'pool' of these pairs accessible only to that world. To store data in the database, a world must log their data in a specific format that VRCX will be looking for and process. Each world has a 10MB data cap.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/VRCX#1076