ゲームサーバー勉強会(マルチプレイゲーム on AWSハンズオン)by SIG-NS 体験レポート

2024年5月17日にIGDA日本が主催するSIG-NS 第10回 ゲームサーバー勉強会(マルチプレイゲーム on AWS ハンズオン)がアマゾン目黒オフィスで開催されました。こちらに学生の立場で参加させていただいたので、体験レポートを共有させていただきます。

自己紹介

私は、東京国際工科専門職大学でゲームデザイナーになるために勉強している高橋琉志です。普段は、ゲームの企画や仕様書の作成、プロジェクトマネジメントを行っています。Unityを使用したゲーム作成やPythonでNumpyを使用した画像処理も授業で行っています。最近では、JavaScriptの勉強もしています。

参加した理由

これまで1つのパソコンで動作するシングルプレイヤーゲームを開発してきましたが、オンライン機能を実装したゲームを作りたいと思い、参加しました。

内容

この講座は、マルチプレイヤーゲームを支える技術に関する講義とハンズオンを組み合わせた形式でした。Amazon Web Services(AWS)を利用して実際にサーバーを構築し、サーバーについての理解を深めました。今回のゴールは、Unityを利用してAWSで構築したサーバーに接続することです。自分で構築したサーバーだけでなく、ほかの人が構築したサーバーにも接続できるかどうかを確認しました。

サーバーについての講座

はじめに「今回のハンズオンでは、同じ時間にネットワーク機能を使って他の人と遊ぶゲームとして、オンラインマルチプレイゲームという用語を使います」という説明がありました。そのため、ランキングやリーダーボードなどの非同期のコミュニケーションは考慮されませんでした。これにともない、サーバーの機能は主に以下の二つになりました。

データの管理

ゲームの内容を一元管理し、クライアントが接続することで同じゲーム環境を共有できます。

通信の仲介

複数のプレイヤーの通信を仲介し、リアルタイムでデータを送受信することで、他のプレイヤーの動きをリアルタイムで見ることができます。

AWSとは

AWSとは、Amazonが提供するクラウドコンピューティングサービスの総称です。今回のハンズオンではAmazon EC2とAWS Cloud9の2つのサービスを利用しました。

Amazon EC2とは

スケーラブルな仮想サーバーのホスティングサービスです。このサーバーを借りることにより、ユーザーは必要なコンピューティング能力を柔軟に利用できます。

AWS Cloud9

ブラウザで使用できる統合開発環境(IDE)です。Linuxサーバー上の操作ではLinuxコマンドを覚える必要があります。これは初心者にとって敷居が高いものですが、Cloud9を使用することでサーバー操作を容易に行えます。このツールは、JavaScriptやPythonなど複数の言語に対応しているため、知っている言語で操作できました。

サーバーを構築する

今回は、上記のツールを使用して各自でサーバーを構築しました。AWS Cloud9を使用して、サーバー名やタイムアウト時間などの環境設定を行い、コマンドを使用してサーバーを起動しました。

接続テスト

まず、接続テストのために作成したサーバーのIPアドレスを確認しました。IPアドレスとは、サーバーの住所のようなもので、0~255のカンマ区切りの4つの数字で表されます。

次に、接続テストを行う手段としてUnityを使用しました。配布されたUnityプロジェクトには、簡易的なゲーム画面とIPアドレスを入力する欄、接続ボタンがありました。また、六角形のマスがあり、自分がいる位置の六角形の縁の色が変わり、矢印ボタンを使って移動できる簡易的なゲーム画面が含まれていました。

私は、まず自分で構築したサーバーへの接続テストを行いました。Cloud9のコンソールでは接続確認ができましたが、Unityのエディタ上では自分のみしかいないため、接続できたかどうかは確認できませんでした。次に、みんなで一つのサーバーに接続しました。一つのサーバーのIPアドレスを共有し、そこに接続することで複数人での接続を確認できました。Cloud9のコンソールでも1人で接続したときよりも情報量が増えたことを確認できました。

まとめ

今回ハンズオンに参加して、思っていたよりも簡単にサーバーを構築できることに驚きました。特に、AWSのサービスであるAmazon EC2とAWS Cloud9を利用することで、初心者でも手軽にサーバーをセットアップできる点が非常に魅力的でした。

まず、Amazon EC2を使って仮想サーバーをホスティングする過程は、ガイドに従うだけでスムーズに進められました。インスタンスの選択や設定、起動までの一連の流れが直感的で分かりやすく、初めてでも問題なく操作できました。

さらに、AWS Cloud9の使用により、サーバー操作がより簡単になりました。ブラウザベースの統合開発環境(IDE)であるCloud9は、インターフェースが使いやすく、Linuxコマンドを覚える必要がなくサーバー操作を行える点が非常に便利でした。また、JavaScriptやPythonなど複数のプログラミング言語に対応しているため、自分が学んだことのある言語で操作できる点も助かりました。

ワークショップでは、マルチプレイヤーゲームの開発に必要な技術を学べました。特に、Unityを使ってAWS上で立てたサーバーに接続する方法や、他の人が立てたサーバーに接続するテストを行うことで、実際の開発プロセスを体験できました。これにより、オンライン機能の実装に対する理解が深まりました。

次回の希望

もし、次の講座があるのであれば、マッチメイキングとロビーシステムについて学びたいです。具体的には、プレイヤーのスキルやランクに基づいて公平な対戦相手を自動的に選ぶマッチメイキングアルゴリズムの開発に焦点を当てたいです。他にプレイヤーがゲーム開始前に集まるロビーの設計についても学びたいです。ロビーシステムでは、チャットやパーティ編成、ゲーム設定などの機能を提供する方法を習得したいと考えています。

オンサイトでの参加における感想

今回の講座には約30人の参加者が集まり、学生から社会人まで様々な年代の方々が参加していました。自分のパソコンで不具合が発生したり、分からないことがあったりした際には、スタッフの方々が迅速かつ丁寧に対応してくださいました。セミナー終了後には交流会も実施され、軽食をとりながら他の参加者と意見交換や情報共有を行うことができ、大変有意義な時間を過ごせました。

東京国際工科専門職大学 工科学部 デジタルエンタテインメント学科 高橋 琉志