Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

スマートフォン向けゲームエンジン「ngCore」とは?
~ JavaScriptでiOS/Android向け開発を共通化

ゲームエンジン「ngCore」最速チュートリアル 第1回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

 DeNAでは現在「ngCore(エヌジーコア)」というゲームエンジンを利用してスマートフォン向けゲーム開発を行っています。この連載では、ngCoreを使ったサンプルゲームの作成方法を解説します。第1回は、ngCoreとは何か、どのようなアーキテクチャのもとに成り立っているのか、どのようなゲームが実現できるのかを紹介していきます。

目次

ngCoreとは何か?

Mobageプラットフォーム

 ngCoreとは何かを説明する前に、まずはMobage(モバゲー)とは何かを簡単に説明しましょう。MobageはDeNAが提供しているソーシャルゲームプラットフォームであり、オンライン上の友人達と一緒にゲームを楽しむことができます。

 現在、アプリケーションの開発者はMobageのAPIを利用してゲームを開発し、Mobageプラットフォームを利用している数多くのユーザーにサービスを提供できるようになっています。

多様化するプラットフォーム

 当初、Mobageはフィーチャーフォンに利用環境が絞られていましたがYahoo! MobageのようにPC上でも楽しめるようになり、現在ではその領域をさらにスマートフォン環境にまで拡大しています。

 スマートフォンでは、フィーチャーフォンでは実現できなかったマルチタッチなどを利用した入力方法やサウンドが可能となっており、今までのアプリケーションに比べて豊かな表現が可能で、ゲームの世界感がさらに広がります。現在、スマートフォンで利用されているOSはご存知の通り、Appleから発売されているiPhone向けの「iOS」と、Googleが開発している「Android」が双璧をなしています。

 2つのOSはそれぞれ独自のAPIを持ち、しかも利用するプログラミング言語も違うため、同一のアプリケーションを展開することを考えた場合、アルゴリズムや画像などの素材こそ共通化できるものの、それ以外はかなりの部分を作り直さなければならないなど、開発者に負担を強いるものとなっています。

ゲームエンジン「ngCore」

 弊社で開発しているngCoreは、この2つのスマートフォンOSに向けて簡単にソーシャルアプリケーションを展開できるようなエンジンを作ろう、という目的で作成されました。

 もちろん、HTMLとCSSを駆使してスマートフォン向けの開発を行うことも可能ですが、それではスマートフォンの持つポテンシャルを活かしきれません。各プラットフォームネイティブのAPIを利用することにより、よりリッチで多彩な表現を持つアプリケーションを作成できるのです。

 ngCoreを利用するとiOSとAndroid、ワンソースでその2つの環境それぞれのネイティブAPIを利用したアプリケーションを開発可能で、2つのプラットフォーム向けに別々のソースを記述する必要がありません。JavaScriptによって記述されたソースコードはngCoreによってそれぞれのプラットフォーム向けのネイティブAPIに変換されるため、Objective-CやJavaを知らなくてもJavaScriptのみでMobageプラットフォーム向けのアプリケーション開発を完結させられるのです。

 この点は今までOSごとのアプリケーションを別々に作らざるを得なかった開発者にとって何より魅力的に思えるのではないでしょうか?

ソーシャルAPI

 ngCoreにはJavaScriptを一度記述するだけでiOSとAndroid上で動作するという利点のほかにも様々な利点があります。その一つがMobageの持つソーシャルAPIを利用して、開発したアプリケーションを全世界に展開できる点です。現状、このソーシャルAPIは日本向けのもの、そして海外向けのものの2つがあります。日本向けのものはすでにおなじみのMobageが持つ機能(つまりアバター、プロフィール、友達検索機能など)が利用できます。対して海外向けのものはngmoco:)が利用していたPlus+というソーシャルAPIをもとにしており、こちらはラダー機能(ハイスコアランキング)などが利用可能となっています。

 全世界に向けたアプリケーション制作を行う場合には表示言語のローカライズが必要ですが、ソーシャル機能のローカライズをこのソーシャルAPIの切り替えによって行うといってもよいでしょう。

 Mobageプラットフォームに向けたスマートフォンアプリを開発する場合、必ずngCoreを利用しなければならないのでしょうか。もちろんそんなことはありません。HTMLとCSSを利用したカジュアルなアプリケーション、また3Dやデバイス固有APIなどのように高度なネイティブAPIを駆使したアプリケーションであってもMobageのAPIを利用し、ソーシャル機能を持たせることが可能です。図1の右端と左端のモデルがこの場合にあたります。

図1:Mobageプラットフォームで動作するアプリケーションの構造
図1:Mobageプラットフォームで動作するアプリケーションの構造

アーキテクチャ

 ngCoreはどのような作りになっているのでしょうか?アーキテクチャについて少し解説してみましょう。端的な作りとしては図2のようになっています。

図2:ngCoreのアーキテクチャ
図2:ngCoreのアーキテクチャ

 このように開発者が記述したコードはngCoreによって提供されるJavaScriptのAPIを利用して作成されますが、それが各プラットフォーム上のJavaScriptエンジンにより解釈され、そこからさらにngCoreの各プラットフォーム向けのAPIを介して、最終的にそれぞれのネイティブAPIを呼び出すような作りになっています。

現在ngCoreで提供されている標準モジュールの一覧

 下記にリストアップされているものが現在提供中のモジュールですが、ここにあるものだけではなく、今後さらにサポートが強化され、ngCoreで今よりも多様なアプリケーションを開発できるようになる予定です。

  • Core

     他のSDKコンポーネントでも利用される、クラスやイベント、ユーティリティなど。

  • GL2

     OpenGL ESの2Dグラフィックスライブラリサポート。

  • Audio

     オーディオのプレイバック、エフェクト機能。

  • Device

     デバイス固有の属性や機能へのアクセス(向きや位置など)。

  • Network

     XHRサポートやダウンロード機能など。

  • Physics2

     2D物理演算機能サポート。

  • Storage

     ファイルシステムやKey-Valueストアへのアクセス。

  • UI

     UIウィジェット機能。

  • Social API

     ソーシャルネットワーク機能。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

バックナンバー

連載:ゲームエンジン「ngCore」最速チュートリアル
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5