Share
Embed
リアルタイムゲームサーバー開発技術スタックまとめ
pobo380
January 28, 2020
Transcript
48 slides
-
͡Ίʹ ఆٛ ▸ ϦΞϧλΠϜήʔϜαʔόʔͱ ▸ ⭕ Latency͕ϓϨΠϠʔମݧʹେ͖ؔ͘ΘΔήʔϜ ▸ FPS, TPS
(Call of Duty, Fortnite) ▸ MOBA (League of Legends, Ԧऀӫ༾) ▸ ❌ Hearthstone, Shadowverse ͷΑ͏ͳίϚϯυܕͷήʔϜ -
͡Ίʹ എܠ ▸ ϦΞϧλΠϜήʔϜαʔόʔ։ൃͷͨΊͷαʔϏεɺOSSɺϥ ΠηϯειϑτΣΞ͕ॆ࣮͖ͯͨ͠ ▸ Photon Engine, Monobit Engine
(MRS, MUN) ▸ AWS GameLift ▸ Agones, Open Match ▸ Etc -
Dedicated Game Server (DGS) Matchmaking DGS Management GAME LOGIC NETWORKING
MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT MATCHMAKING DEDICATED GAME SERVER (DGS) DGS MANAGEMENT TECHNOLOGY STACKS -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND Dedicated
Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS NETWORKING SCHEDULER SERIALIZATION MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
DEDICATED GAME SERVER DEDICATED GAME SERVER ▸ ήʔϜλΠτϧ͝ͱʹݻ༗ͷϩδοΫΛ࣋ͭαʔόʔΞϓϦέʔ γϣϯ ▸
ήʔϜΫϥΠΞϯτͱωοτϫʔΫܦ༝Ͱ௨৴ ▸ 4ͭͷίϯϙʔωϯτ GAME LOGIC NETWORKING SCHEDULER SERIALIZATION -
DEDICATED GAME SERVER NETWORKING ▸ ήʔϜΫϥΠΞϯτͱ௨৴͢ΔͨΊͷϓϩτίϧͱͦͷ࣮ ▸ ࠶ૹ੍ޚɺϑϩʔ੍ޚɺίωΫγϣϯཧ ▸ ύέοτͷׂɺ݁߹
▸ ҉߸Խɺॺ໊ GAME LOGIC NETWORKING SCHEDULER SERIALIZATION -
DEDICATED GAME SERVER SERIALIZATION / DESERIALIZATION ▸ ΦϒδΣΫτ ⁶ όΠτྻͷ૬ޓมΛߦ͏
▸ ωοτϫʔΫܦ༝Ͱૹ৴Մೳʹ͢Δ GAME LOGIC NETWORKING SCHEDULER SERIALIZATION -
DEDICATED GAME SERVER SCHEDULER ▸ ఆظతʹήʔϜϩδοΫΛݺͼग़͢ॲཧ ▸ ήʔϜΫϥΠΞϯτͰ͍͏ʮήʔϜϧʔϓʯ ▸ 1ϓϩηεͰෳͷήʔϜΛϗετ͢Δ߹ʹಛʹॏཁ
GAME LOGIC NETWORKING SCHEDULER SERIALIZATION -
DEDICATED GAME SERVER GAME LOGIC ▸ λΠτϧݻ༗ͷήʔϜγϛϡϨʔγϣϯ ▸ ཧɺAIɺNavMeshɺͳͲΛؚΉ ▸
ωοτϫʔΫܦ༝ͰήʔϜΫϥΠΞϯτͱঢ়ଶͷಉظΛߦ͏ GAME LOGIC NETWORKING SCHEDULER SERIALIZATION -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND Dedicated
Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS NETWORKING SCHEDULER SERIALIZATION MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
MATCHMAKING MATCHMAKING ▸ ϧʔϧʹج͍ͮͯϓϨΠϠʔΛूΊɺϚονΛ࡞͢Δ ▸ ϓϨΠϠʔͷ͞·͟·ͳଐੑΛར༻͢Δ ▸ ϨʔςΟϯά ▸ ϩʔϧ
▸ ࡞ͨ͠ϚονΛ DGS ʹׂΓͯΔ ▸ 4ͭͷίϯϙʔωϯτ MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
MATCHMAKING MATCHMAKING CORE ▸ ϚονϝΠΩϯάͷϦΫΤετΛϓʔϦϯά ▸ ఆظతʹϚονϝΠΩϯάϩδοΫΛݺͼग़͢ MATCHMAKING LOGIC SERVICE
FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
MATCHMAKING MATCHMAKING LOGIC ▸ ϓʔϧ͞ΕͨϚονϝΠΩϯάͷϦΫΤετΛධՁ ▸ ෳͷϓϨΠϠʔΛҰͭʹ·ͱΊͯϚονΛ࡞͢Δ ▸ ྫ) Ϩʔτ͕͍ۙϓϨΠϠʔΛϚονͤ͞Δ
MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
MATCHMAKING DGS ASSIGNMENT ▸ ࡞͞ΕͨϚονʹରͯ͠ DGS ΛΞαΠϯ͢Δ ▸ ϓϨΠϠʔͷϨΠςϯγʔͷ࠷దԽ MATCHMAKING
LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
MATCHMAKING SERVICE FRONTEND ▸ MatchmakingΛAPIͱͯ͠ఏڙ͢Δ ▸ APIྫ ▸ ϚονϝΠΩϯάͷϦΫΤετ ▸
Ϛον࡞ΛήʔϜΫϥΠΞϯτʹ௨ MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND Dedicated
Game Server (DGS) Matchmaking DGS Management MONITORING TECHNOLOGY STACKS NETWORKING SCHEDULER SERIALIZATION MATCHMAKING LOGIC SERVICE FRONTEND MATCHMAKING CORE DGS ASSIGNMENT -
DGS MANAGEMENT DGS MANAGEMENT ▸ DGSͷαʔόʔ܈Λཧ͢Δׂ ▸ 6ͭͷίϯϙʔωϯτ PROVISIONING DEPLOYMENT
AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT PROVISIONING ▸ ϚγϯϦιʔεΛௐୡ͢Δ ▸ VM ▸ Container ▸
Bare-metal PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT DEPLOYMENT ▸ ϚγϯϦιʔεʹରͯ͠DGS ͷ࣮ߦϑΝΠϧ܈Λஔ͢Δ ▸ όʔδϣϯΞοϓ ▸ ෳόʔδϣϯͷಉ࣌Քಇͷαϙʔτ
PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT MONITORING ▸ DGSͷεςʔτΛࢹ͢Δ ▸ ϔϧενΣοΫ ▸ ϥΠϑαΠΫϧཧ ▸
Auto ScalingɺLoad BalancingͷͨΊʹඞཁ PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT ALLOCATION ▸ ෳͷ DGS ͔ΒϚονΛ࣮ߦ͢Δ DGS Λܾఆ͢Δ ▸
ཁۭ͍ͯΔ DGS Λ୳ͯ͘͠Δͭ PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT AUTO SCALING ▸ ଓෛՙঢ়گͳͲʹԠͯ͡ϚγϯϦιʔεΛ૿ݮ͢Δ PROVISIONING DEPLOYMENT AUTO SCALING
ALLOCATION SERVICE FRONTEND MONITORING -
DGS MANAGEMENT SERVICE FRONTEND ▸ DGS Ϋϥελͷૢ࡞ΛAPIͱͯ͠ఏڙ͢Δ ▸ APIྫ ▸
৽͍͠ϚονͷΞϩέʔγϣϯ ▸ ৽͍͠όʔδϣϯͷσϓϩΠ PROVISIONING DEPLOYMENT AUTO SCALING ALLOCATION SERVICE FRONTEND MONITORING -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING PHOTON ENGINE SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING MONOBIT ENGINE SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING AWS GAMELIFT SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING AGONES SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING OPENMATCH SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING UNITY SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
GAME LOGIC NETWORKING MATCHMAKING LOGIC SERVICE FRONTEND PROVISIONING DEPLOYMENT AUTO
SCALING ALLOCATION SERVICE FRONTEND Dedicated Game Server (DGS) Matchmaking DGS Management MONITORING UNITY-DOTS SCHEDULER SERIALIZATION MATCHMAKING CORE DGS ASSIGNMENT -
ORIGINAL (GAME LOGIC) PHOTON (NETWORKING) OPENMATCH Dedicated Game Server (DGS)
Matchmaking DGS Management PHOTON + OPENMATCH PHOTON (SCHEDULER) PHOTON (SERIALIZATION) PROVISIONING PHOTON (DEPLOYMENT) AUTO SCALING PHOTON (ALLOCATION) PHOTON (SERVICE FRONTEND) PHOTON (MONITORING) -
ORIGINAL (GAME LOGIC) MUN (NETWORKING) OPENMATCH Dedicated Game Server (DGS)
Matchmaking DGS Management MONOBIT + OPENMATCH MUN (SCHEDULER) MUN (SERIALIZATION) PROVISIONING MUN (DEPLOYMENT) AUTO SCALING MUN (ALLOCATION) MUN (SERVICE FRONTEND) MUN (MONITORING) -
UNITY (GAME LOGIC) LITENETLIB (NETWORKING) OPENMATCH Dedicated Game Server (DGS)
Matchmaking DGS Management UNITY + LITENETLIB + MESSAGEPACK + OPENMATCH + AGONES UNITY (SCHEDULER) AGONES MESSAGEPACK (SERIALIZATION) -
ORIGINAL (GAME LOGIC) LITENETLIB (NETWORKING) GAMELIFT Dedicated Game Server (DGS)
Matchmaking DGS Management LITENETLIB + MESSAGEPACK + GAMELIFT ORIGINAL (SCHEDULER) MESSAGEPACK (SERIALIZATION) -
APPENDIX ࢀߟࢿྉ ▸ Proposal: RefCount allocation to host many room
in same pod ▸ https://github.com/googleforgames/agones/issues/1197 ▸ Amazon GameLift Developer Guide ▸ https://docs.aws.amazon.com/ja_jp/gamelift/latest/developerguide/gamelift- intro.html ▸ Photon : LoadBalancing Application ▸ https://doc.photonengine.com/ja-jp/server/current/applications/loadbalancing/ application ▸ Monobit Engine : MUN 2.0 ͷγεςϜߏʹ͍ͭͯ ▸ http://www.monobitengine.com/doc/mun/contents/Server/Construction.htm -
APPENDIX ࢀߟࢿྉ ▸ Open Match ೖ ▸ https://medium.com/google-cloud-jp/open-match-super101-aaf3e54bd4e7 ▸ Open
Match Deep Dive ▸ https://www.slideshare.net/HammoudiSamir/open-match-deep-dive ▸ Photon Server Deep Dive ▸ https://www.slideshare.net/neuecc/photon-server-deep-dive- photonwirephotonserver ▸ Unity Real-Time Multiplayer repository ▸ https://github.com/Unity-Technologies/multiplayer