読者です 読者をやめる 読者になる 読者になる

プロトタイピング進捗

ゲーム開発 ゲーム

件のインタビューのアレ

任天堂のクリエイティブに対してのこだわりの凄まじさを垣間見たのだけど、まぁそれできるとこは限られるよなーとも。

Switch明日届くのでとても楽しみ

最近の進捗

  • カメラの向きに合わせてキャラクターが移動するようになっているぞ(この動画ではわからない・・・)

  • スフィアキャストを飛ばしてオブジェクトに当たるとオブジェクトの足元にターゲット状態であることを示すアレが出るぞ
  • これで最低限として移動の入力は要件を満たしている気がする・・・
  • 次は攻撃周りの処理をやる予定 State Machine Behaviourとか使うのかなぁ

プロトタイピングの練習

今週の進捗

なんか体調が悪い、風邪でも引いたかなって思ってたら花粉症の季節か。つらい。

仕様作成の練習

ゲームジャムを経験して、プランナーの仕事的に実際にゲームを作ることによる経験値獲得はなかなか美味しいなと思ったが、ゲームジャムがそんな都合良く頻繁に開かれてる訳ではないので困る。

結局、自分で本気の仕様書を書いて自分で実装することにした。ただし、本気でゲームを一本作るのはプログラミングスキル的に厳しいし(プログラマーになりたいわけではない)、時間的にも厳しい。

そこで、以下のルールで作ることにした。

ルール
  • 仕様書は、そのゲームの根本となる面白さを表現するためだけのものとして書く
  • ただし、仕様書のクオリティは実際の業務で作成するものと同等にする
  • 実装は、面白さを表現できるものを最速でつくる(クソコードとか気にしない、動けばいい)
  • 絶対に作り込まない
  • 成果は全公開(仕様書・プログラム含む)

狙いはいくつかある

狙い
  • 「面白さ」の精度アップ

大体において「ぼくのかんがえたさいこうのげーむ」はクソゲーなので、プロトタイプ作成を繰り返して「面白さ」を生む精度を上げる

  • 仕様書の精度アップ

実際に業務で使える程度のものとして作成することで、「自分だけがわかればいいや」を抑止する。さらに全公開することでヌルいことができないようにする

  • その他

全公開したほうがブログのコンテンツ的に美味しいなっていう邪な気持ちを含む。


実はちょっと先行して進めているのである程度形になったらまた記事にする。

それでは。

【1月】直近で参加したイベント、読んだ本

今年は積極的に土日を消化していこうという話

今年はイベント行くなりなんなりで積極的に土日にゲーム関係の予定を入れていこうと思ったという話。

そこで、直近で行ったイベントをまとめる。

筆が滑って、最近読んだ本についても書く。

直近で行ってきたイベント

デザインの解剖展

f:id:zeal404:20170205011657j:plain:w200

きのこの山」「明治ブルガリアヨーグルト」「明治ミルクチョコレート」「明治エッセルスーパーカップ」「明治おいしい牛乳」など誰もが知る製品を題材にした企画展。

製品が生まれた市場的背景やロゴ、外装にはじまり、果ては中身の成分までを要素ごとに細かく分解していき、なぜそのデザインになっているのか、どういう意図が込められているかを明らかにするという狙いで開催されたとのこと。

展示系のイベントでは初めて見るレベルの文章量で、要素ごとにトピックを表すビジュアルと一緒に細かい字でびっしり説明が添えられており、製品の各要素に込められた意図をこれ以上ないくらい克明に示してくれたという意味で非常に興味深い展示でした。

今回取り上げられた超有名製品に込められた意図の「密度」はそれこそ半端なく、仕事のクオリティの高さを感じました。(こなみかん)

他方、文書多めでガチな解説をしつつ、細かいところにあまり興味がない人のためにインパクト重視の展示が多かったのもこの企画展の特徴でした。

f:id:zeal404:20170205020544j:plain:w200

きのこの山」の風景を三次元にしてみた図(水平に撮影すると「きのこの山」の背景になる)

f:id:zeal404:20170205020803j:plain:w200

すげーでかい「きのこの山」の断面。エモい。

f:id:zeal404:20170205011709j:plain:w200

すげーでかい「明治ミルクチョコレート」

f:id:zeal404:20170205021020j:plain:w200

すげーでかい「明治エッセルスーパーカップ」

次回があったら絶対また行きたい企画展でした。

Global Game Jam 2017

最高のイベントでした。

詳細は下記

zeal404.hatenablog.com

ゲーマーズラウンジ

概要は下記 atnd.org

サイトに書いてあるまま、すごーくゆるいイベントで最初は逆に何をすればいいかわからなくて戸惑いましたが、最後はゲームしながらギャハギャハしてました。

みんなで集まってゲームをすると、ゲーム内容がどんなものであっても基本的にめちゃくちゃ楽しいというごく当たり前のことに改めて気付かされた一時でした。

次回は明確に「何をしたいか」を決めて参加してもう少し違う遊び方も体験したいです。


最近読んだ本

ここで最近読んだ本の話へ移る。

ユリイカ 2017年2月号 特集=ソーシャルゲームの現在 ―『Pokémon GO』のその先―」

普段ゲームやらない人までこんなにたくさん寄って集まって寄稿するほど『Pokémon GO』の衝撃は大きかったのだなぁ、と思わされるムックでした。

一通り目を通しただけなのであれなのだけれども、どうやっても「ソシャゲ」の文脈と『Pokémon GO』を繋げるのに無理が生じているような気がしてならない。その意味では特集のタイトルからミスっている感が。(一般受けを狙う上では仕方ないにしても)

もっと詳しく読めば感想も変わってくるかもしれないので、要再読リストに積んでいる。

人工知能の作り方―「おもしろい」ゲームAIはいかにして動くのか」

人工知能の作り方 ――「おもしろい」ゲームAIはいかにして動くのか

人工知能の作り方 ――「おもしろい」ゲームAIはいかにして動くのか

人工知能の概要に始まり、基本的な概念や理論の紹介、実際に使用されるアルゴリズムの類型とその採用例の紹介と進み、最後は人工知能について認知科学や哲学の面からより深く掘り下げる、という流れになっており非常に読みやすい。

ゲーム開発で使用するAIについての基本的な知識をおさえる目的においては最良と言える本ではないかと。

詳しいコーディングにまで踏み込んで書いていない点もまたプランナーとしてはありがたい。(ここらへんのポジションを取ってくれる本は少ない)

あと、巻末の「人工知能のための資料とブックガイド」は必見。まじで。


その他

  • 記事を書くのは大変だ
  • 自分にとってUnityはロジックの実証に使えれば十分と思われた

Global Game Jam 2017に参加してきた話

GGJ2017 Game GGJ

はじめに

ゲーム開発をおこなうハッカソンとして世界最大の規模を誇る「Global Game Jam 2017」にプランナーとして参加してきました。

「Global Game Jam」への参加は初めてだったので、参加して感じたことと、実際に書いた仕様書などのドキュメントを公開します。

基本的には自分の考えたこと・やったことの振り返りですが、今後ゲームジャムに参加しようと思う方の参考になれば幸いです。

はじめに書いておきますが、糞長いです。

また、関連として、同じチームで一緒にゲームを作ったとりすーぷさんのQiita記事が公開されているので、そちらも合わせて読むとより面白く読めると思います。この記事のなかでも適宜参照しています。

イベントの概要

イベント名 Global Game Jam 2017
日程 2017/1/20(金)18:00 〜 2017/1/22(日)19:00
参加会場 東京 茅場町会場
イベントURL Global Game Jam Japan
お題 WAVE

作成したゲームについて

お題の「WAVE」を衝撃波と解釈し、マッチョがヒップドロップした衝撃波で敵を場外に吹き飛ばすゲームを作成しました。

正直何を言っているかわからないと思うので、サマリーと動画を用意しました。

今回完成したゲームは以下です。

タイトル Muscle Drop
ジャンル 3Dアクション
プレイ人数 2〜4人
お題の解釈 衝撃波
実行ファイル(Winのみ) URL
プレイ動画
Muscle Drop(GGJ2017)

なんとなくどういうゲームか察していただけたかと思います。

最も表現したかったのはヒップドロップで敵をふっ飛ばすときの爽快感です。

モーションが間に合わず女の子っぽい走り方になっていたり(ユニティちゃんSDモデルのデータを借用)、もはやヒップドロップではない点を除けば割りとコンセプトに忠実にできていると思います。

補足

「お題」について、「Global Game Jam」ではイベントごとに毎回異なる「お題」が提示され、ジャムで作成するゲームの内容は必ずその「お題」に基づいて制作する必要があります。

ただし、この「お題」は割りと広い解釈が認められるので、こじつけ的なものもOKなようです。

(というより、是非のジャッジは当事者に委ねられるため、実質なんでもアリっぽいです)


メンバー

  • プログラマ 4名
  • プランナー 2名
  • グラフィッカー 1名

ジャムを終えて振り返ってみると、割りとバランスの良い構成だったように感じました。

主な職種としてはサウンドがいませんでしたが、Asset Storeのパワーでなんとかなりました。Asset Storeは偉大。


担当した箇所

担当した箇所は以下の通りです。抜けや忘れてしまっている箇所があるかもしれません。

共同の記載はもうひとりのプランナーの方と共同で全体をまとめた部分、それ以外は担当した部分です。

  1. ゲーム内容の企画
  2. ギミック案出し(共同)
  3. ギミック仕様作成(共同)
  4. レイアウト仕様作成(バトル、リザルト)
  5. サウンド周り(BGM,SE選定)
  6. パラメータ調整(キャラ挙動)
  7. レベルデザイン(共同)

見ての通り、普段のゲーム開発で行っているような作業を一通り行っていることがわかります。

その意味で、ゲームジャムであってもプランナーに求められる能力は基本的に変わらないようでした。

※スケジュールについてはプログラマーの方にまとめていただきました。ありがたや。


仕様

普段のゲーム開発とは違い、ゲームジャムではどの仕様を詳細化してどの部分をざっくりとしたものにするかの判断が求められるように感じました。

そのため、この項では主にどう考えたか、どうやって判断が行われたかを書きます。

ゲームのメインロジック(キャラの挙動・ふっ飛ばしの部分)

ゲームの核となるメインロジックについては、Unityの物理エンジンを使うことが企画段階で決まっていました。

物理エンジンを採用した理由
  • 細かい部分の挙動まで指定・実装していた場合、時間が足りない
  • 物理エンジンの予想しにくい挙動自体である程度のウケが狙える

そのため、企画発表が終わって制作に移るタイミングでどのようなパラメータを必要とするかの認識をプログラマとすりあわせた後はほとんど指定することはなく、終盤(確か二日目の夜)に実装されたキャラクターを動かしながら調整した程度でした。

ただし、物理エンジンで理想の挙動を表現することが思っていたより難しく、プレイヤーの挙動についてはまだまだブラッシュアップの余地のある出来になってしまいました。

現時点での私のスキルではトレードオフにならざるを得ない部分でしたが、慣れてしまえば48時間でももうちょっとマシな出来になりそうではあります。

ギミック(衝撃波の伝播、即死トゲ)

企画の段階でステージ上にギミックを置きたいよねという話になっていました。

そこで、企画発表終了後、プログラマーの要請に応えて実装したいギミックのリストを書き出しました。

前述のとりすーぷさんの記事でも言及がありましたが、アイディアを後出しで入れることは現実的に不可能であると伝えられていたため、プランナー二人で結構な時間を割いた覚えがあります。

具体的には、以下の手順で実装したいギミックを決めていきました。

手順

1. 二人でバラバラにギミックを思いつく限り付箋に書き出す

A:即死トゲ、プロテインで強大化、回転ハンマー、ダメージで崩壊する床、衝撃波が伝播するオブジェクト、ダンベルでジャンプ力アップ
B:ツルツルの床、バンパー、ベルトコンベア、衝撃波が伝播するオブジェクト、即死トゲ、ヒップドロップでアイテム出現

1. 二人で書き出したギミックを照らし合わせ、似たアイディアをまとめる

衝撃波が伝播するオブジェクト×2、即死トゲ×2など

1. ギミックの種類でおおまかなカテゴリを作成し、出てきたアイディアをグルーピング

設置オブジェクト系・・・即死トゲ、回転ハンマー、衝撃波が伝播するオブジェクト、ベルトコンベア、ツルツルの床、バンパー
ヒップドロップで起動する系・・・ヒップドロップでアイテム出現
アイテム系・・・プロテイン、ダンベル

1. カテゴリ毎に各アイディアの面白さを検討し、コスパの良いアイディアの順で優先度を設定

下図参照

1. プログラマと相談

(このあと翌朝までに仕様の実装に耐えうるクラス設計が完成されていました。すごい。)

こうすることで、3.の段階でステージ上にどういうギミックが必要かの大枠が定まり、各アイディアの実装優先度の比較対象がカテゴリ内に限定されたため、時間の削減につながりました。

割りと妥当な決め方であったと思います。

この手順で実際に作成されたアイディアとその実装優先度は以下です。

f:id:zeal404:20170127022326j:plain:w200

かなり関係のないアイディアも並んでいますが、アイテム、HD起動(ヒップドロップ起動・・・)、設置型の3列で上から順に優先度の高い順に並んでいます。

ここで決まった案をもとに、二日目の朝にはもうひとりのプランナーの方が詳細仕様のたたき台を書き上げてくれたので、多少の修正をおこなっただけでほぼギミック詳細案が完成しました。

詳細案は以下です。

f:id:zeal404:20170128153359p:plain:w200

実際にゲームに登場した仕様①です。当初は上からヒップドロップで起動する形で考えられていましたが、わかりづらいのでカットされました。

f:id:zeal404:20170128153410p:plain:w200

実際にゲームに登場した仕様②です。ほぼ仕様どおりの内容になっています。後からバリエーション付けを狙って静止していないバージョンも作成しましたが、どちらも非常によく機能したと思います。

f:id:zeal404:20170128153413p:plain:w200

実現に至らなかった設置物の仕様です。優先度を落とした理由としては、モデルが必要になる、吹き飛ぶくらいの速度で回したら意味不明になるのでは、吹っ飛ぶ要因が衝撃波に集約されない、などでした。(たしか)

f:id:zeal404:20170128153417p:plain:w200

これもやりたかったですが実現に至らなかった仕様です。物理エンジンでカオス的な面白さを表現するにあたり、ステージ上の内容が動的に変化するのはそのままプレイバリューの増加に直結するので、拡張するとすれば是非入れたい要素です。

f:id:zeal404:20170128153420p:plain:w200

アイテムの仕様です。アイテムの実装作業は最終日まで進められていたのですが、難しいというところでステージギミックの作業に集中する変更が行われました。最終的な完成物を見ても、この判断で救われた面が大きかったように感じます。

f:id:zeal404:20170128153424p:plain:w200

f:id:zeal404:20170128153427p:plain:w200

f:id:zeal404:20170128153433p:plain:w200

その他、実装に至らなかった仕様たち


レイアウト

仕様とギミックが決まった後に、必要な画面レイアウトを洗い出しました。

画面数自体少なかったので、洗い出し自体は非常に簡単でした。

あとはシーンをいくつに切るのかをプログラマーと決めた上で各画面の担当を割り振り、ざっくりレイアウト仕様を書いた後にサイドプログラマーと実装のすりあわせを行ってFIXしました。

ここで作成した仕様書は以下です。

f:id:zeal404:20170128153603p:plain:w200

シーンと各画面の結びつきをまとめています。汚くて自分でも嫌になるレベルw

f:id:zeal404:20170128153616p:plain:w200

バトル中のレイアウトです。よくある仕様の集まりなので、特に気をつけることもなかったです。状態異常については実装を見越して書いていましたが、我ながら意味不明ですw

f:id:zeal404:20170128153621p:plain:w200

リザルト画面のレイアウトです。スマブラの丸パクリとも言います。この工数規模のなかでは割りと複雑な挙動を指定しましたが、バッチリ仕様書通りの実装で素晴らしいと感じました。レイアウト仕様などと言いながら、落とした/落とされたの判定という重要な仕様を付け足しているのがキモです。


まとめ

最後に、良かった点と反省して次回に活かしたい点をあげておきます。

良かった点
  • 楽しくゲームを作ることができた点
  • 多くの人に楽しんでもらうことができた、楽しんでいるところを実際に見ることができた点
  • 日常の業務と離れた作業で、自分のスキルに改めて気付けた点(工数感とか全体の洗い出しとか仕様書とか)
  • 今までつながりのなかった人と一緒にゲームを作ったりお酒を飲んだりして刺激になった点
反省点
  • ところどころプランナーの手が余ってしまうタイミングがあった

次に何をすべきか、何が足りていないかをイメージしておかないといけなかったのが、目の前の作業で手一杯になってしまったことで疎かになってしまいました。

それにより、とりあえず作業は終わったけど次は何をすればいいんだろう、という状況が発生してしまいました。

次回以降はざっくりでも全体のスケジュールを区切った上で作業をすすめることで、今何が足りていないかを意識しながら作業することで改善していきたいなと思いました。

  • リソースの指定漏れが多かった

終盤になってからSEの指定が大量に漏れていることが発覚しました。

ギミックやレイアウトの仕様を書いた段階で想定すべきだったので、次回以降はざっくり仕様にサウンドの項目を加えたいと思います。

全体として、今回「Global Game Jam 2017」に参加して本当によかったと感じています。

来年以降もずっと参加し続けていこうと思えるほど充実したイベントでした。