Code Monkey home page Code Monkey logo

cvr-playtogether's Introduction

CVR-PlayTogether

CVR-PlayTogether is a ChilloutVR Mod that aims to reproduce a Couch Gaming / Lan Party experience in VR.

It does so by Hosting/Streaming one's game (and inputs) with friends of your choosing and displaying that on a shared "physical" Screen spawned in-game.

It depends on ChilloutVR's prop system and needs a custom CCK-PlayTogether prop to function.

It uses MelonLoader as it's injection method.

ChilloutVR-2024-05-26_17-53-30

Requirements

Installation

Head over to the installation guide on the Wiki

How to use

Head over to the How-To guide on the Wiki

To build CVR-PlayTogether (for devs)

Prerequesites

  • Visual Studio 2022 with .NET Framework 4.8

Steps

  • Clone the repo with git (ex: git clone https://github.com/Searaphim/CVR-PlayTogether.git)

  • From inside the cloned repo; get the submodules (ex: git submodule update --init --recursive)

  • Build NStrip (it's inside your CVR-PlayTogether folder)

  • We need to fetch and force public ChilloutVR libraries we depend on. Run the follow command from inside the same directory as the new NStrip executable (replace fields as needed):

      .\NStrip.exe -p -n "<Path to your ChilloutVR folder>\ChilloutVR_Data\Managed" "<Path to your CVR-PlayTogether folder>\.ManagedLibs"
    
  • build PlayTogetherLib (which we need for both CVR-PlayTogether and CCK-PlayTogether)

  • Open the VS project in PlayTogetherMain and install ILMerge in the VS editor via Tools->NuGet Package Manager->Package Manager Console:

      NuGet\Install-Package ilmerge -Version 3.0.41
    
  • get the latest moonlight x64 portable zip from 'https://github.com/Searaphim/moonlight-qt/releases' and insert in 'PlayTogetherMain/resources' folder

  • get the latest sunshine portable zip from 'https://github.com/Searaphim/Sunshine/releases' and insert in 'PlayTogetherMain/resources' folder

  • For the previous 2 instructions, you can build yourself as long as files are formatted and placed in the exact same way.

  • copy and paste all the DLLs from '<ChilloutVR path>/MelonLoader/net35/' into 'PlayTogetherMain/libs'

  • get latest BTKUILib.dll from 'https://github.com/Searaphim/BTKUILib/releases' and paste it into 'PlayTogetherMain/libs' (or build it yourself and do the same)

  • delete everything in BTKUILib folder once done (to avoid compilation issues)

  • If you build your own CVR-PlayTogether dll you also need to do the same for the prop and use your own DLL otherwise the mod won't work due to signature differences. See the instructions

  • Same principle for the next C++ compiled DLL. Build your own or use the one provided. (It is also used by both the Prop/Unity Editor and the Mod/Runtime)

  • Copy/Paste (from the CCK-PlayTogether project to the CVR-PlayTogether project) CCK-PlayTogether\Assets\uWindowCapture\Plugins\x86_64\uWindowCapture.dll into PlayTogetherMain\resources

  • Edit the .csproj file 'Install' target to your own ChilloutVR install location.

  • clean/build the PlayTogetherMain project with Visual Studio.

  • The DLL should now be located in <ChilloutVR path>/Mods and ready for use

cvr-playtogether's People

Contributors

searaphim avatar

Stargazers

Joel Robert Justiawan avatar Externet avatar

Watchers

 avatar

cvr-playtogether's Issues

[Enhancement] Persistent configs UserData

Make sure all persistent settings are located in UserData to prevent possible user setting loss. That includes moonlight and sunshine.
If moving the config location isn't supported by either then simply copy settings from UserData to their respective locations.

No client-side feedback for pairing

No client-side proper feedback for pairing. We don't really know if the pairing worked or not unless the Host tells us.
This is due to this now fixed issue: #1270

Since it's non-critical I will only implement the feedback after the next stable release.

Specific scenario gets host stuck on pairing

If the Moonlight process gets killed while waiting for the Host to approve a pairing Pin, Host will be stuck and won't accept any new pairing request (stuck waiting for the previous one to be completed. which cannot happen even if it's the same user).

Moonlight pairing randomly receiving default appTitles from Host

Sometimes Moonlight pairing randomly receives default appTitles from Host instead of the selected App.
Not sure why this happens yet but simply restarting host and repairing temporarily fixes it.

While it may not seem like a critical issue, it can be problematic if it receives "Desktop". Host may dislike that.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.