Skip to content

dd86k/vrcd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

234 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

speech bubble logo with D-like lettering vcrd

A little companion suite for VRChat to help you track friend activity, inject metadata into photos, and receive VR/desktop notifications.

It features a server-client architecture, to avoid having multiple connections to VRC APIs.

Warning

Status: Most features present. Stable for daily use; Under active development.

Otherwise, get ready to frequently pull, upgrade dependencies, and build!

Warning

The client requires an active running vrcd server and packages do not come with the server.

There are plans to fix this.

Client features:

  • Relatively light client using software rendering; Hardware option available.
  • VR friendly UI.
  • Embed world and player metadata into VRChat photos automatically.
  • Strip VRChat and other metadata from VRChat photos.
  • VR overlay notifications (XSOverlay/WayVR, OVR Toolkit) and desktop notifications.
  • Drop a Portal integration.

Server features:

  • Record incoming VRChat events.
  • Event-stream API with 'catch-up' and 'back-fill' actions to know what you missed.

Feel free to join the official VRChat group (VRCD.7796)!

Related projects:

Screenshots

Feed Page

Feed with event's date, type, user, and detail columns

Online Page

List of instances (current and capacity) and friends in each of them with color indicators

Installing

See Compiling.

After connecting to the server, the authentication will be forward to the first connected client. After connecting, you should be good to go!

Linux: pipehelper

The pipehelper subpackage is used to make "Open in VRChat" button work.

  1. You'll need to make a Windows build of pipehelper with dub build :pipehelper in Windows, and place pipehelper.exe next to the vrcd_client executable or in ~/.config/vrcd.
  2. Add STEAM_COMPAT_LAUNCHER_SERVICE=proton in your launch options.

If either piece is missing, or the IPC attempt fails, the client falls back to a server-side self-invite.

For Developers

Architecture

+ ~ ~ ~ ~ ~ ~ ~ ~+
| VRChat servers |
+~ ~ ~ ~ ~ ~ ~ ~ +
        ^
HTTP requests/WS events
        v
+----------------+              +-----------------+
| vrcd-server    | <- JSON-L -> | vrcd-client(s)  |
| - VRC API sync |              | - Picture meta  |
| - Friend state |              | - Notifications |
+----------------+              +-----------------+

Targets:

  • Server: Stays connected to VRChat's WebSocket 24/7, records events to SQLite, and serves them over TCP.
  • Client: Connects to the server, watches local VRChat logs, and injects metadata into photos.

Targets Windows and Linux.

Compiling

See each component's README for dependencies, configuration, and architecture details.

In short:

  • Client needs SDL2 dynamic libraries (SDL2, SDL2_ttf, SDL2_image), libcurl static library, and optionally OpenSSL.
  • Server needs libcurl and sqlite static libraries and optionally OpenSSL.
# Upgrade dependencies for server and client
dub upgrade -s

# Build, test, and run server (might be best to setup config first)
# For more info, see server/README.md
dub build :server
dub test :server
./client/vrcd_server

# Build, test, and run client
# For more info, see client/README.md
dub build :client
dub test :client
./client/vrcd_client

See API.md for server-client API details.

Issues

  • Using LDC 1.41 on Windows will lead to compiling issues: undefined PAGESIZE in core.thread.fiber

Contributing

I'm unsure how I want to handle contributions at this moment, sorry.

However, feel free to submit bugs in Issues and feature suggestions in Discussions, thanks.

Disclaimer

This software is provided as-is without any warranty and is not affiliated with VRChat.

VRCD does not modify the game client in any shape, nor does it reflect the views or opinions of VRChat. It is only an external tool using the VRChat API.

Users are still responsible for complying with VRChat's Terms of Service.

VRChat is copyrighted work of VRChat Inc.

License

Both the server and client components are licensed BSD-3-Clause-Clear.

About

VRChat companion app using server-client architecture

Topics

Resources

License

Stars

5 stars

Watchers

1 watching

Forks

Contributors