$30 off During Our Annual Pro Sale. View Details »

ゲームのサーバサイドエンジニアをやっていく技術 / The technology of game server side engineer

mackee
July 06, 2019

ゲームのサーバサイドエンジニアをやっていく技術 / The technology of game server side engineer

沖縄学生×企業エンジニア 7月大LT大会!!!
https://connpass.com/event/132178/

mackee

July 06, 2019
Tweet

More Decks by mackee

Other Decks in Programming

Transcript

  1. ήʔϜͷαʔόαΠυ
    ΤϯδχΞΛ
    ΍͍ٕͬͯ͘ज़
    @mackee_w a.k.a macopy
    ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!

    View Slide

  2. ࢲͰ͢
    w ໘ന๏ਓΧϠοΫ!ח૔
    w ιʔγϟϧήʔϜࣄۀ෦
    w ήʔϜٕݚ
    w αʔόαΠυΤϯδχΞ
    w 1FSM (P +BWB4DSJQU
    w ઐ໳
    w Ϛελσʔλ
    w 8FC4PDLFU
    w ϚΠϒʔϜ͸ΩʔϘʔυ࡞Γ

    View Slide

  3. View Slide

  4. ిࢠج൘Λշదʹ࡞Δ
    ͨΊͷΩʔϘʔυͷి
    ࢠج൘Λ࡞Δٕज़
    @mackee_w a.k.a macopy
    ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!

    View Slide

  5. ͜ͷ࿩Λ΍Δ
    Ϟνϕʔγϣϯ
    ήʔϜͷαʔόαΠυ
    ΤϯδχΞΛ
    ΍͍ٕͬͯ͘ज़

    View Slide

  6. ήʔϜ࡞Γͱݴ͑͹…
    • ίϯγϡʔϚػ΍PC, εϚϗͰಈ͘ϓϩάϥϜ
    Λॻ͘
    • ֆΛඳ͘෦෼(3D, 2D…)
    • UI
    • ϢʔβΠϯλϥΫγϣϯ

    View Slide

  7. ݱ୅ͷ(ൺֱతେن໛ͳ)
    εϚϗήʔϜͷߏ੒

    View Slide

  8. ݱ୅ͷ(ൺֱతେن໛ͳ)
    εϚϗήʔϜͷߏ੒
    ͜͜ͷϓϩάϥϜΛ
    ॻ͘ਓ΋͍Ε͹

    View Slide

  9. ݱ୅ͷ(ൺֱతେن໛ͳ)
    εϚϗήʔϜͷߏ੒
    ͜͜ͷϓϩάϥϜΛ
    ॻ͘ਓ΋ඞཁ

    View Slide

  10. ͳͷ͕ͩ
    ήʔϜΛ࡞Γ͍ͨਓ͸
    αʔόαΠυΛ
    ͋·Γ΍Βͳ͍

    View Slide

  11. αʔόαΠυΛ΍Γ͍ͨਓ͸
    ήʔϜʹ
    αʔόαΠυ͕
    ඞཁͳ͜ͱΛ
    ஌Βͳ͍

    View Slide

  12. ࠓ΍͍ͬͯΔ࢓ࣄ΍
    ࢖͍ͬͯΔٕज़Λ఻͑ͯ
    ήʔϜͷαʔόαΠυΛ΍ΔਓΛ
    ૿΍͍ͨ͠ʂʂʂ

    View Slide

  13. ࢓ࣄ಺༰ΛҰݴͰઆ໌͢Δͱ
    ήʔϜͷ
    ηʔϒσʔλΛ
    ͏·͘
    อଘͨ͠Γ
    औΓग़ͨ͠Γ͢Δ
    ࢓ࣄ

    View Slide

  14. αʔόʹηʔϒσʔλ͕ͨ͘͞Μ

    View Slide

  15. ద੾ʹηʔϒσʔλΛબΜͰ
    ͢͹΍͘ฦ͢

    View Slide

  16. Ұൠతͳηʔϒσʔλͱҧ͏఺
    • ηʔϒσʔλ͸ଞਓ΋ݟΕΔ৔߹͕͋Δ
    • ϥϯΩϯά, σοΩߏ੒ etc…
    • ݟͤͯ͸͍͚ͳ͍΋ͷ΋΋ͪΖΜ͋Δ
    • อଘ࣌ʹখ೉͍͠ܭࢉΛ͢Δ͜ͱ͕͋Δ
    • AIతͳͳʹ͔, ԿΒ͔ͷγϛϡϨʔγϣϯͳͲ…

    View Slide

  17. ηʔϒσʔλͷϝλϑΝʔʹ
    ౰ͯ͸·Βͳ͍࿩
    • ରઓ(PvP, GvGͳͲ)
    • ϦΞϧλΠϜ(WebSocketͱ͔RUDPͱ͔)
    • Ξηοτ഑৴(ը૾ͱ͔Ի੠ͱ͔ಈըͱ͔3D
    σʔλͱ͔)
    • ”ߋ৽”΋͔ͳΓ໽հʂʂ(ͦͯ͠໘ന͍

    View Slide

  18. αʔό͕ͳ͍ήʔϜͱ͸ͳʹ͔
    • Ұਓ༻ήʔϜͷେ൒
    • είΞΛڝ͏ͳΒϥϯΩϯάूܭαʔό͕
    Ͳ͔͜ʹ͋Δ
    • ϚϧνͰ΋P2PͳΒαʔό͸͍ͳ͍͜ͱ΋
    • গਓ਺Ͱ΍ΔFPS͸P2PͰߦΘΕ͍ͯΔ܏޲

    View Slide

  19. ͜Ε͸ੲ࿩Ͱ͕͢
    • CGIήʔϜʙΨϥέʔͷιγϟήʔ࣌୅͸WebαʔϏεͱ࡞
    Γ͸΄ͱΜͲҰॹͩͬͨ
    • ΍ͨΒσʔλͷॻ͖ࠐΈ/มߋ͕ଟ͍WebαʔϏε
    • GET/POSTΛड͚ͯHTMLΛు͘
    • εϚϗήʔʹͳͬͯAPIΛఏڙ͢Δଘࡏʹͳͬͨ
    • SPA࣌୅ʹͳͬͯϞμϯͳWebαʔϏε΋ͦ͏ͳ͍ͬͯΔ

    View Slide

  20. WebαʔϏεͱήʔϜͷҧ͍
    • ΍ͨΒσʔλॻ͖ࠐΈ/มߋ͕ଟ͍
    • ηʔϒσʔλͷมߋ͕ৗʹى͍ͬͯ͜Δ
    • ଺ࡏ͕࣌ؒ௕͍
    • Ӭଓ઀ଓ, ཪͰճΔόονͷଟ͞
    • Ϛελσʔλͷଘࡏ
    • 1req͋ͨΓʹՔ͙͓͕ۚଟ͍
    • ࣮૷มߋͰڍಈ͕ίϩίϩมΘΔ

    View Slide

  21. σϓϩΠ΢Οϯυ΢
    • 1೔4ճৗʹશϢʔβࢀՃͷΠϕϯτతͳ΋ͷ͕
    ճΔήʔϜ
    • σϓϩΠ(࣮૷ͷຊ൪؀ڥ΁ͷ൓ө)͕ߦ͑Δ࣌
    ͕ؒͦͷ伱͔ؒ͠ແ͍ -> σϓϩΠ΢Οϯυ΢
    • ʮσϓϩΠ΢Οϯυ΢ͳΜͯ΋ͷ͸ଞͷWeb
    αʔϏεʹ͸ͳ͍ʯ

    View Slide

  22. ήʔϜͷαʔόαΠυ͸
    ͋ΒΏΔܭࢉػՊֶͷ஌ࣝΛཁٻ͢Δ
    • ηʔϒσʔλ
    • σʔλߏ଄, ݕࡧ, ΞϧΰϦζϜ
    • γϛϡϨʔγϣϯ
    • εςʔτϚγϯ, ήʔϜAI, VM
    • Πϯϑϥ
    • ෼ࢄγεςϜ, ฒߦॲཧ

    View Slide

  23. ΋ͪΖΜαʔόͰ΋
    ήʔϜతͳίʔυ΋ॻ͖·͢
    • ͍͍ײ͡ͷରઓϚονϯάͱ͔
    • ήʔϜAI(CPU)ॻ͘ͱ͔
    • ໺ٿ൫γϛϡϨʔγϣϯΈ͍ͨͳͷॻ͘ͱ͔
    • ݕࢉͷͨΊΫϥΠΞϯτͱαʔόͰಉ͡ϩδοΫ
    Λ࣮૷͢Δ͜ͱ΋
    • νʔτݕ஌ͱ͔΋͠·͢

    View Slide

  24. Θ͔Γ·͔ͨ͠ʁʁʁʁ

    View Slide

  25. ͡Ό͓͋લ͸࠷ۙԿ΍ͬͯΔΜͩ
    • ڊେεϓϨουγʔτΛߦ͝ͱʹόʔδϣϯ
    ؅ཧͯ͠ɺ͍͍ײ͡ʹߦΛൈ͖ग़ͯ͠CSV΍
    JSONʹ͢Δ܅Λ࡞ͬͯ·ͨ͠
    •Ϛελσʔλ

    View Slide

  26. Ϛελσʔλͱ͸
    • ήʔϜͷύϥϝʔλ΍ઃఆ, εςʔδ಺ͷ഑ஔͱ͔ͦ
    ͏͍͏ͷΛॾʑؚΊͨ෺Λࢦ͢
    • ϓϩάϥϜ಺ʹॻ͍ͯΔͱɺϓϩάϥϚҎ֎͕มߋ
    Ͱ͖ͳ͍ͷͰ֎ʹग़͓ͯ͘͠
    • ΧϠοΫͰ͸GoogleεϓϨουγʔτΛ࢖༻ͯ͠ه
    ड़͠ɺDBʹೖΕͨΓJSONʹͯ͠ຊ൪Ͱར༻͍ͯ͠
    Δ 200γʔτҎ্͋ΔϓϩδΣΫτ΋

    View Slide

  27. View Slide

  28. ͦΕαʔόͷ࢓ࣄͳͷʁ

    View Slide

  29. Ϛελσʔλͷ൓ө
    • ि1ͰΠϕϯτͱ͔Ψνϟ΍ͬͯΔͱͦͷස౓
    Ͱຊ൪൓ө͕ඞཁ
    • ͦͷຊ൪൓өͱ͸Ϛελσʔλͷ൓өΛࢦ͠
    ·͢
    • Ϛελσʔλ͸αʔόαΠυΤϯδχΞ͕
    ΍ͬͯ·͢

    View Slide

  30. ͱ͍͏Θ͚Ͱ
    Ϛελσʔλͷੈքฏ࿨΋
    αʔόαΠυΤϯδχΞͷ
    ࢓ࣄͱ͍͏͜ͱʹͳ͍ͬͯΔ

    View Slide

  31. σϓϩΠʹࢸΔ·Ͱͷ
    ϫʔΫϑϩʔ
    • σϓϩΠ(ຊ൪൓ө)ʹ͸Ϛελσʔλͷଞʹɺιʔ
    είʔυ΍ΫϥΠΞϯτ͕ಡΉΞηοτ͕ཁΔ
    • Ϛελσʔλ͸ϨϕϧσβΠφʔ͕࡞Δ͠Ξηο
    τ͸σβΠφʔ&ΫϥΠΞϯτͷਓ͕࡞Δ͠…
    • ෼ۀ͍ͯ͠Δ͔Β͍͍ײ͡ʹϫʔΫϑϩʔ࡞Βͳ
    ͍ͱճΒͳ͍YOʂ

    View Slide

  32. ճΒͳ͍݁Ռ
    σϓϩΠ͢ΔαʔόαΠυͷ
    ट͕క·ΔͷͰ
    ࠷ۙ͸ϫʔΫϑϩʔ੔උ΋΍ͬͯ
    ͍Δ

    View Slide

  33. ίʔυͷྗͰϫʔΫϑϩʔΛ
    εϜʔζʹ͢Δ
    • Ϛελσʔλͷੜ੒ΛBotʹ΍ΒͤΔ
    • αʔόΤϯδχΞͷखΛ࢖Θͣʹࣗݾ׬݁Խ
    • SlackͷBot͕࣍ʹ΍Δ΂͖͜ͱΛݴ͏
    • มߋ಺༰ʹԠͨ͡൓өखॱͷࣗಈੜ੒

    View Slide

  34. View Slide

  35. ΍͍ͬͯΔ͜ͱͨ͘͞Μ͋Δʂʂ
    Ͱ͖Δ͜ͱ΋ͨ͘͞Μ͋Δʂʂʂ
    • ௚ۙͷ࢓ࣄ͸Jenkins͔ΒCircleCIʹςετίʔυͷࣗಈ࣮
    ߦ؀ڥΛҠߦ͢Δ͜ͱͩͬͨΓ
    • ࠷ۙͷτϐοΫ͸ຊ൪؀ڥΛίϯςφʹ͢Δ͜ͱͩͬͨΓ
    • ϨΨγʔΛϞομϯʹ͢Δ࢓ࣄ͸ৗʹ΍͍ͬͯΔ
    • ISUCONతͳνϡʔχϯά΋࠷ۙͨ͠
    • ෼ࢄτϨʔγϯά(AWS X-Ray)Λ࢖ͬͯ໰୊ಛఆΛͨ͠

    View Slide

  36. ࠓΞπ͍ٕज़
    ෼ࢄτϨʔγϯά

    View Slide

  37. ݱ୅ͷΠϯϑϥߏ੒
    SFRʹؔΘΔ
    ίϯϙʔωϯτ͕ଟ͍ʂʂʂ

    View Slide

  38. ίϯϙʔωϯτ͕ଟ͍ͱ…ʁ
    • ໰୊͕ىͬͨ͜ͱ͖ͷͨΊʹ֤ʑͷίϯϙʔ
    ωϯτ͕ϩάΛు͍͍ͯΔ
    • ֤ʑࣗ༝ʹు͍͍ͯΔͷͰɺͲͷϩάు͍ͨ
    ͋ͱʹͲΕ͕ు͔Ε͔ͨ͜Μ͕Β͕Δ
    • ࣌ܥྻʹฒ΂ͯ΋ෳ਺୆͍Δ͠ωοτϫʔ
    Ϋ஗ԆͰॱ൪ೖΕସΘͬͨΓ…

    View Slide

  39. AWS X-RayΛ࢖ͬͯϧʔϓΫΤϦ
    Λݟ͚ͭΔ

    View Slide

  40. X-RayೖΕΔ
    ͖͔͚ͬʹͳͬͨࣄ݅

    View Slide

  41. ωοτϫʔΫαν͍ͬͯΔࣄ݅
    w 8FC4PDLFUͷ઀ଓΛઐ໳తʹ͞͹͘LVJQFSCFMU
    ͱ͍͏ϛυϧ΢ΣΞΛ࢖͏ΞϓϦ͕͋ͬͯ
    w ϦϦʔεલͷෛՙࢼݧͰɺ͋ΔҰఆͷෛՙΛ͔͚Δ
    ͱҰؾʹΞϓϦશମͷੑೳ͕ѱ͘ͳΔ
    w "QQ΍%#΍LVJQFSCFMUͷ$16͸٧·͍ͬͯΔ༷
    ࢠ͕ͳ͍ɻ͔͠΋Ұؾʹ٧·Δɻͳͥʁ

    View Slide

  42. ωοτϫʔΫαν͍ͬͯΔࣄ݅
    w ϩάಥͬࠐΈ·ͬͯ͘Ͳ͕͜ϘτϧωοΫ͔Λௐ΂
    Δ
    w ͢ΔͱɺLVJQFSCFMU΁ͷ"1*ΞΫηε͕ඵͱ͔
    ඵͱ͔ඵͱ͔͔͔͍ͬͯΔ৔߹͕͋ͬͯɺͦ͜
    Ͱ٧·͍ͬͯΔΑ͏ͩͬͨ
    w LVJQFSCFMU͸$16ͥΜͥΜ࢖ͬͯͳ͍ͷʹʜΤ
    ϥʔϩά΋ग़ͯͳ͍Α

    View Slide

  43. ωοτϫʔΫαν͍ͬͯΔࣄ݅
    w ໰୊͸ωοτϫʔΫͷύέοτͷεϧʔϓοτ͕Π
    ϯελϯεͷݶքΛ௒͍͑ͯͯɺωοτϫʔΫΠϯ
    λʔϑΣΠεͰυϩοϓ͢Δ͔Β্ͷ5$1ͷϨΠ
    ϠʔͰ࠶ૹ͕ىͬͯ͜஗Ԇͱ͍͏హ຤ͩͬͨ
    w ΠϯελϯεαΠζ͸$16΍ϝϞϦͰܾΊ͍ͯͨ
    ͚ΕͲɺωοτϫʔΫੑೳ΋େࣄʜ

    View Slide

  44. ࢖͏ଆड͚Δଆʹ͸༨༟͕͋Δ͕
    ౔؅͕ഁ྾͢Δྫ

    View Slide

  45. ͦΜͳΘ͚Ͱ
    ήʔϜͷαʔόαΠυ
    ໘നͦ͏ͱࢥͬͯ͘Ε·͔ͨ͠ʁ

    View Slide

  46. Ҏ্ʂ

    View Slide

  47. ૝ఆFAQ
    • ։ൃͱӡ༻ ӡ༻ͬͯͭ·Βͳ͘ͳ͍ʁ
    • νʔϜਓ਺ͲΕҐͳΜͰ͔͢
    • ࢖͍ͬͯΔݴޠͱ͔ GitHubͱ͔Slackͱ͔
    • αʔόͱΫϥΠΞϯτֻ͚࣋ͪ͢Δਓ͸͍Δʁ
    • αʔόϨε΍mBaaSͷ࿩ ϩάूܭج൫

    View Slide