iOS/Android用のソーシャルゲーム開発を強力に支援
佐藤氏は冒頭、スマートフォン向けのゲーム開発において前提となる重要な要素として、「更新の容易さ」「マルチプラットフォーム対応」「スマートフォンらしいユーザエクスペリエンス」の3つを挙げた。これらの要素をすべてサポートできるように、DeNAがグループ企業のngmocoと共同開発および提供しているのが、スマートフォンのソーシャルゲーム開発に最適化されたゲームエンジン「ngCore」だ。
ngCoreでは、描画フレームごとにJavaScriptエンジンにJavaScriptのソースコードを解釈させ、その結果を元にネイティブコードを動かす仕組みを持っている。これにより、JavaScriptで記述されたプログラムをiOS/Androidの両プラットフォームで動作させることができる。ネイティブコードのレイヤーでは主にC++で振る舞いを制御した後、各プラットフォーム固有のコードのみ、たとえばAndroidならJavaで、iOSならObjective-Cで書くという流れになる。
JavaScriptがメインとなるので、Webブラウザで利用するコードと同じライブラリやテクニックが利用できるのが特徴だ。Web系の技術者にとっては、大きなメリットといえるだろう。また、OpenGLのコードを直接書くのに比べて簡単で、かつHTML5のCanvasを使うよりはパフォーマンスも出せるという。
「国内だけでなく、米国、中国も含めて、各国向けのソーシャル課金機能を備えたゲームが容易に開発可能であることも大きなポイント」と、佐藤氏は付け加える。サービスアーキテクチャとして、共通のソーシャルAPIのほか日本・米国・中国それぞれのローカルAPIが用意されており、それらのAPIを1つのコードで叩き分けられる構成なのだとか。
スマートフォン向けゲーム開発で
エンジニアに求められるスキルとは
DeNAのngmoco買収は2010年11月。翌12月に、パートナー向けにMobage ngCore SDKの提供をスタートし、2011年5月には、ngCore上で開発した自社製ソーシャルゲームもリリースしている。よほどスムーズな共同開発の体制でなけえれば、これは不可能だろう。サンフランシスコに拠点を置くngmocoとの協業について、佐藤氏は次のように語る。
「メールやチャット、スカイプ、電話会議システムなど、いろいろなコミュニケーション手段を使ったが、最も効率がよかったのはIssue Tracking SystemのJIRA。やはり意思を明確に伝えるためにも、詳細なバグレポートを書ける程度の英語力は、エンジニアに必須となってきていると感じた」
海外拠点との協業では、きちんと意図が伝わらなかった場合に大幅な対応の遅れが生じてしまう。反面、一発で意図が伝われば、日本側のエンジニアが寝ている間に(時差の関係で)米国側が対応してくれるので、開発がスピーディに進むこともあったという。
ngCoreによってクロスプラットフォームでの開発が可能になるとはいえ、iOSとAndroidでは、たとえばAPIの振る舞いの違いなども多く、もちろん限界はある。最終的には、プラットフォーム固有のコードをどれだけ書くか、あるいは“最大公約数的”な両プラットフォーム共通の機能の範囲で吸収するかといった判断が必要だ。
こうした点を踏まえ、佐藤氏は最後に、スマートフォン向けのゲーム開発でエンジニアに求められる条件として、次のようにまとめた。
「まず、JavaScriptなどのスクリプト言語でアイデアを素早く形にできること。そして、C/C++などネイティブに近い言語を使ってパフォーマンスの問題を解決したり、iOSとAndroid両方の仕様を理解してObjective-CやJavaでアプリケーションの振る舞いを制御できる技術も必要。これらに加えて、今後はWindows PhoneやHTML5のスキルも重要となる」
いかに強力なゲームエンジンや開発ツールが登場しても、やはり各プラットフォームに関する深い知識や技術力が不可欠ということだろう。
株式会社ディー・エヌ・エー