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

Overview

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.

HarmonyLink: View

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.

Showcasing HarmonyLink

👇 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)

What platforms are supported by HarmonyLink?

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

Why does HarmonyLink require an external program in addition to a game engine plugin?

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.

How can I get started with HarmonyLink?

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

Can HarmonyLink be used with games developed in different game engines?

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.

Is HarmonyLink only for game developers, or can players also use it?

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.

Does HarmonyLink have any impact on the performance of the games?

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.

You might also like...
.NET PhysX 5 binding to all platforms(win, osx, linux) for 3D engine, deep learning, dedicated server of gaming.
.NET PhysX 5 binding to all platforms(win, osx, linux) for 3D engine, deep learning, dedicated server of gaming.

MagicPhysX .NET PhysX 5 binding to all platforms(win-x64, osx-x64, osx-arm64, linux-x64, linux-arm64) for 3D engine, deep learning, dedicated server o

Nexa programming language. A language for game developers by a game developer
Nexa programming language. A language for game developers by a game developer

NexaLang Nexa programming language. A language for game developers by a game developer. Features High-Level: Nexa is an easy high level language Two M

Enhance low quality images and videos using AI technology.
Enhance low quality images and videos using AI technology.

Real ESRGAN GUI Real ESRGAN GUI is a simple and minimal GUI for xinntao's Real-ESRGAN This allows you to enhance low quality images and videos using A

Enhance Rust errors with file and line details using the `#[wherr]` macro for clearer debugging.

wherr Crate Discuss wherr on Hacker News Enhance Rust's ? operator by appending file and line number details to errors, simplifying the debugging proc

Santa Claus has to optimize the space for everyone present on the sled.

How to generate all sets of P packages into N bags Santa Claus has to optimize the space for everyone present on the sled Description Santa Claus got

Small and simple CLI app to generate .editorconfig based on a given settings.

add-editorconfig Small and simple CLI app to generate .editorconfig based on a given settings. Usage # Will create an .editorconfig in the current dir

An experimental real-time operating system (RTOS) written in Rust

An experimental real-time operating system (RTOS) written in Rust

Kiomet.com real-time strategy game
Kiomet.com real-time strategy game

Kiomet.com Kiomet.com is an online multiplayer real-time strategy game. Command your forces wisely and prepare for intense battles! Build Instructions

🛡️ Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance
🛡️ Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance

AdGuardian-Term Terminal-based, real-time traffic monitoring and statistics for your AdGuard Home instance About AdGuardian Terminal Eddition - Keep a

Releases(V0.2.0_Alpha)
  • V0.2.0_Alpha(Jun 26, 2023)

    New Features

    • Added new versioned API architecture, renaming endpoints.rs to endpoints_v1.rs and moving battery, os docking into a new v1 module. This new structure will facilitate version management of the API in the future.
    • Added supported_version variable in version struct and introduced a new API endpoint /api/supported_versions to query the server for supported versions.
    • Introduced stop_actix_web function to enable stopping the server.

    Updates

    • Updated readme file with extensive changes including:
      • Removal of closed-source text.
      • Addition of Prerequisites section to the Getting Started.
      • Addition of FAQ section.
      • Updated license notice to reflect that HarmonyLinkServer cannot be redistributed.
      • Addition of Using HarmonyLinkServer section.
      • Removal of Conclusion and Getting Started sections as they are now included in the Wiki.
      • Addition of Table of Contents.
      • Introduction of Contributing Guidelines.
    • Updated version_pre to use string.
    • Updated endpoint naming from index to heartbeat for better clarity.

    Bug Fixes

    • Fixed a compilation error on Linux.
    • Fixed an issue in the Readme.

    Code Improvements

    • Removed external DLL and integrated its functionality directly into the application.
    • Added #[allow(unused_imports)] attribute to the hashset import, ignoring the unused import warning on the Windows platform.

    Other Changes

    • Added a new Logo to the repository.
    • Enhanced the HarmonyLink: View section and added a new video to the showcasing section.

    Version Bump

    • Version bumped to 0.2.0 Alpha.

    Merges

    • Merge branch 'stable' into 'dev'.
    • Merge branch 'feature/Versioned_API' into 'dev'.
    • Merge branch 'release/V0.2.0_Alpha' into 'stable'.

    Full Changelog: https://github.com/Jordonbc/HarmonyLinkServer/compare/release_1.0.0...V0.2.0_Alpha

    Source code(tar.gz)
    Source code(zip)
    HarmonyLinkServer-0.2.0-Alpha-Linux.zip(847.77 KB)
    HarmonyLinkServer-0.2.0-Alpha-Windows.zip(559.15 KB)
    harmonylink_installer.desktop(474 bytes)
    harmonylink_installer.sh(2.76 KB)
  • release_1.0.0(Jun 10, 2023)

Owner
Jordon Brooks
Indie game developer!
Jordon Brooks
Specification for a decomp settings file & library for providing settings to tools

Decomp Settings File There are a lot of decompilation tools. Common metadata like the location of the .map file and target file are often needed by th

Ethan Roseman 3 Aug 19, 2024
🐚+🦞 Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly

pagurus ?? + ?? Ultra-portable Rust game engine suited for offline 2D games powered by WebAssembly. Examples Snake Traditional snake game: examples/sn

Takeru Ohta 20 Mar 7, 2023
An open source artifact manager. Written in Rust back end and an Vue front end to create a fast and modern experience

nitro_repo Nitro Repo is an open source free artifact manager. Written with a Rust back end and a Vue front end to create a fast and modern experience

Wyatt Jacob Herkamp 30 Dec 14, 2022
H2O Open Source Kubernetes operator and a command-line tool to ease deployment (and undeployment) of H2O open-source machine learning platform H2O-3 to Kubernetes.

H2O Kubernetes Repository with official tools to aid the deployment of H2O Machine Learning platform to Kubernetes. There are two essential tools to b

H2O.ai 16 Nov 12, 2022
Ember is a minimalistic Rust library for creating 2D graphics, games, and interactive visualizations with ease and simplicity.

Ember Ember is a simple and fun 2D rendering library for Rust, allowing you to quickly create graphics and interactive applications with ease. It uses

null 8 May 4, 2023
Bracket QOS - a Quality of Service/Experience server system writtin in Rust. Derived from the excellent LibreQOS Project.

Bracket QOS - Open Source Edition This project is based on the excellent LibreQOS project. It is hoped that this can be useful for the upstream projec

Herbert 12 Dec 2, 2022
Standard Graphics is a command-line tool for printing 2D graphics from any language to any screen.

2D graphics in any programming language with just print statements!

Caleb Winston 123 Nov 20, 2022
Open-source compiler for the Papyrus scripting language of Bethesda games.

Open Papyrus Compiler This project is still WORK IN PROGRESS. If you have any feature requests, head over to the Issues tab and describe your needs. Y

erri120 22 Dec 5, 2022
ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data.

ruborute Are you 暴龍天 ?. The ruborute is an interactive command-line tool to get asphyxia@sdvx gaming data. asphyxia-core/plugins: https://github.com/a

RinChanNOW! 9 Sep 28, 2022
A Rust implementation of Glidesort, my stable adaptive quicksort/mergesort hybrid sorting algorithm.

Glidesort Glidesort is a novel stable sorting algorithm that combines the best-case behavior of Timsort-style merge sorts for pre-sorted data with the

Orson Peters 1.4k Apr 22, 2023