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

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

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

B5582ce2d9959dfcff0384a07003e188?s=128

mackee

July 06, 2019
Tweet

Transcript

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

  2. ࢲͰ͢ w ໘ന๏ਓΧϠοΫ!ח૔ w ιʔγϟϧήʔϜࣄۀ෦ w ήʔϜٕݚ w αʔόαΠυΤϯδχΞ w

    1FSM (P +BWB4DSJQU w ઐ໳ w Ϛελσʔλ w 8FC4PDLFU w ϚΠϒʔϜ͸ΩʔϘʔυ࡞Γ
  3. None
  4. ిࢠج൘Λշదʹ࡞Δ ͨΊͷΩʔϘʔυͷి ࢠج൘Λ࡞Δٕज़ @mackee_w a.k.a macopy ԭೄֶੜ×اۀΤϯδχΞ 7݄େLTେձ!!!

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

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

    • ϢʔβΠϯλϥΫγϣϯ
  7. ݱ୅ͷ(ൺֱతେن໛ͳ) εϚϗήʔϜͷߏ੒

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

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

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

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

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

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

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

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

  16. Ұൠతͳηʔϒσʔλͱҧ͏఺ • ηʔϒσʔλ͸ଞਓ΋ݟΕΔ৔߹͕͋Δ • ϥϯΩϯά, σοΩߏ੒ etc… • ݟͤͯ͸͍͚ͳ͍΋ͷ΋΋ͪΖΜ͋Δ •

    อଘ࣌ʹখ೉͍͠ܭࢉΛ͢Δ͜ͱ͕͋Δ • AIతͳͳʹ͔, ԿΒ͔ͷγϛϡϨʔγϣϯͳͲ…
  17. ηʔϒσʔλͷϝλϑΝʔʹ ౰ͯ͸·Βͳ͍࿩ • ରઓ(PvP, GvGͳͲ) • ϦΞϧλΠϜ(WebSocketͱ͔RUDPͱ͔) • Ξηοτ഑৴(ը૾ͱ͔Ի੠ͱ͔ಈըͱ͔3D σʔλͱ͔)

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

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

    • SPA࣌୅ʹͳͬͯϞμϯͳWebαʔϏε΋ͦ͏ͳ͍ͬͯΔ
  20. WebαʔϏεͱήʔϜͷҧ͍ • ΍ͨΒσʔλॻ͖ࠐΈ/มߋ͕ଟ͍ • ηʔϒσʔλͷมߋ͕ৗʹى͍ͬͯ͜Δ • ଺ࡏ͕࣌ؒ௕͍ • Ӭଓ઀ଓ, ཪͰճΔόονͷଟ͞

    • Ϛελσʔλͷଘࡏ • 1req͋ͨΓʹՔ͙͓͕ۚଟ͍ • ࣮૷มߋͰڍಈ͕ίϩίϩมΘΔ
  21. σϓϩΠ΢Οϯυ΢ • 1೔4ճৗʹશϢʔβࢀՃͷΠϕϯτతͳ΋ͷ͕ ճΔήʔϜ • σϓϩΠ(࣮૷ͷຊ൪؀ڥ΁ͷ൓ө)͕ߦ͑Δ࣌ ͕ؒͦͷ伱͔ؒ͠ແ͍ -> σϓϩΠ΢Οϯυ΢ •

    ʮσϓϩΠ΢Οϯυ΢ͳΜͯ΋ͷ͸ଞͷWeb αʔϏεʹ͸ͳ͍ʯ
  22. ήʔϜͷαʔόαΠυ͸ ͋ΒΏΔܭࢉػՊֶͷ஌ࣝΛཁٻ͢Δ • ηʔϒσʔλ • σʔλߏ଄, ݕࡧ, ΞϧΰϦζϜ • γϛϡϨʔγϣϯ

    • εςʔτϚγϯ, ήʔϜAI, VM • Πϯϑϥ • ෼ࢄγεςϜ, ฒߦॲཧ
  23. ΋ͪΖΜαʔόͰ΋ ήʔϜతͳίʔυ΋ॻ͖·͢ • ͍͍ײ͡ͷରઓϚονϯάͱ͔ • ήʔϜAI(CPU)ॻ͘ͱ͔ • ໺ٿ൫γϛϡϨʔγϣϯΈ͍ͨͳͷॻ͘ͱ͔ • ݕࢉͷͨΊΫϥΠΞϯτͱαʔόͰಉ͡ϩδοΫ

    Λ࣮૷͢Δ͜ͱ΋ • νʔτݕ஌ͱ͔΋͠·͢
  24. Θ͔Γ·͔ͨ͠ʁʁʁʁ

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

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

    ड़͠ɺDBʹೖΕͨΓJSONʹͯ͠ຊ൪Ͱར༻͍ͯ͠ Δ 200γʔτҎ্͋ΔϓϩδΣΫτ΋
  27. None
  28. ͦΕαʔόͷ࢓ࣄͳͷʁ

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

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

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

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

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

  34. None
  35. ΍͍ͬͯΔ͜ͱͨ͘͞Μ͋Δʂʂ Ͱ͖Δ͜ͱ΋ͨ͘͞Μ͋Δʂʂʂ • ௚ۙͷ࢓ࣄ͸Jenkins͔ΒCircleCIʹςετίʔυͷࣗಈ࣮ ߦ؀ڥΛҠߦ͢Δ͜ͱͩͬͨΓ • ࠷ۙͷτϐοΫ͸ຊ൪؀ڥΛίϯςφʹ͢Δ͜ͱͩͬͨΓ • ϨΨγʔΛϞομϯʹ͢Δ࢓ࣄ͸ৗʹ΍͍ͬͯΔ •

    ISUCONతͳνϡʔχϯά΋࠷ۙͨ͠ • ෼ࢄτϨʔγϯά(AWS X-Ray)Λ࢖ͬͯ໰୊ಛఆΛͨ͠
  36. ࠓΞπ͍ٕज़ ෼ࢄτϨʔγϯά

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

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

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

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

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

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

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

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

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

  46. Ҏ্ʂ

  47. ૝ఆFAQ • ։ൃͱӡ༻ ӡ༻ͬͯͭ·Βͳ͘ͳ͍ʁ • νʔϜਓ਺ͲΕҐͳΜͰ͔͢ • ࢖͍ͬͯΔݴޠͱ͔ GitHubͱ͔Slackͱ͔ •

    αʔόͱΫϥΠΞϯτֻ͚࣋ͪ͢Δਓ͸͍Δʁ • αʔόϨε΍mBaaSͷ࿩ ϩάूܭج൫