Commit graph

41 commits

Author SHA1 Message Date
sergystepanov
65dcaf7820
Enable release builds with v-tags (#310)
Re-enable release builds push into Github releases page when new v-prefixed tags are pushed (i.e. v2.4.2).
2021-04-07 18:50:34 +03:00
sergystepanov
602b9ea47c
Make executables ready for static linking (#307)
* Disable CGO (C libs) for coordinator

Needed for static linking.

* Fix "error strings should not be capitalized (ST1005)"

* Fix SA1015

Using time.Tick leaks the underlying ticker, consider using it only in endless functions, tests and the main package, and use time.NewTicker here (SA1015)

* Fix SA9004

Only the first constant in this group has an explicit type (SA9004).

* Remove unused code in the webrtc package

* Fix S1000

Should use a simple channel send/receive instead of select with a single case (S1000).

* Force dir creation/check for core downloader

* Update Makefile release script

* Disable ASLR for worker builds

* Remove WORKER_BUILD_PARAMS flag from the CI

* Don't force recompilation in release

* Add Debian packages installer script

* Build worker app without libopusfile

* Test worker app without libopusfile

* Add opus wrapper without opusfile

* Make install.sh executable

* Add opus lib in Win builds

* Make insecure HTTPS requests when downloading libs

* Add ca-certificates for Docker build stage

go mod download works only with SSL certificates installed.

* Move libx264 wrapper into the repo

That way we can get rid of a lot of not needed external Go dependencies.

* Update the dependencies
2021-04-06 18:16:52 +03:00
sergystepanov
f1613eaa7b
Use identical core images for build/target stages in the main Docker file. (#296)
It is possible that the official Golang Docker image used in the build stage may produce an executable file dynamically linked with some old libs that may not be present in the target OS image therefore use of identical Docker images is the better option.
2021-03-18 00:17:09 +03:00
sergystepanov
d5780acc75
Fix Pion WebRTC codecs (#289)
Since Pion's webrtc v3.0.13 and this fix if both peers have some fmtp set then codecs should match exactly. By default Pion defines a list of supported codecs with fmtp set but different browsers set their own fmtp values by default as well therefore they may not match.
To fix this we can define our own list of codecs on the server with empty fmtp so it will match any client codecs.

See: e5c8c659ca/rtpcodec.go (L99)
2021-03-08 17:22:43 +03:00
sergystepanov
bd701f10fc
Use modified x264 lib (#275)
* Use modified x264 lib

* Add x264 system lib

* Set x264 version 155 for Debian (Buster)

* Add h264 config params

* Set vp8 codec
2021-02-21 13:51:44 +03:00
Sergey Stepanov
07b7479af2
Update Docker configs 2021-01-09 16:39:18 +03:00
sergystepanov
924d6ade67
Fix Docker run for bridged Docker network in Windows, macOS (#259)
* Add port and IP config and env params for bridged Docker network in Windows, macOS

- CLOUD_GAME_WEBRTC_ICEIPMAP -- replaces IP of any ICE candidates on the server
- CLOUD_GAME_WEBRTC_ICEPORTS_MIN/MAX -- limits WebRTC random port range on the server
2021-01-08 22:43:15 +03:00
Sergey Stepanov
6568c83aeb
Add SSL certificates for HTTPS downloads 2021-01-06 18:41:09 +03:00
sergystepanov
1fcf34ee02
Add new Libretro core manager module (#249)
* Add initial external configuration files support.

These external configuration files allow changing app params at the runtime without recompilation.

* Find config files with specified directory in the tests

* Add aspect ratio recalculation config

* Clean code

* Add new configuration files into the Docker container image

* Add shared core and config paths into the Libretro cores config

* Split ROM <-> Emulator mapping between workers and coordinators

* Extract coordinator config

* Add shared worker/coordinator server config

* Add explicit embedded shared worker/coordinator struct for auto-config reflection fill

* Remove default stun/turn servers from the config

* Extract and add new ice servers config structures

* Update coordinator config params

* Add auto emulation lib loader based on the runtime OS/arch

* Update configuration structures

* Remove shared config embedding

* Add missing network config params

* Add game library external config

* Remove unused config parameters

* Add WebRTC encoder external options

* Add user dir for config search

* Update config loader

* Update config

* Add generic downloader with Grab lib implementation

* Add a simple file downloader backed by the grab lib

* Add initial Libretro core repos abstractions

* Expose compression info for Libretro cores repository records

* Add pipe-based abstract file downloader

* Refactor downloader

* Refactor Libretro repos

* Add worker coresync stubs

* Add multiprocess-safe HTTP-based core manager implementation

* Remove Libretro cores from the repo

* Keep custom N64 cores in te repo for now

* Add Libretro cores repo select in the config

* Fix http manager repo switch

* Cleanup code

* Add greedy Libretro lib loader

* Don't crash when arch map is not set

* Disable dynamic recompiler for pcsx core by default since it's could cause a crash

* Use global Libretro dynalib handler

* Shorten the default Libretro cores store path

* Update zip extractor implementation

* Remove explicit fig lib field markings

* Add config note to the README file

* Add GitHub repo backend for the core downloader

* Fix GitHub repo param list in the manager factory

* Add env variables reader with CLOUD_GAME prefix

* Re-optimize ice server info struct custom marshaler
2020-12-31 13:24:27 +03:00
sergystepanov
3837e020cd
Enable legacy Github Docker Registry publishing workflow (#247)
* Update Docker publishing script
2020-11-25 00:22:37 +03:00
sergystepanov
b9dc56d85a
Add initial xvfb system dependency for OpenGL cores support in the cloud environment (#226) 2020-09-16 23:26:06 +08:00
Sergey Stepanov
ce5f1427f0
Add GL Mesa lib into the main Docker image 2020-06-17 14:35:41 +03:00
Sergey Stepanov
8b27445458
Integrate SDL2 into CI / Project 2020-06-17 14:00:50 +03:00
sergystepanov
9d3e9c1a3b
Initial Docker rewrite (#190)
* Initial Docker rewrite

* Add rebuild

* Up

* Up

* Up

* Pre-release

* Pack assets with ext games

* Remove Makefile Docker because it's broken on Windows and a dup

* Add default container name

* Update docker-compose.yml

* Add app binaries into the system bin folder

* Update

* Update
2020-06-09 20:38:43 +08:00
giongto35
59d4a3d9c2 update naming 2020-03-22 23:33:12 +08:00
giongto35
2e932ffff7
Update readme spawn docker (#89)
* Update README

* Update Readme typo
2019-09-22 04:12:38 +08:00
giongto35
40b3ca9d9f Update README + run Docker 2019-09-18 04:17:21 +08:00
giongto35
4745cf0f6e Update cores 2019-08-03 16:23:55 +08:00
giongto35
c7caa87624 Integrate with RetroArch to have Universal emulator. (#64)
* WIP

* Add libretro

* Update input retro

* Update cloud retro input:

* Integrate libretro remove GL

* Launch emulator by game type

* Save and load

* Update deeplink to game directly

* Done channel for naemulator

* each server handle only one session

* Only provide available clients

* Emulator based on game

* Remove all OpenGL related

* Retroarch audio

* Audio encoding mono

* Experiment with libretro audio

* Audio without datachannel

* Audio opus internal

* Remove unnecessary code

* Resampled

* Limit time frame

* Start Room and Audio by game

* Dynamic video image allocation

* Dynamic Video buffer allocation based on video resolution

* Move encoder to room

* width and height from emulator

* Padding images to fix multipler of 64

* Remove OpenGL

* Remove Open AL

* Remove OpenGL from Go mod

* Move away nanoarch logic in naemulator

* Remove unecessary savefiles.go

* Optimize Docker for caching

* Update ReadME

* Update README to introduce Retro

* Update README

* Update README.md
2019-08-02 22:06:26 +08:00
giongto35
48d6ddbf6d Use go mode + use pion v2 (#39)
* Update webrtv2

* Update gomod

* Update run local

* Update docker

* Update mario 3 rom

* Update script

* Throw error when overlord cannot launch
2019-05-25 12:10:04 +08:00
giongto35
2b7671c26b Use different uuid package 2019-05-24 23:56:03 +08:00
giongto35
c08daf2151 update run script 2019-05-05 21:11:37 +08:00
trichimtrich
79b0337ee8 merge master 2019-04-23 03:36:31 +08:00
giongto35
281e044a7a Add heartbeat 2019-04-21 23:57:59 +08:00
giongto35
554a664192 Update audio package 2019-04-14 02:07:57 +08:00
hasagi
f6d1a8b2c7 reconstruct debug frontend, reduce input in 8 bit, save and load in websocket 2019-04-12 07:16:46 +07:00
giongto35
4a79e95142 Update pion package 2019-04-07 02:12:10 +08:00
giongto35
e9e0659a75 Merge Tri / Websocket + UI Improve 2019-04-07 01:03:03 +08:00
trichimtrich
e2ca0e4db9 remove crashed games, finish game select, fix dockerfile 2019-04-06 18:12:43 +08:00
trichimtrich
9d8f90a7c7 remove candidate, add limit frame, add multi game 2019-04-06 05:21:16 +08:00
giongto35
c3d83414cc Change to cloud name 2019-04-06 02:22:15 +08:00
giongto35
7cbc000e8d Update docker file 2019-04-05 00:54:29 +08:00
giongto35
a0fcdd8b43 Update dockerfile 2019-04-05 00:51:11 +08:00
giongto35
d43ae386fe Remove audio + fix DOcker file 2019-04-05 00:27:09 +08:00
giongto35
9f33e7aac7 Update docker file to 1.12 2019-04-04 23:12:36 +08:00
giongto35
12e762100c Add vpx 2019-04-04 22:45:17 +08:00
giongto35
113a848e12 Update Dockerfile 2019-04-04 02:51:51 +08:00
giongto35
475db9e3ab Update docker file 2019-04-04 02:42:03 +08:00
giongto35
141e092b67 add screenshot package 2019-04-04 02:33:41 +08:00
giongto35
948bbbddf7 Remove gl 2019-04-04 02:10:29 +08:00
giongto35
8c52af89f9 remove poll events 2019-04-03 23:44:39 +08:00