How to Pepper ゲームアプリ開発

こんにちわ。技術・編成部の@hem5 です。
FFRKで新機能開発を担当しています。

前回、Pepper開封の儀ということでPepperの紹介をいたしました。

あれから約10ヶ月、いろいろと試行策後しながら、相変わらずPepperと戯れています。

現在、Pepper App Challenge 2015 Winter に向けて絶賛アプリ開発中です。

そんな中、今回は How to Pepper ゲームアプリ開発ということで、Pepper でエンターテイメント志向のゲームアプリを作る際にこんなことを考えてみるといいのでは、ということをまとめてみました。

おそらくPepperを触ったことがある人でも、ゲーム開発の経験がある人はそれほど多くないと思います。
また、ゲーム開発の経験がある人でもPepperを触ったことがある人もそれほど多くないと思います。

この記事を読んでPepperでのゲーム開発に挑戦してみようという気になっていただけたら幸いです。

内容は次の通りです。

  1. Pepperでのアプリ開発をとりまく環境について

  2. ゲームのコンセプトを設定しよう

  3. 企画

  4. アート

  5. システム

  6. ゲームがヒットするために

筆者の思うPepperのかわいい角度。この角度から正面向いて、向き直ってきます。かわいいです。

筆者の思うPepperのかわいい角度。この角度から正面向いて、向き直ってきます。かわいいです。


1. Pepper でのアプリ開発を取り巻く環境について

どんなゲームにも共通することですが、その目的は対象とするユーザさんに遊んでもらって楽しんでもらうことです。そしてゲーム開発には、他のプロダクトと同じように、アイディア・コンセプト、企画、予算、スケジュール、チームがあります。

現時点で、上記について、Pepperというハードウェアはどのような環境と言えるでしょうか。

・ユーザ数 : 数百人から数千人規模
・ユーザ層:イノベーター、アーリーアダプターの一部
・あそび方, スタイル : 確立していない

このことから、開発のスタイルとその目的は次のように考えるのが適切でしょう。

・開発 : 小規模, 短期間, 低予算
・目的 : 様々なアイディアをたくさん試して筋のよいものを探し出すこと

コンソールゲームで言えば、インベーダーゲームやローグなどのゲーム性があるがシンプルなもので十分に評価されるフェーズであると言えます。逆に、スプラトゥーンやモンスターハンターのような大作を作っても、コストに見合うリターンを得ることは難しいでしょう。


2. ゲームのコンセプトを設定しよう

単純に思いつきでプロダクトを作ってもよいですが、作った後に果たしてそれは面白いといえるのか、どう評価すればよいでしょうか。

また、自分が面白いと思えればそれでよいのでしょうか。

例えば、それがヒットして、たくさんの人に遊んでもらえたとして、それはなぜヒットしたのでしょうか。

こういった部分に対して、対象ユーザとユーザ体験についてあらかじめ「仮説」や「見通し」を立てておきましょう。

■ 対象ユーザとユーザ体験の定義

 ・対象ユーザ : どんな人が対象ユーザなのか
 ・ユーザ体験 : 対象ユーザにどうなってほしいのか

ここでは例としてペット育成アプリというものを考えてみます。

ex.)

・対象ユーザ
 ・30代夫婦(賃貸などの理由からペットが飼えない)
・ユーザ体験
 ・本当に子犬や子猫を育てているような気持ちになる
 ・ペットを育成しながら起きる家族間のコミュニケーションによって家族の絆が深まる

対象ユーザは、どのようなものを求めているのか、ユーザ体験の部分をブレイクダウンして、チームで共通認識としてまとめておくと良いと思います。

ex:)

・本当に子犬や子猫を育てているような気持ちになる
 →ゲーム内キャラクター・もしくはPepperが成長する

 →成長を感じられるときとは?・・・・

などど、想定されるケースを深めていきます。

■ユーザ体験について

できるだけたくさんのユーザさんに長く遊んでもらえることを目指しましょう。長く遊ぶことでゲームへの愛着が湧き、ゲームのことをより好きになってもらえます。1日に長く、何度も遊ぶユーザさんもいれば、毎日少しずつ遊ぶユーザさんもいます。週末だけ遊ぶ場合もあれば、特定の平日のみ遊ぶ場合もあるでしょう。ユーザさんの生活スタイルにあった遊び方ができるようなコンテンツを考えましょう。

コンテンツを作る際、自分たちが作りたいもの、いいと思うものが、対象ユーザが欲しているものと一致していることは重要です。自分たちがいいと思ったからといってそれがユーザさんの欲しいものと一致しているとは限りません。作るコンテンツがユーザさんが欲しいと思うかを予測しましょう。予測の精度が高くなるほどヒットにつながります。たくさんのアプリを試すことでチームの予測精度は上がるでしょう。

育成アプリの例では、次のようなことを考えることになります。

・実際にペット育成を楽しめる内容になっているのか
・育成する過程で夫婦が育成に参加できているか
・育成者間でコミュニケーションが発生しているかを作れているか

このようなことをあらかじめ明らかにしておくことで、どの部分がよかったのか評価しやすくなります。

また、企画やアート、システムに落とし込む際、制作を進める際にここで明らかにしたコンセプトにそっているか照らし合わせることで迷わずに制作することができます。


3. 企画

コアコンセプトを実現するためにどんな機能が必要なのか、その機能はどういう画面をどのように遷移していくのか、どこから始まりどこで終わるのか、といった作るものの詳細を決めていきます。

今回はPepper自体が人型のインターフェースをしているということを考慮して企画する必要があります。

Pepperはその特性として、配置される場所やユーザさんとの距離、ユーザさんがどのような態勢でいるのかを一緒に考える必要があります。また、何かが起きたことを表現する出力先として, Pepperによる発話, モーション, タブレットへの表示などさまざまあります。絵コンテなどを使って, 何をどのように制作すればいいのか具体的にしましょう。

■ 場所
デバイス 場所
スマートフォン 場所を選ばない
コンソール TVの前で固定
Pepper リビングなど
■ ユーザの態勢
デバイス 姿勢
スマートフォン 手に持って座って見ている
コンソール TVの前に座っている
Pepper 近くにいさえすれば自由。立っていることが多いかも。デバイスとの距離が可変。入力によっては長時間連続したゲームプレイは難しい。

ユーザの態勢がPepperの前に立っている態勢では、長い時間のインタラクションは難しそうです。テーブルの椅子に座った態勢だと、インタラクションの時間は長くてもできそうです。ただし、画像処理などによる入力を必要としたりタブレットを頻繁に操作するようなものは難しくなるでしょう。

このことを踏まえて、ペット飼育アプリではリビングやテーブルのそばにユーザさんがいてPepperの前に立っているかもしくはテーブルの椅子に座った姿勢でゲームプレイすることを考えて作ることにしましょう。

また、ペット飼育ゲームにおいて、必要とされる機能を考えてみます。

・ペットの誕生 : ペットを誕生させる機能
・ペットの世話 : ペットをお世話する機能
・ペットの成長 : ペットが成長する機能

・etc...

など

次の視点を意識してユーザさんが長く楽しんで遊んでくれるような作りにしましょう。

・プレイサイクルを考える
  
・ある動作が次の動作を予測させる、関連がある
  ・繰り返し行うことでキャラクタの成長が進むなど変化がある


・一度遊んで終わりとしない
    ・毎日、少しでもいいのでやることがある。何か変化がある。
    ・ゲームを進めていくことで達成感を感じられる作りになっている。
  

ex.)

  1.   ログインすると餌などの攻略アイテムがもらえる
  2.   ログインするとお世話をするためのスタミナが残っているのがわかるので、スタミナ使い切るまでペットのお世話を楽しむ
  3.   お世話によってペットが成長したり、何かを達成すると次のお世話に必要なアイテムがもらえたりする
  4.   お世話などをするうちにペットに愛着が湧いてくる
  5.   またログイン...以下繰り返す。

 

プレイサイクルを考える際には、ユーザさんがそれぞれの要素をやりたくなると思えるように作りましょう。達成感が得られたり感情を揺さぶるようなものが作れたらユーザさんは期待したように遊んでくれるでしょう。これらはPepper でも同じように効果があると思います。

各機能の詳細を決めていく中で、他の機能との連携がうまくいっているか、コンセプトに設定したことが達成できるか振り返りながら決めていくと良いと思います。

 

4. アート

ゲームにおけるアートということで次の2つを考えてみます。

 

・キャラクター, メインビジュアル

一般的に、ゲームにおいてユーザさんが愛着をもつ対象としてキャラクタを作ってあげることは重要です。ユーザさんが好みそうなキャラクターを登場させましょう。ゲームに登場してきたキャラクタにユーザさんが愛着をもてば、そのユーザさんはまた明日もそのゲームで遊んでくれるかもしれません。魅力的なキャラクタを登場させましょう。Pepperとの関係を設定するなどして、Pepperとの共存も意識するとよいでしょう。

弊社開発のゲームのスペースデブリーズに登場するニャットをタブレットに表示してみた。使えそう。

弊社開発のゲームのスペースデブリーズに登場するニャットをタブレットに表示してみた。使えそう。

・アイテム, UI, エフェクト, バナー, 汎用部分, etc

ゲームを進める中でユーザさんが今何をすればいいか効果的にガイドしましょう。

画面に1つしかボタンが表示されていなければ、それを押す以外の行動はしないでしょう。画面にYes/Noの2つのボタンがあれば、どちらを選択すればよいか明らかであれば、ユーザさんは適切に選択しゲームを進めていくでしょう。画面上にボタンがたくさんある場合には、それぞれのボタンを選択することで何が起こるのかユーザさんが自然と理解できるようになっていることが重要でしょう。

Pepperでは、タブレットの画面での表現の他にも次のような表現方法があります。うまく組み合わせてユーザさんを適切にガイドしましょう。

・発話 : 問いかけや’はい’や’いいえ’などの応答を行うなど
・モーション : 発話に合わせて人間らしい動きを行わせるなど
・LED表現 : 危険な状態や安全な状態などを視覚的に表現するなど

ハードウェアという観点で見るとPepperは関節や車輪などの多数の駆動系を持っており、消耗による不良が起こりやすい構造になっています。そのため、Pepper自身の動きは最小限にして、タブレット上のスクリーンやLED、音声で表現するほうがPepper本体の製品寿命を長くでき、ユーザさんに好まれると思います。

スマホアプリにおいても、電池消費の激しく端末が熱をもつようなアプリは嫌われます。初期段階において、ハードウェアの消耗が激しいのはある程度仕方がないですが、品質を向上させるフェーズになるとこのような視点も必要になってくるでしょう。

 

5. システム

企画で決めた機能や作成したキャラクタや各画面、モーション、発話を実際の動くものとして作りましょう。

ゲーム開発という視点でPepperのシステムを見てみます。

Pepperでは下記の内容について見てみましょう。

・コレグラフAPIやセンサーなどの入出力
・Pepper本体やサーバなどの各コンポーネント間の接続性
・入出力の並列度

■コレグラフAPIやセンサーなどの入出力

まずはコレグラフAPIやセンサーを一通り触ってみてどんな操作ができるのか、どんな値が扱えるのか確認しましょう。

    ・入力
     ・タブレットのタッチ(コレグラフAPI、HTML/Javascriptによる制御)
     ・ユーザさんが発する音声(コレグラフAPI)
     ・カメラおよび認識APIからの認識情報(コレグラフAPI、デバイスモジュール)
     ・Pepper本体のタッチイベント(コレグラフAPI)
     ・センサー入力(コレグラフAPI)
     ・etc...

    ・出力
    
・タブレット画面(コレグラフAPI、HTML/Javascriptによる制御)
    ・音声(コレグラフAPI)
    ・Pepperによる発話(コレグラフAPI)
    ・Pepperによるモーション(コレグラフAPI)
    ・PepperのLED表現(コレグラフAPI)
    
・etc...

   Pepper開発者のみなさんにはおなじみのコレグラフです。便利です。

   Pepper開発者のみなさんにはおなじみのコレグラフです。便利です。

タブレットでは、CSS、Javascriptは動作しますが、Flash Playerは動作しません。アニメーションを再生させる場合には、Javascriptで実装されたアニメーションエンジンを使うのがよいでしょう。

弊社のPexエンジン(OSS版はこちら)を使えば、Flashコンテンツ(swfファイル)を動作させられます。便利ですので機会があれば使ってみてください。

■Pepper本体やサーバなどの各コンポーネント間の接続性

Pepperアプリでは、簡易なモデルですが、次のコンポーネントがでてきます。

    ・Pepper本体で動作するPepperアプリケーション(Pepper本体アプリ)
    ・タブレットWebViewで動作するウェブアプリケーション(WebViewアプリ)
    ・サーバで動作するウェブアプリケーション(サーバアプリ)

各コンポーネントの動作とコンポーネント間の接続性は次の通りです。

    ・Pepper本体アプリ : WebViewアプリを起動、連携してPepper本体を制御
    ・WebViewアプリ : タブレット画面上にアニメーション、UIなどを表示する。Pepper本体アプリ、サーバアプリと連携する。
    ・サーバアプリ : WebViewがロードするコンテンツを保持。ユーザ情報などを永続化。

タブレットをうまく使う場合、ウェブアプリケーションを作るのがよいように思います。本体との連携部分などはアプリ開発におけるネイティブとWebViewのやり方とも似ているように思います。

■入出力の並列度

Pepperゲームはコンソールゲームやスマホゲームと異なり、入出力先の種類が多いです。

音声入力やカメラ経由の入力、モーションの再生など新しい部分についてどこまで効果的に作れるかでユーザさんが感じる印象は大きく変わるでしょう。

・コンソールゲーム・スマートフォンアプリ

    入力 = ゲームコントローラやタッチパネルへの手動操作が大半
    出力 = 映像、音声 

・Pepper アプリ 

  入力 = 音声入力 + カメラやセンサーの入力 + Pepperボディタッチ + タブレットタッチ
  出力 = タブレットへの映像, 音声, モーション, LED

Pepperアプリでは音声とカメラの入力を複合して扱う、タブレットにアニメーションを表示しPepperモーションを再生し同時に発話するといった多重チャンネルでの表現が主流となりそうです。

ノウハウを蓄積して楽に開発できるようになりたいところです。また効率的なエディタやシミュレータなど開発が楽になるツールもほしいですね。

現時点では、Pepperに関する公開資料やブログ記事などは技術的な話が多いと思いますので、個別詳細の話はウェブや書籍にて参照すると早いかと思います。

アトリエブログ

Qiita

・書籍 : Pepperプログラミング-基本動作からアプリの企画・演出まで

 

6. ゲームがヒットするために

作ったゲームはたくさんの人に遊んでほしい、すなわちヒットしてほしいものです。
ヒットするためには何が必要なのでしょうか。

理解しておかなければいけないのは, ヒットは狙ってできるものではないということです。

どんなに熟練した企画者の人でも, すべてのゲームをヒットさせることは難しいです。

なので、いかにヒット率をあげるかが重要です。

 

ヒットするゲームには次の特徴があります。

・ユーザさんが触った瞬間にピンとくる何かがある

    抽象的なことですが、目新しさだったり、何か欲求を満たしてくれたり、構成の妙だったり、といったものでしょうか。

  これらは開発側の意見も重要ですが、最終的には直接ユーザさんの声を聞いて確かめることが大事です。

    

・ユーザさんが遊びを理解できる

    ゲームの遊びがわかりやすいということ、ユーザさんにとって慣れているということです。

    現実にないような体験はそもそも理解が難しいこともあるでしょう。

    また、音声による対話やジェスチャーでインタラクションができることは敷居が低いと言えますが、

  Pepperの解釈と人の解釈が一致するような工夫が必要だと思います。

  可能ならばPepperに自由に話した内容を読み取ってほしいわけですが、

  まずは選択肢を制限してシンプルにするのがよいと思います。

    

・必ずしも革新的である必要はない

    ゲームを遊ぶ人はそう簡単には変わりません。ゆえにその人が面白いと思うものも変化はしないです。

  面白いゲームにはシステムやアート要素が似ていることはよくあります。

    すでにある遊びを視点を変えて作るだけでもユーザさんには新しく映り、楽しんでくれるものです。

    Pepperの特徴をうまく取り込むことで、すでに世にあるゲームを新しいゲームとして作り変えることができると思います。

    

・他の人にも教えたくなる

    誰かが他の人に勧めるほどのものであれば、きっと他の人が遊んでも面白いと思うはずです。
  むしろ狙って「こんな機能あると他の人にも話たくなるな」と思えるものを作るのもよいでしょう。 
  しばらくはソフトバンクさんやα-Pepperユーザさんにバズらせてもらえるかが鍵かもしれません。

 

今は、Pepperでできることで、ユーザさんの反応がよいものを集めるフェーズです。とにかく面白そうなアイディアがあれば、作ってみて、アプリストアに公開して、反応を見てみるのがよいでしょう。その際、上記の観点も含めて振り返って、よかった点、悪かった点をアプリ開発に取り込んでいくのがよいと思います。

 

本エントリーの内容は以上となります。

Pepper自体、まだハードウェアもでたばかりで開発そのものも難しいですが、開発に着手する前に考えておくこともたくさんあります。本エントリーが皆様の助けになりましたら幸いです。