diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..723015f5 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,76 @@ +# ------------------------------------------------------------------------ +# Build workflow for multiple OSes (Linux x64, macOS x64, Windows x64) +# ------------------------------------------------------------------------ + +name: build +# run only when pushing into the master only +on: + push: + branches: + - master + tags-ignore: + - 'v*' +env: + go-version: 1.13 +jobs: + build: + name: Build + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + runs-on: ${{ matrix.os }} + steps: + - name: Get the source + uses: actions/checkout@v2 + - name: Set up Go + uses: actions/setup-go@v1 + with: + go-version: ${{ env.go-version }} + - name: Set up Go environment + shell: bash + # add Go's bin folder into environment (to be able to call its tools) + run: | + echo "::set-env name=GOPATH::$(go env GOPATH)" + echo "::add-path::$(go env GOPATH)/bin" + + - name: Get Linux dev libraries and tools + if: matrix.os == 'ubuntu-latest' + run: | + sudo apt-get update + sudo apt-get install -y make pkg-config libvpx-dev libopus-dev libopusfile-dev + + - name: Get MacOS dev libraries and tools + if: matrix.os == 'macos-latest' + run: | + brew install libvpx pkg-config opus opusfile + + - name: Get Windows dev libraries and tools + if: matrix.os == 'windows-latest' + uses: numworks/setup-msys2@v1 + with: + msystem: MINGW64 + path-type: inherit + + - name: Load Go modules maybe? + uses: actions/cache@v1 + with: + path: ~/go/pkg/mod + key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} + restore-keys: | + ${{ runner.os }}-go- + + - name: Build Windows app + if: matrix.os == 'windows-latest' + run: | + msys2do pacman -S --noconfirm --needed make mingw-w64-x86_64-gcc mingw-w64-x86_64-pkg-config mingw-w64-x86_64-dlfcn mingw-w64-x86_64-libvpx mingw-w64-x86_64-opusfile + msys2do make build + + - name: Build Linux app + if: matrix.os == 'ubuntu-latest' + run: | + make build + + - name: Build macOS app + if: matrix.os == 'macos-latest' + run: | + make build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d66a4341..a0e8c8a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,7 +17,7 @@ # a new Github release is created with such tags. # ------------------------------------------------------------------------ -name: Release +name: release # run only when pushing v-prefixed SemVer tags (e.g. v1.0.0, v2.0.1, and etc.) on: push: @@ -46,7 +46,7 @@ jobs: go-version: ${{ env.go-version }} - name: Set up Go environment shell: bash - # add Go's bin folder into environmet (to be able to call its tools) + # add Go's bin folder into environment (to be able to call its tools) run: | echo "::set-env name=GOPATH::$(go env GOPATH)" echo "::add-path::$(go env GOPATH)/bin" diff --git a/README.md b/README.md index e232e8f2..c1494f93 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,11 @@ # CloudRetro +[![Build](https://github.com/giongto35/cloud-game/workflows/build/badge.svg)](https://github.com/giongto35/cloud-game/actions?query=workflow:build) [![Latest release](https://img.shields.io/github/v/release/giongto35/cloud-game.svg)](https://github.com/giongto35/cloud-game/releases/latest) **Open-source Cloud Gaming Service For Retro Games** **Video demo**: https://www.youtube.com/watch?v=GUBrJGAxZZg -**My Slide at GopherconVN2019**: https://docs.google.com/presentation/d/1VFv8l2hVUINv2U36r7L11g4Oa_zVjHlr6MYymUbQXT4/edit?usp=sharing +**My Slide at GopherconVN2019**: https://docs.google.com/presentation/d/1VFv8l2hVUINv2U36r7L11g4Oa_zVjHlr6MYymUbQXT4/edit?usp=sharing ## Introduction CloudRetro provides an open-source cloud gaming platform for retro games. It started as an experiment for testing cloud gaming performance with [WebRTC](https://github.com/pion/webrtc/) and [libretro](https://www.libretro.com/), and now it aims to deliver the most modern and convenient gaming experience through the technology. @@ -12,8 +13,8 @@ CloudRetro provides an open-source cloud gaming platform for retro games. It sta Theoretically, in cloud gaming, games are run on remote servers and media are streamed to the player optimally to ensure the most comfortable user interaction. It opens the ability to play any retro games on web-browser directly, which are fully compatible with multi-platform like Desktop, Android, ~~IOS~~. It enhances crowdplay ([TwitchPlaysPokemon](https://en.wikipedia.org/wiki/Twitch_Plays_Pok%C3%A9mon)) with realtime interaction. E.g: [Play Pokemon Emerald together](http://cloudretro.io/?id=652e45d78d2b91cd%7CPokemon%20-%20Emerald%20Version%20%28U%29). ## Try the service at -Single play: **[http://cloudretro.io](http://cloudretro.io)** -Crowd play: **[Pokemon Emerald](http://cloudretro.io/?id=652e45d78d2b91cd%7CPokemon%20-%20Emerald%20Version%20%28U%29)** +Single play: **[http://cloudretro.io](http://cloudretro.io)** +Crowd play: **[Pokemon Emerald](http://cloudretro.io/?id=652e45d78d2b91cd%7CPokemon%20-%20Emerald%20Version%20%28U%29)** *Chrome and Chrome on Android is recommended. It's not working on iPhone and some other explorers. Click help button in the game UI to see keyboard mapping.* \*In ideal network condition and less resource contention on servers, the game will run smoothly as in the video demo. Because I only hosted the platform on limited servers in US East, US West, Eu, Singapore, you may experience some latency issues + connection problem. You can try hosting the service following the instruction the next section to have a better sense of performance. @@ -91,7 +92,7 @@ By clicking these deep link, you can join the game directly and play it together - [Play Pokemon Fire Red](http://cloudretro.io/?id=68bf168be6728020___Pokemon%20-%20Fire%20Red%20Version%20%28U%29%20%28V1.1%29) - [Mario](http://cloudretro.io/?id=1953c570fee1f9e4___Super%20Mario%20Bros) -And you can host the new game by yourself by accessing [cloudretro.io](http://cloudretro.io) and click "share" button to generate a deeplink to your current game. +And you can host the new game by yourself by accessing [cloudretro.io](http://cloudretro.io) and click "share" button to generate a deeplink to your current game. _Disclaimer: You may experience lagging when joining a room because the room is in a different zone. In that case, you should create a new room for crowd play._ ![screenshot](docs/img/crowdplay.gif) @@ -111,9 +112,9 @@ _Disclaimer: You may experience lagging when joining a room because the room is ## Author -Nguyen Huu Thanh +Nguyen Huu Thanh https://www.linkedin.com/in/huuthanhnguyen/ -Tri Dang Minh +Tri Dang Minh https://trich.im