48時間でゲームを作れ!世界最大のゲーム開発者の祭典!
Global Game Jamというイベントをご存じですか?
Global Game Jam(GGJ) とは、世界中のゲーム開発者がイベントで出されるテーマをもとに世界同時にゲームを開発するハッカソンです。開発に与えられる時間はわずか48時間。この短い時間の中でプログラミング、グラフィック、音楽、そしてリリースまでをこなさなければなりません。
参加者はアマチュアの学生やプロで主に構成され、中には高校生や業界20年以上の大ベテランまでいたりします。この集まった参加者から即席のチームを編成し、3日間でゲームを開発します。アマチュアはプロの仕事に触れることができ、プロは仕事では挑戦できないゲームを自由に開発できるのがGGJの醍醐味です。
GGJは2009年から始まり、今年で6年目。1月24~26日の3日間に開催された今回の2014年大会には世界72ヶ国から23,710人の“ Jammer” が集い、4,282本のゲームが開発されました。GGJの参加者は毎年増え続けており、今年も世界最大のゲーム開発イベントとして、ギネス記録の記録を更新しました。
本稿ではそんなゲーム開発者の祭典であるGGJの国内会場の一つ、札幌会場の模様をレポートします。
札幌会場は札幌ゲーム製作者コミュニティKawaz のメンバーが中心となって運営されており、札幌で行うGGJとしては今年で4年目です。今年の参加者は約80名11チーム。これは国内21会場のうち、八王子会場に次ぐ規模です。札幌会場はエンジニアだけではなく、イラストレーター、コンポーザ、ライターなど、幅広い技術を持った人たちが集まるのが特徴です。
オープニングとテーマ発表
イベント初日の1月24日18時頃。GGJの参加者が続々と会場に集まり始めます。
GGJでは毎年「テーマ」が用意され、参加者たちはそのテーマに沿って各々の作品を製作します。
過去のテーマを振り返ってみると、「 Taboo(禁忌) 」 、「 Deception(騙す) 」 、「 Extinction(絶滅) 」という単語が続きましたが、一昨年は打って変わって「ウロボロスの画像」 、続く昨年は「心臓の音」という変わり種のテーマが出されました。
2012年大会のテーマの「ウロボロスの画像」では、与えられたのは次の1枚
そして今回2014年大会。オープニングにて知らされたテーマは次のものでした(テーマ発表動画はこちら ) 。
今大会のテーマ
このテーマの発表と共に、48時間の長いようで短い戦いが幕を開けました。
この画像に書かれている言葉“ We don't see things as they are, we see things as we are.” はフランスの作家アナイス・ニン が残した一節で、日本語に訳すと「私達は物事をあるようには見ないで、私達が在るように見ている」と言った意味です。単語、画像、音と来て、今回のテーマは言葉。抽象的で非常に難解なテーマとなりました。
難解と言えど、GGJでのテーマは発想を縛るものではありません。また、テーマを守る義務やレギュレーションもありません。そのため、常識に捕らわれない解釈を披露しあうのもGGJの楽しみの一つです。
PCゲームだけじゃない! 札幌会場の製作風景
いよいよ製作開始。様々な職種の参加者たちが自分の得意なスキルを発揮します。
モデリング
グラフィック
プログラミング
GGJはコンピューターゲーム開発のイベントだと思われがちですが、今年の札幌会場では多種多様なゲームが開発されました。
例えばボードゲームを開発するチーム。ボードゲームは企画からテストプレイまでが容易です。会場内では何度もプレイされ、バランス調整がされていました。
ボードゲーム試遊会(左図) 。 粘土を使ったゲームを製作をするチームも!(右図)
札幌会場で最も注目を集めたのは、ファミコンを実機開発するチームです。
実機で動くコードをアセンブラで記述し、実機のROMに書き込み、ブラウン管に繋いだファミコンで動作させていました。グラフィックをアセンブラにコンバートするツールも開発し、iPadでファミコンのグラフィックを描くという他では見られない光景もありました。
ファミコン実機デバッグ。ここだけ昭和の光景(左図) 。 他所では見られないiPadでのファミコン開発!(右図)
会場にはRed Bullの冷蔵庫が設置されており、無限に翼を授かり続けることができました。3日間開発できたのはRed Bullのおかげです。
無限に沸いてくるRed Bull
全部屋に設置されたスクリーンとソーシャルストリームも札幌会場ならではでしょう。開発中の様子が他のフロアの参加者にも伝わり、独特の一体感がありました。
設置されたソーシャルストリーム
チームそれぞれでのゲーム開発
ここで、著者2人それぞれのチーム開発の模様を紹介します。
アイディアが形になるまで ~僕らの48時間ゲーム製作~
giginetです。僕らのチームでは、スマートフォン向けのゲームを開発しました。メインプログラマとして参加していた視点から、GGJでのゲーム開発がどのようなフローで行われていたかを紹介します。
完成したゲーム『Wave Weaver 』
テーマをもとに企画会議とゲームデザイン
まずテーマをもとにブレーンストーミングを開始します。
このチームでは、テーマに書かれた言葉のみに捕らわれず、テーマが書かれた画像全体に注目しました。
メンバーから左上に描かれた惑星が波を出している図が、なんらかのメッセージを発信しているように見えるというアイディアが出たため、オシャレ配色なグラデーションの波をひたすら避け続けるゲームにしようと早い段階で決まりました。
プレイヤーの操作は、下のバーから色を選択し、流れてくる波と同じ色をひたすら選び続けていくだけのシンプル操作に決定。ゲームに触って数秒で作品に没入できるのが特徴です。
初期ゲーム案、この時点ですでに方向性は固まっていた
同時に、簡単に遊べつつも、理不尽にならない程度に難しさを上げ、取っつきやすく、かつ奥深いゲームを目指すことにしました。
アートワークとグラフィック
方向性が決まったので、ゲーム画面のモックを作成していきます。
アートワークの様子
このゲームは、ステージによってガラッと全体の色合いが変化していくのが特徴です。ただ色合いを綺麗にするだけではなく、波を視認できるように色調にも気をつかっています。
初日に作成されたモックアップ。若干の違いはあるがほぼこのデザインに
製作を支えたツールたち
並行してアニメーションも作成していきます。今回は『Sprite Studio 』という2Dアニメーション作成ソフトを使い、リッチなアニメーションを作成しました。なお、Sprite Studioは本来プロユースのツールですが、今回のGGJからはインディーズ開発用の無償版である『Sprite Studio for Indie』が利用できるようになりました。
Sprite Studioによるアニメーション作成
他にも『Particle Designer 』というパーティクル生成用のソフトを使いエフェクトを量産していきます。
GGJでは、作成できるグラフィックの量にも限度があるため、エフェクトなどを簡単に作成できるツールを導入しておくことで、少ない手間で飛躍的に見栄えを良くすることができます。
作成されたパーティクル。見栄えが一気に上昇
いよいよ実装開始!
開始から4時間ほどが経過した24日23時頃。デザイン作業と並行して実装を始めました。
実装面では、今回はオープンソースのスマートフォンゲーム開発フレームワークであるcocos2d-xを採用しました。しかも、今回は安定版ではなく、GGJの2週間前に公開されたばかりの最新バージョン3.0のβ版です。GGJでは、使い慣れていない開発環境を採用すると、ゲーム開発以外の部分に時間が取られ時間切れ、ということが起こりがち。非常にチャレンジングな選択でした。
作っては遊ぶ高速なイテレーション
完成するゲームの質はテストプレイの量がものを言います。特にGGJのような短期間で一気に作り込む開発体制では、作ったゲームをすぐにチームメンバーに遊んでもらい、必要な項目を洗い出していくのが非常に大切です。
そのため、チーム内ではプログラムのビルドなどを自動化するJenkinsとiOSアプリのテスト版配信サービスであるTestFlightを導入し、高速なデバッグ作業を行いました。
あらかじめ用意してあったGitサーバーにコミットする度に自動的にビルドが走り、メンバー全員のデバイスに最新のゲームが配信されます。
この仕組みによって、プログラマは手を止めず、他のチームメンバーは即座に現在の状況が確認できるようになりました。
できたゲームをすぐに遊ぶことが開発の近道
サウンドが加わり、さらに高まる完成度
ゲームが遊べるようになってきて、全体のアートワークが見えてきたら、いよいよサウンドの製作に入ります。
会場に持ち込まれるキーボード
今回は4つのステージが15秒ずつ切り替わっていくというゲームシステムだったため、15秒ごとに大きく展開が変化するメインBGM を作成しました。
その後、細かな効果音も作成していきます。ステージが進んだときにボイスを鳴らしたり、無事に通過できたときに気持ちいい音を鳴らしたり、ハイスコア更新時にプレイヤーを褒めたり。このような小さなフィードバックの積み重ねがゲームの「中毒性」を増すためのスパイスとなります。
サウンドが、あたかもゲーム中のアクションと同期して聞こえるように、曲のBPMもゲームの速度にあわせて設定。細かい工夫がゲーム全体の完成度を大きく引き上げます。
いよいよ開発も終盤に。レベルデザインとテストプレイ
ここまでの作業で大体2日目が終了。いよいよ3日目の朝。レベルデザインの作業に入ります。
2日目終了時点でこんな感じ。完成版とは大きく見た目が異なっている
レベルデザインとは、要は「ステージ作り」のことで、この工程がゲームの面白さすべてに関わる最重要なパートと言っても過言ではありません。
まず、このゲームで味わってほしいプレイヤー体験を明確にします。今回は、一見理不尽で突破不可能だと思われる波を、繰り返し遊ぶことで突破可能になり、少しずつ記録が伸びていくという体験を大事にするようにバランス調整をしていきます。
そのユーザー体験を満たすように、仕様を定義し、テストプレイを繰り返しながら独自のスクリプトで細かく調整していきます。正に職人芸。
さらに中毒性を高くするため、細かなヶ所に気をつかいクォリティを上げていきます。
例えば、「 リプレイまでの演出をなるべく減らし、即座に次のプレイが開始されるようにする」「 トップへ戻るボタンをあえてゲームオーバー画面のわかりづらい位置に配置し、やめるという選択肢を取らせない」といったアプローチです。
このような細かな調整が功を奏し、かなり中毒性の高いゲームに仕上がりました。
そしてついに完成!
次の動画が48時間で製作されたゲーム『Wave Weaver』です。シンプルルールながら、難易度と中毒性を兼ね揃えたゲームになりました。
製作されたゲームは主にiPhone/Android向けに実装されたので、近日正式リリースをする予定です。
2日間で製作されたバージョンは、Mac版のみ次のサイトからダウンロードして遊べます。
作ってみての反省点
cocos2d-xは強力なフレームワークである反面、非常に重量で、ビルドに多くの時間が取られました。会場ではMacbook Airで開発していたことで、マシンスペックにも悩まされました。制限時間が少ないGGJでは致命的です。
また、テーマとの関わりを載せきることができなかったのも反省点です。テーマに関連したエンディングの企画があったのですが、メインのゲーム部分を作り込むことに注力したため、カットになりました。優先度に応じて仕事を切り捨てていくのも大切です。
CIサーバーによるテストプレイ効率化は、事前の準備が必要ですが、GGJでは非常に効果的な開発手法でした。来年も導入していきたいと思います。
イラストレーターとして参加! ~私たちの48時間ゲーム製作~
meycoです。普段は札幌でゲームや教育ソリューションのUX/UIデザイナーとして仕事をしており、今回、Webゲーム班のチームにイラストレーターとして参加しました。
このチームはプログラマ5人、企画2人、イラストレーター2人の9人で構成されていました。とはいえ、イラストレーターのうち一人は製作にあまり参加できなかったため、実質的な担当は私一人でした。
製作したゲームはスマートフォンを利用するもの
このチームで製作したのは次のゲームです。
『caffeinism 』( ※iPhoneのみで動作)
このゲームは『スマートフォンをぐるぐる回転させてコーヒーを挽き、お化けからヒロインのサラを守ろう!』というコンセプトで、ゲーム概要は次のとおり。
コーヒー商人の妻、サラの家は、生前コーヒーが好きだった人々が、お化けになってコーヒーを求めに夜な夜な徘徊しています。
サラを守るために、コーヒーを挽いて、制限時間までにお化けを満足させておいて近づかせないようにしましょう!
コーヒーが多くても少なくてもお化けは襲ってきます。ちょうどいい分量を一定時間挽き続けて下さい。
ゲームを実際に動かしているところ。ブラウザ上のゲーム画面(左図)と、iPhoneのコントローラー画面(右図)
スマートフォンを回して遊ぶ、特徴的なゲームに
それでは、どのようにしてこのゲームができたのかを紹介します。
事前ミーティングでのアイディア出し
流石に48時間で企画含めゲームを0から練るのは難しいので、このチームでは1週間前に顔合わせを含めた事前ミーティングを行いました。
今回はアイディア出しにブレインストーミングを採用しました。この方法は、ポストイットを配り、制限時間以内(今回は5~8分)に、テーマを決めて、思いつくことをひたすら書く。言葉やイラストでもOKというものです。
結論から言うと、この方法はかなり良い成果が出たと思います。「 手軽に出来る」「 GPS」「 ソーシャルゲーム」「 コーヒーを上手に淹れる」「 スマホのセンサーを使ったゲーム」など本当にたくさんのアイディアや言葉が出ました。
アイディアをポストイットに書く
その後に、出たすべてのアイディアを「機能」「 ゲームの内容」「 構成要素」などに分類し、それらを組み合わせてゲームの企画を出しました。
この時点で、ゲームに「スマートフォンのジャイロセンサーを使う」「 コーヒーを挽く」という要素を持たせよう!と言うことが決定しました。
GGJ当日もブレインストーミングから
GGJオープニングで発表された今回のテーマをもとに、またブレインストーミングを行いました。
「宇宙」「 人間の内側」「 シャボン玉」「 影」「 哲学」「 おばけのパズルゲーム」など本当にたくさんのアイディアや言葉が出ました。それらのアイディアから似たようなものをまとめます。「 水系」「 宇宙系」「 闇系」などが主となりました。
ブレインストーミングの結果を組み合わせる
そして、前回のブレインストーミングで出てきた「機能」を組み合わせます。
いろいろなアイディアが出たので、3時間ほどかかってもなかなか決まりませんでした。とりあえず、企画の骨組みとして、事前ミーティングで出した「コーヒーを淹れるゲーム」と、どうしても実験的に行ってみたかった「スマートフォンでPC画面を操作するゲーム」をメインに製作することになりました。
スマートフォンのジャイロセンサーをどのようにしてサーバーと連携させるかを相談
その横でサーバーの実装を始めるメンバー、たけくん
この時点で既に夜の11時になっていて、明日午前中にまた打ち合わせをしようと決め、1日目は解散しました。
次の日になり、今までのブレインストーミングに出てきたものを組み合わせて考えました。ようやく決まったことは次の内容でした。
スマートフォンを繋ぎ、PCの画面上で操作をする
スマートフォンを回し、ゴリゴリと豆を挽く動作し、コーヒーを作る
キャラクターはテーマから「お化け」を採用
コーヒー好きなお化けを成仏させるというストーリー
コーヒーを上手く淹れてお化けを満足させ、ヒロインを守るのがゲームの目的
実装の早さでペースを取り戻す!
今回は企画に1日かかってしまったので、ある程度企画が固まった時点でどんどん実装していく方法をとることになりました。プログラマが多いチームだったので、基本はプログラマ主体で進んで実装をしていきました。
チームのプログラマは次のように分かれて開発しました。
Ruby on Railsによるソーシャルゲームサーバー:2人(内1名はRuby初心者)
enchant.jsによるクライアントサイド:2人
リアルタイム連携サーバー:1人
チームのプログラマは徹夜して実装。本当におつかれさまでした!
ただ、この時に企画と実装を同時進行すると、問題になっていたことがありました。この方法で開発すると、企画の面白さよりも「プログラマに任せる」といった傾向が強くなってしまう点です。確かにこのチームのプログラマの技術力はものすごく高かったです(本当に、みんな実装がとても早い!) 。ですが、技術的にやってみたいことを優先させてしまったため、ゲームの面白さとしてはもっと練り込む必要を感じました。
お化けのキャラクターにあわせて他の要素をデザイン
このゲームは将来的に、PCやスマートフォン、タブレットなど、複数のプラットフォームで遊べるようにしたかったため、複数の解像度に対応させる必要がありました。そのため、グラフィックの作成はリサイズに有利なベクター形式で作成しています。
ブレインストーミングの時に、もう一人のイラストレーターさんがとっても可愛いお化けを描いていたので、お化けをキャラクターとして固定することにしました。今回はこれにあわせて背景を考えました。
次にキャスパーの参考テイストですが、絵のラインがはっきりとしていて、キャラクターに特徴がある、『 Plants vs. Zombies 』の絵柄を参考にすることにしました。雰囲気は『ナイトメアー・ビフォア・クリスマス 』を参考にしました。
キャラクターのお化け。ちなみに名前はキャスパーと名付けた
また、お化けを描いたイラストレーターさんが、メインキャラクターのミニキャラ2体、クリア時に表示されるコーヒーの女神キャラクター2体を描きました。女神キャラクターを製作した理由は、クリア時の特典のような要素が足りなかったので「じゃあソーシャルゲームっぽく、サービスカットを入れよう」ということになったからです。
女神のキャラクター。なんと下書きから4時間で描いたとのこと。ちなみに、モデルは、同じチームのみいおさん(プログラマ)とmeyco
UIデザインについては、今回はボタンをすべて木の板で統一、背景をシックな部屋のイメージにするなど、ある程度のテイストを決めた後、プログラマの実装にあわせて製作をしていきました。
Gitによるプログラマとの連携に思う
今回、メンバーのプログラマ全員がGitを使ってソースコードを管理していたのですが、デザイナーの私もGitを使うべきだったなと思いました。
なぜかと言うと、「 最初はDropboxで画像を管理していたのですが、開発終盤になるとプログラマが忙しすぎて私の製作した画像を追加している余裕がなかったこと」「 CSSを調整したくてもGitをインストールしていなかったため、この作業ができずに、かなり時間をロスしてしまったこと」が挙げられます。
結局、GGJが終わってからGitを覚えることにしました。プログラマとすぐ連携できるように、デザイナーもGitの操作を覚えておくべきでしょう。
実験的なゲーム製作は楽しい!
さて今回は、「 PC×iPhoneのコントローラー」という組み合わせに初めて挑戦しました。体を使うゲームなので、ゲーム体験としてはなかなか面白いはずです。仕事ではこのような実験的なゲームは作れないため、このチームに入れて本当に良かったと思います。
力作が一堂に会する作品発表会
26日18時。それぞれのチームが2日間で開発した作品を手に、最終日の発表会に臨みます。
各チーム、それぞれ個性的な作品を発表しました。
発表会の様子
発表会の話題をかっさらったのはここでもファミコンチーム。ファミコン実機で巨大スプライトを動かすという芸当を披露していました。
縦横48pxのスプライト(中央で走ってるキャラクター)が実機でアニメーションしているのはすごい
さらに、ROMを半差しすることでバグったスプライトが出現し、会場が爆笑の渦に包まれました。
ゲームは完成しませんでしたが、高い技術力を見せつけられました。
また、3D表示ができるヘッドマウントディスプレイであるOculus Riftを使用したチームもいました。Oculus Riftを使って巨人を下から覗き込むゲームはGGJならでは。臨場感溢れるゲームが完成していました。
Oculus Riftを使用したチームの発表
この日発表された作品は全11本。札幌会場で開発されたゲームは、GGJのサイトからダウンロードができます。ぜひ遊んでみてください。
まとめ -興味はあるけど一歩踏み出せないあなたへ-
いかがでしたか? 本稿を通して、GGJの魅力を少しでもお伝えできたのであれば幸いです。
普段ゲーム開発をしている方へ。
わずか48時間で新しいことはできません。日頃の開発能力や、どれだけ開発環境に慣れているかといった力をただ出し切るだけです。日頃の力試しと思って是非参加してみてください。
そして、興味はあるけれど踏み出すことのできない方へ。
48時間でゲームを作ると聞いて、どうしても敷居が高いイベントに感じてしまうかもしれません。しかし、全く経験がないなりに、少しでも作品に貢献したり、自分の味を出したりすることはできます。また、3日間という僅かな時間ですが、非常に高密度に様々な知識を吸収することができるばかりか、リリースし、他の人に自分のゲームを遊んでもらえる体験ができます。GGJならではの他では味わえない経験を約束します。来年は参加を考えてみてはいかがでしょうか。
Globa lGame Jamは、日本では札幌以外でも非常に多くの会場で開催されています。興味を持った方はお近くの会場について調べてみてください。
あなたの描く“ 神ゲー” をあなたの手で生み出しましょう!