1 July 2011
ページ ツール |
特別な経験は不要。Flash Platform でのゲームデザインや開発への興味のみ。
すべて
注:この記事の主な対象読者は、Flashデザイナー、Flash Platformの新規ユーザー、およびFlash Platformでのゲーム開発を評価するビジネス意思決定者です。この記事には、Flashゲーム開発に関心のある、経験豊富なActionScript開発者にとって役立つ情報も記載されています。ただし、ゲーム開発に特有の高度なActionScriptプログラミングテクニックについては、Gary Rosenzweig氏の書籍『ActionScript 3.0 Game Programming University』がお勧めです。
Flashゲーム(Adobe Flash Platformで作成されたゲーム)は、至る所で見かけます。これらのゲームは、Newgrounds.comやAddictingGames.comを始めとした多数のゲームアーケードサイトで楽しむことができます。提供されているゲームのジャンルは多岐にわたり、代表的なものとしてアクション、アドベンチャー、カジノ、パズル、ロールプレイングなどがあります。これらのゲームは、ブラウザーやプラットフォームに依存することなくインタラクティブに操作できるので、ユーザーはパソコンでもモバイルデバイスでもゲームをプレイできます。スタンドアロンのアプリケーションとして配布できるのはもちろんのこと、大規模なサイトに設置してその価値を高めたり、Facebookなどの人気の高いソーシャルネットワークに組み込んだりすることもできます。まだあまり知られていませんが、Adobe AIRテクノロジーを使用すると、FlashゲームをApple App StoreからiOSデバイス上にデプロイできます。Alien HominidやLine Riderといった優れたゲームは、とりわけ人気が高かったので、Flash Platformから任天堂WiiやMicrosoft Xbox 360などのコンソールに移植されました。気軽にプレイできるオンラインカジュアルゲームは人気を博しており、Adobe Flash Platformは、そうした洗練されたゲームコンテンツを作成およびデプロイできるツールを提供します。
私自身も10年以上にわたって、オンラインゲームの設計と開発に携わってきました。大規模なゲームの世界で何千人もの同時ユーザーと協力してきました。始めた頃は、強力ではあるものの使いにくいC++プラットフォームなど、利用可能な開発プラットフォームが数多くありました。何年かたつうちに、Flash Platformツールの使い勝手が向上し、Adobe Flash Playerも進化しました。現在では、Flash Platformがオンライン2Dゲーム作成環境のデファクトスタンダードになっています。最新リリースのAdobe Creative Suite 5.5により、Flashコミュニティは、その魅力的なコンテンツを携帯電話、タブレットおよびインターネット接続テレビへと移行させています。さらに近日リリースのStage3D(旧称Molehill API)により、3DオンラインゲームにおいてもFlash Platformが最も魅力的な選択肢になることが期待されています。
この記事では、オンラインゲームの可能性についての概要と、Flash Platformの機能を紹介します。また、エンドツーエンドのゲーム開発の課題と解決策について検討します。
ゲーム業界は過去数十年間にわたり着実に成長を続けており、今後の見通しも非常に明るいものとなっています。ところで、数多くのゲームテクノロジーがある中で、なぜFlash Platformが最良の選択肢であると言えるのでしょうか。
オンラインゲームの人気が高まったのは1990年代です。その後、コンピューターの性能が向上し、インターネットのアクセス速度が上がるにつれて、ゲーム市場は大きく拡大しました(図1を参照)。
オンラインゲーム市場調査会社のDFC Intelligenceは、2011年にカジュアルゲーム分野でさらなる成長があると予測しています。
2011年の収入額のうちの約30~50億ドルは、Flash Platformで作成されたプロジェクトなどのオンラインコンピューターゲームから得られる見込みです。昨年にアメリカ人が支払ったビデオゲームのサブスクリプション料金は、30億ドルを超えました。市場調査会社のPike & Fischerが発表した新しいレポートによると、アメリカ人が1年間に支払う料金は2015年までに50億ドルに達する見込みです。
調査会社のGartnerによると、2010年に全世界のエンドユーザーから得られたモバイルゲームによる収入額は、2009年から19%増加して56億ドルを超えました。Juniper Researchは、ゲーム中の購入額がダウンロードごとの支払いによる購入額を上回るようになることで、2015年までに全世界でのモバイルゲームによる収入額が110億ドルを超えると予想しています。
また、モバイルでゲームをする傾向が強まることで、1980年代のAtariゲームのような、単純で繰り返し楽しめるゲームが再度人気を集めるようになっています。そのため、個人や少人数のチームが少ない費用でゲームを作成して、そこから大きな収益を上げることが可能になっています。
コンピューターやモバイルデバイスを対象としたゲーム開発はビジネス上大きな可能性を秘めており、その市場は今も飛躍的に成長し続けています。
Flash Playerは至る所で使用されていますが、他に選択肢がない訳ではありません。歴史的に見ると、オンラインゲームを作成するにあたって高いパフォーマンスが求められた場合には、C++、Java、Shockwave 3D、Torque、Unityなどの強力なテクノロジーが使用されてきました。
他のプラグインに頼っているゲーム開発者は、必要な実行環境をユーザーが辛抱強くダウンロードしてくれることを祈る必要がありますが、Flash Platform開発者は、ユーザーが既にFlash Playerを持っていることを期待できます。Adobe Flash Playerは世界で最も普及しているソフトウェアで、成熟した市場においてインターネット対応デスクトップの99%にインストールされており、その他にも幅広いデバイス上で使用されています。300万人を超える開発者とデザイナーがFlashテクノロジーを活用しながら、主要なWebプラットフォームとモバイルプラットフォームにまたがって、リッチなインターネットアプリケーションやコンテンツを作成、配布および収益化しています。さらに、Adobe Creative Suiteを使用する開発者は、単一の環境内で画像、サウンドおよびコードの統合をスムースにします。
Flash Player 10では格段に機能が充実し、同様にFlash Platform開発環境、Flash BuilderおよびFlash Professionalにおいても機能がこれまで以上に充実してきています。新たなリリースが発表されるたびに、その有用性や使い勝手は向上しています。これらのソフトウェアは幅広い用途に利用できたので、2000年代初頭からインタラクティブな製品やサービスを提供する人々の間で急速に普及しました。アーティストは、Flash Professionalを使用してゲームのメニューや背景画像を描いています。アニメーターは、歩行動作や爆発の様子など、ニーズに合わせて様々なアニメーションを作成しています。開発者は、Flash BuilderやFlash Professionalを使用して、同僚が作成したネイティブアセットを簡単に統合しながらプロジェクト全体をコーディングできます。専門的な各種の作業を行う場合には、もちろんPhotoshop、Illustratorなどのツール群を併用でき、これらはすべてAdobe Creative Suiteに同梱されているので、アセットの統合はごく簡単に実現できます。
Flashテクノロジーは、以前は単一プレーヤー向けのゲーム環境にすぎませんでしたが、今では何千人ものユーザーが参加する強固なゲームの世界の創造に利用できます。Flash Player 6以降、Flashには、サーバーとの間で持続的な接続を確立するために必要なソケット接続機能が備わっています。この種類の接続を通じて、少人数対少人数によるマルチプレーヤー参加型のゲーム環境を実現してきました。Flash Playerの最新バージョンには、大人数によるマルチプレーヤー参加型ゲームに必要な処理能力が備わっています。クライアント側でのボトルネックは解消されました。Flash Player 10で導入されたピアツーピア通信も、マルチプレーヤー参加型ゲームの可能性を広げています。
Flash Platformは、ゲーム業界で活躍する様々なリーダーの支持を集めています。
マルチプレーヤー参加型ゲームの開発会社ElectrotankでCEOを務めているMichael Gold氏は、次のように述べています。「Flash Playerの高い普及率とパフォーマンスにより、Flashはブラウザー利用型ゲームのデファクトスタンダードになっています。」
PushButton Labsのチームでは、ゲーム開発用のテクノロジーとして、当初使用していたC++に代えてFlashを採用しました。PushButtonの創設メンバーは、Torqueゲームエンジンを開発したGarageGamesの出身者で構成されていました。オープンソースのPushButton Engineの主任開発者であるBen Garney氏は、次のように述べています。「Flashは優れたゲーム体験を提供できます。またわずか1日で10億人もの人々に向けてゲームを公開できるという威力は圧倒的です。そして、その機能は充実する一方です。」
また、Almer/BlankのソフトウェアアーキテクトであるOmar Gonzalez氏の評価は次のとおりです。「Flash Platformでは、ロジックと、更新が容易な音声や画像のアセットがうまく分離されているので、ゲームをより簡単に作成できます。他のゲーム開発ツールセットにはない特長です。」
この節では、Flash Platformの仕組みとビデオゲーム理論の基礎について説明します。
Flashゲームを開発する前に、開発に利用する選択肢を理解する必要があります。特に、どのIDE、ランタイムおよび(存在する場合)サーバーが、対象となる各プロジェクトに最適なのかをしっかりと把握することが重要です。作業開始にあたって最も単純な方法は、Flash BuilderまたはFlash Professionalを使用して単一プレーヤー向けのゲーム(つまり、リアルタイムのマルチプレーヤーサーバーを必要としないゲーム)を開発し、SWFファイル形式で公開して、Webブラウザー内のFlash Player(ランタイム)で実行する方法です。
開発チームの規模が大きくなってきたら、アセットの作成にAdobe Flash Professionalを使い続けながら、チームでの作業に適したAdobe Flash Builderなどのツールを併用することもできます。このツールは、複数のデスクトップや様々なデバイスにまたがってコンテンツを公開できるように最適化されています。
詳しくは、「Understanding Adobe Flash Platform technologies for building games(ゲーム開発のためのAdobe Flash Platformテクノロジー)」および「Flash game development tools, runtimes, and servers(Flashによるゲーム開発のためのツール、ランタイムおよびサーバー)」を参照してください。
初めてゲームを作成する作業は比較的単純です。Flash BuilderまたはFlash Professionalだけを使用して、優れたゲームを作成できます。基本的なゲームには、次のいくつかの主な構成要素があります。
Event.ENTER_FRAMEイベントを使用する方法です。2つ目は、タイマーを使用する方法です。ENTER_FRAMEイベントの方法がより一般的であり、アニメーション、その他のレンダリングアップデートおよび人工知能(AI)ルーチンなどの非常に高頻度なアップデートに最適です。タイマーの動作方法はENTER_FRAMEイベントに似ていますが、フレームレートに縛られることなくイベントを送出できます。タイマーは、持続時間が数秒以上に及ぶ処理に最適です。これ以外にも、ActionScriptでは、他のプログラミング言語と同様、ゲームループを実装するためにforループやwhileループなどを利用できます。Flashゲームを開発するには、ActionScriptを学習する必要があります。ActionScriptの学習を開始する方法について詳しくは、後述の「手順2:開発」の節を参照してください。個人の開発者や小規模なチームは、新しいゲームの開発時に同じ基本手順で進めます。
以下の節では、これらの各トピックをさらに詳しく見ていきます。
映像が洗練された、楽しく遊べる完成されたビデオゲームは、見掛けよりも複雑です。熟練したデザイナーや開発者は、細部を隠すことでプレーヤーがゲームに没頭できるようにします。成功を収めたゲームは、優れたアイデアと優れた実装の融合であり、つまりはデザイナーの想像力と開発者の確かな技術力によって生み出されたものなのです。しかし、こうした優れたアイデアはどこからやってくるのでしょうか。いったい何から始めればよいのでしょうか。
新しいアイデアを練り上げる方法はチームごとに異なるかもしれませんが、基本的なプロセスは次のとおりです。
私の場合、ゲーム作成のために斬新なアイデアを得ようとして腰を据えてブレインストーミングを始めることもありますが、ほとんどの場合は既に頭の中にたくさんのアイデアが渦巻いています。
ゲームのアイデアは、あらゆるところから得ています。多額の費用がかかったコンソールゲームや単純なモバイルゲーム、実世界でのゲームやスポーツ、映画、アニメ、本、友達との会話、夢、悪夢など、ヒントはいろいろなところに落ちています。ゲーム作りに携わる職業柄、いつでもアイデアを書き留めるようにしています。新しいゲームの構想が浮かんだらすぐにその内容をメモできるように、日記やノートを持ち歩くことをお勧めします。
日々ゲームのアイデアを探し求めている方なら、もう頭の中はいろいろなアイデアでいっぱいのはずです。そうなったら、続いてそのリストの中から候補を絞り込み、最も有望なアイデアを1つ選び出します。
個人的には、良いゲームを作る上で最も実用的なアイデアは、新しい要素と実績のある要素を組み合わせたものであると感じています。例えば、世界を新しい外観で創造してキャラクターも新規に作成しますが、ゲームメカニクスについては、スペースインベーダー、フロッガー、パックマンなどの古典的なゲームのものを使用します。ゲームのプレーヤーは、このような、新しい部分と馴染み深く安心できる部分が組み合わさった「控えめな驚き」を好むようです。
ゲームが楽しいものになるかどうかを知る方法はあるのでしょうか。なかなか知るのが難しいことですが、経験を積むにつれて直感が働くようになります。それでも、その直感が外れることもあります。ゲームを初めて作成する場合には、楽しくプレイできることがわかっているゲームを真似するところから始めます。その後、作業を続けながらアイデアを変更して、より独自性のある、ゲームのプレーヤーにとって新鮮なものに変えます。
ストーリーボードのプロセスでは、まずキャラクター、ゲーム画面、ゲームメカニクスなどの概要を作成します。ゲームメカニクスとは、ゲームをユニークなものにする要素を定義するための、中心的なルール群のことです。1つのゲームは、協調する様々なゲームメカニクス(例えば、ターン、キーボード入力、リスクと報酬、上限のあるプレーヤーのヘルスなど)を特徴とします。
この段階では、画像をきれいにする作業はまだ行わず(図2を参照)、浮かんだアイデアを視覚的に伝えることだけを目的にします。これは、新しいアイデアを生み出したり既存のアイデアを洗練させたりするのに役立ちます。この段階の途中で、アイデアを発展させてさらに膨らませてもかまいません。別の方法、選択肢、複数の解決策、ゲームの様々な側面を検討することも可能です。ストーリーボードは、チームの意思疎通にも大いに役立ちます。このアイデアの共有プロセスには、アーチストだけでなく全員が関与する必要があります。
ストーリーボードを作成するときには、ゲームをプレイするユーザー層について検討することが大切です。ユーザー層がゲームの内容を規定することもあれば、ゲームの内容がユーザー層を規定することもあります。おそらく、どちらからも影響が少しずつあるのでしょう。私に関して言うと、ゲームの魅力や使い勝手が向上すると感じた場合には、独自のアイデアの各側面について妥協することにも柔軟であるようにしています。重要なのは全員を楽しませようとしないことですが、作ったゲームが人気を得るかどうかも気になるところです。そのため、ゲームの映像や操作方法の各側面について慎重に検討します。
ゲームの構想が具体化してきたら、ゲームの世界にも詳細を追加します。ゲームのプレーヤーが直面する課題を説明します。それに対する報酬を説明します。ゲームにはキャラクターを登場させますか?プロットやストーリーはどのようにしますか?キャラクターのやる気をどのように高めますか?動作を見るゲームプレーヤーの視点は、上からにしますか、それとも横からにしますか?ゲーム内に重力は存在しますか?キャラクターが怪我をしたり命を落としたりすることはありますか?もしあるなら、その方法はどのようなものですか?ゲームの世界が現実的であるかどうかは重要ではありませんが、そこには因果関係がある必要があります。つまり、ユーザーが理解できる、わかりやすく一貫性のある原因と結果が存在する必要があります。ユーザーは、ゲームで遊びながらすぐに概念的な用語を理解し、ゲームの世界について学んでいきます。さらに、あれこれ憶測するようになります。これらの憶測を受け入れて、ゲームをより魅力的なものにします。
デザインドキュメントは、映画の台本のようなものです。この時点から新しいアイデアに制限を設け、ゲームの最終的な形を決定します。このタイミングは、ゲームに良い影響または悪い影響を及ぼし得る、難しい決断を下すのにも適しています。
チーム開発環境では、デザインドキュメントは特に重要です。このドキュメントには、ゲームの映像、ゲームメカニクスおよびメニューに関する最終決定事項の全一覧が明示されているので、開発中にチームメンバーの全員が同じ考えを共有するのに役立ちます。チームの事情に応じて、デザインドキュメントの完成後にその変更を許可しない場合と、開発段階の主な節目において変更を認める場合があります。
計画と開発の期間中には、核となる構想を繰り返し確認することが重要です。楽しく遊べるゲームか?対象ユーザーにとって魅力的な内容か?対象デバイスに適したものか?実装するアイデアについて、他の人々、特に対象ユーザー層のメンバーから必ずフィードバックを得るようにします。
Flashゲームの開発を成功に導くための検討事項
ゲームを作成する方法や理由は人それぞれであっても、だれしも、楽しく遊べて多くのプレーヤーの人気を集めるゲームを作ってみたいと考えたことがあるはずです。重要な検討事項の1つは、ゲームを簡単に入手してプレイできるようにすることです。ユーザーは、時間がかかる複雑なセットアップを行うことなく、すぐにゲームを開始できる必要があります。ユーザーに対してゲームの操作方法を伝える説明文を表示するのではなく、インタラクティブなチュートリアルを用意することを検討します。
人気ゲームポータルAddictingGames.comのクリエイターであるIra Willey氏によると、次の各ガイドラインに従いながら、没入型のゲームコンテンツと卓越したパフォーマンスを備えたゲームを提供すれば、繰り返しプレイしてくれるプレーヤーを引き付けることができるとのことです。
役立つヒントと推奨事項について詳しくは、Ryan Wolniak氏のeBook『Getting Your Flash Game Sponsored』を参照してください。
ゲームの作成中、プロセスを有機的に繰り返すことは非常に有益です。デザイン段階においては、ゲームの細部をすべて把握しきれないことがよくあります。画像の最終的なサイズがわかるのは、関連するコーディングの終了後であったりします。画面上に敵を10人表示したところ多すぎたので、後から8人に減らしたいと思うときもあります。難易度の設定は、ゲームをかなりプレイしてからでないと判断できないものです。効果音についても、実際にはかなり耳障りであることがわかったので、変更したいと感じることがあります。作業を進めながらゲームの構想を柔軟に微調整することで、可能な限り最高のゲームを作成できます。
以下は、Flashテクノロジーでゲームを開発するときの基本的な手順です。
ゲーム開発プロセスの重要な部分は、実際にコーディングする作業です。前述したように、FlashゲームのコーディングにはActionScript言語を使用します。ActionScriptは時間をかけて発展してきたプログラミング言語であり、現時点ではバージョン3が最新です。Flashゲーム開発者になるには、(ActionScriptバージョン1または2ではなく)ActionScript 3.0を学習する必要があります。学習方法は人それぞれなので、自分に最も合ったやり方で学ぶのが良いでしょう。とは言え、ここでは入門用としてお勧めの書籍を数冊紹介しておきます。
ActionScriptに慣れてきたら、身に付けた知識をFlashゲーム開発に適用する方法を学習するのが良いでしょう。その際には、Flashゲーム開発に関する様々な書籍の中から1冊を選んで参考にします。これらの一部の書籍には、ActionScript言語の概要が含まれているものがあります。一方、読者が既にActionScriptの知識を持っていることを前提として、コードの解説から始まるものもあります。
最後に、継続的な学習をすることを強くお勧めします。Flashゲーム開発ブログをフォローし、ActionScriptフォーラムやFlashゲーム開発クックブックに参加し、Kirupa.comやActionScript.orgなどのActionScript専門Webサイトを購読および閲覧し、Flash PlatformゲームデベロッパーセンターやActionScriptテクノロジーセンターで新しいチュートリアルをチェックします。
ActionScriptを使用していくつかゲームを開発したら、様々なFlashゲームエンジンの中から1つを選んで、一般的なプログラミングタスクの実行に役立てたり、ゲームコード用のフレームワークを利用したくなるかもしれません。Flashゲームエンジンについて詳しくは、Flash Platformゲームデベロッパーセンターのゲームエンジンページを参照してください。
ゲームはいったいだれが作成するのでしょうか。この問いに答えるために、Mochi Mediaによる調査を参考にしてみましょう。この会社は、ゲーム開発者が各自のゲームを収益化するのに役立つツールを提供していますが、最近、包括的なFlashゲーム市場調査を実施しました。その結果は、だれがどのようにゲームを作成しているのかに関して興味深い視点を提供しています。
調査で判明した主な事実は、以下のとおりです。
Flashゲーム開発者の70%が趣味または副業としてゲームを作成していることも興味深い点です。こうした開発者は、他に本業で主な収入を得ていることになります。この調査ではFlashゲーム開発者の60%が単独で働いていますが、ゲームを作成したらそれに関して助言を得ることを強くお勧めします。デザイン、開発、および売上獲得に必要なビジネス展開のすべてに秀でた人はまれだからです。
Flashゲーム業界では、多くの開発者が請負契約者または常勤労働者として働いています。これらの人材には、ゲームアイデアのクリエーター、ゲームアセットである画像とアニメーションを描くアーチスト、音声デザイナー、そしてもちろん、すべての部分を1つにまとめるプログラミング技術を持ったFlashおよびFlexゲーム開発者が含まれます。また、ゲームのマーケティングおよびプロモーションを担当するビジネス展開の仕事もあります。
雇われて働くことは、安定して生計を立てるのに向いており、時に非常にやりがいがあって楽しいものです。それでも、より自由に創造性を発揮しながら多くの収入獲得を目指すなら、思い切って自分でゲームを作成して収益化してみるのが良いでしょう。
Flashゲームのアート制作については、TangledDreams.comのAutumn Rain Turkel氏の言葉が参考になります。ご自身の長年の経験に基づいて、アーチスト向けに次の2つの重要なヒントを示してくれています。
Autumn氏のようなアーチストの辛抱強さとチームワークは、開発者にとってありがたいものです。開発者の側も、元のアセットの品質を維持してプロジェクト全体のビジョンが保たれるように、最善を尽くしながらアセットを統合する必要があります。
Flash PlatformおよびAdobe Creative Suiteでは、アートをプロジェクトに統合するための様々なワークフローを柔軟に採用できます。Flash Professionalは、画像、アニメーション、音声およびビデオに使用されている、一般的に使用される多数の形式をサポートしています。PhotoshopファイルやIllustratorファイルをFlash Professionalに取り込むこともできます。
必須ではありませんが、アーチストがFlash Professionalで直接作業した方が効率的です。開発を後でFlash Builderで行う場合でも、開発者は、Flash Professionalで作成されたアーチストのSWFファイルを取り込むことができます。この方法により、作成中にアートアセットをツール間で簡単にやり取りしたり、実行時にアセットをすばやく拡大縮小または回転させたりすることができます。
完成したアートは、主に2種類の方法でゲーム内に読み込むことができます。1つ目は、アセットをFlashライブラリに埋め込む方法です。これは最も簡単なワークフローですが、SWFファイルのサイズが大きくなるのでユーザーによる最初のダウンロードの時間が長くなります。2つ目は、アセットを実行時に、レベル間で、または必要になった分だけ読み込む方法です。最適なソリューションは、プロジェクト、アセットの量および対象デバイスに応じて異なります。
詳しくは、私のブログの記事「Using Embed & AssetManager for Flash/Flex Workflow」を参照してください。
以前書いた記事「An introduction to developing games on the Adobe Flash Platform(Adobe Flash Platformでのゲーム開発の概要)」では、ゲーム理論が実際のゲームにどのように適用されるかを説明しました。その記事では、読者の理解を深めるために、Flyerという簡単なゲームを作成しました。このゲームの操作方法は、1980年代のアーケードゲームであるFroggerに似ています。ユーザーの宇宙船は、画面の下側から動き出します。この宇宙船を4つの矢印キーを押して操縦します。画面の上側に到達したら勝ちです。上にたどり着くまでに敵(複葉機および飛行船)と衝突したら負けです。
ゲームを作成している間、特にプロジェクトが完了したときには、ゲームをテストして改良および最適化することが重要です。
プロジェクトの規模およびチームの人数に応じて、様々な形態でテストを実施できます。個人の開発者であれば、自分および何人かの友達のみでゲームをプレイしてテストを済ませる場合もあるでしょう。自分が作った作品を自分で客観的に評価するのは難しいものです。新しい問題や新しい解決策を見つけることができるように、目と心をしっかり開いてテストに取り組む必要があります。ユーザーによるテストでは、開発者が予想もしない問題や課題が見つかることが多々あります。
大規模なゲーム開発チームには、しばしばゲームのテスターで構成される専属の品質保証(QA)チームが存在します。このグループがゲームをプレイして、変更および提案の一覧を作成します。予算が許すなら、Flashゲームのテスティングサービス会社にテストを依頼するという方法もあります。
チームの規模にかかわらず、次の根本的な質問に答えられるものが良いテストプロセスになります。
すべての質問に「はい」と答えられるなら申し分ありません。作業は終了です。ゲームの配布準備は整っています。しかし、通常は前の段階に戻ることが必要で、改良を加えるためにアート、プログラミング、レンダリングおよびゲームメカニクスを変更することを求められます。
Webゲームの場合は、様々なコンピューターとWebブラウザーでゲームをテストします。すべての環境で動作が適切であることを確認します。自分のコンピューターでゲームの動作に問題がなかったとしても、対象となる各ユーザーがそれぞれ異なるコンピューターやデバイスを使うことに十分注意してください。
携帯電話やタブレットの場合には、テストがさらに難しくなることがあります。デバイス間に(画面サイズ、画面密度、入力方式などの)違いがあることに加え、膨大な数のデバイスが出回っていることが、この作業を複雑にする要因となっています。Flash BuilderおよびFlash ProfessionalにはFlash Playerのデバッグ版が付属しており、これによって開発およびテストの実施時に追加情報(出力トレース、再描画領域など)を確認できます。Flash ProfessionalにはエミュレーターのパッケージであるDevice Centralも付属しており、これを利用して人気のあるモバイルデバイスをコンピューター上でシミュレーションできます。このツールは非常に便利ですが、可能であれば物理デバイス上でもテストを実施してください。
この作業を行うときに重宝するのがDeviceAnywhere社のサービスです。この会社には数千台もの物理デバイスがあり、ユーザーはこれらを利用してリモートからテストを実施できます。この会社はテスティングサービスも行っているので、QAプロセスの一部または全部を依頼することもできます。
Flash Builder 4.5を使用すると、Flash Builderが実行されているコンピューターにUSB経由でデバイスを接続できるので、ゲームを開発しながらデバイス上でテストを実施できます。この様子については、Ed Rowe氏のビデオ「Guided Tour of Mobile Application Development with Flash Builder 4.5(Flash Builder 4.5によるモバイルアプリケーション開発のガイドツアー)」をご覧ください。
開発者のTed Patrick氏は、初期の頃からFlashを扱って仕事をしてきました。Flash Playerの内部構造についても知識を持っています。Ted氏はご自身のブログで、Flash Playerをレース場に例えて説明しています(図3を参照)。このレース場には、明確に異なる2つのセクションがあります。その1つはActionScriptを実行するためのもの(イベント処理用のサブセクションを含む)で、もう1つは画面にコンテンツをレンダリングするためのものです。Flash Playerは、実行されている間、SWFファイルで1秒あたりのフレーム数(FPS)として指定された初期設定速度でこのレース場を周回します。Flash Playerは、命令の内容にかかわらず、この設定速度を常に維持しようとします。指定されたFPSはレース場の最高速度です。処理がこの上限よりも速くなることはありませんが、遅くなることはあります。
重要なポイントは、コードの実行を遅延させる組み込みの方法はなく、レンダリングの実行を遅延させる組み込みの方法もないということです。Flash Playerはロスレスです。現在のフレームレート設定によって指定されたフレーム間の時間よりも長くかかる命令であっても、その命令のすべてを、与えられたフレームループ内で処理します。そのため、端的に言うと、問題を避けるために、Flash Playerに処理能力を超える処理を命令しないことが必要です。
問題が発生したかどうかを知るにはどうすればよいでしょうか。コードの実行またはレンダリングが重い場合、Flash Playerがその命令を処理しようとしているときに、Flash Playerのフレームレートが一時的に欠落(さらにはフリーズ)します。ゲームのアニメーションが明らかにぎくしゃくし始め、ゲームが全体的に遅くなって応答しなくなることもあります。最適化はそれ自体が1つのアートですが、これらが、何らかの最適化が必要であることを示す基本的なヒントです。
実際に問題が発生する前から、ボトルネックとなる可能性がある箇所を検討することが重要です。負荷の高い計算処理を行うコード(物理的処理、AI、データ解析)または大量のレンダリング(3D、ピクセルレベルの操作、多数のスプライト移動)を実行する場合には、それらの部分の最適化に重点的に取り組みます。
コード実行の最適化には、以下のような技法を利用できます。
if、break、continueなどの構文を使用します。このトピックについて詳しくは、この節で後述するリンクを参照してください。DisplayObject.cacheAsBitmapプロパティをtrueに設定すると、これらの計算の結果が保存されて再利用され、パフォーマンスが向上します。このトピックについて詳しくは、Thibault Imbert氏による資料「Optimizing Performance for the Adobe Flash Platform」およびFlash Platformゲームデベロッパーセンターの「Performance and Optimization(パフォーマンスおよび最適化)」を参照してください。
カジュアルゲームの収益モデルは多岐にわたります。通常、オンラインゲームは無料でプレイできますが、その操作ページにはしばしばバナー広告が表示されます。サイト所有者は、サードパーティサイトにトラフィックを誘導して収益を上げます。無料でプレイできるゲームのうちには、ゲーム内に商品の広告が表示されるものもあります。これらの”アドバゲーム”は基本的に1つの大きな広告であり、プロダクトプレイスメントに似た技法を用いています。劇場用映画のWebサイトやおもちゃのWebサイトでは、販売促進キャンペーンの一環として、アドバゲームが用意されていることがよくあります。例えば、このビデオでは、映画のプロモーション用に開発されたGreen Hornetゲームが紹介されます。
カジュアルゲームから収益を得る別の方法として、フリーミアムビジネスモデルを利用したものがあります。このシナリオでは、ユーザーは無料で体験版をプレイできますが、機能が充実した完全版をプレイする場合にはお金を払う必要があります。この他、サブスクリプションやマイクロトランザクションといった収益化方法もあります。
ゲームの配布および収益化の戦略は、ブレインストーミング段階で決定するのが最適です。画面サイズや入力方式は対象デバイスごとに異なるため、配布戦略はゲームに影響を及ぼします。選択する収益化戦略によっては、ゲームのコンテンツ(または少なくともメニュー)にも影響があります。必要に応じて、広告の統合、スポンサーのリンクまたはボタン、バーチャルアイテムの販売などの部分を実装します。
配布戦略では、作成したゲームをプレーヤーの手に届ける方法を規定します。大規模なプロジェクトでは、ゲームを新しいユーザーに届けるために明確なマーケティングキャンペーンを行う傾向にあります。
Webベースのユーザーは、ブラウザーでゲームをプレイするか、または利用可能な任意のサイトからスタンドアロンのゲームをダウンロードすることができます。モバイルプラットフォーム用のアプリケーションに比べて、市場は比較的開かれています。
多くのモバイルプラットフォームでは、ユーザーは、デバイスのアプリケーションマーケットプレイスの囲い込まれた市場に入る必要があります。このマーケットはデバイス製造元またはモバイルキャリアが管理しており、アプリケーションの購入およびダウンロードが可能になっています。
Mobile Gamesレポートで執筆者のDaniel Ashdown氏は、次のように述べています。「ユーザーがゲームを見つけてくれるかどうかは、鶏が先か卵が先かという問題とも言えます。ダウンロードが増えると有名になりますが、既に有名であることはダウンロードを増やす大きな要因であるからです。その結果、少数のゲームが非常に多くダウンロードされる一方で、大多数のゲームはほとんどダウンロードされないことになります。」
ゲームをマーケットプレイスに送り込む戦略はデバイスごとに大きく異なりますが、基本的には、最初に最高の印象を与えるようにします。人気が出たゲームの人気は継続するからです。他のゲームは、すぐにゲームプレーヤーから忘れ去られます。
ゲームを首尾よく配布するには、様々な課題を乗り越える必要があります。幸いなことに、これを手助けしてくれる企業があります。詳しくは、Flash Platformゲームデベロッパーセンターの「Distribute, measure, and monetize(配布、評価および収益化)」ページに一覧表示されている企業を参照してください。配布戦略には、明確な対象ユーザー層、およびそのユーザー層によって使用される可能性がある複数のデバイスを含める必要があります。Flash Platformは、対象ユーザー層に到達できるように多数の配布先に対応しています。
Flash Playerを介したFlash Platformの配布先:
ゲームのニーズおよびアーキテクチャに応じて、一度に全プラットフォームに公開することも、プラットフォームごとに変更を加えることもできます。詳しくは、Christian Cantrell氏の「One Application, Five Screens (Including iPad)(1つのアプリケーション、5つの画面(iPadを含む))」およびJonathan Campos氏の「Architecting your application for multiple devices(複数のデバイスに合わせたアプリケーションの設計)」を参照してください。
ゲームのライセンシングなど、一部の収益化戦略には配布戦略が含まれます。しかし、そうでないモデルを選んだ場合には、どのように完成品をゲームプレーヤーの手に届けるのでしょうか。
大規模なソーシャルゲーム会社(Zynga、EA、Playdomなど)は、自己宣伝およびバイラルマーケティングに実績があります。Flashゲームの内外で、ユーザーはゲームの活動や進み具合を他の人と共有したり、友達を誘って一緒に遊んだりすることができます。Flashゲーム空間に新しく登場したHeyzapは、ゲーム開発者がゲームを配布するのに役立ちます。もちろん、販売促進を自分で行うこともできます。
プロジェクトの販売促進のため、Webサイトを作成したり、ソーシャルネットワーク(Twitter、Facebookなど)を利用してトラフィックを生み出したりすることができます。GamerSafe、Heyzap、Mochi Mediaなどの企業のサービスを利用すると、各自のゲームに関するコミュニティを構築して維持することもできます。いずれの企業でもAPIおよび優れた機能を数多く含んだサービスを提供しており、ゲームのユニバーサルなセーブ、トロフィーシステム、ハイスコア、マイクロトランザクション、バイラルプロモーション、セキュリティなどの機能を利用できます。ゲーム内へのソーシャルネットワークの統合について詳しくは、「Distribute, measure, and monetize(配布、評価および収益化)」を参照してください。
ゲームのビデオをYouTubeやVimeoに追加するのも有益です。こうすると、ゲームの噂が口コミで広まりやすくなります。
Newgrounds.comのゲームポータルでは、Flashゲームを投稿してプレーヤーから評価を得るのに役立つ、とりわけ公正なシステムを利用できます。広告を統合する前にゲームを投稿することによって、プレーヤーに基づく評価、レビュー、非公式のバグレポート、パフォーマンス統計情報など、貴重なフィードバックを得ることができます。ゲームを短期間だけ提供する場合でも、修正や改善が必要な箇所の一覧を作成できます。ゲームの完成度を上げると販売価格が高くなり人気も上がるので、製品をライセンサーに売り込む前にこのフィードバックに対処することを検討します。
完成したゲームプロジェクトを収益化するには、主に2つの方法があります。無料でプレイするゲームを提供する方法と、有料でプレイする高品質のゲームを提供する方法です。
無料のゲームは、次のような方法で収益化します。
次のような方法で高品質のFlashゲームをビデオゲームコミュニティに直接販売することによって、お金を得ることもできます。
詳しくは、私の記事「How to Make Money with Online Games(オンラインゲームで収入を得る方法)」およびFlash Platformゲームデベロッパーセンターの「Distribute, measure, and monetize(配布、評価および収益化)」ページを参照してください。
プロジェクトのユーザーが見つかったら、貴重なフィードバックが得られるようになります。多くのゲームポータルでは、ゲームプレーヤーがゲームについてコメントしたり評価を下したりすることができます。この情報を注意深く分析し、ゲームの改善に役立つものがないかをチェックします。
だれがゲームを閲覧、プレイ、繰り返しプレイしているのかを評価することは、良い出発点になります。しかし、これらの結果から学習することができて初めて、より人気のあるコンテンツを短期間で作成できるようになります。ポータルによっては統計を閲覧できるところがありますが、独自の統計を統合することをお勧めします。これを手助けしてくれる企業があります。Mochi MediaはActionScript 3のAPIを提供しており、これにより分析およびその他のサービスのホストを利用できます。PlayTomicでは、標準的なゲームイベント(ゲームの開始、ゲームの停止、終了したレベルなど)および定義可能なカスタムのゲーム内イベントを評価できます。ゲームのカスタム分析の評価結果は、ゲームの難易度を微調整する必要があるときに特に役立ちます。例えば、ほとんどのユーザーがゲームのレベル10に出てくるボスを倒せない場合は、少し簡単になるようにゲームをアップデートできます。
どの配布方法を選択する場合でも、後でコンテンツをアップデートできるようにしておく必要があります。主要なすべてのゲームポータルはアップデートに対応しており、同様に、ゲームの提供先候補である多数のモバイルマーケットプレイスもアップデートに対応しています。
バグの修正、分析に基づいたゲームの改善、レベルやキャラクターなどの新しいコンテンツの追加のいずれであるかにかかわらず、初期リリースの後にゲームをアップデートすることで製品寿命を可能な限り伸ばせます。サブスクリプションに基づく収益化戦略では、しばしば、不定期にコンテンツをリリースして会員ユーザーの満足度を維持することが行われます。
Flash Platformには、洗練されたゲームを開発してレンダリングすることができる基盤が備わっています。Flashコミュニティからは、このプラットフォームの魅力をいっそう高める充実した補完物が惜しみなく提供されています。オンライン上を検索すると、プロジェクトに役立つ様々なツール、ActionScript 3.0ライブラリおよびその他のリソースを無料または安価で見つけることができます。
詳しくは、Flash Platformゲームデベロッパーセンターの「Gaming engines, 3D, and Stage 3D(ゲームエンジン、3DおよびStage 3D)」ページを参照してください。
Flash Platformでのインタラクティブな開発は、Webブラウザーを対象にして始まりました。大部分のコンテンツは引き続きブラウザー内で利用されますが、Flash Platformにはさらに多くのことができるようになっています。Adobe AIRを利用すると、開発者は、ローカルコンピューターとの読み書きや全画面表示でのコンテンツ実行が可能な、デスクトップ向けのスタンドアロンアプリケーションを作成できます。2009年にアドビは、大手のモバイルキャリアおよびデバイス製造元とともに、Flash Player 10およびAdobe AIRテクノロジーを多数のデバイスに搭載し、Flash Platformの能力を携帯電話、モバイルタブレット、インターネットTVなどに解き放ちました。
現在、Flash ProfessionalおよびFlash Builderを利用する開発者は、ActionScript 3.0により多数のデバイスを対象にしてプロジェクトを作成できます。ただし、複数のデバイスに向けたデザインおよび開発では、いくつか新しい課題があります。
伝統的に開発チームは、デバイスまたはプラットフォームごとに、新しいコード、新しいAPI、さらにしばしば新しいプログラミング言語を使用して中心機構を作り直す必要がありました。1つの便利なプラットフォームから、単一のコードベースで作成したコードを多数のデバイスに公開できることは、長い間、開発者にとって夢のような話でした。Creative Suite 5.5およびFlash Builder 4.5があれば、Flash Platformによりゲーム開発者はこの夢に近づくことができます。
複数のデバイスに対応したコンテンツを開発者がより簡単に作成できるようになると、デバイス製造元およびキャリアにも恩恵があります。アドビは他の業界リーダーの後援を受けて業界全体のイニシアチブであるOpen Screen Projectを主導していますが、そこではすべての参加企業が1つの明確なビジョンを共有しています。そのビジョンとは、「任意のデバイスでどこからでもシームレスに堪能できる、リッチなインターネット体験を消費者に提供する」というものです。
前述のとおり、Flash Playerは、成熟した市場においてインターネット対応デスクトップの99%にインストールされており、その他にも幅広いデバイスで使用されているので、Flash Platform開発者は、ユーザーが既にFlash Playerを持っていることを当てにできます。iOSデバイスではFlash Playerでコンテンツを実行できませんが、それでもAdobe AIRテクノロジーを使用することで、ゲームをFlashで開発してiOSデバイスにデプロイできます。この方法について詳しくは、「Flash Professional CS5.5 - Publishing content to iOS devices(Flash Professional CS5.5 - iOSデバイスへのコンテンツの公開)」および「Developing for iOS with AIR for Mobile 2.6(AIR for Mobile 2.6によるiOS向けの開発)」を参照してください。
複数の画面サイズを対象としたアプリケーションの作成時に直面する障害は、気が遠くなるほど厄介だと思われがちです。使用可能な全領域に収まるようにコンテンツのサイズを変更するだけでは、ゲームのニーズはなかなか満たされません。重要なのは、小さなデバイス上であってもテキストが読めることです。また、ボタンはマウスポインターではなく指で押せるように、適切なサイズに変更する必要があります。1つのデバイス内でも、ユーザーはビューを横向き(幅がある)モードまたは縦向き(高さがある)モードに切り替えることができます。この動作をサポートするかどうか、そしてサポートする場合はどのような方法にするかも決める必要があります。詳しくは、Allen Ellison氏のすばらしい記事「Flash sizing Zen: Making Flash fit on mobile devices(Flashのサイズ変更の理解:モバイルデバイスに合わせたFlashの表示の調整)」を参照してください。
Flash Platformには、あるプラットフォームから別のプラットフォームにプロジェクトを再デプロイするときに役立つ機能が備わっています。それでも、単純にプロジェクトを移植するだけでは不十分な場合があります。最も魅力的なゲーム環境を提供するには、対象となるそれぞれのプラットフォームを別個のものとして扱い、デバイスごとの入力方式およびその他の機能を受け入れるようにします。少なくとも、対象となるデバイスおよびフォームファクター(電話、タブレットおよびコンピューターモニターのフォームファクターは異なります)でゲームをテストする計画を立てる必要があります。
入力方法
入力方法は進化しています。コンピューターブラウザーおよびデスクトップを対象とするコンテンツではキーボードおよびマウスによる入力のみに焦点を合わせてきましたが、他のデバイスでは事情が大きく異なります。初期のモバイルデバイスには小型のキーパッドが備わっていたので、新しい入力ソリューションが必要でした。2007年になると、iPhoneの革新的なタッチスクリーン入力が登場し、指を入力デバイスとして使用する時代が到来しました。モバイルタブレットデバイスにも多くの課題と可能性があります。一部のデバイスには専用の戻るボタンと音量調節ボタンが付いていますが、これらがないデバイスもあります。人気のある各種デバイスの入力方式には確かに共通性が見られますが、デバイスごとに最適の入力ソリューションを検討し、必要に応じてゲームをカスタマイズすることをお勧めします。現在、Flash Platformでは、ブラウザーベースのFlash Player 10.1以上、iPhoneまたはiPod touch向けに公開したSWFコンテンツ、およびAIR 2以上において、マルチタッチおよびジェスチャーがサポートされています。このトピックについて詳しくは、Christian Cantrell氏の記事「Multitouch and gesture support on the Flash Platform(Flash Platformでのマルチタッチおよびジェスチャーのサポート)」およびMike Jones氏の連載「Virtual Controllers for Touch-based Devices」を参照してください。
その他の機能
革新的な入力方式に加えて、ゲームに使用可能なその他の機能が多くのデバイスに備わっています。主な機能およびそれぞれの検討事項は、以下のとおりです。
その他の検討事項
選択する対象デバイスによっては、ユーザー向けにゲームを公開するときに特別な権限が必要になることがあります。通常、オンラインで開発者(個人または企業)として申し込むことで、公開するコンテンツがその開発者からのものであることを保証するためのセキュリティ証明書を入手する必要があります。場合によっては、料金の支払いが必要になることがあります。この手続きはデバイスごとに1回だけ行います。作成するすべてのゲームに対して行う必要はありません。最終的には、これにより、ゲームを購入してプレイしてくれるゲームプレーヤー向けに、より信頼できる環境が提供されます。このプロセスには少し時間がかかる場合があるので、開発プロセスの早い段階で申し込むのが良いでしょう。
モバイルデバイスの処理能力は通常のコンピューターよりも低いので、モバイルデバイスを対象としたプロジェクトを最適化することは特に重要です。ゲームのパフォーマンスを最大化するには、対象デバイスにおいてベンチマークテストを実行し、コードおよびレンダリングルーチンを最適化します。詳しくは、「手順3:テストおよび最適化」を参照してください。
また、モバイル&デバイスデベロッパーセンターにある「Optimize Flash content for mobile browsers(モバイルブラウザー用Flashコンテンツの最適化)」および「Flash Platform for TV(TV用Flash Platform)」も参照してください。
この節では、「セキュリティ」という用語を知的財産の保護およびゲームの不正使用の回避という意味で用いています。ゲームを作成する場合、コンパイル済みコードのセキュリティと、ユーザーがプレイしている間のゲームのセキュリティは、いずれも注目の話題です。
通常、FlashゲームはSWF形式にコンパイルされるので、HTMLページのソースコードを表示してコピーするよりも中身の取得が難しくなっています。しかし、コードの解析を可能にするデコンパイラーも存在します。ほとんどのクライアントサイドテクノロジーと同様、Flashはリバースエンジニアリングおよびハッキングに対して脆弱です。ソースコードを調べることによって、悪意のあるプレーヤーは、ゲームを不正に使用する方法を見つけようとします。採用しているビジネスモデルによっては、これが問題にならないこともあります。しかし、ソーシャルコミュニティ、ハイスコア追跡または仮想通貨を提供している、より大規模な多くの企業にとっては、セキュリティは重要です。サーバー上ではより堅固な保護が可能なので、そこにゲームデータを保持することがしばしば行われています。また、SWFファイルをロックするのに役立つツールもあります。Amayetaなどの企業が作成している、こうしたツールを使用すると、ハッカーを妨害できますが、ハッカーを完全に止めることはできません。各種のテクノロジーを組み合わせると、クライアントコンテンツのセキュリティを高めることができます。Roguishの社長であるElliot Mebane氏は、次のように述べています。「我々は、SWFゲームをC++シェルでラップして配布しています。C++でネイティブに開発した別のゲームと比較してもパフォーマンスは劣りませんし、権限管理などのセキュリティ上の恩恵も得られます。」
悪意のあるプレーヤーは、スニファーなどのツールを使用して、ゲームによって送受信されるネットワークトラフィックを監視します。これにより、正規の呼び出しになりすましてゲームに入り込み、ハイスコアの結果を偽ったり、コンテンツを不正に早くロック解除したりします。これを防ぐ技法の1つとして、すべての転送データを暗号化する方法があります。
Cheat EngineやQuick Memory EditorなどのツールによるRAMハッキングもよく知られています。ユーザーは、Flashゲームをプレイしながらこの種のツールを使用することがあります。このツールでは、コンピューターのRAMを分析して、現在のスコア、ライフの数またはその他の重要な情報の格納場所を特定します。このためにユーザーは、現在の値が何を表すのか(画面にスコアが表示される場合は簡単に特定が可能です)およびその値がどのように変化するのかを知る必要があります。続いてユーザーは、各自のスコアをゲーム内で実際に獲得することなく手作業で不正に操作します。これを難しくするには、画面上に表示するすべての変数の値を暗号化することによってその内容がユーザーに筒抜けにならないようにします。
この記事では、広範なトピックを取り上げましたが、これ以外にも興味深い情報がたくさんあります。上の各節で紹介した様々な参照先リンクをたどって、さらに学習を継続されるのも良いでしょう。
Adobe Developer ConnectionのFlash Platformゲームテクノロジーセンターは、記事、チュートリアルおよびその他の興味深い資料を見つけるのに最適の場所であり、あらゆる技術レベルのWebゲーム開発者が利用できます。開発を始めたばかりの場合は、ここで学習を進めたり刺激を受けたりすることができます。経験豊かな開発者の方も、いっそう印象的なゲームの開発に役立つ新しいリソースを見つけられることが多く、さらに、自ら有益な記事を執筆してコミュニティに提供することもできます。
実践的な経験の代わりになるものはありません。最初のゲームに取り掛かるのは大変かもしれませんが、重要なのはとにかく始めてみることです。前述したFlyerゲームのような小さいプロジェクトを選んで、最初のFlash Platformゲームをぜひ作ってみてください。
最後に、Say Design社CEOのJohn Say氏の言葉を紹介します。「90年代後半にFlashにActionScriptが登場して以降、Flashは着実に成長を続け、バナー広告から始まったその用途は現在随分と広がりを見せています。10年を経過した今、私は、Flashがそのパフォーマンスと機能の両方を絶え間なく向上させながら、クロスプラットフォームのオンラインゲーム分野を劇的に変えていくことを確信しています。」
Adobe Flashテクノロジーで作成されたゲームは、本当に至る所で見かけます。カジュアルゲーム業界の未来も明るそうです。Flash ProfessionalおよびFlash Player 10の機能はかつてないほど充実しており、開発者から要望があった事項については、(すべてではないものの)そのほとんどが実装されています。こうしたインタラクティブなカジュアルゲームの背景にある基本理論とその適用方法を理解すれば、ゲーム作りに取り掛かるのがいかにたやすいかがわかるはずです。今すぐぜひ始めてみてください。
この記事を執筆するにあたり、貴重な知見と助言を与えてくれたすべてのコミュニティリーダーに感謝の意を表します。また、毎日私に楽しみと刺激をもたらしてくれるすべてのゲームデザイナーとゲーム開発者にも特別の感謝を送ります。