ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”

ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
ืชื•ื›ื ื” ื›ืฉื™ืจื•ืช, ืชืฉืชื™ืช ื›ืฉื™ืจื•ืช, ืคืœื˜ืคื•ืจืžื” ื›ืฉื™ืจื•ืช, ืคืœื˜ืคื•ืจืžืช ืชืงืฉื•ืจืช ื›ืฉื™ืจื•ืช, ื•ืขื™ื“ื•ืช ื•ื™ื“ืื• ื›ืฉื™ืจื•ืช, ืžื” ืœื’ื‘ื™ ืžืฉื—ืงื™ ืขื ืŸ ื›ืฉื™ืจื•ืช? ื›ื‘ืจ ื”ื™ื• ืžืกืคืจ ื ื™ืกื™ื•ื ื•ืช ืœื™ืฆื•ืจ ืžืฉื—ืงื™ ืขื ืŸ (Cloud Gaming), ื›ืžื• Stadia, ืฉื”ื•ืฉืงื” ืœืื—ืจื•ื ื” ืขืœ ื™ื“ื™ ื’ื•ื’ืœ. ืกื˜ื“ื™ื” ืœื ื—ื“ืฉ ื‘-WebRTC, ืื‘ืœ ื”ืื ืื—ืจื™ื ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘-WebRTC ื‘ืื•ืชื• ืื•ืคืŸ?

Thanh Nguyen ื”ื—ืœื™ื˜ ืœื‘ื“ื•ืง ืืช ื”ื”ื–ื“ืžื ื•ืช ื”ื–ื• ื‘ืคืจื•ื™ืงื˜ ื”ืงื•ื“ ื”ืคืชื•ื— ืฉืœื• CloudRetro. CloudRetro ืžื‘ื•ืกืก ืขืœ ืคื™ื•ืŸ, ืคื•ืคื•ืœืจื™ ืกืคืจื™ื™ืช WebRTC ืžื‘ื•ืกืกืช ืขืœ Go (ืชื•ื“ื” ืžื•ืฆื’ ืžืฆื•ื•ืช ื”ืคื™ืชื•ื— ืฉืœ Pion ืขืœ ืกื™ื•ืขื ื‘ื”ื›ื ืช ืžืืžืจ ื–ื”). ื‘ืžืืžืจ ื–ื”, Thanh ืžืกืคืง ืกืงื™ืจื” ื›ืœืœื™ืช ืฉืœ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉืœ ื”ืคืจื•ื™ืงื˜ ืฉืœื•, ื•ื’ื ืžื“ื‘ืจ ืขืœ ืื™ืœื• ื“ื‘ืจื™ื ืฉื™ืžื•ืฉื™ื™ื ื”ื•ื ืœืžื“ ื•ืื™ืœื• ืืชื’ืจื™ื ื”ื•ื ื ืชืงืœ ื‘ืžื”ืœืš ืขื‘ื•ื“ืชื•.

ื›ื ื™ืกื”

ื‘ืฉื ื” ืฉืขื‘ืจื”, ื›ืฉื’ื•ื’ืœ ื”ื›ืจื™ื–ื” ืขืœ ืกื˜ืื“ื™ื”, ื–ื” ื”ืฆื—ื™ืง ืื•ืชื™. ื”ืจืขื™ื•ืŸ ื›ืœ ื›ืš ื™ื™ื—ื•ื“ื™ ื•ื—ื“ืฉื ื™ ืฉื›ืœ ื”ื–ืžืŸ ืชื”ื™ืชื™ ืื™ืš ื–ื” ื‘ื›ืœืœ ืืคืฉืจื™ ืขื ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ืงื™ื™ืžืช. ื”ืจืฆื•ืŸ ืœื”ื‘ื™ืŸ ื˜ื•ื‘ ื™ื•ืชืจ ืืช ื”ื ื•ืฉื ื”ื–ื” ื”ื ื™ืข ืื•ืชื™ ืœื™ืฆื•ืจ ื’ืจืกื” ืžืฉืœื™ ืœืžืฉื—ืง ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื—. ื”ืชื•ืฆืื” ื”ื™ื™ืชื” ืคืฉื•ื˜ ืคื ื˜ืกื˜ื™ืช. ืœื”ืœืŸ ืื ื™ ืจื•ืฆื” ืœืฉืชืฃ ื‘ืชื”ืœื™ืš ื”ืขื‘ื•ื“ื” ืขืœ ื”ืฉื ื” ืฉืœื™ ืคึผืจื•ึนื™ึถืงื˜.

TLDR: ื’ืจืกืช ืฉืงื•ืคื™ื•ืช ืงืฆืจื•ืช ืขื ื“ื’ืฉื™ื

ืžื“ื•ืข ืžืฉื—ืงื™ ืขื ืŸ ื”ื ื”ืขืชื™ื“

ืื ื™ ืžืืžื™ืŸ ืฉ-Cloud Gaming ื™ื”ืคื•ืš ื‘ืงืจื•ื‘ ืœื“ื•ืจ ื”ื‘ื ืฉืœ ืœื ืจืง ืžืฉื—ืงื™ื, ืืœื ื’ื ืชื—ื•ืžื™ื ืื—ืจื™ื ืฉืœ ืžื“ืขื™ ื”ืžื—ืฉื‘. ืžืฉื—ืง ื‘ืขื ืŸ ื”ื•ื ืคืกื’ืช ืžื•ื“ืœ ื”ืœืงื•ื—/ืฉืจืช. ืžื•ื“ืœ ื–ื” ืžืžืงืกื ืืช ื ื™ื”ื•ืœ ื”ืงืฆื” ื”ืื—ื•ืจื™ ื•ืžืžื–ืขืจ ืืช ืขื‘ื•ื“ืช ื”ื—ื–ื™ืช ืขืœ ื™ื“ื™ ืื™ืจื•ื— ืœื•ื’ื™ืงื” ืฉืœ ืžืฉื—ืง ื‘ืฉืจืช ืžืจื•ื—ืง ื•ื”ื–ืจืžืช ืชืžื•ื ื•ืช/ืฉืžืข ืœืœืงื•ื—. ื”ืฉืจืช ืžื‘ืฆืข ืืช ื”ืขื™ื‘ื•ื“ ื”ื›ื‘ื“ ื›ืš ืฉื”ืœืงื•ื— ื›ื‘ืจ ืœื ื ืชื•ืŸ ืœื—ืกื“ื™ ืžื’ื‘ืœื•ืช ื”ื—ื•ืžืจื”.

Google Stadia ื‘ืขืฆื ืžืืคืฉืจ ืœืš ืœืฉื—ืง ืžืฉื—ืงื™ AAA (ื›ืœื•ืžืจ ืžืฉื—ืงื™ ืฉื•ื‘ืจื™ ืงื•ืคื•ืช ืžืชืงื“ืžื™ื) ื‘ืžืžืฉืง ื›ืžื• ื™ื•ื˜ื™ื•ื‘. ื ื™ืชืŸ ืœื™ื™ืฉื ืืช ืื•ืชื” ืžืชื•ื“ื•ืœื•ื’ื™ื” ืขืœ ื™ื™ืฉื•ืžื™ื ืœื ืžืงื•ื•ื ื™ื ื›ื‘ื“ื™ื ืื—ืจื™ื ื›ื’ื•ืŸ ืžืขืจื›ืช ื”ืคืขืœื” ืื• ืขื™ืฆื•ื‘ ื’ืจืคื™ ื“ื•-ืžืžื“ื™/ืชืœืช-ืžืžื“ื™ ื•ื›ื•'. ื›ื“ื™ ืฉื ื•ื›ืœ ืœื”ืคืขื™ืœ ืื•ืชื ื‘ืื•ืคืŸ ืขืงื‘ื™ ื‘ืžื›ืฉื™ืจื™ื ื‘ืขืœื™ ืžืคืจื˜ ื ืžื•ืš ืขืœ ืคื ื™ ืžืกืคืจ ืคืœื˜ืคื•ืจืžื•ืช.

ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
ื”ืขืชื™ื“ ืฉืœ ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื•: ืชืืจ ืœืขืฆืžืš ืื Microsoft Windows 10 ืคืขืœ ืขืœ ื“ืคื“ืคืŸ ื›ืจื•ื?

ืžืฉื—ืง ื‘ืขื ืŸ ื”ื•ื ืžืืชื’ืจ ืžื‘ื—ื™ื ื” ื˜ื›ื ื™ืช

ื’ื™ื™ืžื™ื ื’ ื”ื•ื ืื—ื“ ืžืื•ืชื ืชื—ื•ืžื™ื ื ื“ื™ืจื™ื ืฉื‘ื”ื ื ื“ืจืฉืช ืชื’ื•ื‘ื” ืงื‘ื•ืขื” ื•ืžื”ื™ืจื” ืฉืœ ื”ืžืฉืชืžืฉ. ืื ืžื“ื™ ืคืขื ืื ื• ื ืชืงืœื™ื ื‘ืขื™ื›ื•ื‘ ืฉืœ 2 ืฉื ื™ื•ืช ื‘ืขืช ืœื—ื™ืฆื” ืขืœ ื“ืฃ, ื–ื” ืžืงื•ื‘ืœ. ื–ืจืžื™ ื•ื™ื“ืื• ื—ื™ื™ื ื ื•ื˜ื™ื ืœืคื’ืจ ื›ืžื” ืฉื ื™ื•ืช, ืืš ืขื“ื™ื™ืŸ ืžืฆื™ืขื™ื ืฉื™ืžื•ืฉื™ื•ืช ืกื‘ื™ืจื”. ืขื ื–ืืช, ืื ื”ืžืฉื—ืง ืžืคื’ืจ ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื‘-500ms, ืคืฉื•ื˜ ืื™ ืืคืฉืจ ืœืฉื—ืง ื‘ื•. ื”ืžื˜ืจื” ืฉืœื ื• ื”ื™ื ืœื”ืฉื™ื’ ื—ื‘ื™ื•ืŸ ื ืžื•ืš ื‘ืžื™ื•ื—ื“ ื›ื“ื™ ืฉื”ืคืขืจ ื‘ื™ืŸ ื”ืงืœื˜ ืœืžื“ื™ื” ื™ื”ื™ื” ืงื˜ืŸ ื›ื›ืœ ื”ืืคืฉืจ. ืœื›ืŸ, ื”ื’ื™ืฉื” ื”ืžืกื•ืจืชื™ืช ืœื”ื–ืจืžืช ื•ื™ื“ืื• ืื™ื ื” ื™ืฉื™ืžื” ื›ืืŸ.

ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
ืชื‘ื ื™ืช ืžืฉื—ืง ืขื ืŸ ื›ืœืœื™

ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— CloudRetro

ื”ื—ืœื˜ืชื™ ืœื™ืฆื•ืจ ื“ื’ื™ืžืช ื‘ื“ื™ืงื” ืฉืœ ืžืฉื—ืง ืขื ืŸ ื›ื“ื™ ืœืจืื•ืช ืื ื›ืœ ื–ื” ืืคืฉืจื™ ืขื ื”ื’ื‘ืœื•ืช ืจืฉืช ื›ื” ื”ื“ื•ืงื•ืช. ื‘ื—ืจืชื™ ื‘ื’ื•ืœืื ื’ ืœื”ื•ื›ื—ืช ื”ืจืขื™ื•ืŸ ื›ื™ ื–ื• ื”ื™ื™ืชื” ื”ืฉืคื” ืฉื”ื›ืจืชื™ ื”ื›ื™ ื”ืจื‘ื” ื•ื”ืชืื™ืžื” ื”ื™ื˜ื‘ ืœื™ื™ืฉื•ื ื”ื–ื” ืžืกื™ื‘ื•ืช ืจื‘ื•ืช ืื—ืจื•ืช, ื›ืคื™ ืฉื’ื™ืœื™ืชื™ ืžืื•ื—ืจ ื™ื•ืชืจ. Go ืคืฉื•ื˜ ื•ืžืชืคืชื— ืžื”ืจ ืžืื•ื“; ืขืจื•ืฆื™ื ื‘-Go ื ื”ื“ืจื™ื ืœื ื™ื”ื•ืœ ืจื™ื‘ื•ื™ ื”ืฉืจืฉื•ืจื™ื.

ืคืจื•ื™ืงื˜ CloudRetro.io ื”ื•ื ืฉื™ืจื•ืช ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ืœืžืฉื—ืงื™ ืจื˜ืจื•. ืžื˜ืจืช ื”ืคืจื•ื™ืงื˜ ื”ื™ื ืœื”ื‘ื™ื ืืช ื—ื•ื•ื™ืช ื”ืžืฉื—ืง ื”ื ื•ื—ื” ื‘ื™ื•ืชืจ ืœืžืฉื—ืงื™ ืจื˜ืจื• ืžืกื•ืจืชื™ื™ื ื•ืœื”ื•ืกื™ืฃ ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื.
ืชื•ื›ืœ ืœืœืžื•ื“ ืขื•ื“ ืขืœ ื”ืคืจื•ื™ืงื˜ ื›ืืŸ: https://github.com/giongto35/cloud-game.

ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช CloudRetro

CloudRetro ืžืฉืชืžืฉ ื‘ืžืฉื—ืงื™ ืจื˜ืจื• ื›ื“ื™ ืœื”ื“ื’ื™ื ืืช ื”ื›ื•ื— ืฉืœ ืžืฉื—ืงื™ ืขื ืŸ. ืžื” ืฉืžืืคืฉืจ ืœืš ืœืงื‘ืœ ื—ื•ื•ื™ื•ืช ืžืฉื—ืง ื™ื™ื—ื•ื“ื™ื•ืช ืจื‘ื•ืช.

  • ื ื™ื™ื“ื•ืช ื”ืžืฉื—ืง
    • ื”ืฉืžืขื” ืžื™ื™ื“ื™ืช ื‘ืขืช ืคืชื™ื—ืช ืขืžื•ื“; ืื™ืŸ ืฆื•ืจืš ื‘ื”ื•ืจื“ื” ืื• ื”ืชืงื ื”
    • ืขื•ื‘ื“ ื‘ื“ืคื“ืคืŸ ื ื™ื™ื“, ื›ืš ืฉืื™ืŸ ืฆื•ืจืš ื‘ืชื•ื›ื ื” ื›ื“ื™ ืœื”ืคืขื™ืœ ืื•ืชื•

  • ื ื™ืชืŸ ืœืฉืชืฃ ื”ืคืขืœื•ืช ืžืฉื—ืง ืขืœ ืคื ื™ ืžืกืคืจ ืžื›ืฉื™ืจื™ื ื•ืœืื—ืกืŸ ื‘ืขื ืŸ ืœืคืขื ื”ื‘ืื” ืฉืชืชื—ื‘ืจ
  • ื ื™ืชืŸ ืœื”ื–ืจื™ื ืืช ื”ืžืฉื—ืง ืื• ืœืฉื—ืง ื‘ื• ืขืœ ื™ื“ื™ ืžืกืคืจ ืžืฉืชืžืฉื™ื ื‘ื•-ื–ืžื ื™ืช:
    • ืžืฉื—ืง ื”ืžื•ื ื™ื ื›ืžื• TwitchPlayPokemon, ืจืง ื™ื•ืชืจ ื—ื•ืฆื” ืคืœื˜ืคื•ืจืžื•ืช ื•ื™ื•ืชืจ ื‘ื–ืžืŸ ืืžืช
    • ืžืฉื—ืงื™ื ืœื ืžืงื•ื•ื ื™ื ื‘ืื™ื ื˜ืจื ื˜. ืžืฉืชืžืฉื™ื ืจื‘ื™ื ื™ื›ื•ืœื™ื ืœืฉื—ืง ืžื‘ืœื™ ืœื”ื’ื“ื™ืจ ืจืฉืช. ื›ืขืช ื ื™ืชืŸ ืœืฉื—ืง Samurai Shodown ืขืœ ื™ื“ื™ 2 ืฉื—ืงื ื™ื ื‘ืจืฉืช CloudRetro

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ื’ืจืกืช ื”ื“ื’ืžื” ืฉืœ ืžืฉื—ืง ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื ืžืงื•ื•ืŸ ื‘ืžื›ืฉื™ืจื™ื ืฉื•ื ื™ื

    ืชืฉืชื™ืช

    ื“ืจื™ืฉื•ืช ื•ืขืจื™ืžืช ื˜ื›ื ื•ืœื•ื’ื™ื”

    ืœื”ืœืŸ ืจืฉื™ืžืช ื”ื“ืจื™ืฉื•ืช ืฉื”ืฆื‘ืชื™ ืœืคื ื™ ืชื—ื™ืœืช ื”ืคืจื•ื™ืงื˜.

    1. ืฉื—ืงืŸ ืื—ื“
    ื”ื“ืจื™ืฉื” ื”ื–ื• ืื•ืœื™ ืœื ื ืจืื™ืช ื—ืฉื•ื‘ื” ืื• ื‘ืจื•ืจื” ืžื“ื™ ื›ืืŸ, ืื‘ืœ ื”ื™ื ืื—ืช ืžื ืงื•ื“ื•ืช ื”ืžืคืชื— ืฉืœื™, ื”ื™ื ืžืืคืฉืจืช ืœื’ื™ื™ืžื™ื ื’ ื‘ืขื ืŸ ืœื”ืชืจื—ืง ื›ื›ืœ ื”ืืคืฉืจ ืžืฉื™ืจื•ืชื™ ืกื˜ืจื™ืžื™ื ื’ ืžืกื•ืจืชื™ื™ื. ืื ื ืชืžืงื“ ื‘ืžืฉื—ืง ืฉืœ ืฉื—ืงืŸ ื™ื—ื™ื“, ื ื•ื›ืœ ืœื”ื™ืคื˜ืจ ืžืฉืจืช ืžืจื›ื–ื™ ืื• CDN ื›ื™ ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืœื”ื–ืจื™ื ืœื”ืžื•ื ื™ื. ื‘ืžืงื•ื ืœื”ืขืœื•ืช ื–ืจืžื™ื ืœืฉืจืช ืกื™ื ืง ืื• ื”ืขื‘ืจืช ืžื ื•ืช ืœืฉืจืช WebSocket ืžืจื›ื–ื™, ื–ืจืžื™ ืฉื™ืจื•ืช ืžื•ืขื‘ืจื™ื ื™ืฉื™ืจื•ืช ืœืžืฉืชืžืฉ ื‘ืืžืฆืขื•ืช ื—ื™ื‘ื•ืจ WebRTC ืขืžื™ืช ืœืขืžื™ืช.

    2. ื–ืจื ืžื“ื™ื” ืขื ื—ื‘ื™ื•ืŸ ื ืžื•ืš
    ื›ืฉืงื•ืจืื™ื ืขืœ Stadia, ืื ื™ ืจื•ืื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช ืืช WebRTC ืžื•ื–ื›ืจ ื‘ื›ืžื” ืžืืžืจื™ื. ื”ื‘ื ืชื™ ืฉ-WebRTC ื”ื™ื ื˜ื›ื ื•ืœื•ื’ื™ื” ื™ื•ืฆืืช ื“ื•ืคืŸ ื•ื”ื™ื ืžื•ืฉืœืžืช ืœืฉื™ืžื•ืฉ ื‘ืžืฉื—ืงื™ ืขื ืŸ. WebRTC ื”ื•ื ืคืจื•ื™ืงื˜ ื”ืžืกืคืง ืœื“ืคื“ืคื ื™ ืื™ื ื˜ืจื ื˜ ื•ื™ื™ืฉื•ืžื™ื ื ื™ื™ื“ื™ื ืชืงืฉื•ืจืช ื‘ื–ืžืŸ ืืžืช ื‘ืืžืฆืขื•ืช ืžืžืฉืง API ืคืฉื•ื˜. ื”ื•ื ืžืกืคืง ืงื™ืฉื•ืจื™ื•ืช ืขืžื™ืช ืœืขืžื™ืช, ืžื•ืชืื ืœืžื“ื™ื”, ื•ื›ื•ืœืœ ืงื•ื“ืงื™ื ืกื˜ื ื“ืจื˜ื™ื™ื ืžื•ื‘ื ื™ื ื›ื’ื•ืŸ VP8 ื•-H264.

    ื”ืขื“ืคืชื™ ืœื”ื‘ื˜ื™ื— ืืช ื—ื•ื•ื™ืช ื”ืžืฉืชืžืฉ ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ื”ืืคืฉืจื™ืช ืขืœ ืคื ื™ ืฉืžื™ืจื” ืขืœ ื’ืจืคื™ืงื” ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื”. ื›ืžื” ื”ืคืกื“ื™ื ืžืงื•ื‘ืœื™ื ื‘ืืœื’ื•ืจื™ืชื. ืœ-Google Stadia ื™ืฉ ืฉืœื‘ ื ื•ืกืฃ ืฉืœ ื”ืงื˜ื ืช ื’ื•ื“ืœ ื”ืชืžื•ื ื” ื‘ืฉืจืช, ื•ื”ืคืจื™ื™ื ืžื•ื’ื“ืœื™ื ืœืื™ื›ื•ืช ื’ื‘ื•ื”ื” ื™ื•ืชืจ ืœืคื ื™ ืฉื”ื ืžืฉื•ื“ืจื™ื ืœืขืžื™ืชื™ื.

    3. ืชืฉืชื™ืช ืžื‘ื•ื–ืจืช ืขื ื ื™ืชื•ื‘ ื’ื™ืื•ื’ืจืคื™
    ืœื ืžืฉื ื” ื›ืžื” ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ืืœื’ื•ืจื™ืชื ื”ื“ื—ื™ืกื” ื•ื”ืงื•ื“, ื”ืจืฉืช ื”ื™ื ืขื“ื™ื™ืŸ ื”ื’ื•ืจื ื”ืžื›ืจื™ืข ืฉืชื•ืจื ื”ื›ื™ ื”ืจื‘ื” ืœื”ืฉื”ื™ื™ื”. ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื—ื™ื™ื‘ืช ืœื”ื™ื•ืช ื‘ืขืœืช ืžื ื’ื ื•ืŸ ืฉื™ืชืื™ื ืืช ื”ืฉืจืช ื”ืงืจื•ื‘ ื‘ื™ื•ืชืจ ืœืžืฉืชืžืฉ ื›ื“ื™ ืœื”ืคื—ื™ืช ืืช ื–ืžืŸ ื”ื ืกื™ืขื” ื”ืœื•ืš ื•ืฉื•ื‘ (RTT). ืœืืจื›ื™ื˜ืงื˜ื•ืจื” ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžืชืื ืื—ื“ ื•ืžืกืคืจ ืฉืจืชื™ ืกื˜ืจื™ืžื™ื ื’ ื”ืžื•ืคืฆื™ื ื‘ืจื—ื‘ื™ ื”ืขื•ืœื: ืžืขืจื‘ ืืจื”"ื‘, ืžื–ืจื— ืืจื”"ื‘, ืื™ืจื•ืคื”, ืกื™ื ื’ืคื•ืจ, ืกื™ืŸ. ื›ืœ ืฉืจืชื™ ื”ืกื˜ืจื™ืžื™ื ื’ ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืžื‘ื•ื“ื“ื™ื ืœื—ืœื•ื˜ื™ืŸ. ื”ืžืขืจื›ืช ื™ื›ื•ืœื” ืœื”ืชืื™ื ืืช ื”ืชืคื•ืฆื” ืฉืœื” ื›ืืฉืจ ืฉืจืช ืžืฆื˜ืจืฃ ืื• ืขื•ื–ื‘ ืืช ื”ืจืฉืช. ืœืคื™ื›ืš, ืขื ืชืขื‘ื•ืจื” ื’ื“ื•ืœื”, ื”ื•ืกืคืช ืฉืจืชื™ื ื ื•ืกืคื™ื ืžืืคืฉืจืช ืงื ื” ืžื™ื“ื” ืื•ืคืงื™.

    4. ืชืื™ืžื•ืช ื“ืคื“ืคืŸ
    ืžืฉื—ืงื™ ืขื ืŸ ื”ื ื‘ืžื™ื˜ื‘ื• ื›ืฉื”ื ื“ื•ืจืฉื™ื ื”ื›ื™ ืคื—ื•ืช ืžื”ืžืฉืชืžืฉื™ื. ื–ื” ืื•ืžืจ ืฉืืคืฉืจ ืœื”ืจื™ืฅ ื‘ื“ืคื“ืคืŸ. ื“ืคื“ืคื ื™ื ืขื•ื–ืจื™ื ืœื”ืคื•ืš ืืช ื—ื•ื•ื™ืช ื”ืžืฉื—ืง ืœื ื•ื—ื” ื›ื›ืœ ื”ืืคืฉืจ ืœืžืฉืชืžืฉื™ื, ื•ื—ื•ืกื›ื™ื ืžื”ื ื”ืชืงื ืช ืชื•ื›ื ื” ื•ื—ื•ืžืจื”. ื“ืคื“ืคื ื™ื ื’ื ืขื•ื–ืจื™ื ืœืกืคืง ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื—ื•ืฆืช ืคืœื˜ืคื•ืจืžื•ืช ื‘ื™ืŸ ื’ืจืกืื•ืช ื ื™ื™ื“ื•ืช ื•ื’ืจืกืื•ืช ืฉื•ืœื—ื ื™ื•ืช. ืœืžืจื‘ื” ื”ืžื–ืœ, WebRTC ื ืชืžืš ื”ื™ื˜ื‘ ื‘ืžื’ื•ื•ืŸ ื“ืคื“ืคื ื™ื.

    5. ื”ืคืจื“ื” ื‘ืจื•ืจื” ืฉืœ ืžืžืฉืง ื”ืžืฉื—ืง ื•ื”ืฉื™ืจื•ืช
    ืื ื™ ืจื•ืื” ืืช ืฉื™ืจื•ืช ื”ืžืฉื—ืงื™ื ื‘ืขื ืŸ ื›ืคืœื˜ืคื•ืจืžื”. ื›ืœ ืื—ื“ ืฆืจื™ืš ืœื”ื™ื•ืช ืžืกื•ื’ืœ ืœื—ื‘ืจ ื›ืœ ื“ื‘ืจ ืœืคืœื˜ืคื•ืจืžื”. ืขื›ืฉื™ื• ื”ืฉืชืœื‘ืชื™ LibRetro ืขื ืฉื™ืจื•ืช ืžืฉื—ืงื™ ืขื ืŸ ื›ื™ LibRetro ืžืฆื™ืข ืžืžืฉืง ืืžื•ืœื˜ื•ืจ ืžืฉื—ืง ื™ืคื”ืคื” ืœืžืฉื—ืงื™ ืจื˜ืจื• ื›ื’ื•ืŸ SNES, GBA, PS.

    6. ื—ื“ืจื™ื ืœืจื‘ ืžืฉืชืชืคื™ื, ืžืฉื—ืง ืงื”ืœ ื•ืงื™ืฉื•ืจ ื—ื™ืฆื•ื ื™ (ืขืžื•ืง) ืขื ื”ืžืฉื—ืง
    CloudRetro ืชื•ืžืš ื‘ืžืฉื—ืงื™ื ื—ื“ืฉื™ื ืจื‘ื™ื ื›ื’ื•ืŸ CrowdPlay ื•-MultiPlayer ืžืงื•ื•ืŸ ืขื‘ื•ืจ ืžืฉื—ืงื™ ืจื˜ืจื•. ืื ืžืกืคืจ ืžืฉืชืžืฉื™ื ื™ืคืชื—ื• ืืช ืื•ืชื• ืงื™ืฉื•ืจ ืขืžื•ืง ื‘ืžื—ืฉื‘ื™ื ืฉื•ื ื™ื, ื”ื ื™ืจืื• ืืช ืื•ืชื• ืžืฉื—ืง ืคื•ืขืœ ื•ืืฃ ื™ื•ื›ืœื• ืœื”ืฆื˜ืจืฃ ืืœื™ื•.

    ื™ืชืจ ืขืœ ื›ืŸ, ืžืฆื‘ื™ ื”ืžืฉื—ืง ืžืื•ื—ืกื ื™ื ื‘ืื—ืกื•ืŸ ื‘ืขื ืŸ. ื–ื” ืžืืคืฉืจ ืœืžืฉืชืžืฉื™ื ืœื”ืžืฉื™ืš ืœืฉื—ืง ื‘ื›ืœ ืขืช ื‘ื›ืœ ืžื›ืฉื™ืจ ืื—ืจ.

    7. ืงื ื” ืžื™ื“ื” ืื•ืคืงื™
    ื›ืžื• ื›ืœ SAAS ื‘ื™ืžื™ื ื•, ืžืฉื—ืงื™ ืขื ืŸ ื—ื™ื™ื‘ื™ื ืœื”ื™ื•ืช ืžืชื•ื›ื ื ื™ื ื›ืš ืฉื™ื”ื™ื• ื ื™ืชื ื™ื ืœื”ืจื—ื‘ื” ืื•ืคืงื™ืช. ื”ืขื™ืฆื•ื‘ ืฉืœ ืจื›ื–-ืขื•ื‘ื“ ืžืืคืฉืจ ืœืš ืœื”ื•ืกื™ืฃ ืขื•ื“ ืขื•ื‘ื“ื™ื ื›ื“ื™ ืœืฉืจืช ื™ื•ืชืจ ืชืขื‘ื•ืจื”.

    8. ืื™ืŸ ื—ื™ื‘ื•ืจ ืœืขื ืŸ ืื—ื“
    ื”ืชืฉืชื™ืช ืฉืœ CloudRetro ืžืชืืจื—ืช ืืฆืœ ืกืคืงื™ ืขื ืŸ ืฉื•ื ื™ื (Digital Ocean, Alibaba, ืกืคืง ืžื•ืชืื ืื™ืฉื™ืช) ืขื‘ื•ืจ ืื–ื•ืจื™ื ืฉื•ื ื™ื. ืื ื™ ืžืืคืฉืจ ื”ืคืขืœื” ื‘ืงื•ื ื˜ื™ื™ื ืจ ืฉืœ Docker ืขื‘ื•ืจ ื”ืชืฉืชื™ืช ื•ืžื’ื“ื™ืจ ืืช ื”ื’ื“ืจื•ืช ื”ืจืฉืช ื‘ืืžืฆืขื•ืช ืกืงืจื™ืคื˜ bash ื›ื“ื™ ืœื”ื™ืžื ืข ืžื ืขื™ืœืช ืกืคืง ืขื ืŸ ื™ื—ื™ื“. ืขืœ ื™ื“ื™ ืฉื™ืœื•ื‘ ื–ื” ืขื NAT Traversal ื‘-WebRTC, ืื ื• ื™ื›ื•ืœื™ื ืœืงื‘ืœ ืืช ื”ื’ืžื™ืฉื•ืช ืœืคืจื•ืก ืืช CloudRetro ืขืœ ื›ืœ ืคืœื˜ืคื•ืจืžืช ืขื ืŸ ื•ืืคื™ืœื• ืขืœ ืžื—ืฉื‘ื™ื ืฉืœ ื›ืœ ืžืฉืชืžืฉ.

    ืขื™ืฆื•ื‘ ืื“ืจื™ื›ืœื™

    ืขื•ึนื‘ึตื“: (ืื• ืฉืจืช ื”ืกื˜ืจื™ืžื™ื ื’ ืฉื”ื•ื–ื›ืจ ืœืขื™ืœ) ืžื›ืคื™ืœ ืืช ื”ืžืฉื—ืงื™ื, ืžืคืขื™ืœ ืืช ืฆื™ื ื•ืจ ื”ืงื™ื“ื•ื“ ื•ืžื–ืจื™ื ืืช ื”ืžื“ื™ื” ื”ืžืงื•ื“ื“ืช ืœืžืฉืชืžืฉื™ื. ืžื•ืคืขื™ ืขื•ื‘ื“ื™ื ืžื•ืคืฆื™ื ื‘ืจื—ื‘ื™ ื”ืขื•ืœื, ื•ื›ืœ ืขื•ื‘ื“ ื™ื›ื•ืœ ืœื˜ืคืœ ื‘ืžืกืคืจ ื”ืคืขืœื•ืช ืฉืœ ืžืฉืชืžืฉื™ื ื‘ื•-ื–ืžื ื™ืช.

    ืจื›ื–: ืื—ืจืื™ืช ืœื”ืฆืžื“ืช ื”ืžืฉืชืžืฉ ื”ื—ื“ืฉ ืœืขื•ื‘ื“ ื”ืžืชืื™ื ื‘ื™ื•ืชืจ ืœืกื˜ืจื™ืžื™ื ื’. ื”ืจื›ื– ืžืงื™ื™ื ืื™ื ื˜ืจืืงืฆื™ื” ืขื ืขื•ื‘ื“ื™ื ื‘ืืžืฆืขื•ืช WebSocket.

    ืื—ืกื•ืŸ ืžืฆื‘ ืžืฉื—ืง: ืื—ืกื•ืŸ ืžืจื›ื–ื™ ืžืจื—ื•ืง ืขื‘ื•ืจ ื›ืœ ืžืฆื‘ื™ ื”ืžืฉื—ืง. ืื—ืกื•ืŸ ื–ื” ืžืกืคืง ืคื•ื ืงืฆื™ื•ืช ื—ืฉื•ื‘ื•ืช ื›ื’ื•ืŸ ืฉืžื™ืจื”/ื˜ืขื™ื ื” ืžืจื—ื•ืง.

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ืืจื›ื™ื˜ืงื˜ื•ืจื” ื‘ืจืžื” ื”ืขืœื™ื•ื ื” ืฉืœ CloudRetro

    ืกืงืจื™ืคื˜ ืžื•ืชืื ืื™ืฉื™ืช

    ื›ืืฉืจ ืžืฉืชืžืฉ ื—ื“ืฉ ืคื•ืชื— ืืช CloudRetro ื‘ืฉืœื‘ื™ื 1 ื•-2 ื”ืžื•ืฆื’ื™ื ื‘ืื™ื•ืจ ืœืžื˜ื”, ื”ืจื›ื– ื™ื—ื“ ืขื ืจืฉื™ืžืช ื”ืขื•ื‘ื“ื™ื ื”ื–ืžื™ื ื™ื ืžืชื‘ืงืฉ ืœืขืžื•ื“ ื”ืจืืฉื•ืŸ. ืœืื—ืจ ืžื›ืŸ, ื‘ืฉืœื‘ 3 ื”ืœืงื•ื— ืžื—ืฉื‘ ืืช ื”ืขื™ื›ื•ื‘ื™ื ืขื‘ื•ืจ ื›ืœ ื”ืžื•ืขืžื“ื™ื ื‘ืืžืฆืขื•ืช ื‘ืงืฉืช ืคื™ื ื’ HTTP. ืจืฉื™ืžืช ื”ืขื™ื›ื•ื‘ื™ื ื”ื–ื• ื ืฉืœื—ืช ืœืื—ืจ ืžื›ืŸ ื—ื–ืจื” ืœืจื›ื– ื›ื“ื™ ืฉื™ื•ื›ืœ ืœืงื‘ื•ืข ืืช ื”ืขื•ื‘ื“ ื”ืžืชืื™ื ื‘ื™ื•ืชืจ ืœืฉืจืช ืืช ื”ืžืฉืชืžืฉ. ืฉืœื‘ 4 ืœื”ืœืŸ ื™ื•ืฆืจ ืืช ื”ืžืฉื—ืง. ื ื•ืฆืจ ื—ื™ื‘ื•ืจ ืกื˜ืจื™ืžื™ื ื’ ืฉืœ WebRTC ื‘ื™ืŸ ื”ืžืฉืชืžืฉ ืœืขื•ื‘ื“ ืฉื”ื•ืงืฆื”.
    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ืกืงืจื™ืคื˜ ืžืฉืชืžืฉ ืœืื—ืจ ืงื‘ืœืช ื’ื™ืฉื”

    ืžื” ื™ืฉ ื‘ืชื•ืš ื”ืขื•ื‘ื“

    ืฆื™ื ื•ืจื•ืช ืžืฉื—ืงื™ื ื•ื–ืจื™ืžื” ืžืื•ื—ืกื ื™ื ื‘ืชื•ืš ื”ืขื•ื‘ื“ ื‘ื‘ื™ื“ื•ื“ ื•ืžื—ืœื™ืคื™ื ืฉื ืžื™ื“ืข ื“ืจืš ื”ืžืžืฉืง. ื ื›ื•ืŸ ืœืขื›ืฉื™ื•, ืชืงืฉื•ืจืช ื–ื• ืžืชื‘ืฆืขืช ืขืœ ื™ื“ื™ ื”ืขื‘ืจืช ื ืชื•ื ื™ื ื‘ื–ื™ื›ืจื•ืŸ ื‘ืืžืฆืขื•ืช ืขืจื•ืฆื™ ื’ื•ืœื ื’ ื‘ืื•ืชื• ืชื”ืœื™ืš. ื”ืžื˜ืจื” ื”ื‘ืื” ื”ื™ื ื”ืคืจื“ื”, ื›ืœื•ืžืจ. ื”ืฉืงื” ืขืฆืžืื™ืช ืฉืœ ื”ืžืฉื—ืง ื‘ืชื”ืœื™ืš ืื—ืจ.

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ืื™ื ื˜ืจืืงืฆื™ื” ืฉืœ ืžืจื›ื™ื‘ื™ ืขื•ื‘ื“

    ืจื›ื™ื‘ื™ื ืขื™ืงืจื™ื™ื:

    • WebRTC: ืจื›ื™ื‘ ืœืงื•ื— ืฉืžืงื‘ืœ ืงืœื˜ ืžืฉืชืžืฉ ื•ืžื•ืฆื™ื ืžื“ื™ื” ืžืงื•ื“ื“ืช ืžื”ืฉืจืช.
    • ืืžื•ืœื˜ื•ืจ ืžืฉื—ืง: ืจื›ื™ื‘ ื”ืžืฉื—ืง. ื”ื•ื“ื•ืช ืœืกืคืจื™ื™ืช Libretro, ื”ืžืขืจื›ืช ืžืกื•ื’ืœืช ืœื”ืจื™ืฅ ืืช ื”ืžืฉื—ืง ื‘ืชื•ืš ืื•ืชื• ืชื”ืœื™ืš ื•ืœื™ื™ืจื˜ ื‘ืื•ืคืŸ ืคื ื™ืžื™ ืžื“ื™ื” ื•ื–ืจื ืงืœื˜.
    • ืžืกื’ืจื•ืช ื‘ืžืฉื—ืง ื ืœื›ื“ื•ืช ื•ื ืฉืœื—ื•ืช ืœืžืงื•ื“ื“.
    • ืžืงื•ื“ื“ ืชืžื•ื ื”/ืฉืžืข: ืฆื™ื ื•ืจ ืงื™ื“ื•ื“ ืฉืœื•ืงื— ืžืกื’ืจื•ืช ืžื“ื™ื”, ืžืงื•ื“ื“ ืื•ืชืŸ ื‘ืจืงืข ื•ืžื•ืฆื™ื ืชืžื•ื ื•ืช/ืฉืžืข ืžืงื•ื“ื“ื•ืช.

    ะ ะตะฐะปะธะทะฐั†ะธั

    CloudRetro ืžืกืชืžืš ืขืœ WebRTC ื›ื˜ื›ื ื•ืœื•ื’ื™ื™ืช ืขืžื•ื“ ื”ืฉื“ืจื” ืฉืœื”, ืื– ืœืคื ื™ ื”ืฆืœื™ืœื” ืœืคืจื˜ื™ื ืฉืœ ื™ื™ืฉื•ื Golang, ื”ื—ืœื˜ืชื™ ืœื“ื‘ืจ ืขืœ WebRTC ืขืฆืžื•. ื–ื•ื”ื™ ื˜ื›ื ื•ืœื•ื’ื™ื” ืžื“ื”ื™ืžื” ืฉืขื–ืจื” ืœื™ ืžืื•ื“ ื‘ื”ืฉื’ืช ื—ื‘ื™ื•ืŸ ืฉืœ ืชืช-ืฉื ื™ื™ื” ืขื‘ื•ืจ ื”ื–ืจืžืช ื ืชื•ื ื™ื.

    WebRTC

    WebRTC ื ื•ืขื“ ืœืกืคืง ื—ื™ื‘ื•ืจื™ ืขืžื™ืช ืœืขืžื™ืช ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื” ื‘ืืคืœื™ืงืฆื™ื•ืช ื•ื“ืคื“ืคื ื™ื ืžืงื•ืจื™ื™ื ืœื ื™ื™ื“ ื‘ืืžืฆืขื•ืช ืžืžืฉืงื™ API ืคืฉื•ื˜ื™ื.

    ืžืขื‘ืจ NAT

    WebRTC ื™ื“ื•ืขื” ื‘ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”-NAT Traversal ืฉืœื”. WebRTC ืžื™ื•ืขื“ ืœืชืงืฉื•ืจืช ืขืžื™ืช ืœืขืžื™ืช. ืžื˜ืจืชื• ื”ื™ื ืœืžืฆื•ื ืืช ื”ืžืกืœื•ืœ ื”ื™ืฉื™ืจ ื”ืžืชืื™ื ื‘ื™ื•ืชืจ, ื”ื™ืžื ืขื•ืช ืžืฉืขืจื™ NAT โ€‹โ€‹ื•ื—ื•ืžื•ืช ืืฉ ืœืชืงืฉื•ืจืช ืขืžื™ืช ืœืขืžื™ืช ื‘ืืžืฆืขื•ืช ืชื”ืœื™ืš ื”ื ืงืจื ืงืจื—. ื›ื—ืœืง ืžืชื”ืœื™ืš ื–ื”, ืžืžืฉืงื™ ื”-API ืฉืœ WebRTC ืžื•ืฆืื™ื ืืช ื›ืชื•ื‘ืช ื”-IP ื”ืฆื™ื‘ื•ืจื™ืช ืฉืœืš ื‘ืืžืฆืขื•ืช ืฉืจืชื™ STUN ื•ืžืขื‘ื™ืจื™ื ืื•ืชื” ืœืฉืจืช ื”ืžืžืกืจ (ืชื•ืจ) ื›ืืฉืจ ืœื ื ื™ืชืŸ ืœื™ืฆื•ืจ ื—ื™ื‘ื•ืจ ื™ืฉื™ืจ.

    ืขื ื–ืืช, CloudRetro ืื™ื ื• ืžื ืฆืœ ืชื›ื•ื ื” ื–ื• ื‘ืžืœื•ืื”. ื—ื™ื‘ื•ืจื™ ื”-peer-to-peer ืฉืœื• ืื™ื ื ืงื™ื™ืžื™ื ื‘ื™ืŸ ืžืฉืชืžืฉื™ื, ืืœื ื‘ื™ืŸ ืžืฉืชืžืฉื™ื ืœืฉืจืชื™ ืขื ืŸ. ื‘ืฆื“ ื”ืฉืจืช ืฉืœ ื”ื“ื’ื ื™ืฉ ืคื—ื•ืช ื”ื’ื‘ืœื•ืช ืชืงืฉื•ืจืช ื™ืฉื™ืจื” ืžืืฉืจ ืžื›ืฉื™ืจ ืžืฉืชืžืฉ ื˜ื™ืคื•ืกื™. ื–ื” ืžืืคืฉืจ ืœืš ืœืคืชื•ื— ืžืจืืฉ ื™ืฆื™ืื•ืช ื ื›ื ืกื•ืช ืื• ืœื”ืฉืชืžืฉ ื™ืฉื™ืจื•ืช ื‘ื›ืชื•ื‘ื•ืช IP ืฆื™ื‘ื•ืจื™ื•ืช, ืžื›ื™ื•ื•ืŸ ืฉื”ืฉืจืช ืื™ื ื• ืžืื—ื•ืจื™ NAT.

    ื‘ืขื‘ืจ ืจืฆื™ืชื™ ืœื”ืคื•ืš ืืช ื”ืคืจื•ื™ืงื˜ ืœืคืœื˜ืคื•ืจืžืช ื”ืคืฆืช ืžืฉื—ืงื™ื ืขื‘ื•ืจ Cloud Gaming. ื”ืจืขื™ื•ืŸ ื”ื™ื” ืœืืคืฉืจ ืœื™ื•ืฆืจื™ ืžืฉื—ืงื™ื ืœืกืคืง ืžืฉื—ืงื™ื ื•ืžืฉืื‘ื™ ืกื˜ืจื™ืžื™ื ื’. ื•ืžืฉืชืžืฉื™ื ื™ืชืงืฉืจื• ื™ืฉื™ืจื•ืช ืขื ืกืคืงื™ื. ื‘ืื•ืคืŸ ืžื‘ื•ื–ืจ ื–ื”, CloudRetro ื”ื•ื ืจืง ืžืกื’ืจืช ืœื—ื™ื‘ื•ืจ ืžืฉืื‘ื™ ืกื˜ืจื™ืžื™ื ื’ ืฉืœ ืฆื“ ืฉืœื™ืฉื™ ืœืžืฉืชืžืฉื™ื, ืžื” ืฉื”ื•ืคืš ืื•ืชื” ืœื ื™ืชื ืช ืœื”ืจื—ื‘ื” ื›ืืฉืจ ื”ื™ื ื›ื‘ืจ ืœื ืžืชืืจื—ืช. ื”ืชืคืงื™ื“ ืฉืœ WebRTC NAT Traversal ื›ืืŸ ื—ืฉื•ื‘ ืžืื•ื“ ื›ื“ื™ ืœื”ืงืœ ืขืœ ืืชื—ื•ืœ ื—ื™ื‘ื•ืจ ืขืžื™ืช ืœืขืžื™ืช ื‘ืžืฉืื‘ื™ ืกื˜ืจื™ืžื™ื ื’ ืฉืœ ืฆื“ ืฉืœื™ืฉื™, ืžื” ืฉืžืงืœ ืขืœ ื”ื™ื•ืฆืจ ืœื”ืชื—ื‘ืจ ืœืจืฉืช.

    ื“ื—ื™ืกืช ื•ื™ื“ืื•

    ื“ื—ื™ืกืช ื•ื™ื“ืื• ื”ื™ื ื—ืœืง ื”ื›ืจื—ื™ ื‘ืฆื™ื ื•ืจ ื•ืชื•ืจื ืจื‘ื•ืช ืœื–ืจื™ืžื” ื—ืœืงื”. ืืžื ื ืื™ืŸ ืฆื•ืจืš ืœื“ืขืช ื›ืœ ืคืจื˜ ืฉืœ ืงื™ื“ื•ื“ ื•ื™ื“ืื• VP8/H264, ืื‘ืœ ื”ื‘ื ืช ื”ืžื•ืฉื’ื™ื ื™ื›ื•ืœื” ืœืขื–ื•ืจ ืœืš ืœื”ื‘ื™ืŸ ืืช ืืคืฉืจื•ื™ื•ืช ืžื”ื™ืจื•ืช ื”ืกื˜ืจื™ืžื™ื ื’ ืฉืœ ื•ื™ื“ืื•, ืœื ืคื•ืช ื‘ืื’ื™ื ื‘ื”ืชื ื”ื’ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื” ื•ืœื”ืชืื™ื ืืช ื–ืžืŸ ื”ืื—ื–ื•ืจ.

    ื“ื—ื™ืกืช ื•ื™ื“ืื• ืขื‘ื•ืจ ืฉื™ืจื•ืช ืกื˜ืจื™ืžื™ื ื’ ื”ื™ื ืžืืชื’ืจืช ืžื›ื™ื•ื•ืŸ ืฉื”ืืœื’ื•ืจื™ืชื ื—ื™ื™ื‘ ืœื”ื‘ื˜ื™ื— ืฉื–ืžืŸ ื”ืงื™ื“ื•ื“ ื”ื›ื•ืœืœ + ื–ืžืŸ ื”ืฉื™ื“ื•ืจ ื‘ืจืฉืช + ื–ืžืŸ ื”ืคืขื ื•ื— ื™ื”ื™ื” ื ืžื•ืš ื›ื›ืœ ื”ืืคืฉืจ. ื‘ื ื•ืกืฃ, ืชื”ืœื™ืš ื”ืงื™ื“ื•ื“ ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืขืงื‘ื™ ื•ืžืชืžืฉืš. ื—ืœืง ืžื”ื”ืคืจืขื•ืช ื‘ืงื™ื“ื•ื“ ืื™ื ืŸ ื—ืœื•ืช - ืœื“ื•ื’ืžื”, ืื™ื ื ื• ื™ื›ื•ืœื™ื ืœื”ืขื“ื™ืฃ ื–ืžื ื™ ืงื™ื“ื•ื“ ืืจื•ื›ื™ื ืขืœ ืคื ื™ ื’ื“ืœื™ ืงื‘ืฆื™ื ื•ื–ืžื ื™ ืคืขื ื•ื— ืงื˜ื ื™ื ื™ื•ืชืจ, ืื• ืœื”ืฉืชืžืฉ ื‘ื“ื—ื™ืกื” ืœื ืขืงื‘ื™ืช.

    ื”ืจืขื™ื•ืŸ ืžืื—ื•ืจื™ ื“ื—ื™ืกืช ื•ื™ื“ืื• ื”ื•ื ืœื—ืกืœ ืคื™ืกื•ืช ืžื™ื“ืข ืžื™ื•ืชืจื•ืช ืชื•ืš ืฉืžื™ืจื” ืขืœ ืจืžืช ื“ื™ื•ืง ืžืงื•ื‘ืœืช ืขื‘ื•ืจ ื”ืžืฉืชืžืฉื™ื. ื‘ื ื•ืกืฃ ืœืงื™ื“ื•ื“ ืžืกื’ืจื•ืช ืชืžื•ื ื” ืกื˜ื˜ื™ื•ืช ื‘ื•ื“ื“ื•ืช, ื”ืืœื’ื•ืจื™ืชื ืžืกื™ืง ืืช ื”ืžืกื’ืจืช ื”ื ื•ื›ื—ื™ืช ืžื”ืงื•ื“ืžืช ื•ื”ื‘ืื”, ื›ืš ืฉืจืง ื”ื”ื‘ื“ืœ ืฉืœื”ืŸ ื ืฉืœื—. ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ื“ื•ื’ืžื” ืขื Pacman, ืจืง ื ืงื•ื“ื•ืช ื“ื™ืคืจื ืฆื™ืืœื™ื•ืช ืžืฉื•ื“ืจื•ืช.

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ื”ืฉื•ื•ืื” ืฉืœ ืžืกื’ืจื•ืช ื•ื™ื“ืื• ื‘ืืžืฆืขื•ืช Pacman ื›ื“ื•ื’ืžื”

    ื“ื—ื™ืกืช ืื•ื“ื™ื•

    ื‘ืื•ืคืŸ ื“ื•ืžื”, ืืœื’ื•ืจื™ืชื ื“ื—ื™ืกืช ื”ืฉืžืข ืžืฉืžื™ื˜ ื ืชื•ื ื™ื ืฉืœื ื ื™ืชืŸ ืœืชืคื•ืก ืขืœ ื™ื“ื™ ื‘ื ื™ ืื“ื. Opus ื”ื•ื ื›ืจื’ืข ืงื•ื“ืง ื”ืื•ื“ื™ื• ื‘ืขืœ ื”ื‘ื™ืฆื•ืขื™ื ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ. ื”ื•ื ื ื•ืขื“ ืœืฉื“ืจ ื’ืœ ืฉืžืข ืขืœ ืคืจื•ื˜ื•ืงื•ืœ ื“ืื˜ื”ื’ืจื ืžืกื•ื“ืจ ื›ื’ื•ืŸ RTP (Real Time Transport Protocol). ื–ืžืŸ ื”ื”ืฉื”ื™ื” ืฉืœื• ื ืžื•ืš ืž-mp3 ื•-aac, ื•ื”ืื™ื›ื•ืช ื’ื‘ื•ื”ื” ื™ื•ืชืจ. ื”ืฉื”ื™ื” ื‘ื“ืจืš ื›ืœืœ ื‘ืกื‘ื™ื‘ื•ืช 5~66,5ms.

    Pion, WebRTC ื‘ื’ื•ืœื ื’

    ืคื™ื•ืŸ ื”ื•ื ืคืจื•ื™ืงื˜ ืงื•ื“ ืคืชื•ื— ืฉืžื‘ื™ื ืืช WebRTC ืœื’ื•ืœืื ื’. ื‘ืžืงื•ื ื”ืžืขื˜ืคืช ื”ืจื’ื™ืœื” ืฉืœ ืกืคืจื™ื•ืช C++ WebRTC ืžืงื•ืจื™ื•ืช, Pion ื”ื™ื ื™ื™ืฉื•ื ืžืงื•ืจื™ ืฉืœ Golang ืฉืœ WebRTC ืขื ื‘ื™ืฆื•ืขื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ, ืฉื™ืœื•ื‘ Go ื•ื‘ืงืจืช ื’ืจืกืื•ืช ื‘ืคืจื•ื˜ื•ืงื•ืœื™ WebRTC.

    ื”ืกืคืจื™ื™ื” ื’ื ืžืืคืฉืจืช ืกื˜ืจื™ืžื™ื ื’ ืขื ื”ืจื‘ื” ืžื•ื‘ื ื™ื ืžื•ื‘ื ื™ื ืขื ื—ื‘ื™ื•ืŸ ืฉืœ ืชืช-ืฉื ื™ื™ื”. ื™ืฉ ืœื• ื™ื™ืฉื•ื ืžืฉืœื• ืฉืœ STUN, DTLS, SCTP ื•ื›ื• '. ื•ื›ืžื” ื ื™ืกื•ื™ื™ื ืขื QUIC ื•-WebAssembly. ืกืคืจื™ื™ืช ื”ืงื•ื“ ื”ืคืชื•ื— ื”ื–ื• ืขืฆืžื” ื”ื™ื ืžืฉืื‘ ืœืžื™ื“ื” ืžืžืฉ ื˜ื•ื‘ ืขื ืชื™ืขื•ื“ ืžืขื•ืœื”, ื”ื˜ืžืขื•ืช ืฉืœ ืคืจื•ื˜ื•ืงื•ืœ ืจืฉืช ื•ื“ื•ื’ืžืื•ืช ืžื’ื ื™ื‘ื•ืช.

    ืงื”ื™ืœืช Pion, ื‘ืจืืฉื•ืช ื™ื•ืฆืจ ื ืœื”ื‘ ืžืื•ื“, ืชื•ืกืกืช ืœืžื“ื™, ืขื ื”ืจื‘ื” ื“ื™ื•ื ื™ื ืื™ื›ื•ืชื™ื™ื ืฉืžืชืงื™ื™ืžื™ื ืขืœ WebRTC. ืื ืืชื” ืžืขื•ื ื™ื™ืŸ ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื•, ื”ืฆื˜ืจืฃ http://pion.ly/slack - ืชืœืžื“ื• ื”ืจื‘ื” ื“ื‘ืจื™ื ื—ื“ืฉื™ื.

    ื›ืชื™ื‘ืช CloudRetro ื‘ื’ื•ืœื ื’

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ื”ื˜ืžืขืช ืขื•ื‘ื“ ื‘ื’ื•

    ืขื‘ื•ืจ ืœืขืจื•ืฆื™ื ื‘ืคืขื•ืœื”

    ื”ื•ื“ื•ืช ืœืขื™ืฆื•ื‘ ื”ืขืจื•ืฅ ื”ื™ืคื” ืฉืœ Go, ื”ื‘ืขื™ื•ืช ืฉืœ ื”ื–ืจืžืช ืื™ืจื•ืขื™ื ื•ืžืงื™ืคื•ืช ืžืคื•ืฉื˜ื•ืช ืžืื•ื“. ื›ืžื• ื‘ืชืจืฉื™ื, ืœ-GoRoutines ืฉื•ื ื™ื ื™ืฉ ืžืกืคืจ ืจื›ื™ื‘ื™ื ื”ืคื•ืขืœื™ื ื‘ืžืงื‘ื™ืœ. ื›ืœ ืจื›ื™ื‘ ืžื ื”ืœ ืืช ืžืฆื‘ื• ื•ืžืชืงืฉืจ ื‘ืขืจื•ืฆื™ื. ื”ืงื‘ื™ืขื” ื”ืกืœืงื˜ื™ื‘ื™ืช ืฉืœ ื’ื•ืœื ื’ ืžืืœืฆืช ืขื™ื‘ื•ื“ ืื™ืจื•ืข ืื˜ื•ืžื™ ืื—ื“ ื‘ื›ืœ ืคืขื ื‘ืžืฉื—ืง (ื˜ื™ืงืช ืžืฉื—ืง). ื”ืžืฉืžืขื•ืช ื”ื™ื ืฉืื™ืŸ ืฆื•ืจืš ื‘ื ืขื™ืœื” ืขื‘ื•ืจ ืขื™ืฆื•ื‘ ื–ื”. ืœื“ื•ื’ืžื”, ื›ืืฉืจ ืžืฉืชืžืฉ ืฉื•ืžืจ, ื ื“ืจืฉืช ืชืžื•ื ืช ืžืฆื‘ ืžืœืื” ืฉืœ ืžืฆื‘ ื”ืžืฉื—ืง. ืžืฆื‘ ื–ื” ืฆืจื™ืš ืœื”ื™ืฉืืจ ืžืชืžืฉืš, ืชื•ืš ื›ื ื™ืกื” ืขื“ ืœื”ืฉืœืžืช ื”ืฉืžื™ืจื”. ื‘ืžื”ืœืš ื›ืœ ืกื™ืžื•ืŸ ืžืฉื—ืง, ื”ืงืฆื” ื”ืื—ื•ืจื™ ื™ื›ื•ืœ ืœื”ืชืžื•ื“ื“ ืจืง ืขื ืคืขื•ืœืช ืฉืžื™ืจื” ืื• ืงืœื˜, ืžื” ืฉื”ื•ืคืš ืืช ืฉืจืฉื•ืจ ื”ืชื”ืœื™ืš ืœื‘ื˜ื•ื—.

    func (e *gameEmulator) gameUpdate() {
    for {
    	select {
    		case <-e.saveOperation:
    			e.saveGameState()
    		case key := <-e.input:
    			e.updateGameState(key)
    		case <-e.done:
    			e.close()
    			return
    	}
        }
    }

    ืžืื•ื•ืจืจ ืคื ื™ืžื” / ืžื ื™ืคื” ื”ื—ื•ืฆื”

    ืชื‘ื ื™ืช Golang ื–ื• ืžืชืื™ืžื” ื‘ืื•ืคืŸ ืžื•ืฉืœื ืœืžืงืจื” ื”ืฉื™ืžื•ืฉ ืฉืœื™ ื‘-CrowdPlay ื•-Multiple Player. ืœืคื™ ื“ืคื•ืก ื–ื”, ื›ืœ ื›ื ื™ืกื•ืช ื”ืžืฉืชืžืฉ ื‘ื—ื“ืจ ืื—ื“ ืžื•ื‘ื ื•ืช ื‘ืขืจื•ืฅ ื”ื›ื ื™ืกื” ื”ืžืจื›ื–ื™. ืžื“ื™ื™ืช ื”ืžืฉื—ืง ื ืคืจืกืช ืœืื—ืจ ืžื›ืŸ ืœื›ืœ ื”ืžืฉืชืžืฉื™ื ื‘ืื•ืชื• ื—ื“ืจ. ื‘ื“ืจืš ื–ื•, ืื ื• ืžืฉื™ื’ื™ื ืืช ื—ืœื•ืงืช ืžืฆื‘ ื”ืžืฉื—ืง ื‘ื™ืŸ ืžืกืคืจ ื”ืคืขืœื•ืช ืžืฉื—ืง ืฉืœ ืžืฉืชืžืฉื™ื ืฉื•ื ื™ื.

    ืžืฉื—ืงื™ ืขื ืŸ ื‘ืงื•ื“ ืคืชื•ื— ื‘-WebRTC: p2p, ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื, ืืคืก ื”ืฉื”ื™ื™ื”
    ืกื ื›ืจื•ืŸ ื‘ื™ืŸ ื”ืคืขืœื•ืช ืฉื•ื ื•ืช

    ื—ืกืจื•ื ื•ืช ืฉืœ ื’ื•ืœื ื’

    ื’ื•ืœื ื’ ืœื ืžื•ืฉืœื. ื”ืขืจื•ืฅ ืื™ื˜ื™. ื‘ื”ืฉื•ื•ืื” ืœื—ืกื™ืžื”, ืขืจื•ืฅ Go ื”ื•ื ืคืฉื•ื˜ ื“ืจืš ืงืœื” ื™ื•ืชืจ ืœื˜ืคืœ ื‘ืื™ืจื•ืขื™ื ื‘ืžืงื‘ื™ืœ ื•ื‘ืฉืจืฉื•ืจื™ื, ืืš ื”ืขืจื•ืฅ ืื™ื ื• ืžืกืคืง ืืช ื”ื‘ื™ืฆื•ืขื™ื ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ. ื™ืฉ ื”ื™ื’ื™ื•ืŸ ื—ืกื™ืžื” ืžื•ืจื›ื‘ ืžืชื—ืช ืœืขืจื•ืฅ. ืื– ืขืฉื™ืชื™ ื›ืžื” ื”ืชืืžื•ืช ื‘ื™ื™ืฉื•ื, ื”ื—ืœืชื™ ืžื—ื“ืฉ ืžื ืขื•ืœื™ื ื•ืขืจื›ื™ื ืื˜ื•ืžื™ื™ื ื‘ืขืช ื”ื—ืœืคืช ืขืจื•ืฆื™ื ื›ื“ื™ ืœื™ื™ืขืœ ืืช ื”ื‘ื™ืฆื•ืขื™ื.

    ื‘ื ื•ืกืฃ, ืื•ืกืฃ ื”ืืฉืคื” ื‘ื’ื•ืœื ื’ ืื™ื ื• ืžื ื•ื”ืœ, ืžื” ืฉื’ื•ืจื ืœืขื™ืชื™ื ืœื”ืคืกืงื•ืช ืืจื•ื›ื•ืช ื‘ืื•ืคืŸ ืžื—ืฉื™ื“. ื–ื” ืžืื•ื“ ืžืคืจื™ืข ืœืืคืœื™ืงืฆื™ื™ืช ื”ืกื˜ืจื™ืžื™ื ื’ ื‘ื–ืžืŸ ืืžืช.

    ืฉืึตืŸ

    ื”ืคืจื•ื™ืงื˜ ืžืฉืชืžืฉ ื‘ืกืคืจื™ื™ืช ื”ืงื•ื“ ื”ืคืชื•ื— ื”ืงื™ื™ืžืช Golang VP8/H264 ืขื‘ื•ืจ ื“ื—ื™ืกืช ืžื“ื™ื” ื•-Libretro ืขื‘ื•ืจ ืืžื•ืœื˜ื•ืจื™ื ืฉืœ ืžืฉื—ืงื™ื. ื›ืœ ื”ืกืคืจื™ื•ืช ื”ืœืœื• ื”ืŸ ืคืฉื•ื˜ ืขื˜ื™ืคื•ืช ืฉืœ ืกืคืจื™ื™ืช C ื‘ืฉื™ืžื•ืฉ ื‘-Go ืฉืึตืŸ. ื—ืœืง ืžื”ื—ืกืจื•ื ื•ืช ืžืคื•ืจื˜ื™ื ื‘ ืคื•ืกื˜ ื–ื” ืฉืœ ื“ื™ื™ื‘ ืฆ'ื™ื™ื ื™. ื‘ืขื™ื•ืช ืฉื ืชืงืœืชื™ ื‘ื”ืŸ:

    • ื—ื•ืกืจ ื™ื›ื•ืœืช ืœืชืคื•ืก ื”ืชืจืกืงื•ืช ื‘-CGO, ืืคื™ืœื• ืขื Golang RecoveryCrash;
    • ื›ื™ืฉืœื•ืŸ ื‘ื–ื™ื”ื•ื™ ืฆื•ื•ืืจื™ ื‘ืงื‘ื•ืง ื‘ื‘ื™ืฆื•ืขื™ื ื›ืืฉืจ ืื™ื ื ื• ืžืกื•ื’ืœื™ื ืœื–ื”ื•ืช ื‘ืขื™ื•ืช ืžืคื•ืจื˜ื•ืช ื‘-CGO.

    ืžืกืงื ื”

    ื”ืฉื’ืชื™ ืืช ื”ืžื˜ืจื” ืฉืœื™ ืœื”ื‘ื™ืŸ ืฉื™ืจื•ืชื™ ืžืฉื—ืง ื‘ืขื ืŸ ื•ืœื™ืฆื•ืจ ืคืœื˜ืคื•ืจืžื” ืฉืขื•ื–ืจืช ืœื™ ืœืฉื—ืง ืžืฉื—ืงื™ ืจื˜ืจื• ื ื•ืกื˜ืœื’ื™ื™ื ืขื ื”ื—ื‘ืจื™ื ืฉืœื™ ื‘ืื™ื ื˜ืจื ื˜. ืคืจื•ื™ืงื˜ ื–ื” ืœื ื”ื™ื” ืžืชืืคืฉืจ ืœืœื ืกืคืจื™ื™ืช ืคื™ื•ืŸ ื•ืชืžื™ื›ืช ืงื”ื™ืœืช ืคื™ื•ืŸ. ืื ื™ ืืกื™ืจ ืชื•ื“ื” ืขืœ ื”ื”ืชืคืชื—ื•ืช ื”ืื™ื ื˜ื ืกื™ื‘ื™ืช ืฉืœื•. ืžืžืฉืงื™ ื”-API ื”ืคืฉื•ื˜ื™ื ืฉืกื•ืคืงื• ืขืœ ื™ื“ื™ WebRTC ื•-Pion ื”ื‘ื˜ื™ื—ื• ืื™ื ื˜ื’ืจืฆื™ื” ื—ืœืงื”. ื”ื”ื•ื›ื—ื” ื”ืจืืฉื•ื ื” ืฉืœื™ ืœืงื•ื ืกืคื˜ ืฉื•ื—ืจืจื” ื‘ืื•ืชื• ืฉื‘ื•ืข, ืœืžืจื•ืช ืฉืœื ื”ื™ื” ืœื™ ื™ื“ืข ืžื•ืงื“ื ื‘ืชืงืฉื•ืจืช ืขืžื™ืช ืœืขืžื™ืช (P2P).

    ืœืžืจื•ืช ืงืœื•ืช ื”ืื™ื ื˜ื’ืจืฆื™ื”, ื”ื–ืจืžืช P2P ื”ื™ื ืื›ืŸ ืชื—ื•ื ืžื•ืจื›ื‘ ืžืื•ื“ ื‘ืžื“ืขื™ ื”ืžื—ืฉื‘. ื”ื™ื ืฆืจื™ื›ื” ืœื”ืชืžื•ื“ื“ ืขื ื”ืžื•ืจื›ื‘ื•ืช ืฉืœ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืจืฉืช ื•ืชื™ืงื•ืช ื›ืžื• IP ื•-NAT ื›ื“ื™ ืœื™ืฆื•ืจ ืกืฉืŸ ืขืžื™ืช ืœืขืžื™ืช. ื‘ืžื”ืœืš ื”ืขื‘ื•ื“ื” ืขืœ ื”ืคืจื•ื™ืงื˜ ื”ื–ื”, ืฆื‘ืจืชื™ ื™ื“ืข ืจื‘ ืขืœ ืจืฉืชื•ืช ื•ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืฉืœ ื‘ื™ืฆื•ืขื™ื, ืื– ืื ื™ ืžืžืœื™ืฅ ืœื›ื•ืœื ืœื ืกื•ืช ืœื‘ื ื•ืช ืžื•ืฆืจื™ P2P ื‘ืืžืฆืขื•ืช WebRTC.

    CloudRetro ืขื•ื ื” ืขืœ ื›ืœ ืžืงืจื™ ื”ืฉื™ืžื•ืฉ ืฉืฆื™ืคื™ืชื™ ืœื”ื ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœื™ ื‘ืชื•ืจ ื’ื™ื™ืžืจ ืจื˜ืจื•. ืขื ื–ืืช, ืื ื™ ื—ื•ืฉื‘ ืฉื™ืฉ ื”ืจื‘ื” ืชื—ื•ืžื™ื ื‘ืคืจื•ื™ืงื˜ ืฉืื ื™ ื™ื›ื•ืœ ืœืฉืคืจ, ื›ืžื• ื”ืคื™ื›ืช ื”ืจืฉืช ืœื™ื•ืชืจ ืืžื™ื ื” ื•ื‘ื™ืฆื•ืขื™ืช, ืžืชืŸ ื’ืจืคื™ืงืช ืžืฉื—ืง ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื” ื™ื•ืชืจ, ืื• ื”ื™ื›ื•ืœืช ืœืฉืชืฃ ืžืฉื—ืงื™ื ื‘ื™ืŸ ืžืฉืชืžืฉื™ื. ืื ื™ ืขื•ื‘ื“ ืงืฉื” ืขืœ ื–ื”. ืขืงื•ื‘ ื‘ื‘ืงืฉื” ืคึผืจื•ึนื™ึถืงื˜ ื•ืชืชืžื•ืš ื‘ื• ืื ืืชื” ืื•ื”ื‘ ืืช ื–ื”.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”