Revolutionize handheld gaming with adaptive game settings. Optimize graphics and gameplay experience based on real-time system metrics. Open-source project empowering developers to enhance games on portable devices
Find a file
Jordon Brooks 6bf68eb298
Revamp: Transition HarmonyLink to C++ with DLL support
This transformative commit marks the evolution of HarmonyLink from a Rust-based server-side application to a C++ implemented, C-compatible dynamic link library (DLL). We've restructured the codebase to streamline integration into games, eliminating the need for a server setup by end-users.

Key Changes:
- Introduced .gitattributes and .gitmodules to manage new dependencies and collaborations.
- Replaced the GitHub workflow files with CMake configurations to support the new C++ build system.
- Introduced a comprehensive set of header and implementation files defining the core functionality, platform-specific utilities, and cross-platform compatibility layers.
- Removed all Rust-specific files (Cargo.toml, Cargo.lock, etc.) and references to ensure a clean transition to the C++ environment.
- Implemented new testing mechanisms within HarmonyLinkTest to ensure robustness and reliability of the DLL.
- Excised previous server-side components and models to focus on the DLL's direct integration into consumer applications.

This update is a direct response to community feedback, showcasing our commitment to adaptability and innovation. HarmonyLink 2.0 is now more accessible, efficient, and tailored for diverse gaming environments, providing developers with an unparalleled level of hardware-software harmony.

Please refer to the updated README for more details on the new structure and how to integrate HarmonyLink 2.0 into your projects.
2024-01-07 20:29:47 +00:00
HarmonyLinkLib Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
HarmonyLinkTest Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
Images Added Download Button 2023-06-29 12:14:44 +01:00
res Removed DLL 2023-06-22 01:40:59 +01:00
.gitattributes Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
.gitignore Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
.gitmodules Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
CMakeLists.txt Revamp: Transition HarmonyLink to C++ with DLL support 2024-01-07 20:29:47 +00:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2023-06-26 19:48:23 +01:00
CONTRIBUTING.md Create CONTRIBUTING.md 2023-06-26 19:50:05 +01:00
LICENSE Initial commit 2023-06-02 22:08:19 +01:00
README.md Added download button image to readme 2023-06-29 12:15:26 +01:00

HarmonyLinkLogo

Download HarmonyLink

Welcome to the server-side application for the HarmonyLink project. This innovative software is developed with the Rust programming language and is aimed at enhancing the handheld gaming experience.

Table of Contents

Shaping the Vision, Living the Reality

HarmonyLink is on a mission to transform handheld gaming by providing an interactive experience. This server-side application is at the heart of making this vision a reality.

Key Features

  1. Device Identification: HarmonyLink equips games with the ability to identify the specific handheld device they are operating on.
  2. Real-Time Metrics: Games can access real-time data about the handheld device's power usage and docking status through HarmonyLink.
  3. Cross-Platform Compatibility: HarmonyLink extends its functionality to Windows games running on Proton/Wine.

Using HarmonyLinkServer

For users who wish to run the precompiled release version of HarmonyLinkServer, please follow the instructions specific to your platform below.

Windows Users

  1. Navigate to the latest release on the project's GitHub page.
  2. Download the .zip archive for Windows.
  3. Extract the contents of the .zip archive to a directory of your choice.
  4. Open a command prompt in the directory where you extracted the files.
  5. Run the HarmonyLinkServer executable by typing ./harmony_link_server.exe.

Please note that you'll need to manually start the program each time you want to use it.

Steam Deck (Linux) Users

  1. Navigate to the latest release on the project's GitHub page.
  2. Download the .zip archive for Linux.
  3. Extract the contents of the .zip archive to a directory of your choice.

Running in Desktop Mode

To use HarmonyLinkServer in Desktop Mode, follow these steps:

  1. Open a terminal in the directory where you extracted the files.
  2. Run the HarmonyLinkServer executable by typing ./harmony_link_server.

Please note that you'll need to keep the terminal window open while using HarmonyLinkServer in desktop mode.

Optional: Setting Up as a Service for Gamemode

For a seamless experience in gamemode, you have the option to set up HarmonyLinkServer as a service on your Steam Deck. Please be aware that this setup process will require a moderate level of technical knowledge.

How It Works

HarmonyLink operates using a client-server structure. This server-side application runs on the host side (native Linux or Windows), and games access the metrics via an API.

Developers and modders can easily implement GET and POST requests from the API, integrating system metrics into games. These metrics can be used to adapt the game's quality settings, providing a more customized gaming experience.

To view the API in action, check out HarmonyLink: View. This sister project provides a comprehensive interface to see what data the API is providing.

👇 To help visualize its functionality, we've included a demonstration video that showcases HarmonyLink in action on a Steam Deck in gamemode.

HarmonyLink in action

Contributing Guidelines

Please refer to our Contributing Guidelines for detailed information on how to contribute to HarmonyLinkServer. It includes instructions for bug reports, feature requests, and pull requests.

We appreciate your interest in improving HarmonyLinkServer and look forward to your contributions!

Frequently Asked Questions (FAQ)

A: HarmonyLink supports both native Linux and Windows platforms, and extends its functionality to Windows games running on Proton/Wine.

A: HarmonyLink utilizes an external program alongside the game engine plugin to ensure accurate data is passed to the game and to probe low-level hardware for more precise dock information. By having a separate server-side application, HarmonyLink can establish a standardized API that allows games to access real-time metrics and adapt their settings accordingly. Additionally, the use of an external program helps address potential compatibility issues with Proton/Wine layers and ensures seamless integration with different game engines.

A: You can start by cloning the HarmonyLinkServer repository. Detailed instructions are provided on the Getting Started wiki page.

A: Yes, HarmonyLink is designed to be engine-agnostic and can be used with games developed in different engines. For Unreal Engine, there is a specific Unreal Engine Plugin available.

A: While game developers will find HarmonyLink particularly useful for optimizing their games for handheld devices, players can also benefit from the enhanced gaming experience that HarmonyLink provides.

A: HarmonyLink is designed to be lightweight and efficient, with minimal impact on game performance. The primary purpose of HarmonyLink is to enhance game performance by allowing games to adapt their settings based on real-time device metrics.

License

This project is licensed under the GNU General Public License v3.0 or later. Please do not redistribute HarmonyLinkServer. e.g.: Proving an alternative download link or distributing with a game.