Quantcast
Channel: Cygames Engineers' Blog
Viewing all 78 articles
Browse latest View live

【JaSST’17 Tokyo フォローアップ】受け入れテストの自動化

$
0
0

みなさん、こんにちは。Cygamesエンジニアの折田です。

先日、JaSST’17 Tokyoの「CEDECコラボセッション」で講演させていただきました。セッションの実現に向けてご尽力いただいたCEDEC事務局、JaSST事務局、ならびにJaSST実行委員のみなさんに、この場を借りてお礼を申し上げます。

JaSSTはソフトウェアテストに従事されている方、もしくはソフトウェアテストに関心を持っている方をターゲットにしたシンポジウムです。私自身もソフトウェアテストに長年携わってきたので、同じ課題に取り組む同志にナレッジを共有する絶好の機会だと考えました。

JaSST’17 Tokyoでは、自動テストにフォーカスを絞り、前半と後半でぞれぞれテーマを分けて解説しました。

【前半】自動テストの実装事例

OpenCV、Python、Appiumを使った受け入れテストの自動化について、CEDEC 2016では語られなかった技術的な詳細や最新の開発成果を含めた「完全版のセッション」をお届けしました。前回はスライドで簡単に紹介するのみだった下記のサブシステムについても、デモ動画を再生しながら、その有用性をアピールしました。

  • スクリーンキャプチャー
  • OCRサービス
  • ドライブレコーダー
  • エビデンスビューワー

【後半】自動テストの設計アプローチ

自動テストでは、どうしても「スクリプト」にフォーカスを置いた議論が展開されがちです。しかし、自動テストの開発資産を安定的に運用するには「データ」の設計が何よりも重要なのです。また、自動テストの開発資産の劣化速度を遅らせるために「スクリプト」から「リソース」への分離も欠かせません。この三位一体(トリニティ)の設計アプローチについて、開発者と保守担当者の視点からそれぞれ解説しました。

  • スクリプト
  • リソース
  • データ

JaSST’17 Tokyoでの講演内容

JaSST’17 Tokyoで講演した「受け入れテストの自動化」のプレゼン資料をそのままPDF化したものです。主題のみが書かれており、その行間を口頭で補足する前提になっていますが・・・全体の流れは十分把握できるかと思います。

さらなるカイゼン

実際にシステムの運用をはじめると、さまざまな問題点が浮き彫りになります。その原因が自分たちにあれば、粛々と修正するだけですが・・・時には、利用しているミドルウェアの性能限界の壁に阻まれることがあります。これまでは「枯れた技術を組み合わせる」ことをモットーとして開発を進めて来ました。しかし、技術的なブレークスルーを見い出すため、その代替手段を独自開発するに至りました。その開発成果については、この技術ブログで公開したいと思います。

もし、Cygamesに興味を持っていただけた方は、こちらの採用ページをご確認ください。


【GCC’17 フォローアップ】グランブルーファンタジー『Project Re:LINK』におけるリアルタイム雲表現の研究と技術紹介!

$
0
0

皆さんこんにちは。
大阪Cygames エンジニアの森井です。

先日2017/02/18(土)に行われたGAME CREATORS CONFERENCE’17にて
グランブルーファンタジー『Project Re:LINK』におけるリアルタイム雲表現の研究と技術紹介!」というタイトルで講演をさせていただきました。

初参加・初登壇でしたがとても充実し楽しむことができました。
参加いただいたみなさま、運営のみなさま、本当にありがとうございました。

グランブルーファンタジー『Project Re:LINK』

グランブルーファンタジー「Project Re:LINK」(以下、Re:LINK) は、弊社とプラチナゲームズ様とで共同開発しているタイトルです。

大阪Cygamesでは、このRe:LINKの絵作りを協力しており、
グランブルーファンタジーの世界では重要な「雲」についての研究を行っています。
講演では、その「雲」の研究内容と技術紹介をさせていただきました。

講演で使用したスライドはこちら。

皆さんこんにちは。
同じくGAME CREATORS CONFERENCE’17にて講演させていただいた、
大阪Cygames エンジニアの河端です。
私からは、上記スライドにて説明されている「平面雲」と「任意形状雲」について、
簡単にではありますが、研究に至った経緯とRe:LINKにおけるこれら2つの雲のこれからを
補足させていただきます。

平面雲とは

グランブルーファンタジーの世界では、様々な島が雲の上に浮かんでいます。
そしてこの雲は、コンセプトとして どこまでも広がって います。
つまり、グランブルーファンタジーの雲を表現するためには、眼下にどこまでも広がる雲表現が必要になる、ということになります。このような、どこまでも広がる雲を目指して研究している雲表現の一つを、弊社では平面雲と呼称しています。

任意形状雲とは

グランブルーファンタジーの世界では、個性豊かな形を持つ雲がたくさん登場し、
これらはデザインとして ファンタジーらしく不思議な形から誰もが理解できる入道雲などの組み合わせで形作られています。
このような、任意に形を作れる雲を目指して研究している雲表現の一つを、 弊社では任意形状雲と呼称しています。

さらにより良い雲を

平面雲も任意形状雲も、グランブルーファンタジーの雲を表現するために、今も研究を続けています。
その為、今の平面雲や任意形状雲をRe:LINKでそのまま採用するとは限りません。
ですが、大阪Cygamesは「やるからには徹底的にやる」というスローガンを掲げており、
Re:LINKの雲においても「最高の雲」の表現を目指して、これからも徹底的に取り組んでいきます。

大阪Cygamesでは様々な技術研究にも取り組んでいます。
興味がある方は、こちらをご覧ください。

また、定期的にプログラマー、3DCGアーティスト向けの座談会も行っておりますので、こちらも合わせてご覧ください。

【Developers Summit 2017 フォローアップ】グランブルーファンタジーを支えるインフラの技術

$
0
0

みなさん、こんにちは。インフラエンジニアマネージャーの佐藤太志です。

Developers Summit 2017 にて「グランブルーファンタジーを支えるインフラの技術」と題して講演させていただきました。
Developers Summit 2017の運営のみなさま、また講演にご参加いただいたみなさま、ありがとうございました。この場をお借りして御礼申し上げます。

会場が満席で立ち見の方も数人おられ、多くの方に関心を持っていただけたことを嬉しく思っております。

発表資料は下記になります。

発表した内容について

  • ログデータの取り組み
    • 5TB/日のログデータの保存とデータ活用方法
  • リアルタイム通信の高速化
    • Nginx と Luaスクリプトを用いたL7 ロードバランサシステム
  • タグシステムと運用
    • サーバ情報のインベントリシステムと運用事例

上記のとおり、グランブルーファンタジーで利用している事例を3つ紹介させていただきました。また、その中でCygamesインフラの技術や大切にしているマインドをお伝えさせていただきました。

詳細はスライドに記載しておりますのでぜひご覧ください。

発表を終えて

この様な場で発表させていただくのは初めてのことだったのですが、立ち見の方が出るほど多くの方に聴講いただけて本当にうれしかったです。講演後にも、多くの方が質問に来られ、Twitterなどにも感想を上げていただき、発表内容に興味を持っていただけたのではないかと考えております。

今回の講演では完成に至らずいくつかの施策について未完成版として発表させていただいたものもありましたが、また機会があれば完成した内容をお伝えしたいと考えております。

もし、Cygamesに興味を持っていただけた方は、こちらの採用ページをご確認ください。

【Developers Summit 2017 フォローアップ】監視・解析ツールから読み解く!トラブル対応&負荷対策

$
0
0

みなさんこんにちは。サーバーサイドエンジニアマネージャー詫摩です。

Developers Summit 2017 で「監視・解析ツールから読み解く!トラブル対応&負荷対策」というセッションをさせていただきました。

Developers Summit 2017の運営のみなさま、講演に参加いただいたみなさま、ありがとうございました!この場をお借りしてお礼を申しあげます。

発表資料は下記になります。

発表した内容について

  • 負荷対策やトラブル対応について
  • Cygamesの考え方
  • ツールの使用事例

上記の三点ですが、主にツールの使い方の説明になっております。
ツールの使い方については、目的によって見方が変わるため、私がどのように使い分けているのかという観点で紹介させていただきました。

発表を終えて

New RelicやMackerelについて、伝えきれなかったことがあったと感じております。

New Relicはクエリ精査をするときにとても便利だったり、
MackerelはWebサーバーの状態を動的に見ることが出来るため、スケールの判断をする際にとても重要と考えているといった点です。

自分のためにも、今後もより便利により効率よくツールを使いみなさんに発表できればと思います。

次回へ向けて

サーバーサイドエンジニアとして、日々勉強していくのはもちろんのこと
チームビルディングや仕様からプログラムを改修していくことが、自分では得意だと思っているので、アウトプットできる機会があれば挑戦したいです。

私も会社もまだまだレベルアップできるので、今後も一歩ずつ成長していければと思います。

講演でも紹介したように、私たちのマインドに共感してもらえ、より良く改善したい!チャレンジしたい!という人が集まっていただけると心強いです。

もし興味を持っていただけた方は、こちらのページをご確認ください。

WEB+DB PRESS Vol.98 にて「良いPHPコードを保つ技術」という記事を寄稿しました

$
0
0

こんにちは。サーバーサイドエンジニアの小笠原です。

少し時間が空いてしまいましたが、新年度が始まりました。
先日Cygamesにも新卒社員が入社し、彼らのフレッシュさと熱量の高さに非常に良い刺激をもらっています。

この度、WEB+DB PRESS Vol.98にて「良いPHPコードを保つ技術 ~規約と指針を整備し、静的解析ツールを活かす」と題した記事を寄稿しました。

きっかけ

以前、本ブログでも紹介したPHPカンファレンスでの講演をきっかけに、技術評論社さまからお声がけ頂きました。
私自身、WEB+DB PRESSを、ほぼ毎号熟読していたので快くお引き受けしました。

どんな内容?

内容としては、「コーディング規約/指針の整備と、それを継続するための解析ツールの活用」をCygamesでの実例を交えて紹介しています。
寄稿する記事は4月号の掲載だったこともあり、これからPHPで本格的にチーム開発を始める方に参考いただけるように執筆しました。

ざっとアウトラインを紹介します。

  • 大規模 × ゲーム開発での難しさを整理し、開発に対するマインドセットの紹介
  • PHPでコーディングする上で起こりうる問題の整理
  • チーム内でのコーディングに対する「規約と指針」の整備
  • 「規約と指針」を支援するツール(PHP_CodeSniffer, PHPMD)のカスタマイズ

これらをCygamesでの実例を交えて紹介しています。

PHPの高い柔軟性は大きな利点ですが、時としてその柔軟性が仇となってしまうケースがあります。日頃PHPを書いている方は、少なからず心当たりがあるのではないでしょうか?
こういった問題に対する解決の取り組みを紹介させて頂きました。

少しでも興味を持って頂けたなら、ぜひ手に取ってください。
そして記事の内容が参考になれば幸いです!

最後に

このような機会を頂き、改めて技術評論社の方に感謝します。
入稿直前に急な修正にも対応頂き本当にありがとうございました。

繰り返しになりますが、WEB+DB PRESS Vol.98は4/22に発売となります。
どうぞ宜しくお願い致します! enjoy engineering!

【Unite 2017 Tokyo フォローアップ】『Shadowverse開発事例』 ~美麗カードが動く!制作テクニックのすべて~

$
0
0

2017/05/09(火)に Unite 2017 Tokyoで、『Shadowverse開発事例』 ~美麗カードが動く!制作テクニックのすべて~ という講演を行いました。

先ずは、講演に参加いただいたみなさま、ありがとうございました。
少しでもShadowverseを知っていただける機会になっていただければ幸いです。

以下が講演のスライドになります。

プレミアムカードについて

こんにちは。
3DCGアーティストチーム サブマネージャーの島村です。

本講演では、Shadowverseにおける動くカード「プレミアムカード」を制作するための専用シェーダーについてのお話と、制作技法について紹介させていただきました。

こちらでは、講演内では伝えきれなかった、カードシェーダーの細かい部分について、Q&A方式で解説させていただきます。

Q: カードシェーダーは計算が複雑かと思いますが、処理負荷についてはどう対処していますか。
A: Unity標準で用意されているシェーダーバリアントの機能を使用して静的分岐をすることで、個々のプレミアムカードのGPU計算が多くならないようにチューニングしました。シェーダーバリアントで分岐するにはキーワードを指定する必要がありますが、CustomEditorでマテリアルインスペクターを拡張してキーワードの指定をしています。

Q: カードシェーダーの開発や保守はどのセクションのスタッフが担当していますか。
A: 開発段階では3DCGアーティストである私のほうでシェーダーの開発をしました。アーティスト側で開発を進めることで、絵作りをするために必要な機能の選定や、より作業のしやすい環境作りというものを優先しました。アーティスト側で開発している際もパフォーマンスを留意しながらシェーダー開発を進めていきましたが、リリース前のパフォーマンスチューニングの段階から、より詳しいエンジニアに引き継ぎ、それ以降の保守はエンジニアセクションに担当してもらっています。

Q: アーティストがシェーダーの機能を理解するまでにどれくらいの時間がかかりましたか。
A: 機能自体はとてもシンプルに設計されているので、1週間もあればシェーダーの機能を一通り理解できます。ただし、シンプルなだけに、マスクの描き方やテクスチャの動かし方にある程度のテクニックを必要とするため、そういった技術面での習熟にはある程度の時間を要します。

開発体制、最適化、効率化について

こんにちは。
Shadowverseでエンジニアリーダーをしている大道です。

お話させていただいたこと

  • 開発体制とフローについて
  • アセットバンドルを使った最適化について
  • カード開発の効率化について

講演後にご質問にもお答えさせていただきましたが、フォローアップとしてそれらをご紹介いたします。

Q: アセットバンドル化したテクスチャの共有について、エフェクト以外ではどのような使い方をしていますか?
A: プレミアムカードが参照する合成テクスチャについても共有して、すでにメモリ上に展開されていればロード処理は行わず参照を共有します

Q: アセットバンドルのDependenciesを使うことで参照の共有はできるとおもうのですが、何故そうしなかったのですか?
A: Dependenciesを使う選択肢はありましたが、参照情報が記載される分やはりアセットバンドルのサイズはほんのすこしだけ大きくなります。それすらも排除したかったという思いがありました。

補足になりますが、スマホ向けに出しているゲームとして問題になりやすいメモリ管理やアセット管理を自前で行い、細かいチューニングをしたくなった際も柔軟にゲーム側で対応できるというのも選択した理由の一つです。

更にUnity 5.0以降からBuildAssetBundleOptions.CollectDependenciesはObsolete(非推奨)になっていて、デフォルトで依存しているアセットを含めてビルドされるので、命名規則により管理する方法を選択しました。

Q: カードスキルの記述はマスター上ではどのようにされていますか?
A: 講演で紹介した6つのパラメータには全て複数の情報を設定できるようにしています。一つのカラムに正規表現を使ってメソッドチェーンのようにパラメータを登録できるようになっているので、現状のカードは全て実現できています。

カードスキル開発についての補足

スキル例4フォロワーカードでネフティスというカードの解説をさせていただきましたが、スキルの内容が他のカードよりも複雑だったこともあり、一部のパラメータの説明を省略しております。

最後に

今回講演を聞いていただいたみなさま本当にありがとうございました。
Shadowverseが今あるのは、
共に開発に携わってくれているメンバーと、何よりもShadowverseをプレイしてくれている方が居るおかげです。

今後も開発チーム一同、最高のコンテンツをお届けできるよう頑張ってまいります。

【AWS Summit Tokyo 2017 フォローアップ】DAU 100 万人突破! 急成長を支える Shadowverse のインフラ技術

$
0
0

こんにちは。インフラ統括マネージャーの佐藤です。

2017年6月1日(木)に開催された Game Tech Session ~AWS Summit Tokyo 2017~ にて、「DAU 100 万人突破! 急成長を支える Shadowverse のインフラ技術」というタイトルで講演をさせていただきました。

講演に参加いただいた皆さまありがとうございました。

Game Tech Session ということでweb系やゲーム系のサーバ管理に携わっている方に向けてShadowverseのインフラ技術やCygamesが独自開発した技術などをテーマに講演させていただきました。

こちらが講演のスライドになります。

講演では下記の2つのトピックについて発表しました。

  • Shadowverseを支えるインフラ技術
  • スケーラブルなログ収集基盤

Shadowverseを支えるインフラ技術

Shadowverseは2016年6月21日にリリースして、あと数週間で1周年を迎えますが、これまでサーバ構成やインフラのレイヤーで2つのチャレンジがありました。そのチャレンジの詳細をセッションではお伝えしております。

一つは対戦システムのスケールアウトです。
リリース当初の対戦システムの構成はRedisのpub/sub通信を利用しており、スケールアウトが難しい構成をとっておりました。Nginxによるルーム対戦の仕様に特化した独自開発のL7ロードバランサの開発と移行を行いました。その構成と利用されている技術を説明させていただきました。

もう一つはShadowverseのリプレイ機能のリリースについてです。
年末の最もアクセスが多いタイミングで運用中システムに全対戦データの保存とデータロードの仕組みを追加しました。ユーザに見せない形でリリースし、本番環境で長期間検証を行うことで無事にリリースし、今まで大きな障害もなく運用してきました。いかにリリースを成功させたか発表させていただきました。

スケーラブルなログ収集基盤

Cygamesで独自開発したログ転送エージェントとAWSサービスを使ったログ収集基盤について発表しました。

Cygamesのログデータは1日14TB(※非圧縮時)に及びます。そのログデータの収集先をAmazon S3(以下S3)に集約し、S3に転送することに特化したログ転送エージェントの開発を行いました。その転送エージェントの技術とS3に集約したデータの活用方法を説明させていただきました。

また、AWS lambda(以下lambda)やAmazon EC2 Container Service(以下ECS)を利用したログ量に応じてスケールアウトするログ基盤を紹介しました。
S3に保存されたデータを外部のツールにlambdaとECSを利用して、ログ量に応じてスケーリングを行うシステムを設計しました。セッションではlambdaとECSの2つのスケーリングポリシがどのように連動するか、またAWSサービスを選定した経緯等を発表しております。

最後に

本セッションに参加いただいた皆様ありがとうございました。
残念ながらセッションに参加できなかった方でも当日の発表内容がわかるようにスライドの補足を加えさせていただきました。ぜひスライドを閲覧いただければと思います。

Cygamesインフラではユーザに安心して楽しんでいただける環境を提供できるよう日々安定稼働を目指しつつ、新しい技術に挑戦しております。
今回のセッションでは発表できませんでしたが、Amazon kinesisを導入した事例やEC2サーバのプロビジョニング方法などどこかの機会でまたお伝えできればと考えております。

セッションの最後にCygamesインフラが大切にしている3つのことを紹介しクローズさせていただきました。

  • 当たり前のことを当たり前にやる
  • インフラのレイヤーで課題を解決する
  • コア技術は自分たちで実装する

この私たちのマインドに共感いただけて共に働ける仲間を募集しております。
興味がある方は、こちらをご覧ください。

【AWS Solution Days 2017 ~ AWS DB Day フォローアップ】シェアードナッシング型 Web アプリケーションと Kinesis Firehose による大規模データストリーム処理

$
0
0

こんにちは。Cygames 技術顧問 兼 Cygames Research所長の倉林です。

2017年7月5日(水)に開催された AWS Solution Days 2017 ~ AWS DB Day ~ にて、「シェアードナッシング型 Web アプリケーションと Kinesis Firehose による大規模データストリーム処理」というタイトルで基調講演をさせていただきました。講演に参加いただいた皆さまには、改めて御礼申し上げます。

このAWS Solution Days 2017は、ゲーム業界のみをターゲットにしたものではなく、クラウドにおけるデータベース、あるいは、データインテンシブな処理に興味を持つ、幅広い技術者の方を対象にしたものであるため、本講演では、ゲーム業界のみならず様々な分野の技術者の方のお役に立つ知見を共有できればと考え、これまでに外部に紹介したことのなかった、グランブルーファンタジー スカイコンパスに搭載されている、Cygamesが独自開発した技術の事例紹介を中心した講演を行いました。

しかしながら、20分という講演時間のため、技術的な詳細を省略しながらの講演となってしまい、少し消化不良の方もいらっしゃったかもしれません。そこで、今回、フォローアップ記事として、当日お話しできなかった細部について、補足させていただければと思います。講演資料へのリンクもございますので、当日お越しいただけなかった方も、是非、御笑覧くださいませ。

まず、当日の講演資料は下記になります。

本講演では、スケーラビリティを実現するためのコンセプトとして、「Closure-like CGIによるShared-Nothing型Webアプリ」と、ゲーム本体の負荷に影響を与えずに高負荷のプロモーションサービスを実行するための「実行と書き込みの分離(Separation of Exec/Write)」の二つを紹介しました。

Closure-like CGIによるShared-Nothing型Webアプリ

シェアードナッシング(Shared-Nothing)とは、サーバサイドシステムを構成する各ノード、データベース等のリソースを共有せずに、それぞれが、完全に独立かつ自律的に動作する状態を意味します。このように、すべてのノードが独立かつ自律の状態では、単一障害点(SPOF: Single Point of Failure, その1点に障害が発生するとシステム全体が影響を受けるような要素の事)が発生しにくく、負荷に応じて処理ノードを追加するだけでスケールするシステムを構成することができます。本講演では、Closure-Like CGIと当社が名付けた、「必要なデータをすべて定数値としてバイナリ内に埋め込んだ、C++で書かれたCGI」を用いて、このシェアードナッシングを実現する方法を示しました。

具体的には、当社のアニメチェックイン システムでは、クライアントから送信されるチェックイン情報を照合するために必要なすべてのデータを、都度、C++ソースとして自動生成し、CGI実行ファイルとしてコンパイルしています。これらのCGIは、一切の外部リソースにアクセスしないようになっており、結果出力時には、O_APPENDフラグを付けて結果ファイルを開く、アトミックなファイル書き込みのシステムコールを用いているため、完全単独動作可能な、Closure-Like CGIとして動作します。

このC++を用いたClosure-Like CGIには、次の3つの利点があります。

  • 完全単独動作可能な、すなわち、ロックフリーであるため、マルチコアCPUを用いた場合の並列性が高い点。
  • UNIXのメモリ管理におけるCopy-On-Writeの仕組みにより、実行中のCGIプロセスは、そのほとんどのメモリを他のプロセスと共有するため、全CGIプロセスで共通のリードオンリーのオンメモリデータベースを構成することになる点
  • C++のSIMD Intrinsicsを用いて、Intel AVX2命令などのSIMD命令を活用し、シングルコア内での処理の並列性を高めることができる点。すなわち、マルチコアで並列化したうえに、さらに、SIMDでの並列性を実現できます。Amazon EC2におけるC4世代のインスタンスは、256bitのSIMD命令であるIntel AVX2をサポートしており、大規模行列演算を高速に実行可能です。

これにより、Closure-Like CGIは、メモリ効率の最大化と並列性の最大化を実現することができます。C++で、古式ゆかしい、プロセスベースのCGIを実装する方式は、かなり奇抜に聞こえるかもしれませんが、CGIの仕組みは極めて枯れて安定したものであるため、高負荷環境においては有効に機能しました。

Separation of Exec/Write

実行と書き込みの分離とは、リクエストへの応答に必要な計算処理と、データベースへの書き込み処理を完全に分離させ、非同期的に実行することにより、ゲームの外側の付加的なプロモーションサービスを起点に発生するデータベース書き込みが、ゲーム本体に影響しないようにする方式です。当然のことながら、メディアチェックインサービスへの負荷が、ゲーム本体のプレイアビリティに影響してはいけません。一方で、メディアチェックインをお使いのユーザ様には、チェックイン結果を直ちにレスポンスすることが求められます。そこで、「チェックインの可否そのものを決定する処理フロー」と、「チェックイン結果を、ゲーム内に反映させるフロー」を独立させ、キューイングシステムで、非同期に疎結合させました。講演では、Amazon Kinesis FirehoseとAmazon SQSを組み合わせ、各ノードから収集したチェックイン成功情報をキューイングし、非同期的にMySQLへ反映する方式を示しました。これにより、どんなに大量のチェックインリクエストが発生しても、ゲームシステムのデータベースが輻輳することはありません。

講演の締め括りでは、急激に成長するビジネスの現場においては、スケーラビリティの達成方法をサービスのモデルに合わせて柔軟に構築する、“システム・アーキテクチャ設計”が最も重要なファクターであることを再確認し、Cygamesでは、今後もクラウドを活用し、最高のコンテンツを安定したプレイ環境で、グローバルに提供していくことを示しました。

Cygames Researchでは、そのコンテンツ開発を支えるための次世代の技術開発を大学・企業と連携しながら推進していきます。

最後に、Cygames Researchでは、一緒にこのような研究を進めていく研究員を募集しています。興味のある方は、是非、下記サイトからご連絡ください。お待ちしています!


【CEDEC 2017 フォローアップ】高品質なアニメーションと低負荷を両立させるShadowverseにおけるアニメーション制作事例 ~カードバトルゲームとして快適にプレイできるUXを実現するために~

$
0
0

こんにちは。アニメーションデザイナーチーム マネージャーの松岡です。

2017年8月29日~31日に開催されたCEDEC 2017にて、30日(木)に「高品質なアニメーションと低負荷を両立させるShadowverseにおけるアニメーション制作事例 ~カードバトルゲームとして快適にプレイできるUXを実現するために~」というタイトルで講演をさせていただきました。講演にご参加いただいた皆さまには、改めて御礼申し上げます。

本講演では、Shadowverseにおけるキャラアニメーション、エフェクト、スクリプトアニメーションの制作手法に関して、高品質と低負荷をいかに両立してユーザーに快適なプレイを届けるかということを主題としてご紹介させていただきました。

まず、当日の講演資料が下記となります。

こちらでは講演内では伝えきれなかったお話や、当日会場でご質問頂いた開発体制に関して取り上げさせていただきます。

キャラアニメーションについて

講演本編では時間の都合上触れませんでしたが、本講演でご紹介した箇所以外にもアニメーションを使用している箇所があります。それが「ストーリーモード」と「プレミアムカード」です。

ストーリーモード

ストーリーモードではバトルと一変して、個別にアニメーションを作成することは行っておりません。目パチ・口パクの制御とジャンプ、シェイクといった簡単なアニメーションを、プログラム側で制御して行っております。制御はバトル中の実装同様にUnityのAnimator(Mecanim)を利用しています。全てのキャラに関して共通で利用可能なので、こちらも大幅な工数削減と共に、全くキャラが動かない演出に比べてよりストーリーに没入して頂けるものになっています。

プレミアムカード

カードイラストがアニメーションするプレミアムカードですがこちらの制作に関しても、アニメーションデザイナーチームが行っています。高品質かつ低負荷であり、効率的にプレミアムカードを制作するための専用シェーダーというものがあり、それを用いて制作を行っています。すべてのカードにプレミアムカードが存在するので、日々新たな表現をユーザーの方々にお届けできるように試行錯誤しております。シェーダーの詳細に関しては、同ブログ内の別記事で特集もされているのでご興味のある方はそちらもご拝読いただければと思います。

http://tech.cygames.co.jp/archives/3009/

エフェクトについて

秒数指定による爽快感の保持

Shadowverseでは演出としての派手さと描画負荷・容量の節約だけでなく、カードのプレイ感を損なわないようにテンポをとても大切にしています。何回も繰り返し遊んでもストレスにならないように、なるべく短く、インパクトと爽快感のある演出を目指しています。具体的には、攻撃エフェクトであれば0.5秒以内、レジェンドの召喚エフェクトであれば1~2秒程度で制作することでプレイのテンポを阻害することなく、爽快感を保持した演出を作成することができています。

スクリプトアニメーションについて

デザイナーがエンジニアリングを行うための土台

アニメーションデザイナーチーム内にはアニメーターとエンジニアという職種が存在しており、どちらの職種に就くかに関しては、本人の希望と技術、プロジェクトの状況を判断して決めていきます。アニメーターとエンジニア両方のスキルを活かして働いている方もおり、どちらの職種でもアニメーションに関することならば、幅広く挑戦できるチーム体制となっています。

その上でアニメーションデザイナーもエンジニアリングを行うための知識が必要と本講演でお話ししましたが、その知識の土台となるものはFlashのActionScriptでした。もともとアニメーションデザイナーチームの前身が、Flashチームという名称で主にAdobe Flash(現Animate)を利用していました。ブラウザゲームが数多くリリースされる中で弊社にもActionScriptによるプログラミングを行えるメンバーがおり、その知識を土台としてネイティブアプリで応用していったという流れがあります。

まとめ

今回の講演を聴いていただいた皆さま、また本記事をご拝読いただいた皆さま、誠にありがとうございました。先日第6弾のカードパック詳細が発表されましたが、Shadowverseではアニメーションに関してもよりユーザーの方々に喜んでもらえるような施策を用意しています。すでにプレイしていただけている方は引き続きお楽しみにしていただき、本講演でShadowverseをご存知になった方はぜひゲームの方もプレイしていただけますと幸いです。

最後にアニメーションデザイナーチームでは、私たちと一緒に最高のアニメーションを制作していく仲間を募集しています。業務範囲は、キャラアニメーション、エフェクト、UIアニメーション、プログラミングなど多岐にわたりますが、その方の適性や最大限に活躍できる業務に集中できる体制になっています。今回の講演や記事をご覧いただき興味をお持ちいただけた方は、ぜひ下記よりご連絡下さい。一緒に最高のコンテンツを作りましょう!

【CEDEC 2017 フォローアップ】Cygames における次世代ハイエンドコンソール向けゲームエンジンの開発 ~最高のコンテンツを支えるゲームエンジン~

$
0
0

こんにちは、 Cyllista Game Engine 統括マネージャーの多胡です。
CEDEC 2017 にて、『Cygames における次世代ハイエンドコンソール向けゲームエンジンの開発 ~最高のコンテンツを支えるゲームエンジン~』というタイトルで講演させていただきました。
講演に参加いただきました皆様には改めて御礼申し上げます。
また会場が早い段階で満員になってしまい、ご迷惑をおかけしました。
参加できなかった方におかれましては本エントリーにて講演内容を確認していただけると幸いです。

当日の資料がこちらになります。

また、公演中に使用したムービーはこちらになります。

Cyllista Game Engine の紹介

エンジン開発ツール cybuild によるテスト駆動開発

Runtime Compiled C++ のデモ

Cyllista Game Engine でのアセットプレビュー

最高のゲームエンジン

講演では、まず、 Cyllista Game Engine の簡単な紹介を行いました。
そして目標としている『最高のゲームエンジン』とは

  • ハードウェアが最高のパフォーマンスを出せる
  • ゲーム開発者が最高のパフォーマンスを出せる

ことであると定義しました。
そして後者の「ゲーム開発者が最高のパフォーマンスを出せる」ようにするための取り組みについて説明しました。

本エントリーではその中でふれたエンジン開発ツールである cybuild について語り切れなかった内容を補足したいと思います。

スライドにもあります通りエンジニアが利用するエンジン開発ツールは cybuild と呼ばれる CUI ツールにすべてを統合しています。

cybuild は GUI ツールではなくてあえて CUI ツールを選択しています。
CUI ツールを選択している理由は作業効率です。
CUI は GUI に比べてとっつきにくい部分はありますが、キーボードから手を離さなくても作業ができるので最終的には効率がよくなります。
そして CUI のとっつきにくさを改善するために行っていることが2つあります。

コマンドのヘルプ

ひとつはヘルプを用意することです。
CUI コマンドのヘルプは必ず用意してコマンドがどういう動作をするのか、どういったオプションがあるのかがすぐにわかるようになっています。

そのために利用しているのが docopt という Python モジュールです。
docopt はヘルプドキュメントから引数のパーサーを生成するモジュールです。
すなわちヘルプドキュメントを書けばそのとおりに引数をパースしてくれます。
docopt を利用することで常にヘルプドキュメントが存在するようにし、またヘルプとコマンドの仕様のズレが生じないようにしています。

cybuild-help

コマンドプロンプトでのタブ補完

もう一つはコマンドプロンプトでのタブ補完の機能です。
Windows のコマンドプロンプトでは標準の状態では柔軟なコマンドの補完ができません。

そこで clink というソフトウェアを導入しています。
clink はコマンドプロンプトでタブ補完を行ってくれるソフトウェアです。
lua でルールを記述することでコンテキストに基づいた補完候補の内容をカスタマイズできるようになります。
たとえば cybuild と打ったあとでタブを押せば cybuild の全コマンドの候補が表示されるようになっています。
また、モジュール名を要求されている場面ではモジュール名のリストがタブ補完の候補になるようにしています。

cybuild-completion

最後に

Cygames では一緒に最高のゲームエンジンを制作し、さらにはそのエンジンを利用して最高のコンテンツを作るメンバーを募集しています。
詳細につきましては、こちらをご覧ください。

【CEDEC 2017 フォローアップ】ユーザを飽きさせない高頻度の更新を可能にする開発運用ノウハウ ~ハイスピードな開発、リリースを実現するために~

$
0
0

こんにちは。クライアントサイド エンジニアリーダーの鈴木です。

2017年8月29日~31日に開催されたCEDEC2017にて、30日(木)に「ユーザーを飽きさせない高頻度の更新を可能にする開発運用ノウハウ〜ハイスピードな開発、リリースを実現するために〜」というタイトルで講演をさせていただきました。
講演にご参加いただいた皆さまには、改めて御礼申し上げます。

本講演では、ハイスピードで開発からリリースまでのサイクルを実現するための手法をプロジェクトの実例を交えながら紹介させていただきました。

まず、当日の講演資料が下記となります。

こちらでは講演内では伝えきれなかったお話や、当日会場でご質問いただいた内容に関して説明させていただきます。

データ検証の実用例について

今回の講演では、DSLによる恩恵が最も大きい部分である「データ間参照の制約を簡単な記述で実現することができる」という点に比重を置いて説明させていただきましたが、実際には単純な設定値の検証等においても活用しています。

例えば、クエストの報酬に関してタイトル内でルールが定められているケースがあるとします。

参考画像1_クエストにおける報酬設定

参考画像2_csv構成

この様な場合、このデータに関する制約もDSLで設定し検証を行っています。

まずはDSLに記載するためのルールを明確に定めます。
この例では、下記の様なルールになります。

  • 通常クエストでは1つの章は4つのクエストで構成されている
  • 最後のクエストをクリア(章をクリア)すると特定のアイテムがもらえる
  • このルールは通常クエストのどの章においても共通のルール

それでは、この例に沿ってDSLを記載してみましょう。

参考画像3_検証用DSL

DSLは上記の形となります。
これも一例でしかありませんが、この様にDSLを用いて主に「設定値」、「バランス」、「データ間参照」という観点で各種データに制約を定め、検証を行っております。

このDSLによる検証システムはリリースに関する不具合ゼロを目的として開発、導入したのですが、結果としては本番環境での不具合だけではなく、開発中の「データの不整合でエラーが発生し、開発が滞る」というケースへの対策にもなっており、開発効率としても大きな成果がありました。

検証システム以外での運用改善

今回は運用改善の為のメインテーマとしてテスト強化に貢献したDSLの検証システムを紹介させていただきましたが、これ以外にも高頻度リリースを実現する為の改善を重ねてきました。
それらの改善項目についても、簡単にはなりますが紹介させていただきます。

参考画像4_DSL以外の運用改善

DSL以外の上記の項目に関しても改善を重ね、高頻度更新でも問題なく実現できるような環境と体制を整備しました。

講演の冒頭でも触れさせていただきましたが、運用タイトルにおいて、そのタイトルの面白さは運用における更新内容とスピード感にも非常に左右されるものと思います。
その為、Cygamesでは「最高のコンテンツを作る」という目標のもと、開発時だけではなく開発しリリース後の運用も非常に力を入れて取り組んでいます。

最後に今回の講演にご参加いただいた皆さま、また本記事をご覧になられた皆さま、誠にありがとうございました。今回のCEDEC 2017における講演、また本記事が運用で課題を抱えている方の力となれば幸いです。

Cygamesでは、共に最高のコンテンツを目指すエンジニアの仲間を募集しています。今回の講演や記事をご覧いただき興味をお持ちいただけた方は、ぜひ下記サイトよりご連絡下さい。一緒に最高のコンテンツを作りましょう!

【PHPカンファレンス2017 フォローアップ】グラブル流運用術〜1700万人を満足させるためのシステム構成、PHPプログラムの考え方〜

$
0
0

こんにちは。サーバーサイドエンジニアの石田です。

2017年10月8日に開催されたPHPカンファレンス2017にて「グラブル流運用術〜1700万人を満足させるためのシステム構成、PHPプログラムの考え方〜」というタイトルで講演させていただきました。講演にご参加いただいた皆様には、改めて御礼申し上げます。

発表資料は下記になります。

発表した内容について

今回の講演では、大量のアクセスがあるグランブルーファンタジーのシステムを調査し、「グラブルのシステムをもっと早くする!!」という目標に絞り、実際に改修した事例につき具体例をあげながら説明いたしました。

簡単に講演内容をご紹介します。まず、改修する箇所を特定するために、処理の重いAPIはどれか調査しました。バトルのAPIが大きな負荷を与えていることがわかりましたので、バトル中の処理を見直したところ、スキル計算処理がメモリを消費し処理時間も長いと判明しました。
さらにプロファイラを用いて処理を分析し数値を見ると、CSV取得処理のcall数が多く処理時間が長いこともわかりました。そこで具体的な改修箇所を「スキル計算の高速化」と「CSVの取得処理の効率化」に絞り込みました。
そのために中間データのキャッシュ化という方針を立て実際の改修を進めました。

本講演でお伝えしたかったことを一言でまとめると、重い処理はキャッシュ化すると処理を改善できるということに尽きます。高トラフィックのシステムを運用している方なら当たり前に感じる事かもしれませんが、その「当たり前のことを当たり前にやる」Cygamesの文化が少しでも伝われば幸いです。

発表を終えて

CSVの取得処理部分で説明が不足していた部分があり、質問をいただきました。
この場で回答させていただきます。

1. なぜマスターデータの多くはCSVファイルなのか?

「マスタデータは多くのCSVファイルから構成されている」と紹介しましたが、なぜCSVファイルかという質問をいただきました。これは、マスターデータは主にゲームプランナーが作成しており、仕様書はExcelを利用していることによります。そのため使い慣れているExcelで入力してもらい、VBAでCSVファイルに変換しています。

2. local memcachedとlocal redisをflushするタイミングについて

local memcachedとlocal redisをflushするタイミングがいつかという質問をいただきました。こちらはグラブルのリリースの仕組みと合わせて説明いたします。
webサーバ内に本番のバージョンのリポジトリと、次のリリースのバージョンのリポジトリの2つを持ち、シンボリックリンクの向きを切り替えてリリースを行っています。シンボリックリンクの向きを変えてリリースが完了し、システムソースが切り替わったタイミングで、バッチ処理を用いて各webサーバ内でflush allコマンドを実行させています。

今後について

グランブルーファンタジーのシステムは、まだまだ改善できるところがあります。今後も改善を続けて、より良いコンテンツを皆様にお届けできるよう日々精進してまいります。

Cygamesでは、一緒に最高のコンテンツを作るメンバーを募集しています。
詳細は、こちらをご覧ください。

【技術職】10月・学生向けCygames MeetUp のお知らせ

$
0
0

こんにちは。技術研修・育成チームの山本です。

私たちは学生の皆さんや新卒で入社した社員が圧倒的に成長できる環境・場を実現すべく日々脳みそをフル回転させています。

本来であれば、普段私たちがいかに壮大なミッションに挑んでいるのかを、紙面の限りを尽くして熱く語りたいわけですが。そんなことをすると、主目的であるお知らせのスペースが枯渇するため止めておきましょう。
その代わり今回は本業から少し離れて、私が趣味で、、、いや仕事で取り組んでいる「CPU制作」の話をします。

突然ですが、「CPUってなーに?」と訊かれたらどう答えますか。

「パソコンの頭脳だよ」
一般人の発想ですね。

「レジスタの集合体だよ」
相当お詳しいですね。

「命令をフェッチして、デコードして、実行して、結果を格納するもの」
パタヘネ本の読者に違いないですね。

もちろん、どれも正解です。
私はソフトウェアエンジニアですが、正直今の時代、低レイヤー(OSやCPU)を意識すべき場面はそう多くありません。
Garbage Collectionによるスパイクを無くしたいとか、TCPコネクションを張りすぎてローカルポートが枯渇したとか、Load Averageの正確な意味を知りたいとか、、、あれ、意外と意識する場面ありますね。笑

まあ、しかし一番の動機はやはり、基本の仕組みをぜんぶ理解したい、という気持ちなわけです。
数研出版のチャート式という素晴らしい参考書がありますが、このまえがきで「近道よりも、汗をかく道」という教えが載っています。
「CPU制作」も全く同じだと考えます。業務に直結する知識は重要ですが、時にはちょっと寄り道して基礎を磨いてみる。これも案外楽しいものです。

そんな想いで、私は今日も回路図を眺めて興奮しています。

さて、前置きが長くなりましたが、今回の主目的(?)である新企画、Cygames MeetUpの紹介をします。

Cygames MeetUpとは「軽食を食べながら学生の皆さんとウチの若手エンジニアでワイガヤ話そう!」という企画です。

概要は下記をご確認ください。

■日時
10/23(月) 12:00 〜 13:00

■場所
〒150-0036 東京都渋谷区南平台町16番17号
住友不動産渋谷ガーデンタワー15階

■テーマ
「若手エンジニアと話そう」
若手エンジニアを囲んで、軽食を食べながらの座談会を実施します。
座談会後には、ゲーム大会も予定しております。
ゲーム会社の社員とのガチンコ対決をしたい方のご参加もお待ちしています!

■内容
1. 現場社員を含めた座談会(軽食をご用意いたします。)
2. 社内見学
3. ゲーム大会(希望者のみ)
※内容は予告なく変更となる可能性がございます。

■参加対象者
大学生、専門学校生、高専生で、ゲーム業界やCygamesに興味のある方
※社会人の方、高校生以下の方は、対象外となります。
※応募者多数の場合は、抽選とさせていただきます。

皆さんのご参加をお待ちしています。
最後までお付き合いいただきありがとうございました。
MeetUpへの参加申込は下記よりお願いします。

【CEDEC 2017 フォローアップ】Cygamesゲーム開発者が作るゲーム開発のための教科書

$
0
0

みなさんこんにちは、Cygames にてシニアゲームエンジニアを務めている金井と申します。

9月1日に開催された CEDEC 2017 にて、ゲーム開発者が作るゲーム開発のための教科書 〜ブラウザ、ネイティブ、コンシューマ全てに共通するゲーム開発技術を書面化するための取り組み〜 という題名で講演をさせていただきました。聴講していただいた皆さま、ありがとうございました。

当日の講演においては、教科書プロジェクトの運営とその成功のポイントについてご紹介いたしました。

その後もプロジェクトは順調に継続しており、3部に分かれた教科書プロジェクトの講義のうちコンピューター基礎編については8〜9月で 150 人程度が参加しています。

この講義に使用している資料ですが、「ぜひ教科書を公開してほしい」という要望を頂いております。1部あたり100ページ程度あり全てを公開することは難しいのですが、コンピューター基礎編でどのような説明を行っているか、内容の一部を公開しつつ解説したいと思います。

講演でも触れましたが、教科書プロジェクトの講義は Cygames 社内で作成したスライドを元に行っており、コンピューター基礎編の資料は大きく以下4つのパートに分かれています。

  • ハードウェアとソフトウェア
  • ブラウザアプリとネイティブアプリ
  • 3D の基礎知識
  • ゲームエンジンとワークフロー

ハードウェアとソフトウェア

教科書プロジェクトの最終的なゴールは「ゲームコンテンツに利用されている 3D グラフィックスの理解を進めること」にあるのですが、コンピューターの構成やソフトウェア動作の基礎的な要素、スマホやコンシューマー機でのゲーム開発に必要な知識を事前に得ておくと、総合的な理解がより進みます。

このパートでは、CPU や GPU といったハードウェアの要素、そこで動作するソフトウェアの基礎、そしてゲームの処理負荷計測の指針についてどう決定していくか、FPS などの例を踏まえて説明しています。

ブラウザアプリとネイティブアプリ

Cygames では、ブラウザアプリやネイティブアプリ、コンシューマータイトルなど、様々なゲームコンテンツを開発しています。社内的にはブラウザアプリの経験者も多く、またプログラマ以外のスタッフから見ると、ブラウザアプリとネイティブアプリの違いが理解できていない事もあるため、この2つの特徴と差異について具体的に説明します。

またブラウザアプリとネイティブアプリではリソース関連の取り扱いが大きく異なるため、リソース的に配分が多くなる傾向があるテクスチャについて、画像フォーマットや圧縮形式について重点的に説明する必要があります。3D グラフィックにおいてテクスチャはほぼ必須となり、またネイティブアプリやコンシューマータイトルでは GPU 依存のテクスチャフォーマットを利用する傾向が強いため、なぜそのようなフォーマットを利用するのか、利用する上での注意点などをピックアップして説明しています。

3D の基礎知識

前述の内容で3D グラフィックス理解に必要となる知識はインプットできたはずなので、ここから3D の基礎知識について説明に入ります。まず3D にすることの利点について見解を述べ、その利点の詳細を説明しています。

具体的には、3D グラフィックスの導入にあたり利点となりうる以下3点について、より詳細を説明しています。

  • ポリゴンを移動、回転させることでカメラワークやモーションといった様々な動きを表現 できること
  • シェーダーによりさまざまリアルな表現が可能になり、またトゥーンといった表現も可能 になること
  • 構成要素が多く、分業が可能になっていること

ゲームエンジンとワークフロー

3D グラフィックスのデータ作成フローは複雑なため、どのような役職があり、また作業の流れがどうなっているかの説明を行っています。

Cygames 社内のゲームコンテンツ制作においてはゲームエンジンを利用することが多いため、ゲームエンジンを利用した際のワークフローについても触れ、スライドは終了となります。

ここでスライドは終了となりますが、3D グラフィックスのワークフローや、より高度な3D グラフィックのトピックについては説明しきれていません。

1回の講義ですべてを説明することは時間的に難しく、また聴講者の負担にもなります。そういった点を配慮し、3D グラフィックスワークフロー編、3D 基礎技術編と講義を分割して開催を行っています。


以上、教科書プロジェクトで利用している内容の一部を解説させていただきましたが、いかが
でしたでしょうか。

同様の試みを行っている方のご参考になれば幸いです。

【CEDEC 2017 フォローアップ】キャラクターらしさ学習AI:多数のキャラクターの個性や違いの可視化による シナリオライティング支援システム事例

$
0
0

こんにちは。Cygamesでリサーチャーをしております都築です。

2017年8月30日~9月1日にかけて開催されたCEDEC 2017にて、「キャラクターらしさ学習AI:多数のキャラクターの個性や違いの可視化によるシナリオライティング支援システム事例」というタイトルで講演させていただきました。講演にご参加いただいた皆様、タイムシフトでご視聴いただいた皆様、大変ありがとうございました。

講演で使用したスライドを以下に公開いたしました。当日は紹介できなかったスライドもございますので、会場に来場いただいたかたも、そうでないかたもご覧いただけますと幸いです。

本講演では、組織的シナリオライティングにおいて監修者への負荷が集中することにより、各ライターへのフィードバックに遅延が生じ、開発効率と品質向上のためのボトルネックになってしまう問題点を解決するためのシステムとして弊社で研究を進めております「キャラクターらしさ学習AI」を紹介しました。本システムは、キャラクターの「発話内容・好み」と「話し方・口調」の二つの側面からキャラクターの個性を抽出し、可視化することでライター自身によるテキストのクオリティチェックを可能にすることにより、監修者への負荷集中の緩和を図るものです。本システムを実現するための技術的概要と支援例を講演では説明させていただきましたが、25分という時間の都合上駆け足になってしまった箇所もありました。本記事では講演中に伝えきれなかった箇所について補足いたします。

学習モデルについて

本システムでは、既存の台詞データから文中の要素について「キャラごとの発話頻度」と「要素の発話者数」の二つの要因から、実際にキャラらしさへどの程度影響を与えているのかを計量します。分析対象のキャラクターは時に数十人以上にも上りますが、計量した各要素の影響度から、キャラクターの特徴を反映した識別器(ベクトル空間)を、全キャラクター分それぞれ生成することで、多数のキャラが登場するようなシナリオデータの分析においても、ユーザが入力したテキストのキャラクターらしさを精度よく測定することを可能としています。

この方式の持つ利点として、ニューラルネットワークやサポートベクターマシンなどのいわゆる機械学習アルゴリズムと異なり、「特徴量ごとの影響度が容易に理解できる」というものがあります。ユーザが入力した台詞に対する評価を自動計算しフィードバックするという執筆支援を行う上では、入力した台詞のどの部分が良い/悪いのかが、ユーザにとって理解しやすいことはクオリティ改善のスピードを向上させる上で不可欠です。

台詞データと一般常識の統合について

台詞データだけでは学習できない「一般常識」をAI内に組み込むことで、キャラクターらしさの精度向上を図るという工夫についても紹介させていただきました。この工夫により、「直接言及していないが、発話していてもおかしくなさそうな単語の推定」や「話し方の特徴とすることは不適切な言回しのフィルタリング」を行うことができます。これらの機能により例えば、「野球」の発話回数が多いキャラは「ホームラン」もいいそうだから「ホームラン」もこのキャラらしい発話内容に含める、「野球」は文字列としては何度も発話しているが一般的な単語なので口調の特徴から外す、といった判断を自動で行えるようになります。

まとめ

改めまして、講演をご覧いただいた皆様、本記事を読んでいただいた皆様、誠にありがとうございました。キャラクターらしさ学習AIはまだまだ発展途上の段階ではありますが、講演内容と本記事が皆様に何らかのヒントや刺激を与えられたなら幸いです。

最後に、Cygames Researchでは、自然言語処理を含めた先端技術の研究開発から、ゲーム業界を盛り上げていく研究員を募集しております。興味のある方は、ぜひ下記リンクをご覧ください。


【CEDEC 2017 フォローアップ】本当にリアルなMixed Reality コンテンツを実現する為の技術開発

$
0
0

こんにちは。コンシューマー統括マネージャー 和泉澤です。

2017/9/1(金)、CEDEC2017にて、「本当にリアルなMixed Reality コンテンツを実現する為の技術開発」という講演を行いました。

当日、講演へお越し頂きました皆様、誠にありがとうございました。

以下は、講演のスライドです。

本講演では、下記の5つのトピックについて解説しました。

  • Mixed Reality デモと、その基礎制作技術
  • リアルなMixed Realityコンテンツとは?
  • コンテンツに合ったデバイス特性
  • 高度なHololens活用技術
  • デバイス非依存へ。真に汎用的な解法

講演資料のそれぞれのトピックを解説し、
最後に講演内ではお話しできなかったテーマについても紹介します。

Mixed Reality デモと、その基礎制作技術

まず、講演に先駆けて弊社で開発した2つのMRコンテンツのデモをご覧いただきました。
いずれも、単に既存のデバイスを使用するだけでは、実現する事の出来ない表現を行っています。

現実世界へ正確にオクルージョンされ、現実のライトが仮想空間内のオブジェクトを照らし、そして、そのコンテンツを複数人で共有出来るというものです。

こうしたデモを作成するにあたり、準備段階として現実空間のメッシュ化を行いました。
その手法について解説しています。

リアルなMixed Realityコンテンツとは?

そもそも、リアルなMixed Reality コンテンツとはどういったものを指すのでしょう。
明確な定義が存在している訳でもなく、指針もありません。
研究開発を進めるにあたり、我々はこの定義を明確化しました。
そうした点について解説しています。

コンテンツに合ったデバイス特性

一口にMRデバイスと言っても、様々なタイプの機種が存在しており、
コンテンツの内容に合ったデバイスを選択するという事は、大変重要な点です。
ここでは、その選択基準について解説しています。

高度なHololens活用技術

デモを制作するにあたり、Hololensの標準機能だけでは実現出来ない表現が多くありました。
先述の通り、現実世界との正確なオクルージョン、現実のライトが仮想空間内のオブジェクト照らし、そして、そのコンテンツを複数人で共有出来るというものです。
これらについて、その具体的な技術を解説しています。

デバイス非依存へ。真に汎用的な解法

更に、そのHololensへすら依存せず、真に汎用的な技術についても研究のゴールを設定しました。
本講演におきましては、Hololensで動作しているコンテンツを、
一般的なスマートフォン単体にて表現する事の出来る技術も、併せて開発しました。
この技術について、具体的な手法を解説しています。

講演では語りきれなかった事

最後に時間の都合上、触れることが出来無かった点を幾つかご紹介します。

まず、現実のカメラの移動へ連動し、仮想空間内カメラの位置姿勢情報が離散的に変化していく様子は、六自由度それぞれの変化を可視化するという形で、その詳細な数式を示すことが出来ませんでした。
こちら、本デモにおいて実際に行っている数式をご紹介します。

また、Hololensにおけるジェスチャー入力そのものは良い機能でありますが、現時点では開発オペレーション上のツールとしての効率は高くありません。我々は、Bluetoothデバイスを接続しこの改善をはかっておりました。
簡単に実現することができ、大きく効率が改善されるアイディアであり、おすすめです。

まとめ

一口にMixed Reality コンテンツと言っても、その制作手法やデバイスの選定基準は様々です。
MR黎明期といっても差し支えの無い現在において、様々な技術が続々と生み出されています。
いざコンテンツ制作を行う際に、適切なアプローチが出来るという事が肝要であり、
本講演がその助けになれば幸いです。

尚、本システムのアーキテクチャは Sensing-by-Overlayingとして、
IEEE International Symposium on Multimedia(IEEE ISM)にて発表しております。
IEEE ISMは、マルチメディアに関するメジャーな国際会議の一つです。
併せて、ご覧頂けましたら幸いです。

Cygamesではゲーム開発を支える様々な技術研究にも取り組んでいます。

技術研究に興味があるかたは、Cygamesで一緒に働きませんか?
採用情報はこちらです。

【社内勉強会】スキルサーズデーに社外講師として堂前嘉樹さんをお招きしました

$
0
0

はじめに

こんにちは! クライアントサイド統括マネージャーの古閑です。
今回はCygames社内で行われているエンジニア向け勉強会のお話です。

Cygamesでは毎週木曜日にエンジニア向け社内勉強会「スキルサーズデー」を開催しています。
詳しくはこちらの記事をご覧下さい。
そのスキルサーズデーですが、2014年10月に第一回が開催され、ついに2周年を迎えることに!

これを機として更に活性化したいという思いもあり、新しい試みとして社内からの声も多かった「社外講師を呼べないか?」というのを検討する事になりました。
そして11月2日。
初の社外講師として株式会社ロジカルビート代表取締役の堂前 嘉樹さんをお招きしての開催となりました!

開催準備

内容はクライアントサイド向けでしたが、サーバーサイド・インフラ・デザイナーなど多数集まり最終的には80名ほどに。
話が広がりデザイナーさんも参加してくれたのはうれしい限りです。
大阪Cygamesとも中継を繋いでいます。

skill01

そして初の開催という事で準備に不慣れな所も多く、椅子並べなども有志を募って手伝ってもらったりも。
みんなで作り上げる勉強会ですね!

開催

堂前さんはグラフィックス関連の講演も多数行われているのですが、グラフィックス関連で初心者向けから一歩踏み込んだ内容は可能ですか という事で相談させていただきました。

ポストフィルタ論

ポストフィルタの基本的な話から、バイリニア、ガウシアンフィルタの理解を深めるための話まで、丁寧に説明していただきました。
堂前さんにとって、この分野について社外で話すことは余り無かったそうです。
貴重なお話ありがとうございます。

ロジカルビート様のブログもご確認ください。

まとめ

今回は社外講師を招いての開催でしたが、社外の方の視点からの講演を聞くと言うことは、社内勉強会の活性化のみならず、聴講者にとっても良い刺激になったのではないかと思います。

アンケート結果でも

  • とても分かりやすくて是非実践してみたくなる内容でした!
  • バイリニアの理解をより正しく理解することができました
  • 非常に理解しやすい説明で、ポストフィルタの初歩的な部分が理解できました

などの声もあり、初の試みでしたが聴講者や堂前さんの協力もあり大成功で終えることができました!
堂前さん、登壇を快諾してくださり、ありがとうございました!

今後もスキルサーズデーでは講師をお招きし開催していく予定です!

【Developpers Summit 2018フォローアップ】Shadowverseのリリースサイクルを支える運用基盤:高頻度リリースを実現する為の自動化・効率化事例

$
0
0

こんにちは。Shadowverseでサーバーサイドを担当している岸本です。

2月16(木)、Developpers Summit 2018にて「Shadowverseのリリースサイクルを支える運用基盤」という講演を行いました。運営の皆さま、また講演にご参加いただいた皆さま、ありがとうございました。

この講演では、Shadowverseというゲームタイトルの運用に際し、開発側で大きな課題となっている「カードの組み合わせ」のデバッグに関して、私たちが試みた施策をご紹介しました。ここでは、その内容を振り返ってみたいと思います。

講演の内容

まず、Shadowverseについて簡単に説明しておくと、Shadowverseはデジタルカードゲーム(DCG)と呼ばれるジャンルのゲームです。プレイヤーは1000枚を超えるカードの中から40枚を選んで「デッキ」を編成し、相手プレイヤーと対戦します。

多種多様なカードの組み合わせパターンが存在するのがShadowverseの面白さにつながっているのですが、開発側としてはそれが悩みの種でもあります。というのも、カードの組み合わせに破たんがないかどうか、リリース前にすべてチェックする必要があるからです。つまり、カードの種類が増えれば増えるほど、その作業が大変になるのです。

ちなみに、そのカードの組み合わせ総数がどれくらいあるかというと、「約4京」です。英数字で書くと約40,000,000,000,000,000。途方もない数字で、当然ながらこれだけの組み合わせを人力でデバッグするのは不可能。そこで、この作業を自動化しようという発想から導入したのが、自動デバッグツールのBotverse(ボットバース)です。

講演では、このBotverseの具体的な仕様と、その性能評価についてご紹介しました。詳細については、下に掲載した講演のスライドをご参照ください。

Botverseの「祭壇」がなぜ必要か

講演でもご紹介しましたが、Botverseを稼働させるにあたり、私たちは自動デバッグ用のスマホ端末をズラリと並べた棚を設置しました(この棚を「祭壇」と呼んでいます)。なぜこんなものをわざわざ作ったかについて、少し補足しておきたいと思います。

祭壇(自動デバッグ用のスマホ端末をズラリと並べた棚)

祭壇(自動デバッグ用のスマホ端末をズラリと並べた棚)

上の写真にあるように、「祭壇」では動作中の画面が見えるようにしました。デバッグの実行だけなら画面を表示する必要はないのですが、チーム内にデバッグへの意識を浸透させるため、あえて画面が見えるかたちにしました。

ゲーム開発においては、コンテンツをいかにストレスなくプレイしてもらえるかどうかが、死活的に重要な意味を持ちます。どんなに創意工夫に富んだコンテンツを作っても、それをユーザーに楽しんでもらえなければ意味がないからです。バグのあるタイトルをリリースするということは、ユーザーにゲームを十分にプレイしてもらえないリスクが生じるということ。これは絶対に回避しなければなりません。

上記を踏まえ、「祭壇」は、デバッグの重要性を開発チーム全体で共有するために作りました。Botverseはテスト結果やエラー内容を社内SNSに流す機能を備えていますが、そうしたレポートのみでは、どうしてもほかの作業に埋もれてしまい、デバッグに対する意識を高く保ち続けることは困難です。そこで、デバッグしている端末を視界に入る場所に置き、その様子を日常的に目にすることで、チーム全体がデバッグに自然と意識を向けられるようにしたわけです。

最後に

最後までお読みいただき、ありがとうございました。

今回ご紹介したBotverseは発展途上のツールであり、改善できるところがまだまだあります。私たちは最高のコンテンツをユーザーに届けるために、今後も改善を続けて効率化をさらに進めていきます。

本講演は、作業の自動化・効率化が焦点でした。自動化できる部分をとことん自動化していき、それによって生まれたリソースを「ゲームをいかに面白くするか」というチューニングの部分に回すことができれば、同じコストでより質の高いコンテンツを作ることができます。単純作業はツールに任せ、開発チームは「考える」作業に専念できる、そんな環境を目指したいと思っています。

本講演がソフトウェア開発に携わる皆さまの気づきや刺激になれば幸いです。私たち開発チーム一同、ユーザーの皆さまに最高のコンテンツをお届けできるよう、日々励んでいきます。

GDC 2018 視察!社内報告会と世界が注目する場で研究成果の発表を行いました。

$
0
0

みなさまこんにちは。Cygames執行役員 兼 技術本部 副本部長の中村です。

去る3月19〜23日、米国カリフォルニア州サンフランシスコで「Game Developper Conference 2018」(GDC 2018)が開催されました。ご存じの通り、GDCは世界中のゲーム開発者が注目する、世界最大規模の国際会議です。今回当社からは、エンジニアやクリエイターなど10名以上から成る視察チームを編成しGDCに参加してきました。

GDCは年々勢いを増しています。今年は5日間で750本のセッション、ブース展示や各種表彰などが実施。延べ2万5000人以上のゲーム開発者や関係者が参加する巨大イベントとなりました。

名物となっているポストモーテムも相変わらず大盛況で、「Unity」や「Unreal Engine」といったゲームエンジン関連の発表も活気に満ちていたほか、XR(VR/AR/MR)といった技術も進化を見せていました。

ちなみに、ポストモーテムというのは「事後検証」と訳されることが多いですが、開発者によるサービスリリース後の振り返り、あるいは公開反省会のようなもの。開発過程やリリース後に得た気づき、課題などを赤裸々に語ることで、業界全体のクオリティ向上を目指す、きわめてオープンな取り組みです。

視察チームの面々は、上記のようなGDCの各イベントに参加したほか、近郊のゲーム会社を訪問したり、GDCの参加者が集まるさまざまなパーティに出席したりと、充実した5日間を過ごしました。

そして、現地で入手した知見を社内に共有すべく、社内報告会を4月16、17日の2日間にわたって実施しました。

研究成果を世界に向けてプレゼン

実は今回、当社では視察だけでなく、公募セッションの講演者として、研究発
表も行いました。当社の社内研究所である「Cygames Research」の所長・倉林 修一が、「AIを活用したデバッグ」(AI-Driven QA)と題して、ディープラーニング技術を用いてデバッグを効率化する技術についての1時間の講演を行いました。

※セッションの内容は「GDC Vault」で視聴可能となっていますので、アカウントをお持ちの方はぜひご覧ください。

今回、公募セッションに応募した理由は、日本のゲーム業界から世界に向けて、面白い技術やチャレンジを発信していくことが重要だと考えているからです。
日本には、海外の開発者と比較しても優れた技術が存在しますが、英語での情報発信が活発でないために、世界の技術開発の流れの中でポジションが取り難い状況です。

そこで、Cygames Researchでは、学術的な国際会議のみならず、GDCのような開発者会議でも積極的に発表を行い、日本のゲーム業界のプレゼンスを少しでも高めていきたいと考えています。これからも、様々な形で世界へ向けて日本のテクノロジーを訴求してまいります。

視察の成果を共有すべく、社内報告会を実施

視察チームの各スタッフは、自分の専門分野のセッションを視聴し、最新の技術動向や知見を得てきました。情報を入手することも大事ですが、それ以上に大きかったのは、現地に足を運ぶことで、最先端を行くゲーム開発者たちから刺激を受け、また世界各地の熱意ある開発者たちとのつながりを得られたことです。

今回、社内報告会を実施したのは、そんな刺激を広く社内で共有したかったからです。そうすることで、より多くのエンジニアやクリエイターの成長につなげたいと考えました。

最後に

Cygamesが掲げる信条のひとつに、「良いアイディアは圧倒的なインプットから生まれる」というものがあります。GDCで得てきた、世界トップクラスのエンジニアやクリエイターたちの知識・知見は大いなるインプットとなるでしょう。

社内のスタッフたちも、視察チームが持ち帰ったものから少しでも学ぼうと貪欲です。報告会は、部署や職種を問わずに希望者を募るかたちにしたところ、2日間で延べ300人以上が出席する大盛況ぶりでした。

今回のGDCでは、社内報告会を開催し、熱意のあるスタッフが大勢集まっていることを再認識することができました。このような環境で働けることは本当に素晴らしいと感じます。
最高のコンテンツ作りに役立てられるように、来年以降も同等以上の規模の視察チームの派遣と、セッションを行いたいと考えています。

【Unite Tokyo 2018 フォローアップ】運営中コンテンツにおける大型アップデート成功のための考え方とUnity最適化手法

$
0
0

みなさんこんにちは、Cygames にてシニアゲームエンジニアを務めている金井と申します。

5/9に開催された Unite Tokyo 2018 にて、「運営中コンテンツにおける大型アップデート成功のための考え方とUnity最適化手法」という題名にて弊社の稲田と共に講演を行いました。聴講していただいた皆さま、ありがとうございました。

講演資料の公開と講演後に会場にて多数のご質問をいただきましたので、フォローアップという形になりますが、可能な限りご返答したいと思います。

大型アップデート開発の人数規模はどれくらいですか?

プロジェクト全体での具体的な人数は挙げられないのですが、アップデート作業に従事したプログラマは7人程度です。

3ヶ月と短い開発期間で、どのようなフローで最適化を行ったのですか?

流れとしては、高品質版のルック開発を先行して行い、その後に高品質版が安定して動作する端末のスペックを検証して動作保証できる端末の大まかな目安を付けます。その後、処理負荷計測等を行いチューニングを行っていきます。
ただ、大型アップデートで追加したすべての機能を利用すると処理負荷が非常に高くなるため、利用される現実的な組み合わせを何点かピックアップし、それを元に計測とチューニングを行っています。

モデルの修正が多数入ったと思われますが、修正や追加を行ったデータの品質管理はどのように行ったのでしょうか?

リリース時と同じフローでチェックを行い、品質を担保してます。
アーティストによるDCC上でのチェック、QAによるチェック、ツールによる自動チェック(例えばコリジョンデータのエラー検出)など、一般的なことを行いました。チェックコストは大きくなりますが、大型アップデートの規模を考えると、必要なコストだったと感じています。

シャドウマップのアルゴリズムはどのような物ですか?

一般的な投射テクスチャマッピングを使用しており、カスケードシャドウのような特別なことは行っていません。検証期間中は距離減衰等もテストしましたが、作業時間の兼ね合いからオミットされています。

キャラクターモデルのスペックアップについては行われたのでしょうか?

頂点数が増加しており、主に肩や肘のポリゴンが分割されています。アニメーションの互換性を保つため、補助ボーン等については導入を見送っています。

ETC2フォーマットはiOSで使えないのでは?

その通りで、ETC2フォーマットは主にAndroidプラットフォームでの利用となります。ASTCフォーマットも選択肢として考えられますが、対応している端末数が読めないため、ETC2を採用しています。

リポジトリの管理はどのように行っていますか?

アプリ本体とアセットバンドル化されるフォルダ以下を別リポジトリ化して管理しています。同一リポジトリでの管理は、push/pull時の手間や、アセットバンドルビルド時の手間があり、アセット数によっては非現実的となるためです。

以上、いただいたご質問への返答となります。
みなさまのご参考になれば幸いです。

Viewing all 78 articles
Browse latest View live