サーバエンジニアからゲームデザイン視点まで。国際ゲーム開発者協会日本ホームIGDA日本についてお問い合わせNPO法人IGDA日本のページへようこそこのページは、NPO法人国際ゲーム開発者協会日本(IGDA日本)のホームページです。IGDAは全世界のゲーム開発者を対象とした国際NPOです。日本語での情報交換の場所としてご活用下さい。レンズデッキ日本語版NEWSメール不定期でイベント情報やNEWSなどをメールにてお送りしています。以下から、NEWSメールの登録/解除ができます。ACMAILER好評発売中!機材提供Partners■ニュース掲載についてIGDA日本ではゲーム開発に関連するニュースを募集しています。イベント情報やプレスリリースなどをinfoアットigda.jpまでお送りいただければ、内容を精査の上で掲載させていただきます。運営ボランティアの仕事状況によってはアップできない場合もあり、またその旨をご連絡をしない場合もあります。■ニュースの著作権についてニュースの著作権は、カテゴライズがIGDAおよびIGDA日本に関連するものの場合、IGDA日本に帰属するものとします。それ以外のプレスリリース等の投稿記事については投稿者、もしくはその所属される企業に帰属します。転載による記事については転載元の個人、または組織に帰属しています。■記事内容についてIGDAおよびIGDA日本に関連するニュースをのぞき、掲載しているニュースはIGDA日本の立場を代表するものではありません。それらの記事内容についてIGDA日本は責任を負いません。転載掲載されています。IGDA日本」と記載されます。転載に問題がある場合は掲載後でも構いませんのでご指摘ください。<最終更新2013年3月10日>※ホーム2017年12月28日サーバエンジニアからゲームデザイン視点まで。幅広い知見が集結した「SIG-NSゲームサーバー勉強会#7」レポートサーバエンジニアからゲームデザイン視点まで。OnoKenjiゲームサーバー勉強会。記録的な寒波にみまわれた2014年2月8日にスタートした、日本では珍しいゲームサーバーの勉強会コミュニティです。ユニークなのはエンジニアだけでなく、ゲームサーバーの仕組みやノウハウについて興味があるゲームデザイナー向けの内容も含んでいること。実際、急速に成長したソーシャルゲームを安心・安全・堅牢に運営しつつ、おもしろいゲームをリリースするためには、サーバエンジニアとクライアントエンジニア、そしてゲームデザイナーの連携が欠かせません。ゲーム業界ならではの分野横断型コミュニティだといえます。ゲームサーバ勉強会#7の模様そんなゲームサーバー勉強会がこのたび、IGDA日本のSIG-NetworkSystemとして再スタートを切り、2017年11月25日に都合7回目の勉強会を開催しました。当日は「イケメンシリーズでのORMとスロークエリ対策について」「PHPからJavaで乗り換えた。そんな昔話をしよう」「難易度ボラタリティグラフという分析手法」という3つの講演を実施。前半2つはエンジニア向け、最後の1つは運営チームのゲームデザイナーにも参考になる内容となりました。終了後は会場でビアバッシュも実施し、参加者同士が思い思いに交流。資料はすべてWebで公開済みですので、本文とあわせてご覧ください。Itohサーバーが重くて遊びにくい。最悪の場合、サーバーが落ちてしまう......。初期のオンラインゲーム(そしてフィーチャーフォンのソーシャルゲーム)では、しばしばこうした事態に陥ることがありました。サーバエンジニアにとっては悪夢のような状況です。厄介なのは人気ゲームほどアクセスが集中し、トラブルになりやすいこと。「イケメンシリーズ」など女性向けの人気コンテンツで知られるサイバードで、サーバエンジニアのとりまとめを行っている伊藤雅俊氏は、同社でどのようなスロークエリ対策(=サーバのレスポンス改善)を行っているかについて解説しました。2012年6月にリリースされた「イケメン大奥◆恋の園」から、最新作「イケメンヴァンパイア◆偉人達と恋の誘惑」まで、5年間で13本のアプリが登場した「イケメンシリーズ」。同社では他にサッカークラブ運営ゲーム「BFBチャンピオンズ2.0」など、さまざまなコンテンツを展開中です。そんな同社「イケメンシリーズ」のシステム構成は、オーソドックスなLAMP環境。DB(データベース)の使い方も基本に忠実だといいます。サーバー環境も初期はクラウド(IIJ/AWS)、中期はオンプレミスと、状況にあわせて使い分けており、最新作では再びAWSに戻ってきたと説明されました。これにあわせて、同社ではDBチーム内に全社横断型の監視チーム「スロークエリ道場」を2015年9月に立ち上げました。モニタリングツールのMonyogと内製ツールを併用しながら、DBにおけるスロークエリの状況を毎週、運営チームに報告するのがミッションです。その結果、当初は閾値10秒でも1日で数百件のスロークエリが発生していたものが、昨今では閾値0.5秒でも1日数件と、劇的に改善されました。「道場側でスロークエリの指摘を行っても、繁忙期だと対策が後手に回ることもあった。した場合でも、技術部側のリードエンジニアを巻きこむなどして、徐々に対応していった」(伊藤氏)といいます。他にDB負荷対策もかねて、新技術のリサーチを常に続けているとのこと。過去の事例では超高速半導体ストレージ「Fusion-io」を搭載したDBサーバーを導入すると共に、オンプレミス環境に移行した際、劇的な改善が見られたと振り返りました。Spannerに注目しているとのことです。このように伊藤氏は「負荷対策の基本は『計測』に基づく『対策』にある」と指摘した上で、新技術の導入や既存のテクニックと組み合わせつつ、ユーザーに快適なゲーム体験を提供していきたいとまとめました。PHPからJavaに乗り換えて効率アップ!PHPからJavaへ乗り換えた。現在は「ユニティの中の人」として、テクニカルサポートを行っている黒川優介氏。過去にゲームメーカーでモバイルゲームのAPIサーバー開発を担当していた時期がありました。当時の案件で、プロトタイプではPHP5系の言語を使って開発されていたものを、本制作はサーバサイドJava(tomcat6)に切り替えたところ、開発効率が上がったことがあったといいます。Javaならではの注意点があったことも事実。黒川氏は当時の経験をふり返りながら、サーバエンジニアから見たPHPに対するJavaの優位性と、導入の工夫について講演しました。クライアント(スマホ端末)とDBサーバーの仲介役として、さまざまな処理をこなすAPIサーバー。当時担当した案件では、APIサーバーをプログラムする上で、「過去にPHPでWebサービスの開発経験があったし、PHPがトレンドらしいので」と、明確な理由もないまま、PHPでの実装を決めたと言います。「PHPよりJavaのプログラマーが多い部署だった」などの理由から、開発途中でJavaによる実装に切り替えることに。上司からの提案でしたが、結論から言うと、これが大正解だったと言います。「実際、次のプロジェクトでもJavaを採用したくらいです」(黒川氏)黒川氏はPHPに対するJavaの優位性として、「Javaはコンパイル後にサーバーに実装するため、構文が間違っているとコンパイルエラーが発生する。そのため、最低限の品質保証ができる」「『CheckStyle』『FindBugs』という、2種類の静的解析ツールをJenkinsの自動ビルドに組み込んだことで、コードの品質が向上した」「スレッドベースの特性を生かして、キャッシュサーバなしで運用できた」という3点を上げました。PHPではサーバー上でプログラムを実行しなければエラーがわからないため、全体の開発進捗にも影響することもあり、Javaの恩恵が実感できたと言います。JavaではDBへのアクセス時に、オブジェクト変数への適応を自分で行う必要があったと、PHPと比較しての課題点も共有されました。PHPでは連想配列にデータを格納できたため、面倒なことを考えなくても、DBからデータをまとめて取得できたとのこと。これがJavaでは項目別にデータを取得して回る必要があり、たいへん面倒に感じられたのです。この問題を黒川氏は「JavaのReflectionを使用すると、DBの項目名からオブジェクトに直接代入ができるようになる。この機能を活用することで回避できた」と指摘。参考にして欲しいと語りました。コンサルタント・書籍執筆など、八面六臂の活躍を続ける中山ところてん氏。中山氏は「ソーシャルゲームではデータ分析に基づくゲームバランスの調整が非常に重要だが、実際には手が回らないことも多い」と指摘。した中でもサーバエンジニアはデータ分析に必要な生データを直接入手できる立場にあり、データ分析を任される場合も多いため、覚えておいて損はないと語りました。「分析するだけなら、SQL一発でいけることが多いです。アレなディレクターへの対策にもなります(笑)」(中山氏)中山氏が提案したのは、運用中のゲームデータからダイナミクス(MDAフレームワークにおける「データやアルゴリズムによって発生する現象」のこと)を計測し、統計的な分析手法で可視化する方法論です。具体的にはフロー理論(行為者のスキルとチャレンジの難易度が噛み合っているとき、行為者はそのチャレンジに没頭するという理論)をベースに、ゲーム内資産と勝率でボラタリティグラフを作成し、ステージの難易度が適切か検証するというものです。実際にはプレイヤーの強さには、各々プレイヤースキルと運の要素が加わりますが、定量化できないため、ここでは省略されています。「難易度ボラタリティグラフを作成することで、ステージの難易度が間接的に計測可能になります。『パズドラ』『モンスト』などのようなステージクリア型のゲームで、プレイヤースキルをゲーム内リソースで補えるようなものであれば、幅広く活用できます」(中山氏)。講演ではボラタリティが大きすぎても、小さすぎてもプレイヤースキルが勝敗に影響しづらく、バランス調整が必要であることが示されました(ボラタリティが大きすぎると、誰でもクリアできる運ゲーになり、小さすぎるとレアカードがなければ勝てない、課金ゲー状態になる)。連続するステージ間で難易度ボラタリティグラフの重複領域を調べれば、ステージ間の難易度上昇が適切か否かも図示できるとしました。ファネル分析(アプリ内でユーザーが離脱するプロセスを可視化するための分析手法)と併用すれば、離脱が多いステージでの改善などにも応用可能になります。ヒートマップを作って可視化すれば、複数ステージのバランス調整が、より的確にできるようにもなるとも補足されました。「これらはログから簡単に分析できるものです。近い将来、AIによるテストプレイが一般化すれば、さらに活用できるのではないでしょうか」(中山氏)。セミナー冒頭、SIG-NS世話人の望月大作氏は「今後も年に2回程度、セミナーを定期開催していきたい」と抱負を述べました。セミナー登壇者は随時募集中とのことです。詳細はSIG-NS公式サイトをごらんください。(小野憲史)*難易度ポラタリティグラフに関する講演は情報処理学会の第56回プログラミング・シンポジウム予稿集に掲載された「オンラインゲームにおけるゲームバランスの調整手法の提案」で詳細が解説されています。投稿ゲーム業界カレンダーSIGのblog一覧IGDA日本の各SIGが運営しているblogの見出しの一覧です。アナリティクスを利用してアクセス統計データを収集しています。