ゲーム

容量わずか25KB、腕時計「Pebble」で遊べるRPG「PebbleQuest」


2015年に登場するApple Watchや、2014年に発売されたAndroid Wear搭載のスマートウォッチが多くの注目を集めていますが、両者に先駆けて2013年にはクラウドファンディングのKickstarterで資金を集めたスマートウォッチ「Pebble」が登場し、熱狂的ともいえる人気を集めています。そんなPebble向けに画面上で遊べるロールプレイングゲーム(RPG)を開発した人がいるのですが、そのゲーム容量はなんとたったの25KBに収められているそうです。

Gamasutra: David C Drake's Blog - PebbleQuest: 25kB of Awesome
http://www.gamasutra.com/blogs/DavidCDrake/20150330/239932/PebbleQuest_25kB_of_Awesome.php

Pebbleは画面に消費電力が少ないE-inkを搭載することで無充電のまま約1週間にわたって使えたり、iOSとAndroidの両方に対応するなど、いわばスマートフォンの隠れ本命ともいえる存在。2015年3月には、次期モデルとなる「Pebble Time」がKickstarterでのキャンペーンを実施し、2000万ドル(約24億円)というKickstarter史上でトップとなる出資額を集めています。

Pebble Smartwatch | Smartwatch for iPhone & Android


PebbleではSDK(ソフトウェア開発キット)を提供しているので誰でも自由にアプリを制作することが可能。これを利用して、ゲームデザイナーのDavid C. DrakeさんはPebble上で遊べるRPGの「PeebleQuest」を開発することにしたそうです。


Drakeさんは約15か月の間、時間を見つけてはゲームの開発を進めてきました。初期段階のDrakeさんにはC言語の知識が少しだけ、そして先述のPebble SDKとCloudPebbleというツールしかない状態だったそうで、大きく分けて3つの段階を経てゲームは徐々に完成形に近づいていったそうです。

◆Level 1:FPV迷路ゲーム「MazeCrawler」
まず作成したのが、以下の「MazeCrawler」というゲーム。3Dで再現された迷路を進みながら出口を見つけるというゲームで、DrakeさんはこれをFPV迷路ゲーム(first-person, maze-navigation)と呼んでいます。

PebbleCrawlerは、Pebble本体の右側にあるボタンを使ってシンプルな3D迷路の中をさまよってゴールを目指すゲームで、開発期間はおよそ2か月とのこと。MezeCrawlerはPebble App StoreからPebbleにインストールすることが可能です。

◆Level 2:FPVシューティングゲーム「SpaceMerc」
PebbleCrawlerを完成させたDrakeさんは一気にPebbleQuestの完成を試みますが、ここでPebbleに搭載されているメモリ容量という壁に当たります。ゲームのデータ容量がある一定以上に大きくなると、インストール自体は問題なく完了しても、実行させた時にクラッシュするという事態に直面。この問題を解決するためにはゲームそのものを根本的に作り直すことが不可欠となり、開発は行き詰まってしまったとのこと。

ここでDrakeさんは、いったんPebbleQuestのことを脇におき、別のシンプルなゲームの開発に着手しました。それが、この「SpaceMerc」と呼ばれるゲームで、いわゆる「一人称シューティング(FPS)」の形式を持ったものですが、Pebbleでは初のFPVシューティングゲームとなりました。

DrakeさんはこのゲームをPebble App Storeでリリースしつつ、2014年 Pebble App Challengeの締め切りにギリギリで間に合い、エントリーを行ったそうです。

◆Level 3:「PebbleQuest」
SpaceMercのリリース後はゲーム開発に時間が取れなかったDrakeさんでしたが、2014年9月にようやく本来の目的であったRPGゲーム「PebbleQuest」の開発を再開。ゲームの設計を根本から見直すことで課題だったゲーム容量の問題解消を図り、いくつかの回避策を見つけることに成功したとのこと。開発・テスト・修正の作業を幾度となく繰り返し、自らに課していた締め切りである「2014年のクリスマス」当日の朝に完成を迎えました。

PebbleQuestではバトルが発生した際に、プレイヤーと敵キャラが交互に攻撃と防御を繰り返すターン制ではなく、リアルタイム制が取り入れられています。攻撃は武器による直接攻撃と魔法攻撃を使うことが可能。操作性の難点を解消するために、プレイヤーは1秒間に4回アクションを起こすことができるのに対し、敵キャラは1秒間に1回しか攻撃ができないように難易度が最適化されているとのこと。


ゲーム内には、以下のような中に浮いた丸いモンスターなども登場。攻撃によるダメージを再現するため、Pebbleが持つレイヤー表示機能が用いられているそうです。


プレイヤーはキャラクターを「すばやさ(Agility)」「つよさ(Strength)」「ちせい(Intellect)」の3種類に分けて成長させることが可能で、つよさを選べば「戦士」、すばやさなら「盗賊」、ちせいは「魔法使い」といった具合に、ファンタジー系RPGでは欠かせない各職業も設けられています。


また、キャラクターは以下のようなステータスを持っており、職業ごとに異なるステータスの伸びをみせて個性を演出してくれます。
・攻撃力 (Physical Power)
・魔力 (Magical Power)
・攻撃防御力 (Physical Defense)
・魔法防御力 (Magical Defense)
・最大HP (Max. Health)
・最大エネルギー (Max. Energy)
・HP回復力 (Health Regeneration Rate)
・エネルギー回復力 (Energy Regeneration Rate)
・疲労 (Fatigue Rate:攻撃を行う際のエネルギーの減少率)

◆Pebbleでのゲーム開発
ゲームの世界ではあまり一般的ではない「スマートウォッチ」という制限の多い環境でゲームを開発したDrakeさんは、その経緯とノウハウをブログで公開しています。ブログの中では以下のようなプログラミングに関するアドバイスやノウハウが列記されており、関心のある人には参考になりそうな内容になっていました。

・デザイン上の理由で必要がある場合以外は、Pebble SDKにすでに含まれている機能を自分で作ろうとはしないこと。例えば、オリジナルフォントの使用は避けて純正のフォントを使うことや、メニュー画面は純正のMenuLayerを使うこと、など。
・可能な限り、浮動小数点は扱わずに整数のみを用いること。データ型には[int32_t]や一般的な[int32]を使わず、[int8_t]および[int16_t]を使うこと。また、定数を用いる場合は1/2/4/8/16/32のような2の乗数が適していることを覚えておくこと。例えば、[rand() % 10]は[rand() % 8]よりもやや多くのメモリを消費する。具体的には8バイト分。
・[typedef]の使用を避ける。とはいうものの、いくつかのタスクでは[struct]定義が便利であることも事実ではあるが、可能な限り控えること。[struct]の容量を小さくするにはこのページ(英文)が参考になる。

この記事のタイトルとURLをコピーする

・関連記事
iPhoneでもAndroidでも使えるスマートウォッチ、新型「Pebble Time」登場 - GIGAZINE

14歳のときに妄想した夢の自作ゲーム「トビアスと暗黒の杖」が13年かかってついに完成 - GIGAZINE

一夜にして大金を稼いだゲームクリエイターたちが抱える苦悩 - GIGAZINE

自分で横スクロールゲームを作れる「Pixel Press Floors」でゲームを自作してみたらこうなったレビュー - GIGAZINE

ソニック・ザ・ヘッジホッグを自作ゲーマーが8ビット化、Atari2600で復活作業中 - GIGAZINE

何度やってもマリオの幻の「-1面」に突入できない女性が力業で再現 - GIGAZINE

in モバイル,   ソフトウェア,   ゲーム, Posted by darkhorse_log

You can read the machine translated English article here.