valterh4ck3r / ParsecSoda

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool


Parsec Soda

The open-source Parsec Arcade hosting tool


๐Ÿ‘ Leave a star and fork this repo if you like this project! ๐Ÿ˜‰


๐Ÿ“‹ Summary


๐Ÿ“บ Video Demos


๐Ÿ“ฃ Social


๐ŸŽฎ What is Parsec Soda?

Parsec Soda is a custom and open-source Parsec tool dedicated to improve Hosting experience in Parsec Arcade.

I created this tool for my personal use and it has grown too large for me to maintain it by myself, so now I humbly ask this community for help. ๐Ÿ˜‚

Parsec Soda has a plethora of Features to assist the Host.


โŒ What Parsec Soda is not about?

  • Parsec Soda is NOT a replacement for the official Parsec client.
  • Parsec Soda can create Arcade rooms, but not join them. So if you want to join a room instead of hosting, you still need the official Parsec client to do it (including your own room created with Parsec Soda) - and I recommend you use the official client for testing your Parsec Soda room.

๐Ÿ“œ License

Parsec Soda code is under MIT license, BUT all of the code from Parsec SDK has it's own license, the Parsec SDK License.

Therefore, if you build this source code into a software, you MUST abide by their terms, which means you are NOT ALLOWED TO SHARE an executable file that uses the Personal API - currently used by this source, more specifically by ParsecSession class.

You may only build a copy of your own for personal use (and preferably to also help me improve this project, haha).

In order to share executables, one must replace the Personal API in ParsecSession class with the Third-party API, and register the app with Parsec Team. That is part of my future roadmap and, once the app is registered these builds will be available in the Releases tab.


๐Ÿšฉ Features

  • Plug/unplug, pre-instance gamepads manually.
  • Manual assignment of gamepad ownership to players via drag-and-drop.
  • Lock/unlock player inputs.
  • Read player inputs in background.
  • Desktop sharing in Arcade.
  • Audio control panel with support to Microphone and Speaker channels.
  • Ban/unban players (including the ones who left the room).
  • Edit room name, thumbnail, player slots, privacy, room link in real-time. No need to close and reopen the room.
  • Dedicated chat and log window with support to chatbot commands.
  • Role tiers for chatbot commands. Guests have their own set of commands like "pick a specific gamepad", "drop gamepad" and "play sound effect". And admins can ban/unban guests from chat commands.

๐Ÿ™‹ How to contribute?

  1. Open a new issue reporting what you're going to do (this helps preventing merge conflicts/doubled work).
  2. Fork this repository.
  3. Create a branch for your feature.
  4. Make your local changes.
  5. Submit a pull request.

You can also check my Trello board here.


๐Ÿ‘ท Build Instructions

The building process is not trivial, so I'll guide you through the process and prevent the major caveats.

  1. Download Visual Studio Community 2019.
  2. Install the C++ development packages.
  3. Pay attention to the checkboxes at the right, you don't need all of them and you can save a lot of disk space by unchecking some of them. I can't tell for sure which ones are expressly required, but most of them are unimportant.
  4. You may need to install the C++/CLI build tools support package from the individual components tab.
  5. When applying the installation, I recommend that you pick the option to download all at once, and then install all at once. It seems faster that way.
  6. Clone this repository to some folder of your preference. Visual Studio generally uses the path {user folder}/source/. You can clone it by download and unzipping from GitHub or by using some version control app (I particularly use Fork).
  7. Start Visual Studio 2019 and open the Project Solution.
  8. Now you must choose one of many paths, depending on the goals of your build. Your options are:
  • Debug: intended for developers, creates a larger executable but that allows developers to inspect code flow.
  • Release: intended for final use, creates a lightweight executable stripped from all unnecessary attachments.
  • x64: For 64-bit Windows users.
  • x86: For 32-bit Windows users.

Below, I list all possible executable directories:

Build Goal Folder
x64 Debug /x64/Debug
x64 Release /x64/Release
x32 Debug /Debug
x32 Release /Release
  1. Choose your build options and hit "Build >> Build Solution" (or Ctrl + Shift + B), the folder of your choice will be created and the build MAY FAIL at first, but the directory will be created. Even if the build does not fail, when you try to run ParsecSoda.exe it will crash. And that is because you need to copy some dependencies to the executable folder.

Please note the first build may take a minute to complete.

  1. Below I list all of the dependencies you need to copy to the build folder to get the app working properly. Copy all of them to the root of your build folder:
Dependency File Source What is it for?
Parsec SDK dll parsec.dll or parsec32.dll /Dependencies/parsecsdk/windows/ Prevents application from crashing, since everything related to Parsec SDK is built upon that dll. Copy parsec.dll if your system is x64. For 32 bits, copy parsec32.dll.
icons The icons folder /ParsecSoda/icons Without this, ParsecSoda displays no icons, every button and image becomes blank.
fonts The fonts folder /ParsecSoda/fonts Without this, all fonts and font sizes will be wrong, degrading user experience.
sfx The sound effects folder /ParsecSoda/sfx These are standard sound effects. Without this, the app may crash when a sfx is played (e.g.: when blocking or kicking an user).
  1. This is how your final build folder should look like:

  2. Now, build the project one more time just to be sure (Ctrl + Shift + B) and your executable should be good to go. Enjoy ParsecSoda.


About user preferences

In case you want to manually edit user preferences like blocked list, window size and position, room settings, user roles, or even your session cache, all of them are located at the user path: {user folder}/AppData/Roaming/ParsecSoda. This is the list of files and what they do:

File Handles
banned.json A list of blocked users.
preferences.json Window size and position, default room details, default audio devices etc.
session.json Your account session cache. DO NOT SHARE THIS, it is sensitive data that allows people to login your account directly, even though it is cryptographed.
tiers.json A list of user tiers.

About custom sound effects

If you want to make use of custom sound effects, see the README file in Sound Effects folder.


About

License:MIT License


Languages

Language:C++ 82.5%Language:C 17.5%