【CEDEC2013】iPhoneアプリで“リアルタイムマルチプレイ”を実現!「Photon Network Engine」の実用例をAppBankGamesの小野氏が語る

2013年8月21日~23日に、パシフィコ横浜(神奈川県)で国内最大のゲーム開発者向けカンファレンス「コンピュータ・エンターテインメント・デベロッパーズ・カンファレンス 2013」(以下、CEDEC 2013)が開催。

CEDECとは、コンピュータエンターテインメント業界内外の有識者が開発者に新たな知見をもたらす基調講演と特別招待セッションが行われるほか、多種多様なワークショップ、ゲーム開発やビジネスに関して公募を中心とした発表の場。

開催初日に行われたAppBankGamesのゲームデザイナー・小野将司氏の講演では、iPhoneアプリでリアルタイムマルチプレイを実現するために用いたネットワークエンジン、「Photon Network Engine」の活用方法についてのカンファレンスがあった。

講演では「Photon Network Engine」で実際に何ができるのかを、同氏が手掛けたiPhoneゲーム『ダンジョンズ&ゴルフ』を例に、当時の制作状況と併せて生々しく解説してくれた。本稿では、そんな技術理解に基づいた内容をお伝えしていこう。

 

「リアルタイムマルチプレイ」実現のために...

2012年12月にリリースした『ダンジョンブ&ゴルフ』(以下、『ダンゴル』)は、アイテムを用いて有利にコースを攻略したり、掟破りの「打ち直しシステム」が採用されたりなど、従来のゴルフゲームとは非常に異なる奇抜な世界観で人気を博しているiPhoneゲームアプリである。なにより特筆すべきなのは、同時にスタートした4人を自動マッチングしてコースをまわる「リアルタイムマルチプレイ」だ。

 

 


 

 

はじめに小野氏は、同作を手掛ける際に、世界観やゲームシステムは基より、ゴーストのように過去の他プレイヤーのデータを繋げるのではなく、相手も“いま”同じ状況で一緒にプレイできる「リアルタイムマルチプレイ」を構築することを考えて、前述の「Photon Network Engine」導入に差し当るまでに、様々な問題に直面したことを語ってくれた。

オンライン上で他プレイヤーと遊ぶためには、回線が途切れることも考えて、シームレスにソロプレイに移行しなければならない。しかし、2012年2月に設立したAppBankGamesには、当時ネットワークゲーム制作の経験者がいなかったこと、加えて小さい会社のため予算と時間がさけなったことについて、実現が困難である問題に衝突する。

小野氏が求める開発環境に、3G回線でマルチプレイを行うための専用サーバー(Dedicated Server)を用意するほか、ゲーム開発環境「Unity」に組み込まれている利便性の高いネットワーククラスも使用したいという要素があった。それらのソリューションがないか……と、探してみたところに今回の「Photon Network Engine」に出会ったようだ。

 

 

そもそも「Photon Network Engine」とは?

「Photon Network Engine」とは、Exit Gamesが開発した高速で柔軟な拡張性を備えたネットワークエンジン。Photonには、SaaS(Software as a Service)型の「Photon Cloud」と、自前でサーバーを立てる「Photon Server」の2種類があるという。2013年8月現在、世界中で36,000人の開発者によって、31,000タイトルものゲームが採用されている。

 

■「Photon Cloud」の概要

クラウドサービス 申し込めば即利用可能

サーバー構築・維持管理が不要、料金も大抵の場合は割安

カスタマイズ不可、提供機能のみ

料金:同接20人まで無料、同接1000人で$69/月

■「Photon Server」の概要

サーバーSDKが提供される自前でサーバーを用意する必要がある

サーバーに独自処理を追加できるインフラのカスタマイズも可能

サーバーの維持管理費用が必要

料金:同接100人まで無料、無制限プラン$3500/買い切り

 

『ダンゴル』では、頻繁な外部サーバーとやり取りを行う必要があるため、買い切り型の「Photon Server」を導入した。同サーバーは、Windows Server向け製品として提供されており、通信はReliable UDPとTCPを使用して高速で安定、なおかつロードバランサー(負荷分散装置)、ロビーマスターサーバー、NATホールパンチングが標準装備されている。

……と、さまざまな専門用語が軒並んではいるが、要するに「リアルタイムマルチプレイ」を実現するための項目が“最初から揃っている”ということを、小野氏が補足してくれた。また、Unityをはじめ、Windows、Mac、Flash、Html5、Android、iOSなど、多種多様なプラットフォーム向けに提供されていることも魅力的な要因のひとつとのことだ。

そして、至れり尽せりの機能が搭載しているにも関わらず、意外にも料金体制がリーズナブルな点について「かなり安い数値です。小さな会社で制作している我々は本当に助かる」と、同氏は笑みをこぼしながら声にした。

ちなみに採用実績では、コナミ社やタイトー社など、日本の有名ゲーム会社の一部タイトルで導入されているほか、2013年8月現在ではモバイル向けの実績も続々登場しているとのこと。

 

手探りながらも実現できた開発現場

そんなベストパートナーとも呼べるエンジンと出会ったのはいいが、なかなか使いこなすまでに苦労した点があったようだ……。続いては、小野氏が直面した苦労した点に加え、実際の『ダンゴル』を構築したUnityクライアントサイドの一例を紹介していこう。

最初に語ってくれた苦労した点に、「情報が少ない」ということを挙げた。制作開始した当時(2012年)は、国内はおろか、海外でもほとんど事例がなかったため、もっぱら英語で記載された公式サイトの説明記事が唯一の情報源であったと語る。しかし2013年8月現在は、少なくともインストールまでは、すべて日本語で記載されたドキュメントがあることを言い添えて、改善されてきていることに言及してくれた。

第二に「Windowsでしか動作しない」点について。もともと小野氏をはじめ同社にはWEB開発出身者が多く、Linuxでのサーバー運用経験者しか居なかったため、最初の設定に苦労したことを話した。

続いては、Unityクライアントサイドの実装について、4項目に分けて提示してくれた。

■ 入出処理

入出処理とは、4人が同時にホールに入る動作のことを指す。これは、もともとある『ダンゴル』のクライアントとPhoton Serverクラスタとは別に、同作のデータベースと通信周りをべつに用意する必要があったようだ。以下は、実際の処理までの流れである。

1.APIサーバーに部屋名を要求

2.Photonサーバーに接続

3.部屋名を指定してJoin

→Joinに失敗したら新しい部屋を作成して再度Joinを試みる

4.入室処理完了したらPhoton Network.Instantiateでキャラ生成

■ RPC(リモートプロシージャコール)の実装

これでサーバーには、オブジェクトが繋がる状態になったため、今度はUnityの情報をリモート経由で動かさないといけない。「Photon」のデータ送信方法はふたつ。State SynchronaizationとRPCだが、前者は動きも遅く使用することが困難のため、必然的に後者のRPCの採用に至った。以下は、実装までの流れとなる。

1. Photon.MonoBehaviourを継承したクラスにRPCを実装

2. PhotonViewと実装したクラスをキャラのプレハブにタッチ

3. RPCを呼び出すコードを実装

4. あとはひたすらテスト

■ シングルプレイモードに移行する方法

そして、冒頭でも指摘した「リアルタイムマルチプレイ」の実現に必要なオンラインモードからシングルプレイモードに移行する方法だ。なんと「Photon」には、オフラインモードのon/offが標準で実装されているようだ。通信回線が切断された際の面倒を、すべて見てくれるとのこと。

■ マルチプレイのテスト

テスト画面では、格子状に出てくるボタンを押すことで、実際にキャラクターが4人現れて、テストが出来るようになる。これで問題無いようであったら転送して実機テストに移るとのことだ。

 

 

「我々のような素人集団でも手軽に立派なものが作れた!」

このように、手探りになりながらも用途を理解して、見事実現を果たした小野氏は、「今後スマートフォン向けクライアントとサーバサイド、両方の技術が分かる人材が今以上に求められる世の中になると思っています」と続けた。

そして、最後に小野氏は「Photon+Unityの組み合わせは強力です。うまく扱えれば我々のようなネットワークゲーム制作の素人集団でも、手軽に立派な“リアルタイムマルチプレイゲーム”が作れました。Unityで同様のゲームを実現したい人は、ぜひ、利用してみてください!」と、自身の開発現場で絶大なパフォーマンスを発揮してくれたエンジンに賛美を送って、講演を締めくくった。

なお、下記に「Photon」シリーズの日本公式サイトなど、関連サイトを記載した。興味がある方は、『ダンジョンズ&ゴルフ』に触れながら、「Photon」シリーズの機能を開拓してみてはいかがだろうか。

 

■関連サイト

iOS版『ダンジョンズ&ゴルフ』ダウンロード

「Photon Cloud」公式サイト

「ユーザー助け合い所」facebook