ゲームサーバー勉強会 part1

33
ゲゲゲゲゲゲゲゲゲゲ PART1 ゲゲゲ

Upload: hexadrive-inc

Post on 25-Jan-2017

2.423 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: ゲームサーバー勉強会 Part1

ゲームサーバー勉強会  PART1  入門編

Page 2: ゲームサーバー勉強会 Part1

自己紹介

玉野 隆嗣( Tamano Takashi )• 株式会社ヘキサドライブ 開発部所属

• 2015 年新卒入社の新米サーバープログラマ

• 入社後からサーバープログラムを勉強

開発実績• 『ダイコン王の野望ッッッン !! 』 サーバーサイド / 運営 担当

Page 3: ゲームサーバー勉強会 Part1

ヘキサドライブについて

会社概要

•株式会社ヘキサドライブ• 2007 年 2 月設立• 本社・大阪開発、東京開発• 社員数  85 名( 2016 年 4 月現在)• コンシューマゲーム開発 / ソーシャルゲーム開発

開発実績 : http://hexadrive.jp/product/

Page 4: ゲームサーバー勉強会 Part1

アジェンダ

• はじめに

• クライアントとサーバーの違い

• 向いてる人

• チームメンバーの理解が必要なこと

• サーバーをやるメリット

Page 5: ゲームサーバー勉強会 Part1

現状共有

• 現在のゲーム業界全体でサーバープログラマが少ないという状況にある。

• これを機にサーバーに興味を持ってくれる人が増えて欲しい!

• 純粋にサーバープログラムに関して言い合える仲間が欲しい(切実に)            自分のスキルアップにもなる

Page 6: ゲームサーバー勉強会 Part1

はじめに

Page 7: ゲームサーバー勉強会 Part1

はじめに

• 今回の勉強会の内容は私個人の経験 (1年 )と勉強会懇親会での話を元に作成しております。                  よって多少情報に偏りがあるかもしれませんがご了承ください。

• 勉強会などに参加し、懇親会で他社の方に                                 質問を投げる方が詳しい事を知ることができるかもしれません。                       ソーシャルゲームの開発に関して知りたければ参加をオススメします。                                        Doorkeeper: https://www.doorkeeper.jp/

• 私も始めはサーバーと聞いてリアルタイム通信サーバーのほうを思い浮かべていてやります!        と言っていました。しかし実際 Webサーバーとリアルタイム通信サーバーはまったくの別物なので、     それを思い浮かべていた方がいましたら申し訳ありません。

Page 8: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

Page 9: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 処理速度、使いやすさ等 安全性、可読性(シンプルな実装)等マシン性能 固定

フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 10: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 処理速度、使いやすさ等 安全性、可読性(シンプルな実装)等マシン性能 固定

フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 11: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

■ クライアント

• 決められたハードや決められた実行推奨環境が定義されているので、その環境の中でより良い物を作るために高速化を図る

• 高速化の影響でセーフティ実装も       端折られる部分もある            ( プログラム側の要因で落ちることが多い )

• そもそもエラーなんて QA で取りきるんだ!!

■ サーバー

• 高速化を行うと多少可読性が下がったりするので緊急対応の速度を考えると高速化より可読性を重視する。

• 処理のどこの行でサーバーが落ちるか分からないのでセーフティ実装が多め。         ( プログラム以外の要因で落ちる事が多い )

• エラーを「 0」にはできないので、エラーが起きても影響が最小限になる実装をする。      (エラーでもユーザー資産に不利益がない等)

Page 12: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 実装速度、処理速度、使いやすさ

等安全性、可読性(シンプルな実装)等

マシン性能 固定フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 13: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 実装速度、処理速度、使いやすさ

等安全性、可読性(シンプルな実装)等

マシン性能 固定フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 14: ゲームサーバー勉強会 Part1

え?

Page 15: ゲームサーバー勉強会 Part1

やらないの?

Page 16: ゲームサーバー勉強会 Part1

クライアントによる高速化とサーバーによる高速化

• ある処理を行うのにかかる時間を 1ms短くした場合の効果

  ▼クライアント

     1ms短くなった!!

  ▼サーバー

     1ms× アクセス数短くなった!!

全体を見た場合サーバーによる高速化でみんなが幸せになる!!

特にサーバーの運用費用の部分が !!!

Page 17: ゲームサーバー勉強会 Part1

やったほうがいいじゃん!!

Page 18: ゲームサーバー勉強会 Part1

だが断る!!

Page 19: ゲームサーバー勉強会 Part1

理由

• そもそも 1 リクエストに対して処理する項目が少なく、高負荷につながる部分が少ない。

• 高速化をした場合少なからず可読性が下がるのでやりたくはない。                   (運営時の緊急障害対応速度を上げるためソースコードはシンプルにすべき)

• 負荷テストで要求ユーザー数に耐えられるように作れば良い。                         シンプルさを損ねない範囲であれば高速化をする。 でいいと思います!

• そもそも可読性が高い状態で高速化を行えるサーバープログラマーが希少。

 ※ただし、フレームワークやライブラリ部分の高速化は出来るだけ行う

   ここが一番高速化で影響がでかい

Page 20: ゲームサーバー勉強会 Part1

それでも、どうしてもどうにかしないといけない

場合はサーバー環境を強化して解決する!!

(要はお金で解決する!!)

Page 21: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 実装速度、処理速度、使いやすさ

等安全性、可読性(シンプルな実装)等

マシン性能 固定フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 22: ゲームサーバー勉強会 Part1

実装確認

クライアト サーバー

• データベースやユーザのログ、 SQL/Linux コマンドとサーバーの負荷との戦い

Page 23: ゲームサーバー勉強会 Part1

クライアントとサーバーの違い

クライアント サーバー重要視する所 実装速度、処理速度、使いやすさ

等安全性、可読性(シンプルな実装)等

マシン性能 固定フルに使いたい !!

可変シンプルさは保った状態でアクセス数が増えても大丈夫なようにする

高速化 する ほぼやらない条件が揃えばやる

実装確認 画面 数値リリース アップデートがなければ終了 そこからが本番

Page 24: ゲームサーバー勉強会 Part1

向いてる人

Page 25: ゲームサーバー勉強会 Part1

向いている人

• 保守的な考えを持っている人のほうがやりやすい

• 高速化をバリバリやっていた人は『ここもっと高速化できるのに !!! 』というイライラがあるかもしれない  (自分も初めはそう思っていました)それに耐えられる人

• 責任感強い人運営中は責任を持ってサーバーの管理を行う必要がある( 24時間 365日体制)

• 先々の実装の可能性を考えられる人(運営中はテーブル定義の変更がやりにくい)

Page 26: ゲームサーバー勉強会 Part1

チームメンバーの理解が必要なこと

Page 27: ゲームサーバー勉強会 Part1

チームメンバーの理解が必要なこと

• 運営時もしユーザー対応人数がきつくなったらサーバースペック /台数をお金で解決!

• 負荷テストは運営時相当の環境を用意してお金で解決!!(きっちりやろう)

  &パフォーマンスチューニングをしっかりと工数を持ってやる

Page 28: ゲームサーバー勉強会 Part1

サーバーをやるメリット

Page 29: ゲームサーバー勉強会 Part1

サーバーをやるメリット

• 好きなチートが作れる

• データ分析が面白い(人間観察と同じ様な楽しさ)

• 最近は無料クラウドサーバーを利用できるので家でサーバー有りのスマホアプリ開発ができる!        

• 簡単な業務Webツールも作れる!

• リスク管理能力が上がる!

• クライアントでプログラムをする際にもサーバーの知識を持ってると仕事がしやすい!

Page 30: ゲームサーバー勉強会 Part1

まとめ

Page 31: ゲームサーバー勉強会 Part1

まとめ

• クライアント・サーバーでプログラムの思想が異なるのでそこの理解が必要。

• 両方出来るプログラマを育成するのは大事 !!                                   しかし、頭の切り替えはきちんとしてから実装をしないと運営時に痛い目を見るのは自分

• サーバーやるメリット多いと思います!

•もっと仲間が欲しいです!!(切実に)

Page 32: ゲームサーバー勉強会 Part1

サーバープログラムやろう!!!

キャリア採用: HTTP://HEXADRIVE.JP/RECRUIT/CAREER/

Page 33: ゲームサーバー勉強会 Part1

御清聴ありがとうございました。