Amazon Web Services ブログ

Category: Game Development

Perforce Helix Core を AWS 上に構築する (Part2)

イントロダクション 前回の記事では AWS 上で Perforce Helix Core を構築することの利点を説明し、実際の構成パターンと構築における注意点を解説しました。 本記事では、実際に Perforce Helix Core をAWS に構築する手順をご紹介します。手順といっても AWS CloudFormation テンプレートを用意しておりますので、大部分は自動化されています。AWS CloudFormation では、設定をjsonやyamlでファイルに記述するだけでAWS のリソースのプロビジョニングを自動化することができます。 今回作成するサーバー構成の全体像は下図のようになります。AWS Cloudと書かれた中にあるサーバ群を設定します。デフォルトは Perforce の Master Server だけを構築する設定になっていますが、手順の中で Read only の Replica server を設定することも可能です。今回はインターネットから直接アクセスできるPublic Subnetにサーバーを配置していますが、Private Subnetにサーバーを配置して、VPNや AWS Direct Connect を介してオフィスやデータセンタのみからアクセスできる閉域にすることも可能です。 本記事では、まずは Perforce の Master server を構築する手順を見ていきます。次の Part3 の記事で、Replica server の構築手順を紹介します。Replica server の設定では、いくつか手動でコマンドを実行していただく必要があります。 なお、今回構築する Perforce Server への接続には […]

Read More

Perforce Helix Core を AWS 上に構築する (Part1)

みなさんお元気ですか? 今年からゲーム開発のコンサルティングパートナーや ISV といったテクノロジーバートナーと AWS との連携強化を担当している AWS ソリューションアーキテクトの保里 善太です。 ところでみなさん、Perforce Helix Core はお使いですか? Perforce は高速な同期操作を特徴とする商用のバージョン管理システムであり、主にゲーム業界等の開発現場で多く利用されています(導入企業)。 多くの現場では Perforce はオンプレミスのマシンで稼働していますが、この記事では AWS 上で Perforce を構築することの利点を解説し、実際の構成案と構築方法を紹介します。構築にあたっては AWS CloudFormation テンプレートも用意しています。Perforce の導入にあたっては無料の Perforce Helix Core Studio Pack for AWS というプログラムも用意されてます。 3回に分けてシリーズ化してお送りします。   Perforce Helix Core とは? バージョン管理システム (VCS) の代表的なものとして、Git、Subversion (SVN)、CVS、Mercurial、そして Perforce などがありますが、それぞれには特徴的な性質があります。バージョン管理システムには、大きく分けてソースコード等を中央集権的にマスターサーバで管理する集中型 (Subversion、CVSなど) と各開発者のローカル PC にソースコードを保存し必要な時に共有する分散型 (Git、Mercurialなど) とに大きく分かれます。この中で Perforce Helix Core […]

Read More

[AWS Black Belt Online Seminar] Amazon GameLift 資料及び QA 公開

先日 (2019/10/09) 開催しました AWS Black Belt Online Seminar「 Amazon GameLift 」の資料を公開しました。当日、参加者の皆様から頂いた QA の一部についても共有しております。 20191009 AWS Black Belt Online Seminar Amazon GameLift AWS クラウドサービス活用資料集(すべての過去資料が閲覧できます) Q. 接続までの模式図において、既に接続先のインスタンスが存在する場合は①〜⑤のステップは省略される場合もあるのでしょうか? A. 省略される場合もありますが、限定的になります。既にゲームセッションへの接続情報を取得しており、プレイヤーセッションの作成も完了している場合に限ります。接続情報を取得していない、もしくは取得していてもプレイヤーセッションを作成していない場合は、既にゲームセッションが存在していても、ゲームセッションの検索・情報の取得(searchGameSessions API や describeGameSessions API など)やプレイヤーセッションの作成(createPlayerSession API など)を Amazon GameLift サービスに依頼する必要があり、①〜⑤のステップを順に処理します。 Q. クライアントサービスは、例えばゲーム機のOSに入るイメージでしょうか。それともゲーム機(ゲームソフトウェア)からインターネットを介してアクセス可能なサーバ(例えばEC2など)を別途立てる形でしょうか? A. 後者になります。クライアントサービスは、ネットワーク越しにバックエンドのサーバーとして設置いただくコンポーネントとなります。ネットワークを介してアクセスできるサーバーであれば、仮想サーバ、コンテナ、サーバーレスといったコンピューティングの形式に依らずに配置できます。 Q. キューとエイリアスを併用する場合、エイリアスはゲームサーバとキューの間にFleet毎に配置する形となるのでしょうか? A. はい、詳細にはエイリアスは予め使用するフリートに紐づけておき、エイリアスとしてキューの送信先リストに追加する形になります。エイリアスはフリートの参照先を簡単に切り替えられることから、GameLift ではキューにおいてもエイリアスを使用することを推奨しています。 Q. フリートの切り戻しは可能でしょうか? A. 可能です。参照先を切り替える前のフリートを残していれば、エイリアスの変更などで参照先を新しいフリートから古いフリートに切り替えることで、元の状態に戻せます。また、切り替える前のフリートを削除してしまっても、そのフリートをデプロイしたときに使用したビルドが GameLift 上にあれば、再度デプロイを行うことで同じバージョンのフリートを準備できます。 — 今後の AWS […]

Read More
Amazon Game Tech

【開催報告】Game Tech Night #16 ~Lightning Talks~ / 次回は10/30大阪開催

こんにちは、ゲームソリューションアーキテクトの 畑史彦 です。 9月19日に第16回となる Game Tech Night を開催致しました。 Game Tech Night は、オンラインゲーム開発と運用に携わる開発者やインフラエンジニアを対象に、ゲームに関連する技術情報や AWS サービスの情報をお届けするイベントです。最近では概ね 1,2 ヶ月に1度くらいの頻度で定期開催しています。この第16回では特に特定のテーマを決めずに複数の LT を実施しました。

Read More

Lambda@Edge を使ったゲームプレイヤーへのカスタムコンテンツの配信

モバイルゲームのクライアントアプリを起動した時に、いつも最新のコンテンツを入手できるようにしたいですよね?そうすれば、ゲームへ変更を加えて、新しい機能を追加した際、変更内容をすぐにプレイヤーに提供できるようになります。

Read More

Amazon DynamoDB: ゲームのユースケースと設計パターン

  ゲーム会社は、ゲームステート、プレイヤーデータ、セッション履歴、およびリーダーボードなどのゲームプラットフォームのあらゆる部分で Amazon DynamoDB を使用しています。これらの会社が DynamoDB から得る主なメリットは、1 桁ミリ秒で測定される一貫した低レイテンシーを確保しながら、何百万もの同時ユーザーとリクエストに確実にスケールする DynamoDB の能力です。それに加えて、完全マネージド型サービスである DynamoDB には運用上のオーバーヘッドがありません。ゲーム開発者は、データベースの管理ではなく、ゲームの開発に集中することができます。また、単一の AWS リージョンから複数のリージョンへの拡大に関心を持つゲームメーカーは、マルチリージョンでのアクティブ/アクティブ型のデータレプリケーションのために DynamoDB のグローバルテーブルに頼ることができます。 このブログ記事では、DynamoDB を使用するゲーム会社の最も一般的なユースケースと設計パターンについて詳しく説明します。 この記事で使用される用語 この記事では、以下のデータモデリング用語を使用します。 1:1 モデリング: パーティションキーをプライマリキーとして使用する 1 対 1 関係のモデリング。 1:M モデリング: パーティションキーとソートキーをプライマリキーとして使用する 1 対多関係のモデリング。 N:M モデリング: テーブルとグローバルセカンダリインデックスがあり、パーティションキーとソートキーをプライマリキーとして使用する 多対多関係のモデリング。 ゲームのユースケースと設計パターン ユースケース 設計パターン ゲームステート、プレイヤーのデータストア 1:1 モデリング、1:M モデリング プレイヤーのセッション履歴のデータストア 1:1 モデリング、1:M モデリング リーダーボード N:M モデリング ユースケース: ゲームステートとプレイヤーのデータストア プレイヤーのゲームステートとその他のプレイヤーデータを保存するための DynamoDB の使用は、ゲーム会社がミリ秒単位のアクセスレイテンシーを維持しながら、多数の同時プレイヤーに対応することを可能にします。その例として、世界中に […]

Read More

1億2500万人のゲーマーをオンラインでスムーズにプレーするにはどうすればいいでしょうか?Epic GamesがFortniteについて語ってくれました。

FortniteのクリエイターであるEpic Gamesは、2018年7月17日にニューヨークのJavits Centerで開催されたAWSサミットでAWSサービスへオールインを明らかにしました。 ゲーム上に1億2500万人のプレイヤーを想像してください。1億2500万人、それはニューヨークの人口の15倍になります。マルチプレイヤーゲームをプレイしているすべての人が、夢を実現するでしょう。 プレイヤー全員が素晴らしい時間を過ごすことを保証しなければなりません。どのようにしてこの大変多くの人々のすべてのデータを取り扱うのでしょう? Epic GamesのFortnite クリエイターが今年、自分自身でそれを見つました。Fortomiteのこの驚異的な成長により、Epic Gamesが毎月2ペタバイトのデータを扱わなければいけないことを意味します。2,000テラバイトのハードドライブが積み上がっていることを想像してください。どのようにゲームデベロッパーがその規模の情報量を処理するでしょうか?

Read More

アセットライブラリにおける課題:機械学習を利用したプロダクションパイプラインの高速化

利用したいテクスチャをライブラリから探す作業は非常に手間がかかる作業です。Amazon RekognitionやAmazon Machine Learning APIを利用することで、テクスチャへのタグ付けを行い、高速な検索が実現できます。 ゲーム開発では一般的に”painter’s pallet(画家のパレット)”として扱われるテクスチャやシーンを扱う巨大なアセットライブラリを持っています。これらは3Dのランドスケープや地形を表現するために利用されており、データの選択によって世界観をを変えることができるため、非常に重要なものとなります。テクスチャによっては実生活の風景や漫画の陰影、セル画調での世界滅亡の風景などを自由に表現することができます。 膨大な数のデータが保存されているライブラリから、何千ものテクスチャを選ぶことも珍しいことではありません。その場合、まれに正しいタグが付与されていなかったり、ファイルやフォルダ名に依存することで生じる誤解などが問題となります。より正確性を向上するために、正確なタグ付けを手作業によって行うことは非現実的でとてつもない作業になるでしょう。 正確なタグ付けを実現するために、1人または複数人でデータを確認し、意見を集め、その情報によって各ファイルにタグ付けをする必要がありますが、どんなシナリオでも非常に多くの時間がかかります。 しかし、機械学習を利用したAmazonの画像認識サービスであるAmazon Rekognitionを使えば、これらの作業を非常に簡単に高速に行うことができます。アーティストがファイルを開くのに40秒かかり、画像を見て意見を集め、複数のタグを書き込んでデータベースに格納する場合、5,000ファイルを処理するのに約55時間を要します。Amazon Rekognitionを利用する場合、画像のアップロードをバッチ処理することが可能で、私たちのテストコードでは200Mbpsの速度でアップロードしたところ3分未満で完了しました。 試してみましょう! もし1枚の画像で試す場合、こちらをご確認ください。画像をアップロードし、レスポンスを確認するだけです。 https://console.aws.amazon.com/rekognition/home?region=us-east-1#/label-detection もちろん、SDKもご利用になれます。こちらのページからインストールできるAWS SDKを利用します。 https://aws.amazon.com/tools/#sdk それでは、特定のフォルダで簡単なサンプルを動かしてみましょう。ご紹介するサンプルはフォルダの中のすべてのJPEG/PNGファイルをAmazon Rekognitionにアップロードし、メタタグをファイル名と一緒にSQLiteに保存します。また、簡単な検索機能も提供します。 今回はPythonを使ったシンプルな例をご紹介します。もしあなたがPythonのファンではない場合は、AWS SDKでサポートされているお好みの言語を利用いただくことができます。 まずはAWS SDK for Pythonをこちらの手順に沿ってインストールします。 https://boto3.readthedocs.io/en/latest/guide/quickstart.html 最も早い方法は”Boto3″パッケージのインストールです。 pip install boto3 また、AWSアクセスキーの設定をAWSマネージメントコンソール(https://console.aws.amazon.com)から行います。 [IAM]-[ユーザー]-[認証情報]-[アクセスキーの作成]をクリックしてください。 アクセスキーIDとシークレットアクセスキーをメモし、以下のクイックスタートの設定ファイルを編集してください。(Macの場合は”~/.aws/credentials”、Windowsの場合は”%USERPROFILE%\.aws\credentials”となります。) あとは数行のコードで実行することができます。 1. boto3のライブラリをインポートします。 import boto3   2.  利用するリージョンをRekognition APIに設定します。 def detect_labels(bucket, key, imagebytes=None, max_labels=6, min_confidence=70, region=”us-east-1″): rekognition = boto3.client(“rekognition”, region)   3. […]

Read More

P2Pからクラウドへの移行: For HonorとFriday the 13th The Gameがどのようにプレイヤー体験を向上させたのか

ゲーム開発者として、ローンチに至るまで情熱を絶やさずゲーム開発とファンコミュニティの育成に数年の歳月と投資をされてきたかと思います。最高のユーザー体験を提供することおいては、例えばネットワーク接続時のプレイヤーの待ち時間に対するバックエンドの選択肢等バックエンドインフラは一番の関心ごとではなかったかもしれません。 多くのゲーム開発者がピア・ツー・ピア(P2P)ネットワークでマルチプレイヤータイプのゲームを実現させています。開発当初は一見してコスト効果の高いソリューションに思えますが、我々は沢山の開発者がP2Pから クラウド上で可動する専用ゲームサーバー に切り替えられる案件を見てきました。ここでは、UbisoftやIllFonicのようなスタジオのFor HonorやFriday the 13th The Gameのチームが、なぜP2Pをやめクラウド上の専用ゲームサーバに乗り換えたのか、その理由のいくつかを見てみたいと思います 劣悪なレイテンシーと接続性からの脱却 P2Pネットワークでは同一エリアで強力なネットワーク接続があれば低レイテンシーな体験をプレイヤーにもたらしてはくれます。しかしながら、P2Pネットワークでの全体的なゲームのレイテンシーは、ホストとのネットワーク接続のレイテンシーに縛られます。 For Honorは、当初、P2Pネットワークモデルを採用してリリースされました。時間を経るに連れ、プレイヤーの体験に関してアーキテクチャの選択に起因するいくつかの問題がある事が明らかになり、セッションの移譲とNAT (Network Address Transaction) の問題解決やマッチメイキングとオンライン体験の安定性を得るために、UbisoftはAmazon GameLiftで稼働させる専用ゲームサーバモデルに移行する事を決定しました。 専用ゲームサーバは開発者側による細かな制御を可能にします。さらに、クラウド上でのホスティングを利用する事で、プレイヤーを低レイテンシーで安定したゲームサーバに接続する等の管理も容易にできるようになります。 ドロップアウト、ホストの優位性、マルチプレイヤーゲームのチート対策 プレイヤーは、ネット接続の問題、ゲームへの興味喪失等々様々な理由でゲームセッションからドロップアウトします。 ホストプレイヤーがゲームから抜けると、他の全てのプレイヤーのゲームの中断や瞬断を招きます。Friday the 13th The Game独自のユニークな非対称マルチプレイゲームではこの問題はより顕著でした。このゲーム内では、あの悪名高いジェイソンはマッチ中の他の全てのプレイヤーと敵対します。ホストプレイヤーがジェイソンに倒された場合に、墓からの観戦は望まずゲームからドロップアウトしてしまうので、全てのプレイヤーのゲームが中断してしまっていました。 P2Pネットワークでは不正やチートも容易にできてしまい、ホストはレイテンシー的に優位になる事が多々ありました。また、専用サーバモデルアーキテクチャに比べ、ホストプレイヤーのPCが認証を行うP2Pモデルではチートの検出も容易ではありませんでした。そして、ホストは他のプレイヤーに比べてレイテンシーが低いので度々優位になりました。専用サーバモデルを採用することで、ゲームの中断やチートの問題を抑え、全てのプレイヤーに平等なゲームプレイ体験を提供できるようになります。これらがIllFonicがAmazon GameLift上で専用サーバを稼働させるという選択をされ、マルチプラットフォーム(PC、Xbox One、PS4)間プレイを実現するに至った理由です。 UbisoftとIllFonicによるP2Pと専用サーバの知見がGDC 2018でシェアされました GameLiftチームによる「Exploring Trends of Multiplayer Game Infrastructure with Amazon Gamelift」セッションをぜひご確認ください。 UbisoftよりFor Honor開発者のDamien KiekenとRoman Campos Oriolaが、IllFonicよりFriday the 13th The Gameの技術ディレクターPaul Jacksonにより、彼らのバックエンドインフラやP2PネットワークからAmazon GameLift上の専用ゲームサーバへの移行に関してご紹介いただきました。また、Amazon GameLiftチームからもマルチプレイヤーゲームサーバのトレンドやマシンラーニング等も紹介されます。 GDC 2018 @ […]

Read More

Lumberyard Beta 1.13 公開

Lumberyardのここ2回のリリースでは新たな基本システムをご紹介しましたが (EMotion FX や Script Canvas)、次の2回のリリースではこれらのシステムの最適化とエンジン全般の利用のし易さにフォーカスします。その第一弾としてLumberyard Beta 1.13をリリースしました! Lumberyard Beta 1.13 のダウンロードはこちら 皆様からの様々なフィードバックにより200以上の機能向上、および安定性と使い易さを向上させられたことに感謝いたします。また、新たなクラウド機能によりエキスパートエンジニアの手を借りずに素晴らしいゲームプレイ体験を制作することに集中していただけます。今回の主な機能をご紹介させていただきます。 1. Gemの相互連携 Cloud gemに動的コンテンツ、リーダーボードやデイリーメッセージ等の有用なクラウド機能を簡単に実現できます。新たに1.13では、APIを公開して各バックエンドサービスを相互に利用できるようになりました。別の言い方をすると、Gemとの統合により更に複雑な機能をゲーム内に実現可能となります。 例えば、デイリーメッセージGemから、テキストスピーチGemを利用して音声合成しプレイヤーに語りかける事ができますプレイヤーアカウントGemとリーダーボードGemと連携して不正アカウントのスコアの削除して、プレイヤーの満足度向上にお役立ていただいたりできます。さらに音声合成によるゲーム内アンケートの確認や、プレイヤーの音声によるフィードバックを音声認識Gemで取得等々、これらも組み合わせの1例でしかなく、さらなる皆様のお取り組みを楽しみにしております。 2. 音声合成のカスタマイズ Text to Speech Cloud Gemも向上させました。Cloud Gem PortalでのSSML(Speech Synthesis Markup Language:音声合成マークアップ言語)対応も含め、より詳細に音質やアクセントを制御可能となりました。例えば米国英語音声でフランス語のフレーズを喋らせるような事も可能です。また、管理画面でのフィルタリング機能や音声パッケージの管理機能の向上等も行われました。 SSMLにより、合成される音声の音質・トーン・ペース等を柔軟に制御できるようになり、ゲーム内のモブキャラクターやカットシーンでの仮対応等を低コストに実現できます。 3. PhysX Gem(プレビュー) 今回のリリースには、NVIDIA PhysX Gemも含まれ、リアルなコリジョン判定や剛体シミュレーションの作成ができるようになります。Project ConfiguratorでGemを有効にしていただくことで、以下のコンポーネントをエンティティに追加できるようになります。 PhysX Collider – エンティティーのPhysX Mesh ShapeもしくはPhysX Rigid Body Physicsタイプのアサインされたシェイプコンポーネントをリンクすることで、コリジョン反応を提供できます。 PhysX Mesh Shape – コリジョン領域のジオメトリを提供します。 PhysX Rigid Body […]

Read More