Skip to content

Commit d79004b

Browse files
committed
clone old repo to new
1 parent 43d1192 commit d79004b

File tree

461 files changed

+70190
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

461 files changed

+70190
-0
lines changed

CONTRIBUTING.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## Contributing
2+
3+
Please visit the [wiki](https://github.com/G7DAO/HyperPlay/wiki/Contributing) for information regarding this.

COPYING

+674
Large diffs are not rendered by default.

Dockerfile

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM archlinux:latest
2+
3+
RUN pacman -Syyu --noconfirm && pacman -S nodejs npm yarn --noconfirm

Procfile

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
react: npm run react-start
2+
electron: npm run electron-start

README.md

+267
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,267 @@
1+
# HyperPlay
2+
3+
HyperPlay is an Open Source Game Launcher for Linux, Windows and macOS with Web3 features.
4+
It was conceived as a fork of [Heroic Games Launcher](https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher), so it keeps it is features but also add new ones.
5+
Right now it supports launching games from the Epic Games Store using [Legendary](https://github.com/derrod/legendary) and GOG Games using [gogdl](https://github.com/App-Games-Launcher/heroic-gogdl).
6+
HyperPlay is built with Web3 and Web2 Technologies like: TypeScript, React, NodeJS, and Electron.
7+
8+
## Index
9+
10+
- [HyperPlay](#hyperplay)
11+
- [Index](#index)
12+
- [Features available right now](#features-available-right-now)
13+
- [Planned features](#planned-features)
14+
- [Supported Operating Systems](#supported-operating-systems)
15+
- [Language Support](#language-support)
16+
- [Help with Translations Here](#help-with-translations-here)
17+
- [Installation](#installation)
18+
- [Linux](#linux)
19+
- [Flatpak](#flatpak)
20+
- [Debian, Ubuntu and Derivatives](#debian-ubuntu-and-derivatives)
21+
- [Debian (third party `apt` repository)](#debianubuntu-third-party-apt-repository)
22+
- [Arch (AUR)](#arch-aur)
23+
- [Fedora](#fedora)
24+
- [Other Distributions (AppImage and TAR.XZ)](#other-distributions-appimage-and-tarxz)
25+
- [Windows](#windows)
26+
- [macOS](#macos)
27+
- [Build binaries locally (All platforms)](#build-binaries-locally-all-platforms)
28+
- [Any OS (development environment)](#any-os-development-environment)
29+
- [Building with VS Code](#building-with-vs-code)
30+
- [Development Using a Container](#development-using-a-container)
31+
- [Any OS (development environment)](#any-os-development-environment)
32+
- [Building with VS Code](#building-with-vs-code)
33+
- [Development Using a Container](#development-using-a-container)
34+
- [Screenshots](#screenshots)
35+
- [Credits](#credits)
36+
37+
## Features available right now
38+
39+
- Login with an existing Epic Games account or GOG account
40+
- Install, uninstall, update, repair and move Games
41+
- Import an already installed game
42+
- Play Epic games online [AntiCheat on macOS and on Linux depends on the game]
43+
- Play games using Wine or Proton [Linux]
44+
- Play games using Crossover [macOS]
45+
- Download custom Wine and Proton versions [Linux]
46+
- Access to Epic and GOG stores directly from HyperPlay
47+
- Search for the game on ProtonDB for compatibility information [Linux]
48+
- Sync installed games with an existing Epic Games Store installation
49+
- Sync saves with the cloud
50+
- Theming Support
51+
52+
## Planned features
53+
54+
- Download queue
55+
- Add Games outside GOG and Epic Games
56+
- Support Other Store (Amazon Gaming, IndieGala, etc)
57+
- Play GOG games online
58+
59+
## Supported Operating Systems
60+
61+
- Linux:
62+
- Ubuntu 20.04LTS or newer
63+
- Fedora 33 or newer
64+
- Arch Linux (Manjaro and Garuda as well)
65+
- HyperPlay will still work on most distros but we do not give official support for them. So do not open Issues here in these cases, instead, open a Discussion or try our Discord.
66+
- SteamOS (downloading using Discover only)
67+
- Windows 8+ (might work on Win7 if you have the latest PowerShell but we do not give support for it)
68+
- macOS 10.15 or higher
69+
- Play GOG games online
70+
71+
## Supported Operating Systems
72+
73+
- Linux:
74+
- Ubuntu 20.04LTS or newer
75+
- Fedora 33 or newer
76+
- Arch Linux (Manjaro and Garuda as well)
77+
- HyperPlay will still work on most distros but we do not give official support for them. So do not open Issues here in these cases, instead, open a Discussion or try our Discord.
78+
- SteamOS (downloading using Discover only)
79+
- Windows 8+ (might work on Win7 if you have the latest PowerShell but we do not give support for it)
80+
- macOS 10.15 or higher
81+
82+
## Language Support
83+
84+
- English
85+
- Bulgarian
86+
- Catalan
87+
- Czech
88+
- Croatian
89+
- Simplified Chinese
90+
- Traditional Chinese
91+
- Dutch
92+
- Estonian
93+
- Finnish
94+
- French
95+
- German
96+
- Greek
97+
- Korean
98+
- Hungarian
99+
- Italian
100+
- Indonesian
101+
- Malayalam
102+
- Persian
103+
- Polish
104+
- Portuguese
105+
- Portuguese (Brazil)
106+
- Romanian
107+
- Russian
108+
- Spanish
109+
- Swedish
110+
- Tamil
111+
- Turkish
112+
- Ukrainian
113+
- Vietnamese
114+
115+
## Installation
116+
117+
### Linux
118+
119+
#### Debian, Ubuntu and Derivatives
120+
121+
Download the `hyperplay.x.x.x_amd64.deb` from the Releases section
122+
123+
```bash
124+
sudo dpkg -i hyperplay.x.x.x_amd64.deb
125+
```
126+
127+
#### Other Distributions (AppImage and TAR.XZ)
128+
129+
Download the `hyperplay-x.x.x.AppImage` or `hyperplay-x.x.x.tar.xz` from the Releases section.
130+
Make sure you have Curl and Gawk, normally it comes with most distros but check for them if you have any issue.
131+
132+
To make the AppImage it executable use:
133+
134+
```bash
135+
chmod +x hyperplay-x.x.x.AppImage
136+
```
137+
138+
To run it use:
139+
140+
```bash
141+
./hyperplay-x.x.x.AppImage
142+
```
143+
144+
For the tar.xz file, you need first to extract it somewhere, enter the folder and run:
145+
146+
```bash
147+
chmod +x hyperplay
148+
```
149+
150+
To run it use:
151+
152+
```bash
153+
./hyperplay
154+
```
155+
156+
### Windows
157+
158+
Download Hyperplay_Setup.x.x.x.exe or the Portable HyperPlay-x.x.x.exe file and run it. It will install it to the start menu and desktop, use those to run it.
159+
160+
### macOS
161+
162+
Download HyperPlay-x.x.x.dmg and move the HyperPlay App to the Applications folder.
163+
164+
### Build binaries locally (All platforms)
165+
166+
- All Platforms:
167+
Requires NodeJS to build \
168+
Use yarn or npm
169+
170+
```bash
171+
git clone https://github.com/G7DAO/HyperPlay.git
172+
173+
cd HyperPlay
174+
```
175+
176+
- Build for Linux:
177+
178+
```bash
179+
yarn
180+
181+
yarn dist:linux {package to create} (eg: deb, pacman, tar.xz, rpm, AppImage)
182+
```
183+
184+
- Build for Windows (Beta):
185+
186+
```bash
187+
yarn.cmd (or npm install)
188+
189+
yarn.cmd (or npm run) dist:win
190+
```
191+
192+
- Build for Mac (Alpha):
193+
194+
```bash
195+
yarn (or npm install)
196+
197+
yarn (or npm run) dist:mac
198+
```
199+
200+
### Any OS (development environment)
201+
202+
1. Download Yarn and Node.js
203+
2. Download the dependencies with `yarn`
204+
3. Go to the debug tab on vscode and start the two tasks, 'Start renderer process' and 'Debug main process' or `yarn react-start && yarn electron`
205+
206+
### Building with VS Code
207+
208+
1. Download Yarn and Node.js
209+
2. Download the dependencies with `yarn`
210+
3. Open the tasks. Select "Build with [your OS]"
211+
212+
### Development Using a Container
213+
214+
If you would prefer, we have a docker container defined to develop / build HyperPlay with (a potential reason being to avoid loading tons of dependencies on your host filesystem). There are two methods, based on whether you use VS Code.
215+
216+
**VS Code**
217+
218+
There is a `.devcontainer` directory containing a definition that VS Code will recognize for automatically opening your local HyperPlay directory in a container in VS Code.
219+
220+
**NOTE: this requires that you install the 'Remote - Containers' extension.**
221+
222+
1. Open the root of your local HyperPlay directory in VS Code.
223+
2. You should get a prompt in the bottom right to build and open the project in the dev container.
224+
3. If the above prompt does not occur, on the bottom left, there is a green icon that should be there if the remote extension is installed. Click on it, and select "Reopen in container".
225+
4. The bottom left green icon should now say: "Dev Container: HyperPlay".
226+
227+
After the container's package manager runs, open a new terminal session and you should be able to run bash commands from within the container. Any yarn dist:linux builds should also now show up on your host filesystem.
228+
229+
**Manually Building the Docker Image**
230+
231+
If you don't use VS Code or don't want it integrated with the container, you can build and run the container manually using either Docker or Podman.
232+
233+
1. From the root of your local HyperPlay directory, run:
234+
235+
```bash
236+
docker build -t hyperplaydevcontainer -f Dockerfile .
237+
```
238+
239+
2. Assuming all went well, you can now enter the container:
240+
241+
```bash
242+
docker run -it -v ./:/tmp/hyperplay/localhost/hyperplaydevcontainer:latest
243+
```
244+
245+
3. The above command will mount your local HyperPlay dir to `/tmp/hyperplay` in the container (unless you used a different path).
246+
247+
```
248+
cd /tmp/hyperplay
249+
```
250+
251+
And you should be good to go, code and build away!
252+
253+
## Screenshots
254+
255+
![image](https://user-images.githubusercontent.com/26871415/185743122-e63a65d5-224b-45a4-a9d3-d37e2890e0a2.png)
256+
257+
[![jump](https://img.shields.io/badge/Back%20to%20top-%20?style=flat&color=grey&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjRweCIgZmlsbD0iI0ZGRkZGRiI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTQgMTJsMS40MSAxLjQxTDExIDcuODNWMjBoMlY3LjgzbDUuNTggNS41OUwyMCAxMmwtOC04LTggOHoiLz48L3N2Zz4=)](#hyperplay)
258+
259+
## Credits
260+
261+
### Weblate: Localization platform
262+
263+
- URL: https://weblate.org/en/
264+
265+
### Those Awesome Guys: Gamepad prompts images
266+
267+
- URL: https://thoseawesomeguys.com/prompts/

appveyor.yml

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
image: Visual Studio 2019
2+
3+
platform:
4+
- x64
5+
6+
init:
7+
- git config --global core.autocrlf input
8+
9+
cache:
10+
- node_modules
11+
- '%USERPROFILE%\.electron'
12+
13+
install:
14+
- ps: Install-Product node 16 x64
15+
- npm i --legacy-peer-deps
16+
17+
environment:
18+
GH_TOKEN:
19+
secure: kZMGyhBmfPsJKEryrd+I7gTEudm8tW0jSrKKhtT/3fbqKQzndTWp47C1Eetx5kFs
20+
21+
build_script:
22+
- yarn release:win
23+
24+
test: off
25+
26+
artifacts:
27+
- path: dist\HyperPlay*.exe
28+
name: HyperPlay_setup
29+
30+
deploy:
31+
- provider: Webhook
32+
url: https://app.signpath.io/API/v1/f7f99393-5adb-408c-8ca3-67e07cfe31e6/Integrations/AppVeyor?ProjectSlug=HyperPlay&SigningPolicySlug=release-signing
33+
authorization:
34+
secure: 0xlTR3DMFume9u66Kf7WkMP1sMl9S7GMoP8vZgrIAKr/eHXCKfLBM+LbmACtCHWoqeTXVIuAYCfUJIPoJt1SBA==

doc/frontend_testing.md

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Overview of Frontend testing enviroment
2+
3+
## Configuration files
4+
5+
The frontend test's are running via jest.
6+
The related config can be found under `src/jest.config.js`
7+
8+
Jest using [ts-jest](https://kulshekhar.github.io/ts-jest/) to test `.tsx` and `.ts` files and is configured
9+
with the `tsconfig.js` from the root path.
10+
11+
## Mocks
12+
13+
All the global mocks can be found under `src/test_helpers/mock` and are
14+
invoked if you import the following patterns in your frontend file:
15+
16+
- `*.css` files
17+
- ignoring `*.css` imports in the test
18+
- `electron`
19+
- mocking all ipcRenderer calls with [jest-when](https://github.com/timkindberg/jest-when) plugin, which are invoked in the frontend source files.
20+
- provides a function to init all electron mocks.
21+
- this function is mostly called from other helper functions and shouldn't be needed that often.
22+
- `react-i18next`
23+
- mocks the `useTranslation` hook and the `t` function
24+
25+
**Note1:** If you implement new ipcRenderer calls in the frontend, make sure they are resolved correctly in the `src/test_helpers/mock/electron.ts` file, else some test's can run in unresolved promises and fail.
26+
27+
**Note2:** If new mocks are needed globally add them to the field `moduleNameMapper` in the `src/jest.config.js`.
28+
29+
## Pre defined type configurations
30+
31+
In the file `src/test_helpers/testTypes.ts` are alot of predefined
32+
type configurations which can be used to provide configurations for the
33+
test's and also to manipulate them easy for your needs.
34+
35+
All this type configurations are defined via a template class `TestType<Type>`. This provides the function `set()`, `get()` and `reset()`.
36+
37+
Also there is a helper function `resetTestTypes()` which resets all type
38+
configurations to there default values. It is a good practice to call this in a `beforeEach()` of a describe entry.

downloadCount.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/* eslint-disable @typescript-eslint/no-var-requires */
2+
const axios = require('axios')
3+
const { writeFileSync } = require('graceful-fs')
4+
const api = 'https://api.github.com/repos/G7DAO/HyperPlay/releases'
5+
6+
async function getDownloadCount() {
7+
const { data } = await axios.get(api)
8+
const releases = data.map((rel) => {
9+
const { name, assets } = rel
10+
const pkgs = assets.map((pkg) => {
11+
const { name, download_count } = pkg
12+
return { pkg: name, downloads: download_count }
13+
})
14+
const sorted = pkgs.sort((a, b) => b.downloads - a.downloads)
15+
const total = pkgs.reduce((acc, pkg) => {
16+
return acc + pkg.downloads
17+
}, 0)
18+
return { name: name, pkgs: sorted, total: total }
19+
})
20+
const date = new Date()
21+
writeFileSync(
22+
`downloads-${date.getDate()}-${date.getMonth() + 1}.json`,
23+
JSON.stringify(releases, null, 2)
24+
)
25+
}
26+
27+
getDownloadCount()

electron/__mocks__/electron-store.ts

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export default class Store {
2+
get() {
3+
return
4+
}
5+
set() {
6+
return
7+
}
8+
has() {
9+
return
10+
}
11+
}

0 commit comments

Comments
 (0)