From da292a4e336f9da693ae049b7a8adc2129c8d712 Mon Sep 17 00:00:00 2001 From: giongto35 Date: Mon, 27 May 2019 19:31:07 +0800 Subject: [PATCH] Add help overlay, Fix joystick, Update comment (#45) * add help overlay, fix joystick * Remove icecandidate in connectionState * UPgrade turn server * Update README * Update README * Update readme --- README.md | 4 +- document/designdoc/README.md | 4 +- document/instruction/README.md | 28 +++++++ pogo | Bin 19132888 -> 19249648 bytes static/css/main.css | 44 ++++++++++- static/game.html | 9 ++- ...fNpDxDlWpj0uXWglAC2.jpg => background.jpg} | Bin static/img/help_overlay.png | Bin 0 -> 15516 bytes ...hei-d4xntof.gif => screen_background1.gif} | Bin .../{original.gif => screen_background2.gif} | Bin ...3556_2_(22).gif => screen_background3.gif} | Bin ...y_wanyo-dbpdmnd.gif => screen_loading.gif} | Bin static/js/controller.js | 70 ++++++++++++++++-- static/js/gesture_joystick.js | 23 +++--- static/js/gesture_keyboard.js | 1 + static/js/init.js | 11 ++- static/js/utils.js | 1 + static/js/ws.js | 11 +-- 18 files changed, 176 insertions(+), 30 deletions(-) create mode 100644 document/instruction/README.md rename static/img/{500_F_241143639_RW6VdHbqYRM0yfNpDxDlWpj0uXWglAC2.jpg => background.jpg} (100%) create mode 100644 static/img/help_overlay.png rename static/img/{pixel_waterfall_bg__by_isohei-d4xntof.gif => screen_background1.gif} (100%) rename static/img/{original.gif => screen_background2.gif} (100%) rename static/img/{1478923556_2_(22).gif => screen_background3.gif} (100%) rename static/img/{october_2nd___gameboy_poltergeist_by_wanyo-dbpdmnd.gif => screen_loading.gif} (100%) diff --git a/README.md b/README.md index 3f6fb3b6..9a18030c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # POGO, Web-based Cloud Gaming Service -**SEA**: [http://cloud.webgame2d.com](http://cloud.webgame2d.com) | **US West**: (not hosted)| **US East**: (not hosted)| **Europe**: (not hosted) +**SEA**: [http://cloud.webgame2d.com](http://cloud.webgame2d.com) | **US West**: [http://usw.cloud.webgame2d.com](http://usw.cloud.webgame2d.com) | **US East**: [http://use.cloud.webgame2d.com](http://use.cloud.webgame2d.com) | **Europe**: [http://eu.cloud.webgame2d.com](http://eu.cloud.webgame2d.com) | **Instruction**: [Instruction](document/instruction/) For the best gaming experience, please select the closest region to you. **Video demo**: https://www.youtube.com/watch?v=koqWB1VKflo @@ -49,7 +49,7 @@ And run * The scripts includes build the binary using Go module ## Documentation -[Design Doc](document/) +[Design Doc](document/designdoc/) [Implentation Doc](document/implementation/) ## Follow up diff --git a/document/designdoc/README.md b/document/designdoc/README.md index 5436b58e..fd80fedf 100644 --- a/document/designdoc/README.md +++ b/document/designdoc/README.md @@ -7,14 +7,14 @@ Web-based Cloud Gaming Service contains multiple workers for gaming streaming an Worker is responsible for streaming game to frontend ![worker](../img/worker.png) -- After Coordinator found the most appropriate server for the user, webRTC peer-to-peer handshake will be conducted. Coordinator will exchange the signature (WebRTC Session Remote Description) between two peers over Web Socket connection. +- After Coordinator matches most appropriate server to the user, webRTC peer-to-peer handshake will be conducted. Coordinator will exchange the signature (WebRTC Session Remote Description) between two peers over Web Socket connection. - On worker, each user session will spawn a new room running a gaming emulator. Image stream and audio stream from emulator is captured and encoded to WebRTC streaming format. We applied Vp8 for Video compression and Opus for audio compression to ensure the smoothest experience. After finish encoded, these stream is then piped out to user and observers joining that room. - On the other hand, input from users is sent to workers over WebRTC DataChannel. Game logic on the emulator will be updated based on the input stream. - Game state is stored in cloud storage, so all workers can collaborate and keep the same understanding with each other. It allows user can continue from the saved state in the next time. ## Overlord -Overlord is in charge of picking the most suitable workers for a user. Every time a user connects to Overlord, it will collect all the metric from all workers, i.e free CPU resources and latency from worker to user. Overlord will decide the best candidate based on the metric and setup peer-to-peer connection between worker and user based on WebRTC protocol +Overlord is loadbalancer and coordinator, which is in charge of picking the most suitable workers for a user. Every time a user connects to Overlord, it will collect all the metric from all workers, i.e free CPU resources and latency from worker to user. Overlord will decide the best candidate based on the metric and setup peer-to-peer connection between worker and user based on WebRTC protocol ![Architecture](../img/overlord.png) diff --git a/document/instruction/README.md b/document/instruction/README.md new file mode 100644 index 00000000..f3245c2e --- /dev/null +++ b/document/instruction/README.md @@ -0,0 +1,28 @@ +# Web-based Cloud Gaming Service Game Instruction + +The game can be played on Desktop, Mobile (Android only). You can plug joystick to play with the game. + +Click question mark on the top left to see game instruction. + +## Key map on Desktop +Game keymap follows +Arrow keys to move +H -> Show help +C -> Start +V -> Select +Z -> A +X -> B +S -> Save (Save state) +A -> Load (Load previous saved state) +W -> Share your running game to other or you can keep it to continue playing the next time. Multiple people can access the same game for multiplayer or observation. +F -> Full screen +Q -> Quit the current game and go to menu screen.**NOTE**: we are facing some issue with quit, so it's better to refresh the page. + +## Mobile play +You can play the game on Android device. Make sure your Android has the version that support WebRTC. IOS doesn't support WebRTC streaming now. + +The keys map are equivalent to Desktop. Press the button to fire input. + +## Joystick +The game also accepts joystick, so you can try plug in one and experience. It will be very fun! + diff --git a/pogo b/pogo index 47e7af0273409f66abbd33b540ed6e9585d7a3f3..d88df9ebe06e1b5f4a98b4b031fed000d612ddb1 100755 GIT binary patch delta 9248820 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