Need help with pikachu-volleyball-p2p-online?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

gorisanson
153 Stars 16 Forks 892 Commits 4 Opened issues

Description

Pikachu Volleyball peer-to-peer online via WebRTC data channels

Services available

!
?

Need anything else?

Contributors list

# 121,308
PHP
HTML
archive...
video-g...
763 commits
# 182,001
iOS
React N...
Objecti...
HTML
1 commit

Pikachu Volleyball P2P Online

✓ English | Korean(한국어)

Pikachu Volleyball (対戦ぴかちゅ~ ビーチバレー編) is an old Windows game which was developed by "(C) SACHI SOFT / SAWAYAKAN Programmers" and "(C) Satoshi Takenouchi" in 1997.

Pikachu Volleyball P2P Online is an peer-to-peer online version of the game. You can play with other person through the internet. It is developed by integrating WebRTC data channels to the offline web version of Pikachu Volleyball which is made by reverse engineering the original game.

You can play Pikachu Volleyball P2P online on the website: https://gorisanson.github.io/pikachu-volleyball-p2p-online/en/

Pikachu Volleyball game screenshot

Structure

  • Offline version: All the offline web version source code files is in the directory

    src/resources/js/offline_version_js/
    . These are the same as the source code files in https://github.com/gorisanson/pikachu-volleyball/tree/master/src/resources/js. The online version is developed base on these.

  • WebRTC data channels: The peer-to-peer online functions utilizing WebRTC data channels are contained in

    src/resources/js/data_channel.js
    . (Firebase Cloud Firestore is used as a mediator for establishing a peer-to-peer communication via WebRTC. The room ID which the room creator sends to the joiner is the ID of a Cloud Firestore document which is shared between them. This method is originally from Firebase + WebRTC Codelab and https://github.com/webrtc/FirebaseRTC.)

  • Quick Match: The communication with the quick match server is contained in

    src/resources/js/quick_match.js/
    . (Google App Engine is used as the quick match server. The quick match server sends the ID of the room, which is created by a person waiting for a quick match, to the new one who comes in.)

The game state is deterministic on the user (keyboard) inputs except the RNG (random number generator) used in the game. So if the RNG is the same on both peers, only the user inputs need to be communicated to maintain the same game state between the peers. In this p2p online version, the RNG is set to the same thing on both peers at the data channel open event, then the user inputs are communicated via the data channel.

Refer comments on

src/resources/js/main_online.js
for other details.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.