1年作ったゲームの開発中止を決めた話
こんにちは!丸ダイスです!
約1年前くらいから本格的に始めた「地球人の島」の開発を中止することを決めたので、そのお知らせです!
残念な結果ですが、かけた時間を今後の開発に活かすためにも開発の振り返りをしたいと思います。
ゲームの内容などを知らなくても読めるように書くので、ゲームを作る方の参考になれば幸いです!
※ゲームの内容は前提とはしませんが、誰でも読める易しい記事ではありません。 ゲーム開発の経験があると読みやすく、特に開発記録は正確に読むために熟読を必要とします。
開発記録
2019年2月 ゲームジャム版:オンラインわちゃわちゃに感じた手応え
「地球人の島」の開発はここから始まりました。
当時開催されたゲームジャム「unity1week」のお題は「つながる」。
この時一週間で作ったプロトタイプがこちら。
出会ったプレイヤーと協力して街を発展させるゲームジャム作品、遅刻したけどちゃんと昨日の28時に公開出来ました~!(?) 開発中ずっと一人協力プレイだったのでとりあえず誰か一緒に遊んで下さいwhttps://t.co/GFr5TYpVXP #unity1week #unityroom pic.twitter.com/AYqKKHE4WJ
— Marudice/丸ダイス@密ですビートゲーム作者 (@dice_maru) 2019年3月18日
こちらの生放送で作ったゲーム遊んで頂きました( ◜◡◝ )
— Marudice/丸ダイス@密ですビートゲーム作者 (@dice_maru) 2019年3月21日
せっかくなので全世界マップを撮影しておきました。同時接続数限界で遊んでもらってめっちゃでかい国が出来ました。作った本人も感動~!#つなげて道路https://t.co/bhbi28eIxrhttps://t.co/3ropMZcM2Q pic.twitter.com/NoFzC4rL6g
このバージョンはunityroomでプレイ出来ます:
つなげて!道路 オンライン | フリーゲーム投稿サイト unityroom
『道をつなげて・街をつなげて・ほかのプレイヤーともつながる!』というアオリ文句で、
「パズル的な道をつなげる気持ちよさ」と「オンラインのわちゃわちゃ協力プレイ」を楽しめる作品です。
「10人という大規模で共闘が楽しめる」「基本アクションの手応えが良い」これが揃うだけでも、 ゲームジャムレベルでは十分な品質を感じられたのだと思います。
ポジティブな評価を頂き、オンラインプレイに手応えを感じました。
ただし、このプロトタイプには大きな弱点が存在します……。
私はその弱点を自覚していましたが、今思えば最後まで解決が出来ていない致命的な弱点だったのかもしれません…
2019年8月 夏コミ版:短期で開発するクリッカーにするつもりが…
プロトタイプの弱点、それは「ゴールがないこと」です。
便宜的に制限時間とスコアを計算していましたが、あくまでおまけ。
今どきスコアが表示されるだけで何度も遊んでくれるプレイヤーはいないので、
楽しさの本質である「共闘」と「道がつながる」が重要になるゴールが必要でした。
5月に「これなら短期開発でいけるんじゃね?」と思いついて本格開発を開始。夏コミで発表したのがこちら
(ノーカット版はこちら)
この時のゴールは「街から街の移民で人口を増やす」です。
- 「街」はパネル自体が持つのではなく、予め設置されたハタから出現
- パネルに「人種」が関連付き、街と街をつなぐ「街道」にそって人が「移民」
街道の長さや通ったパネルの人種で人口比率が変わるので、狙った人口比率を達成してもらおう、という遊びです。
「こうしようかな?こうつなげようかな?」と考えて道をつなげる競技性が生まれました。これは狙い通り。
悪かった点としては、見た目はイマイチでした。道を置く前から色がつくのはカラフルできれいかと思いきや、 「自分で土地を広げてる感」が大幅に削がれることに作ってから気が付きました。
また、人口という街をクリックしないと見られない数字だけでは、パッと見た時に発展させてる感触が弱かったです。
その他、共闘的な要素が一旦消えたことで元々あったわちゃわちゃ感はなくなりました。
おそらくこれのせいで頂いたネガティブな感想もあり動揺したこともありましたが、 開拓・クラフト型のゲームはマルチプレイ化がバランスを崩しにくいので、今思えばそこは気にする本質ではなかったと思います。
2019年11月 冬コミ版:見た目を重視した開拓ゲーを目指す
単なる数字としての人口を増やすゴール設定は分が悪そうだったので大幅に変更し、 いわゆる都市開拓ゲームの競技性を目指すことにしました。
Civilizationの開拓パートや、未プレイですがSimCityなどを参考に
『「土地を広げる」「建築を増やす」「人口を増やす」といった各要素の増産が相互に別の要素の増産を産む』という拡大再生産のサイクルを 競技性の中心に据えました。
また、不要になった土地の色を取っ払うことと合わせて「地球人と一緒に島を開拓」という世界観をはっきりさせました。
そうして出来た冬コミ版がこちら
(ノーカット版はこちら)
建築方法が街から街を歩く「地球人」の力を借りる形に変わったことで、数字ではなく見えているにぎやかさがそのまま開拓の 進行具合になっています。
また、お金というリソースが追加され、人口や建築の数によってもらえるかずが増えるので、人口→建築→お金→土地… と、複数の要素がサイクルする拡大再生産が 出来始めています。
この段階で良かったのは「島」というモチーフを採用した点でした。「地球人の島」というタイトルも決まり 「パット見て『面白そう』」というプロモーション上の強さに手応えが出来ました。
反対にイマイチだったのは競技性です。
複数の要素が相互に支え合う拡大再生産を目指していたものの、お金以外に拾えるアイテムは用途がないまま、 地球人が中々建築に来なくてイライラ、モニュメントは建築要件が同じで繰り返す遊ぶ意味がない、といった具合です。
(少し前のデジゲー博版はこれとほぼ同じなので省略)。
2020年4月 迷走中:モニタープレイ駆動の試作サイクルに光明
競技性の中心は感触が良かったため、拡大再生産をより楽しめる要素をスクラップ&ビルドをしていましたが、中々よい手応えがない・・・。
迷走している間に気付いたのが、モニタープレイしないまま潰している仕様があることでした。
「建築の種類ごとに変わるお金以外の拾うアイテム」を作ったのは冬コミ版の時点だったのですが、
それの用途を固める前に「建築の種類ごとに変わる島全体の発展度(非消費。拾わなくて良い)」という仕様を思いつき、 「お金以外の拾うアイテム」の実装が試す前に無駄になってしまいました。
詳細は省きますがこの他にも、思いついて実装も始めたものの、別の思いつきでモニターしないまま潰してしまった仕様があることに気づきます。
リソース管理型のゲームはバランスが調整されて各要素が相互に機能して始めて楽しさが生まれるので、新しい要素は実装してもすぐに面白くはなりません。
そこに気づかないまま新しい要素を実装するやすぐプレイして(イマイチだな…)なんてやっていたので、良い手応えがないのは当然でした。
単純に実装コストがもったいないですし、作った→つまらん… を繰り返すのでモチベが下がります。
これに対する解答として「モニタープレイ駆動の試作サイクル」に切り替えることにしました。
やり方は、『検証する遊びが初プレイでも体験出来る要件をまとめてタスク化して、全てこなしてからモニタープレイを行う』というものです。
要は「作りきるまで遊ぶな」ということです。こうしてみるとただのPDCAですが、私のようなゲームデザイン大好き開発者には重要なのではと思います。
GitHub Projectを使い、必要な(だが出来てない)要件を全て並べました。
今はDoneばかりですが、4月時点では全部To doでした。
モニタープレイで検証する内容が具体的に分かるタイトルも効果が高そうです。
2020年7月 最終版:サイクルは整えたものの中止判断
7月ごろにはこのProjectを消化しきり、テストプレイを行いました。
(ノーカット版はこちら)
これを自分で5回くらい遊んで評価した結果、
『基本を変えずに完成を目指せる遊びの核が出来ていない』と判断して、開発中止を決めました!
学び
学び1. なぜゲームジャムやコミケに出ると開発が進むのか?
途中で「モニタープレイ駆動の試作サイクル」を紹介しましたが、 実はこの方法、多くの開発者が知らずに実践しています。「ゲームジャム」や「コミケ」です。
外向きの発表では初見で体験出来ることが必須なので、自然とモニタープレイ可能な要件が整理され、優先されます。
外部から迫られる締め切りが理由としてよく上げられますが、このように「強制的に初見で遊べる仕様に整理される」 ことも重要に働いていそうです。
個人的にはこれが大きな学びで、4月以降は1月~4月の迷走に比べて最終版に活かせた開発成果が目に見えて多く、手戻りも少なかったです。
うまく機能すればコロナ禍で減った外向き発表に頼らない高い開発効率が期待出来そうなので、今後も活用するつもりです。
学び2. いつ諦めるか?どうやって諦めるか?
今回は、泥沼ゲーム開発パターンとして知られる、「作っては壊すが永遠に繰り返される」 になってしまったと思います。
「これをゲームにしたら面白そう」というボトムアップなアイデアから試作を始めた場合に難しいのが「どこで諦めるか?」です。
これには長年悩んでいたのですが、先日素晴らしい考え方を知ったので共有させて下さい。
『1日作ってダメなら諦める。良くなる可能性があっても今の自分には無理だったと考える』
unity1weekなどで活躍されているゲーム開発者のtnkさんに頂いたアドバイスです(原文ままではないです)
1週間ゲームジャムの文脈で話されていたので、言葉通りに適用出来ないケースもあると思いますが、 特に重要なのは「プロデューサーの目線を持つこと」だと自分なりに解釈しました。
自分がもし、企画を持ってきて開発を依頼したプロデューサーだったらどうでしょうか?
まず「この日に遊べるものを」と期限は決めるでしょうし、「作り直したら良くなるかも」とクリエイターが言っても、 現に面白いものを用意出来なかった事実を根拠に、その人自身の能力を含めて企画を見直すのがプロデューサーの役目です。
一見厳しいですが、ほかの企画なら輝けるかもしれないクリエイターに寄り添った人事とも言えます。 大切なパートナーであるクリエイターを腐らせていてはもったいない!
幸いプロデューサーも私なので、人格ごと見限られることはないのです(よかった!)。
正しかったかどうかは分かりませんが、中止を決断出来たのはこの考え方のおかげです。
学び1. 企画書は必ず言語化しよう!
ゲーム開発が泥沼化するパターンは
- 思いついた要素が永遠と継ぎ足されていく
- 作っては壊すが永遠に繰り返される
のどちらかになることが多いです(今回は後者)。 完成しないのはどちらも同じで、「企画が明確でない(=ゲームの核は何なのか?)」が原因です。
何が重要で何がどうでもいいのか不明確なので思いついたものがアレもコレもと継ぎ足されてしまうし、 駆け引きやゲーム体験(≒競技性)が不明確なまま要素から作り始めるからメカニクスをころころと変えてしまう。
昨年11月のゲームジャムに参加した時に企画を言語化するパワーを知ってからはそうしてますが、 それより前に始めた開発だったので曖昧なまま進んだのはよくなかったです。
『アイデア』と『企画』をフォーマット化する方法論とそのメリットについては前々回のゲームジャムの振り返りに書いたので、よければご覧ください。
モニタープレイ歓迎します!
「地球人の島」のプレイアブルなビルドは全部で4つあります
- ゲームジャム版:(Webでプレイ可能)https://unityroom.com/games/connect_road_online
- 夏コミ版:体験版として頒布
- 冬コミ版:体験版として頒布
- 最終版:非公開
ゲームジャム版以外は現在入手不可能ですが、知人や希望される方にはぜひ遊んで頂きたいです。
連絡頂ければ無料でビルドをお渡しします(ただし、プレイ後に感想をお聞きすると思います・・)
今後の開発について
ナイショです!げへへ!!
めっちゃ面白いゲーム作ります!
【密ですビートゲーム】バズを狙って作ったゲームが思ったよりバズった
こんにちは。緊急事態関係なく引きこもりの丸ダイスです。
4/26(月)~5/3(日)に開催
された unity1week #16 お題「密」で「密ですビート・ストリート」(通称:密ですビートゲーム)というゲームを作りました。
密ですビートが激アツだったので、ひたすら密ですを連呼するリズムゲームを作りました!!ややリズム天国っぽい!
— Marudice/丸ダイス (@dice_maru) 2020年5月3日
マジで動画のまま今すぐ遊べますww
みなさんも密です密です密密密密mmmmソーシャルディスタンス(大歓声)してみて下さい!!!#unity1weekhttps://t.co/Akwe3d0uk8 pic.twitter.com/PYI8Xcpumw
開発終了後に投稿したこちらのゲーム紹介ツイートが5/5現在1万以上RTされており、ゲーム開発史上(というか人生で)もっともバズったツイートになりました。嬉しいです。
前回は長々書きすぎて大変だったので簡単に、企画~開発~広報の流れを振り返ってみます。
企画。安直でもPVではこれには絶対に勝てない
今回のアイデアメモで真っ先に出た一枚。今回のゲームジャムでブレストをしたら100人中95人が書きそうです。
あまりにも安直ですが、結局このネタで作ることになります。
「密です」のネットミームは、「密ですビート」や
このイラスト、密ですゲーム あたりが人気で、総じて口に出して言いたいパワーワードの性質があります。
みんな、密です を言いたいのです。だから「密です」のゲームが欲しい。
既にあった「密ですゲーム」は、数も少なくそこまで品質が高くなかった(作った方ゴメンナサイ…)ので、300もの作品が投稿されるunity1weekから、潜在的な「密です言いたい」需要を強く満たす作品がバズることは容易に想像出来ました。
結果、「GWクソ暇だけど、密ですゲームがたくさんあるらしいぞ!遊ぼうぜ!」となることが主催のnaichiさんがGWをプレイ期間にした意図でもありそうでした(もちろんそれは我々開発者も嬉しい!Win Win Winで最高です!)。
革命的で最高のプロトタイプを作り上げることを野望してゲームジャムに挑む身としては、「密ですゲーム」を作らずに済む道も考えていたのですが、Baba Is You を超えるアイデアの天啓でも受けもしない限り「密ですゲーム」を超えるウケは狙えそうになかったので、ウケれば良しの回と割り切って「密ですゲーム」を作ることにしました。
繰り返しですが、「密ですゲーム」は「密です言いたい」需要のためのゲームなので、プラットフォーマーやパズルではなくリズムゲームや格闘ゲームがいいです。格闘ゲームは1週間では作れません。なので、ロジカルにリズムゲームに確定しました。
出来た企画書
前回のゲームジャムの振り返りでも使ったフォーマットです。これホンマ便利最高です。強制的に全てが具体的になります。
アイデアでなく理詰めで企画を決めたので丸被りも覚悟しました。
ただ、「←→」での位置の押し分けと「ZXC」での種類の押し分けを、レーンストップで2キーノーツにすることで素直に融合出来る仕様はアイデアだったので、完全な被りはなかろう……くらいの気持ちでした。
これで仕様まで決まったので制作開始。
制作
制作の流れは、前回の開発とそんなに大きな違いはなかったです。
最終的に4人チームという大所帯ですが、企画が決まった後で適宜打診してたので、スクラム組んでえいえいおー!って感じじゃないです。…そんな冷たい感じでもないですよ!
フチヌローさん
企画を決めた月曜夜に打診して一緒にやることに。
絵の仕様は大体決まってたので、こんな感じのモックを速攻でお見せして、ひたすら素材イラストを上げて頂きました。(これは私が描いたヘッタクソな絵ですが、レイヤーで差分も揃えてて、ポーズ・サイズ感の目安になってそのまま仮画像になるので結構大事です)
細かい部分はお任せしているので、例えば
「座って向かい合う市民」という仕様で
こう上がってきたりするのは遊び心のある嬉しい想定外でした。
最高のアーティストにお任せすると、自由に描いて頂ければ最高の絵に仕上がるので最高ですね!
Puzzler.Kさん
月曜に打診して、譜面作成+作曲を担当してもらうことに。
譜面エディタが準備出来るまではヒマなので、参戦したのは木曜夜。
Puzzler.Kさんはそもそも自分で遊びを作れる人なので、自作した譜面エディタ(後述)の使い方を説明したら、後は自由に作曲&譜面作成して頂きました。
2,3曲目の譜面担当なので、品質は遊んで頂ければ分かるかと・・。スゴイゾ。
最高のプランナーにお任せすると、自由に作って頂ければ最高の遊びが出来るので最高ですね!
NoEさん
ゲームに合った曲作りが得意そうという理由で、木曜に打診して2曲目の楽曲を作成して頂きました。大正解。
木曜打診土曜締め切りというムチャスケジュールにも関わらずいいものを仕上げて頂いて、お陰様で宣伝する時の動画にも使わせて頂きました。
最高のコンポーザーにお任せすると、最高の曲が上がってくるので最高ですね!
丸ダイス
プログラム書いたり、残りを気合で作りました。
「さかだちの街」のモバイル版が出たばかりで対応に追われたり、長く閉じこもって人と合わなかったせいか、木曜まではあまり元気がなかった…。追い込みの週末は徹夜したりハイで元気でした。
実装的には、音ゲーなので時間の扱いがとにかく大変でした。deltaTimeの差分時間を禁止してAudioSettings.dspTimeの積分時間で議論すること、拍数で正規化した時間で議論するのがポイントだと思います。
リアルタイム譜面エディタ
木曜?に始めて、金曜にほぼ出来ました。
こんな感じで、プレイ時のキーを押すとノーツが出現して記録される実際に曲を聞きながら編集出来る、リアルタイム譜面エディタを開発機能として作りました。
音ゲーの譜面を考える時に、押した通りに記録してくれたらいいのに…と思っていたので試してみたらいい感じ。
譜面を作り上げるには追加で 消しゴム/巻き戻し/早送り も必要で、ゲームジャム期間の中では結構重い実装でしたが、これのおかげでイテレーション早く譜面を作り込めるようになりました。
とは言っても、音ゲー作るならみんなやってるかも。
チュートリアル
今回作ったゲームは、3曲x3難易度がゲームの本編ですが、その前にこんな具合のチュートリアルをプレイ必須の0曲目として入れました。
プレイ中に譜面やレーンストップが動的に変わったりイレギュラーが多いので、半日弱くらいはかかりました。
自分のペースで進めるプラットフォーマーやパズルなら、レベルデザインに自然に入れる(=ジャンプするボタンを表示しながら段差を配置)のが定石です。 一方、音ゲーやシューティングはプレイヤーが転んで泣いていてもどんどん先に進んでしまい、プレイヤーとの対話は失敗です。 不要かも…?とも考えたけどやっぱり必要でした。
チュートリアルがなくても遊べるゲームを作るのが一番ですが、そのために既視感のある体験しか作らないのは個人的にはつまらないです。 新しい初めての体験を作るためにも、プレイヤーとの対話は丁寧にしたい…。
広報
恥ずかしいので詳細はナイショですが、バズったツイートは適当な投稿ではないです。 どこを最初の10秒にして動画にするかも、どんな文章を添えて興味を引くかも、考えて書いてます。
自然体に見えて次々にバズツイートを生み出す人って、なんかいますよね。ずるい。
スクショ一撃でゲームが面白そうに見えるイケイケアーティスト各位も羨ましい…。
バズの呼吸を身に付けられないものかと、日々考えています。
バズればそれでいいのか?
そんなことはないです。
学習目的以外でのゲームジャム参加は、目的が大事だと思っています。私の場合は、
- プロダクトにつなげる価値があるゲームのプロトタイプを作ること
- 面白いゲームを作るクリエイターとして認知されること
- 苦楽を共にした仲間として他の開発者と仲良くなること
- 普段の中長期開発の息抜き(大事!!)
このあたりが目的です。
unity1weekはコンテストでもあるので順位が気になってしまうのですが、深呼吸して考えてみると良い順位を取ることは2.にいくらか寄与するくらいで、それ自体が何かを生むものではないです。
統計なのでコントロール出来ない上に、明確な採点基準がなく印象や流れで決まってしまう危うさを秘めた、フェアな競技とは大分性質が違うものです。
よかった時はもちろん嬉しいですがそのために苦しむのはつらいので、最近は何のためにゲームジャムに参加するのかを言い聞かせながら参加しています。順位はよければラッキーくらいの気持ちで…。
今回は1.を企画段階で捨てた(これを展開させるのは無理でしょう…ボコボコに叩かれる…)ので2.がメイン目的でしたが、予想以上に達成出来たので一安心。 広報効果は(え、こんなもんなの…?)でもありましたが…世知辛いのじゃ…。
アプリ化やプラットフォーム展開は叩かれそうだけど譜面や曲を増やすくらいなら喜ばれそうなので、やりたい方いたら大歓迎です! ぼくのGitHubにInvite!
おしまい。 よかったら遊んでみてね!
追記:
キズナアイさんがプレイしてくれた!!! 完全にただの記念なんですが、実はファンだったのでぶち上がりました。 人生の実績が解除される音がしました。
作ったゲームを、き、キズナアイさんがプレイしてる!!!! え!!! やば!!! え???? #密ですビートゲーム https://t.co/bzpyOIU2Zw
— Marudice/丸ダイス@密ですビートゲーム作者 (@dice_maru) 2020年5月19日
これは私が作ったゲームをアイちゃんがめっちゃ楽しい!ってプレイしてる画像です。YoutubeとTwitterが滅んでもこの事実が残るように投稿された動画から引用させて頂きました。
もう印刷したのではてなブログが滅んでも大丈夫です。
Unityゲームをモバイルリリースする道のり。何に時間がかかったか
こんにちは!丸ダイスです。
先日、Unityで開発したゲームのモバイル版をリリースしました。
https://twitter.com/dice_maru/status/1253657786283520001
前に出した時に苦労した覚えがあって、PCで遊べる完成したゲームでもモバイル版を出すのはとにかく大変というイメージがあります。
…みんなあるよね?あってほしい。
なので、「結局、何にどれだけ時間がかかったか?」をまとめておこうという記事です。
「このゲームをモバイルで出そうかな?」と思った時、やるかどうか、何を削るかの判断にきっと役に立つはず!
※ 実は、正確に言うとiOS版がリリース出来ていません。Appleの審査が通らないからです(というか審査してくれない…)。が、ビルドや公開準備など開発側としてやることは終わってるので、かかる時間の比較の上では不問ということにしています。
- 画面の再設計して、バーチャルパッドで遊べるようにした(14時間)
- 外国語への翻訳(7時間)
- プライバシーポリシー表示の組み込み(3.5時間)
- 広告をゲーム遷移に組み込む(4時間)
- Androidで実機ビルドする(6.5時間)
- 広報用のトレーラー動画 (7時間)
- Android実機で広告が出ない…(12時間)
- アプリ内課金 (0時間。中止)
- Androidのストア登録(3.5時間)
- 広告メディエーションの導入(5時間)
- Free Aspectに対応(1時間)
- AppStoreへのアプリ登録(3.5時間)
- 事前予約・プレスリリースの準備と発信(5時間)
- iOS実機でビルド・実行する(10時間)
- iOSが審査してもらえない……(10時間)
- まとめ
画面の再設計して、バーチャルパッドで遊べるようにした(14時間)
結構悩むことに。
元のゲームは1画面1ステージなので、広告やバーチャルパッドを置く「隠れてもいい場所」がない。
なので、元のゲーム画面を縮小する↑こんなのを作りかけたけど、メットボーイを参考にゲーム画面を分割した操作しやすい方法をひらめいて…
こうなった。
https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631?locale=ja-JP:titleを使うのは初めてだったが、やりたいことはシンプルだったので半日でほぼ動くように。
このバーチャルパッド設定が必要だったので、ついでに「設定」「クレジット」「課金」など、オリジナル版にない追加UIは画面レイアウトだけ作った。(設定画面は過去作から使いまわし) TMProでのSprite Assetを勉強。元はキー操作(R)だったHowToを絵文字でやるように差し替えて終了。
外国語への翻訳(7時間)
いい機会なので、GoogleSpreadSheetのテキストを一発でcsvにして取り込めるようにワークフローを整備しました。
Google翻訳最高!!知らない言語もとりあえず翻訳は出来ます。
今までせいぜい 日本語、英語、中国語 までだったのが、それら含めて(一応)9言語が選べるように!
ひたすらプロジェクト中にKEYを入れて、日本語をSpreadsheetに移す作業(つらい・・)。
まとめて翻訳出来るとはいっても
「おす」が「男性」に…。ちがうんや…。
こういう誤翻訳は起こるので、気付いたら直しました。
英語は流石に一通り誤訳がないか読みました。
他は明らかにおかしい中国語に気付くくらいでほぼ読めないのでそのまま。
なんとなく、自動翻訳は
- 日本語→(中国語、韓国語)
- 英語→(ヨーロッパ系言語)
としてみたけど、効果があったかは不明。
文字溢れ
和「かいだんづくり( ◜◡◝ )」→ 独「Treppen Herstellung💢」
ドイツ語は・・ドイツ語はな・・・・。
Text Mesh Pro のAuto Sizingを使って文字が縮むようにしました。
1言語しか表示されないとUI上でのRect設定が適当だったりするので、文字が出る要素は一通りチェックする必要があった。
セリフの翻訳
口語なので自動翻訳が難しい。翻訳がダメだった時の萎え度も高いので、本当はネイティブに頼みたいところ。
今話題のDeepL翻訳を試してみました。
あれ?結構いい感じじゃね?知らんけど。 Heh hehがカワイイです。
ちなみに、Google翻訳はこちら
SpreadSheetと違って手動で翻訳しないとダメだけど、デモ1つごとにコピペ1回で済みそうだったのでDeepLで。
面倒なので、英語以外は英語からのGoogle翻訳で済ませる。
セリフの多いゲームではないけど、DeepL翻訳の英文は都度チェックして訳しやすいように日本語を調整したので、数時間はかかった。
翻訳終わり!Heh heh!
プライバシーポリシー表示の組み込み(3.5時間)
こういうヤツ。うっとうしいですよね。実装する方も面倒くさい思っています…。
でも、こうして各アプリが同意を取るおかげで、GoogleさんやAppleさんの利用規約がゆるくなってる・・・はず。
初回のみの言語切替も作りかけたけど、自動判定出来そうだったのでボツに。
広告をゲーム遷移に組み込む(4時間)
AdMobSDKの組み込み
GoogleMobileAdsSDKの最新版unityパッケージをGitHubからもらってくる。 何度かやってるのでほぼ秒。実機でちゃんと出るかはともかく…。
バナー広告の検討
AdMobのサポートページとかを見てうまくやると、Editor上でもバナー広告のサイズ感を再現可能。
それでダミー広告で画面を隠してみて…
諦めました。
パズルゆえ考えてる時間が長いので出したかったが、流石にプレイ体験を損ないすぎる… 遅れてくる企画の敗北です…
全画面広告
シンプルに、パズルをクリアして次のパズルが始まる直前に全画面広告。画面に広告タイマーを表示。
遊ぶ側の広告への憎しみを忘れないために、Editor上でも出来るだけダサいデザインでダミー広告が出るように。
この、このクソ広告め・・・。消えろ!消えろ!!!
Androidで実機ビルドする(6.5時間)
一旦広告だけある状態で実機確認。
他のも組み込んだ後にダメだと、どこまでなら動くか切り分けるのが大変に…。
一度ビルドを走らせると平気で30分とか待たされて、Android用コマンドライン部分(結構最後の方)で失敗…、少し変えてもう一度、また30分…。
NDKがどうだの.jarがgradleでdeprecatedだのがConsoleに吐かれるも、中間処理がいっぱい挟まってるので何が原因か全く分からない。
あぁこれ…最高にモバイル版ビルド作業…って感じ
素直にAndroid ビルドはExport Projectに変えて、Android Studioを使って自分でapkをビルドします。
意味不明なエラーを気合で直して、ようやくデバッグ版の.apkが出来ました。たった2時間半で済んでよかった その後KeyStore準備とか何やかんやあってrelease版が出来た。
ようやく実機で遊べる状態になるも、広告が表示されない…。
とりあえず放置しました。
広報用のトレーラー動画 (7時間)
気が重かったけど、ストアページやGoogle 広告などいろいろ便利なので、作らざるを得ない。
今までトレーラーは同人ゲームまとめ動画向けに 1~3分くらいの尺で作ってたのですが(https://www.youtube.com/watch?v=P2CYM9GtNFE、https://www.youtube.com/watch?v=7ie43FNA5JA )
ストア向けの動画はApp Storeの30秒が一番短い制限です。今回はこのショートPV一本に絞ってサッと作りました。
出来た。 30秒だと必然的に「本題!ドヤドヤ!終わり!」みたいな構成になるけど、その方が要点がまとまった良いPVなのでは…という気もしますね。
日本語版もついでに作って終了。
Android実機で広告が出ない…(12時間)
時間が経てば動くやろ と思っていたけど、待てど暮らせど広告が表示される気配はなし。
PlayServiceResolverって何だ。イチから勉強するか。aarって誰だ。Androidのシミュレーターなら出るのか。ええいNCMBは一回外すぞ。っていうか意味が分からないログが多すぎてどれがクリティカルなのか全然分からない…。
最終的に、未公開アプリのデバッグビルドなのに本番広告が出るリクエストになってしまっていた…? ようで、テスト広告はなんとか実機で見られました。
が、言ってることが分からないログと警告は特に消えず……。
つらさの主な原因は、UnityからAndroid Studioなどの実機用エディタに移ると全てがブラックボックス化されることでしょうか…。
アプリ内課金 (0時間。中止)
これ以上ネイティブプラグインで苦しむのが嫌だったので中止しました。
(ゲーム内コンテンツに比べ圧倒的に買われない広告削除くらいしか課金要素はないし)
Androidのストア登録(3.5時間)
気合で登録しました。空いてる空欄をひらすら埋める作業…。
広報用のテキストは他のプラットフォームとかでプレスリリースで便利なのでテキストとして保存します。
広告メディエーションの導入(5時間)
AdMob広告を使う際、いろんな業者から競売されるようにすると不思議な力で単価が上がるらしいのでチャレンジしてみました。知らんけど。
Google AdMob のメディエーションガイド を読んで各メディエーションを組み込みます。
AdMob単体の広告に苦労したのに比べると、思ったより組み込みは楽でした。Googleのドキュメントがとても分かりやすいのも良いです。
AppLovin(実装難易度 3)
新しく広告を作るために、一度メディエーションなしでSDKを組み込まないといけない。逆にメディエーションを使うと直接呼び出しが出来なくなる(両方を含めてビルド出来ないため)。
ドキュメントが分かりにくい。テストビルドにいきなり本番っぽい広告が出る。
全体的に作りがモッサリしてるが、コンソールの項目の少なさも含めて庶民派な感じでちょっと可愛い。
UnityAds(実装難易度 1)
Cloudビルドとかとダッシュボードが統合されてて、Unityチョットデキルとハードルが低い。ランタイム実装も何も要らないので大変楽。
Facebook Audience(実装難易度 4)
広告以外にも機能が膨大にあるようで、ブラウザコンソールがめちゃくちゃ複雑。
2つのコンソールをまたいでIDをたくさん作らされてそれぞれを正しく接続しないといけない。AdMobのドキュメントがないと絶対無理。
もちろん当然のようにFacebookのアカウントと関連付けられる(イヤだ…)
ランタイム実装は何も要らないのは楽だが、広告テストに必要なAdvertising Identifierのために結局実機実装が少し必要。
IronSource(実装難易度 2?)
アプリを公開してないとうまく出来ない雰囲気で諦めた。
公開さえしてればなんか簡単そうな雰囲気だった。
Free Aspectに対応(1時間)
カメラの描画範囲はタテにもヨコにも伸ばせなかったので、いわゆる黒帯でお茶を濁しました。さみしいけど致し方なし。
2:1
4:3
AppStoreへのアプリ登録(3.5時間)
基本的には Google Playのコピペなんですが、スクリーンショットや動画の解像度指定が厳しく、さらに複数要求されます。 Photoshopのバッチ処理やAfterEffectsの出力をいじって、スクリーンショット11枚(英語8枚+日本語3枚)と動画2本(英語・日本語)を3つの解像度に分裂させて、33枚のスクリーンショットと6本の動画を生成。
(正直、アス比対応を黒帯にしたのはそうしないと各解像度のスクリーンショットを作るのが面倒になるというのも・・)
事前予約・プレスリリースの準備と発信(5時間)
この当たりから想像以上の長期化でしんどくなってメモが適当ですが、時間は正確です。
予約トップ10
予約トップ10でアプリの事前予約を登録して
PR TIMES
PR TIMESでプレスリリースを出す準備をしました。
内容はストア広報の内容と大きく変わりませんが、各サイトのフォーマットに合わせます。
リリース時のオペレーション
実際にリリースしたら、下書き準備したプレスリリースを発射して、予約トップ10のリリースしたぞいボタンを押します。
iOS実機でビルド・実行する(10時間)
(ちなみに、古かったMacのOSを最新に上げるのに5時間くらいかかりましたが、それは入れてません)
Certificate全く分からない
iOSのビルドはCertificate, mobile provision というアプリの証明書のような仕組みを組み込まないとダメです。
調査と組み込みに結構時間がかかった…。
iOS版の広告準備
AdMob広告や各メディエーションの登録と実機確認をiOSで改めてやりました。 2回目なので前よりはマシです。
iOSが審査してもらえない……(10時間)
詳細は伏せますが謎のリジェクトをくらってしまい、そもそもアプリを審査してもらえてないです。
既存のアプリをアップデートしてみたり、1週間ほどいろいろ試しましたが、諦めました。
ぶっちゃけて言うと、今後も含めてiOS版が出るかはApple様次第です。 正直そこそこ不愉快なのですが、どうにも出来ません…。
まとめ
iOSは一旦保留ということにしましたが、4/24金曜日になんとかリリース出来ました
この記事の目的がモバイル版対応の作業コストを正しく見積もりことなので、各項目をカテゴリに分類してみました。
カテゴリ | かかった時間 |
---|---|
モバイル版仕様の実装 | 22.5 |
広報素材の作成 | 8 |
多言語対応 | 7 |
アプリストア | 6 |
広告SDKを組み込む | 10 |
想定外の問題対処 | 27 |
実機ビルド | 11.5 |
広報作業 | 5 |
実機ビルドも広い意味では問題対処ですが、モバイルリリースではほぼ必ずぶつかる壁なので別にしました。
合わせると半分近く、約40時間近くを問題対処に使っていました。実機ビルドに慣れてきたり問題が起こらなければこれらはほぼゼロになるはず。
一方、モバイル版仕様や素材作成、翻訳、広報などは制作作業なので、リリース経験が増えてもあまり減らない作業コストです。
評価
お気づきかと思いますが、3月末から期間にして約1ヶ月、オリジナルゲームの開発よりもはるかに時間がかかりました。
集計する前は、「1作品20時間くらいでモバイル対応して、ゲームジャムに参加する度にリリース!」と出来たらいいなと思っていたのですが、現実的には慣れたとしても40時間、2週間くらいはかかりそうな印象です。
ゲームジャム作品で言えば、3割をモバイルリリースに進めるくらいがコスト対効果として適切かなぁ…。
【さかだちの街】モバイル版をリリースしました!
こんにちは!丸ダイスです!
以前の #unity1week で作った「さかだちの街」のモバイル版をリリースしました!
Android: https://play.google.com/store/apps/details?id=com.marudice.sakadachi iOS(申請中:予約受付中): さかだちの街の配信日と事前登録 | 予約トップ10
広報用にいろいろ便利なのでPVも自分で作っちゃいました!
コミケにゲーム出す時の動画で慣れてきたのか、 一撃で推しが伝わる内容が割と短時間で作れて満足です!
よかったら遊んでみて下さい!
古いMacBook AirのOSをSierraからMojave経由でCatalinaに上げる
- UnityアプリのiOS版を出そうにも、iOSビルド用MacのOSが古すぎて最近のUnity+iOSビルドのワークフローが使えなさそうなので、出来るだけ新しいバージョンに上げることに。
- 普段はWindowsでUnity開発してます
環境
- MacBook Air Mid 2013 モデル
- OS Sierra 10.12 系
まずMojave(10.14系に上げた)
最新はCatalina(10.15系)だった。AppleのOSアップグレードサポートを見ると、SierraからはApp Storeで上げられるとのことだったのでやってみる。
この画面。本来はこの画像のように「ダウンロード」を押すと下に残り時間が出るはずが、ダウンロードを押しても下のバーがそもそも出ない。
App Storeのトラブル対応の記事を見て Wifiの確認、DNSを8.8.8.8、再サインイン など試して見るも、効果なし。
App Storeで macOS Mojave(10.14系. ほぼ最新) のダウンロードを試してみたら、こちらは問題なくすんなり成功。AppleのOSアップグレードサポート によるとMojaveからだとCatalinaは上げやすいらしい。
次にCatalina(10.15系)に上げた
Mojave→Catalina へのアップデートは システム環境設定→ソフトウェアアップデートで上げられるそうなのでやってみる。
「今すぐアップグレード」を押すと、8GB程度のダウンロードが始まる。
これはいけそうだと思うも、プログレスバーが一杯になってもアップグレードが始まるわけでもなく、「今すぐアップグレード」がまた押せる状態に戻っている。
押すと平然とダウンロードが再スタート。え、アップグレードしてよ…
よく見ると、アップグレード先のOSバージョンの代わりに「(null)」と表示されている。なんか挙動が怪しい・・・。
調べると、同じ問題を踏んでいる海外のフォーラムを発見 。
こうなるらしい(上のリンクから転載)。表示も症状もほぼ同じ。さぁどうしたら治るの?
「Apple Beta Software Programme に入ってると起こるから一旦抜けた方がいいよ!」とのこと。が、私のMacでは左の「Apple Beta~」の表示はなし。入ってない模様。詰んだ…。
ここでふと、App Storeで macOS Catalina のページを開いてみる。
「入手」を押すが、先程の「ソフトウェアアップデート」が開くだけ。それじゃダメなんだよ~。と思っていたのですが…
なぜか正常にCatalinaのインストール画面が開きました。
「ソフトウェアアップデート」でOSのデータダウンロード後に開くはずだった画面遷移が、App Store経由だとなぜか開いた?理由は分かりません。
結局これらをやったことになります。
- 「ソフトウェアアップデート」から普通にアップグレードしようとする(途中で止まる)
- App Store経由で再度アップグレード
この後は画面に従ってボタンを押したり待ったりして、無事アップグレード出来ました。他事やりながらだけど、2,3日かかってしまいました。
1週間で1時間規模のパズルアクションがなぜ作れたか
丸ダイスです!
unity1weekというオンラインのゲームジャムイベントで「さかだちの街」というゲームを3人チームで制作しました。
さかだちの街 | フリーゲーム投稿サイト unityroom
unity1weekにはこれまでも何度か参加していたのですが、今回総合ランキング1位という栄誉を頂くことが出来ました。
Twitterでもゲーム紹介ページでも多くのコメントを頂きましたが、
- 完成度
- クォリティ
- (ステージ数など)ボリューム
といったものが多く、総合的に「1週間という期間に対して、作られたものの量と質が高い」と感じて頂けたようです。…なので
1時間 | プレイヤー挙動の実装 |
こんな感じで「誰が・どれだけ・何に」時間を使ったのかが分かるように書いてみようと思います。
※正確な記録ではなく、チャットログ・コミットログ・記憶からの概算です。また、あくまで丸ダイス目線なので、ほかの2人のものは知らなかったり精度が落ちます。
※フチヌローさんも振り返り記事を書いてくれました!こちらではあまり触れないアニメ作りについて詳しく書かれてます!
登場人物は、開発に参加したこの3人です。
アイコン | 名前 | 主な担当 | |
---|---|---|---|
丸ダイス | ディレクション・プログラム・UnityEditorを使うこと全て | @dice_maru | |
フチヌロー | アートデザイン・キャラクタードット・背景グラフィック | @futinuro | |
Puzzler.K | レベルデザインの全て | @k_puzzler |
目次
- 目次
- -6日目 2人での共同開発を決定
- -5日目 ボイチャでのチームメイクMTG
- -2日目 開発環境の準備。『企画』と『アイデア』のフォーマットを共有
- 0日目深夜 各自で「アイデア」と「企画」を出した
- 1日目 企画決定!Puzzler.K参戦!仕様を固めて制作開始
- 2日目 アニメ出来始め。目標ステージ数追加。地獄のブロック実装
- 3日目 マップチップは素材利用に決定。ステージ遷移と量産の準備完了。
- 4日目 パズルの並びを本格的に考え始める。必須アクションは実装完了。
- 5日目 怒涛のワールド配置とあふれ出るバグ
- 6日目 全アニメ完遂! 全配置完了! デバッグしながら演出強化
- 7日目 背景滑り込み完成!いろいろねじ込んで間に合…ってないけど完成!
- 振り返って
- で結局、「1週間で1時間規模のパズルアクションがなぜ作れたか」?
- 8日目~(?)
-6日目 2人での共同開発を決定
1時間 | 共同開発の交渉 |
unity1week に限らず、画作りが出来る人と組みたいなぁ…と思っていた丸ダイスは
お会いした時に「絵は描けるけど、プログラムが難しくて…」と話していたフチヌローさんにDMを送ります。 快諾を頂いて一安心。2人開発が決定しました。
立て続けにクソ長DMを送り、
- コミュニケーション手段:Discord
- 開発環境:UnityのVersion統一
- プロジェクトの共有手段:Google Drive
を決めました。
ついでに、丸ダイス以外はunity1week経験が多くなかったので、知ってもらった方が動きやすかろうと思いスケジュール感を共有しました。
-5日目 ボイチャでのチームメイクMTG
1時間 | ボイチャで打ち合わせ |
お互い知らないことが多すぎたので、まずはDiscordのボイスチャットで打ち合わせをしました。
どんなスキルがあるか? 何を作りたいか? ゲームジャムに参加するモチベーションはなにか?
といったことを聞いたり話したりして、
- フチヌローさんは絵作りに専念
- 丸ダイスはそれ以外
- 企画は二人で考える
- たぶんドット絵の2Dゲーム
- ドット背景を活かせると強い。ドットアニメも多分いける。
と、作業分担が決まって企画を考える方針が立ちました。
また、お題発表の24日(月・祝)にお互い企画を持ち寄ってリアルで打ち合わせ ということも決めて解散。
-2日目 開発環境の準備。『企画』と『アイデア』のフォーマットを共有
3時間 | Google Driveの事前準備 | |
1時間 | Githubリポジトリ、プロジェクト準備 | |
2時間 | 『企画』と『アイデア』のフォーマットを共有 |
開発の準備
Githubは私しか使ったことないようなので即諦めました。ぶっつけで使うにはGitはあまりにも難しい。
Google Driveの自動共有について調べて、「素材共有用」「プロジェクト共有用」の2つのフォルダを作って終了。
Unityのキャッシュファイルが大量に共有されてしまうのが懸念でしたが、なんとかなるやろと思ってました(なりませんでした。地獄を見ます)。
自分で使うリポジトリや最小プロジェクトのセットアップはいつも通りなので苦もなく完了。
持ち寄る『企画』と『アイデア』のフォーマットを決めた
『企画』は、こちらのフォーマットをそのまま使うことにしました。
ゲームジャムで役立つ超速ゲーム企画 – Unity Learning Materials
(私はこれを、去年7月のゲームジャムで たアケイクさんとryosukeさんがRECを共同開発された時のレポートで知って感銘を受けました。 ゲームジャムとチーム開発がイメージしやすい筆致で書かれていて、必読です。 たアケイクさんの企画のノウハウ、もっと知りたい。)
この『企画』のフォーマットは、形式に従おうとすると自ずと何をするゲームなのかが明確な企画になる点で非常に優れているのですが、その分書く難易度は高いです。
より良いゲームジャムを経験してもらうために、受け身でなく企画に参加出来るようにしたかったです。
なので、ネタを出すハードルを下げるため、面白そうなキーワードを書いた『アイデア』だけでも出来るだけ持ってきて下さい!と伝えました。
0日目深夜 各自で「アイデア」と「企画」を出した
3時間 | 企画・アイデア出し | |
?時間 | 企画・アイデア出し |
お題発表後の深夜1時。まず『アイデア』を思いつく限り出しました。最終的にはこんな感じに。
予想以上に難しく、「逆」っていじわるなお題だな…と思ったのをよく覚えています。
一人でやってますが、いわゆるブレストです。 思いついたキーワードを片っ端から書いては貼ります。
カテゴリに分類出来ることには途中で気付き、シチュエーションありきで一発ネタで終わりそうな「立場が逆転」系よりも
動きや見た目に結びついている「ひっくり返す」系の方が筋が良さそうだと悩んでいたのですが……
企画1.「Shooting Me(Second Person Shooting)」
企画2.「逆立ちのアリス」
- テーマと表現
- 不思議の国のアリス(変なことが起きても納得感がある)
- プレイヤーの行動
- 逆立ちすると自分以外の重力が反転。スイッチを押すと世界が反転して、逆立ちはぶら下がりになる。
- メカニクス
- 2Dパズルアクション
最終的には「いけそう」な企画として思いついたのはこの2つでした。
まずシューターの方を思いつき、そこそこ「いけそう」でしたが、ドット絵とは相性最悪だったので抑えの企画としました。
本題はもう一方。ポストイットに「逆立ち」と書いた時は、内心「…で?」とセルフツッコミを入れたゴミアイデアでしたが、絵が「ぶら下がってる」ように見えた瞬間に脳に電撃が走りました。
後の思考プロセスは(逆立ちで世界をひっくり返すとぶら下がり。これだと逆立ちに意味がないから周りが「自分の下」に落ちる。 おまけで逆立ち時の性能差。 一貫性があって少し変な挙動のルール=新しいパズルゲームが作れる。 逆立ちで走り回るゲームはほぼ見たことないしインパクトもよし)と、「逆立ちを反転=ぶら下がり」を起点に企画が固まりました。
私はメカニクスや行動から考えるタイプなので、どちらもテーマと表現は後付けです。このフォーマットをちゃんと書くのは初めてでしたが、確かにそこまで考えている方が企画に説得力がありそう。
企画出来ますオーラを出した手前もう1つ出したかったですが、思いつかなかったのとAM4時を回っていたので仕方なく終了……。
1日目 企画決定!Puzzler.K参戦!仕様を固めて制作開始
2時間 | 企画MTG | |
1時間 | グラフィックのタスクと仕様MTG | |
1時間 | パズルの仮仕様MTG | |
?時間 | パズルの作問開始(+6問) | |
?時間 | アートデザイン | |
1時間 | プレイヤーデザイン相談 | |
6時間 | プレイヤー基本挙動の実装 |
時は2/24 月・祝 振り返れば長い一日の始まりです…。
9:30 企画MTG
都内の喫茶店。フチヌローさんと直接あっての企画会議。早朝のおかげでノートやiPadを広げて話しやすかったです。
私は企画2つとアイデアノート。フチヌローさんは企画はなし、iPadにアイデアをたくさん書いてきてくれました。
フチヌローさんも「鮭の遡上」「逆脱出ゲーム」「北風と太陽」「聖剣を抜かない」といった企画に近かったり面白くなりそうなアイデアがありましたが、話し合った結果『逆立ちのアリス』に決定。
ただしデザインについては一度考えてみたいとのことで宿題になりました。
12:00 グラフィックのタスクと仕様MTG
そのままグラフィックタスクと仕様を決めました。
プレイヤードットは、「立ち・走り・逆立ち・逆立ち走り・ジャンプ」など必須なものから、「箱押し・逆立ち開遷移・逆立ちジャンプ・ゴールダンス」 などゲーム仕様や余力次第なものがあると伝えてリストアップ。
プレイヤードットはどうしても最優先だけど、ギミック・背景・エフェクトも余力があればやろうというところまで決定。 得意なドット背景を遊びに活かせないのを申し訳なく思いつつ…。
14:00 パズルの仮仕様MTG
午後1時。『逆立ちのアリス』はPuzzler.Kさんなら素晴らしいパズルを作れるゲームだという確信はあったので、帰りの電車に乗ったらすぐさま連絡を取りました。
幸いにも時間が取れるとのことだったので、正式にチームに入ってもらえました。(Puzzler.Kさんは以前から一緒にゲームを作ってる丸ダイスのサークルメンバーです)
帰着後すぐにDiscordでMTGです。 経緯の説明から、ゲームの基本アイデアを伝え、作れそうか?どんなギミックが欲しいか?を聞きます。
Puzzler.Kさんは硬派なパズラーなので、ギミックを増やしたがる丸ダイスを気にせず
- 押せるブロック
- 押すと世界が反転するスイッチ(=逆立ちが「ぶら下がり」になる)
だけで作ることに。 作ってみないと分からない点は仮として、基本的なパズル仕様はここで決めました。
15:00 パズルの作問開始(+6問)
実際に作ってもらいながら、疑問点はDiscordで適宜相談。 箱は押せないとあまり面白くないことが分かり、箱に潰されたらどうするかが問題に。
面白さ・納得感・手触り・パズルの作りやすさの観点で、
- 16:9 に合わせて1画面1問の (8+上下0.5マス)x16
- 順立ち: ジャンプ1マス・ブロックを押せる
- 逆立ち: ジャンプ不可(仮)・ブロックを押せない
- ぶら下がり: 左右移動と落下が可能
- 空中移動: 可能だが重力強め
- 逆立ち・世界反転はプレイヤーやブロックが接地しないと起こらない
- 並んだブロックはまとめて押せる
- ブロック落下と自分落下はブロックが勝つ。圧死はなしで1マスとして挟まる。
こう決まりました。
こんな感じの「ブロックに乗って逆立ちで浮き上がる」問題を中心に6問完成。…まだ動いてもいないのに、おそるべき速度です。
25:00 プレイヤーデザイン相談
MTG後に描くと言っていたデザインが無事出来上がりました。
(世界観がイメージしにくいプレイヤー単体のデザインが上がってきたらどうしよう……)というのはとんだ杞憂。
どれも世界観もイメージしやすい素晴らしいデザインでしたので、一番好みのものを選んでもらいました(真ん中に)
「現代的な町並みを、平然とした顔で女の子が逆立ちで疾走」…見た目のインパクトも十分そうでした。
デザインに一日使ったので、最悪マップチップは素材を活用するかもとだけ伝えて終了。
20:00 プレイヤーの基本挙動実装
パズルの仮仕様MTGまで昼食すら取らずに話し続けて疲れ果てていたので、ぶっちゃけ午後はダラけててました(チャットだけは返してた)。でも夜には開始。
まずは初めて使うUnity TileMapEditorを導入。
棒人間と、フリーアセットで最低限の陸地を用意して、2Dプラットフォーマーの基本挙動をガリガリ実装していきます。
ジャンプのある2Dアクションを作るのは初なので割とイチからゴリゴリ書いていきます。歩行・ジャンプが出来るところまで実装して終了。28時頃に就寝。
どの距離でも1マスに乗りやすいように、カーブエディタで軌跡を描いて空中浮遊のようなジャンプ挙動にしました(結局ほぼ放物線になりましたが・・)
2日目 アニメ出来始め。目標ステージ数追加。地獄のブロック実装
?時間 | アニメ(立ち・逆立ち) | |
?時間 | 反転を中心に+10問 | |
6.5時間 | 逆立ち・ブロック挙動の実装 |
もちろん適宜話しつつですが、ここからは基本分業で作業です。
絵:「立ち・逆立ち」
描いてもらったら、すぐに組み込み!
細かな修正箇所はあったものの、無事2点完了!
問:反転中心に+10問
昨日はあまり作らなかった反転スイッチ系の問題を作ってくれました。
5ステージx3ワールドの予定でしたが、既に15ステージを超えて1問が軽そうだったので 易10,中10,難5 くらいに目標アップ。
「逆立ちジャンプ」は、出来ないことを利用した問題が出た時点で正式に確定。(アニメの作成難度も高そうだった)
また、「天井にぶつかっても擦ったまま平行移動」といった遊びやすさの為の仕様で、一部修正が必要なのが発覚。
マ:箱挙動、さかだち を実装
地獄の「押せて落ちる箱挙動」。せいぜいI字ブロックやL字のブロックを想像していたら、Puzzler.K先生からは既に
こんな問題が上がって頭を抱えていました。要件は
- サイズ1.0の箱がサイズ1.0の穴にハマる。横からも上からもあり。
- 箱が任意の形に連結する
- プレイヤーの上に落ちると、1.0の高さで止まる(プレイヤーは高さ1.0を走り抜けるため、当然1.0より小さい)
- 直感的に共押し(押されたブロックが他のブロックを押す)が起こる
こんな感じです。つらい。 が、気合で実装しました。 大ざっぱに言うと、
箱は常にKinematicで動かし、速度に直交した方向に縮めた形で全ての連結箱を同時にBoxCastしました。
この時点ではバグだらけ。適宜直しました。 箱挙動NG集だけで記事がかけそうなくらいヤバイ仕様。
逆立ちは箱の速度を変えて全部止まるのを待つだけなので簡単でした。29時前に就寝…。
3日目 マップチップは素材利用に決定。ステージ遷移と量産の準備完了。
?時間 | アニメ(走り・逆立ち走り) | |
1時間 | 残りの絵タスクMTG | |
?時間 | 既存の修正と、+5問 | |
5時間 | パズル量産準備、エリア遷移 |
絵:「走り・逆立ち走り」
歩きっぽい絵か走りっぽい絵か迷ってたようですが、どちらも良かったのでお好みにしてもらいました。
移動アニメが入っていい感じに!
絵:マップチップはAssetを使うことに
必須のプレイヤーアニメの進捗的にマップチップ手作りはキツそうだということで、素材を使わせてもらうことにしました。
頑張って探して、合いそうなものを発見。 背景も、これを張り合わせて作ろうという話になりました
問:既存の修正と、+5問
発覚した仕様に合わせて既存のパズルを修正しつつ5問を追加してくれました。
ただし、パズルの右端・左端を揃える・開放的な街なかのイメージにするため左右の端は広めに取る といった新たな修正項目も発覚…。
マ:パズル量産準備、エリア遷移
反転スイッチ以外の仕様が揃って、素材でマップチップを作る許しも出たので、初めて使うTileMapEditorと格闘します。
公式のRule Tileは少し試してやめて、ウディタ形式でタイルを作れるプラグインを使いました。
↑のドット絵CityをPhotoshopに放り込んでタイルを作り、最低限の地形と箱は爆速で配置出来るようにしました。
「どのパズルからでもすぐに確認&ミスなく編集&後から並べ替え」が出来るようにするため、
ショートカット一発で選択中のパズルの開始状態に飛べるようにEditor拡張も整備して、Editor側の量産準備は完了!
クリア判定・ステージ遷移も作りました。クリア演出を凝りたい思いをグッと抑えて、右端に達してたらクリア扱いにしてカメラが遅れてついてくるだけ。29時半就寝。
4日目 パズルの並びを本格的に考え始める。必須アクションは実装完了。
?時間 | アニメ(押し) | |
1時間 | パズルの並べ方MTG | |
5時間 | 世界反転、ぶら下がり、軽い演出を実装 |
絵:「押し」
> ロ<)
これの時に、横何ピクセルが当たり判定か決めました。
問:パズルを並べるには反転ゴール考慮が必須と判明
パズルを正確に理解しないとワールド内のパズルを並べられないことが分かったので、Puzzler.Kさんにやってもらうことになりました。
例えば、「2-4 ほかくのわな」のパズル原案はこれですが、
完成形では上下反転して配置されています。
どういうことかというと、原案のパズルは問題によって上下が反転したままゴールすることがあるので、その次に配置するパズルは上下反転しておかないと
パズルが成立しないです。実際、1つ前の「2-3 ぐるぐるぐる」は反転ゴールなので、
無事原案通りになります。これがこの日に判明し、Puzzler.Kさんに並び替えをお願いすることに。
マ:世界反転、ぶら下がり、BGM
「世界反転はこれをY Scaleで多分出来る」、という下準備はしていたのでやってみたらあっさり完了。
箱も親にスケールが入る前提で実装していてよかった…。
プレイヤーだけが反転のルールに背くので、反転が終わった瞬間スケールリセットして座標を身長分ズラしました。意外と違和感なく繋がりました。
このあたりからBGMやSEも適宜入れてました。
ドット絵なので音も可能な限り電子音やピコピコ系で揃えることに。初の試みだったので苦労しました。
もう4日目なのに ザ☆チュートリアル みたいなパズルが4つ並んでるのが世界の全てだったことに不安を覚えてました。29時半にコミットが切れてました。
5日目 怒涛のワールド配置とあふれ出るバグ
?時間 | アニメ(逆立ち開始)・反転スイッチ | |
?時間 | ワールド1,2の並び替え | |
?時間 | ワールド1,2の配置 |
絵:「逆立ち開始」・スイッチ
www.youtube.com (フチヌローさんのYoutubeお借りしました)
完成のために必須なアニメではないのですが、逆立ちアクションの感触が段違いに良くなる確信があったので入れてもらいました。
当たり前に見えてすごく工夫されたアニメなので、フチヌローさんの振り返り記事を是非ご覧下さい。
(逆回し出来そうだったので、「逆立ち解除」にも使いました。こっそりと…)
仮で作ったプログラマー臭い世界反転スイッチの画像が
秒でキレイな画像に!スゴイ!
問:ワールド1,2を並べ替えて、配置
Puzzler.Kさんが並べ替えたのを、丸ダイスがガンガン配置していきます。
このあたりで、W1:逆立ち W2:世界反転 W3:箱リフト と、必須要素が増えるタイミングと、各ワールド10問ずつになることが決定。
並べるはパズルの左右端をつなげたり上下を気にしたりと考えることが多くて大変です。
配置するの方が早いですが、新しいパズルで起きたバグやワールド2から登場する上下反転配置で時々実装してたのでどっちもどっち。
ちゃんとしたパズルがゲームっぽくつながって、急激にゴールが見え始めました。最終コミットが28時半でした。
ワールドクリアしても虚無の空間に落ちて Index out of Exception になる以外は
6日目 全アニメ完遂! 全配置完了! デバッグしながら演出強化
?時間 | アニメ(ジャンプ)、背景作成開始 | |
?時間 | 別解潰し、通しデバッグ | |
10時間 | にぎやかしデブリ、反転エフェクトなど演出 |
土曜日。寝て起きたら午後でした。
問:ワールド3の配置。パズルの通しチェック
ワールド3は仕様的に新要素はないので手早く配置。 17時頃には全10x3ステージの配置は終わってました。
物量的には十分すぎたのでレベルデザインは品質上げのフェーズへ。
ここで「Google DriveによるUnityプロジェクト共有」という罠がついに牙を剥き、
Puzzler.Kさんはプロジェクトの丸ごとダウンロードを何度かやるハメになりました……。
…ともかく、私以外で初めてEditorを触るPuzzler.Kさんがパズルの別解チェック兼、問題なく遊べるか通しデバッグしました。
パズルをどう直すかはPuzzler.Kさん次第なので、丸ダイスは他の作業と平行して言われるがまま配置を修正…。
絵:「ジャンプ」
祝!全アニメ完成です!
絵:ストーリー共有。背景を作り始める
ワールド構成が決まった時点で脳内確定してたプチストーリー
- 朝: 登校中
- 夕方: 下校中
- 夜: 夜遊び
を、いよいよ背景に取り掛かる段階でフチヌローさんに共有。
朝・夕方・夜 さえ合ってれば良いので、背景画像の構成(画像の分割方法、枚数・ピクセルサイズ、リピート有無)はおまかせしました。
マ:演出面の強化
無音で地味な演出、どこまでも同じ背景、タイトルなし、ワールドの終わりは虚無の空間…という状態だったので、
にぎやかしデブリシステム
「適当な小さいアイテムをばらまいたら絵的にハデだし、重力の変化が視覚的に分かっていいジャン!」と思ってたので作ってみた。
↑多すぎることに気づいてない頃
配置もスプライトのランダム化も自動化すると、なんかジャラジャラ出したくなっちゃう病気。
さらにプレイヤーが蹴飛ばしたり出来るようにもしたけど、処理も重かったし気が散る、プレイヤー接地がなぜかまれにバグる という最悪の自体で正気に戻りました。
↑正気に戻った後
箱としかインタラクションしないようにして、数も2~4コ。地味だけどアクセントになりました。
(ゲームと関係ないのに、開発中一番バグ調査に時間を浪費しました・・・)
逆立ちエフェクト・世界反転エフェクト
合わせて遷移時間とかも調整。ここで「逆立ち」「世界反転」の感触が一気によくなりました。
特に、曲調が変わって2-1で初めて出会う「世界反転」は、いまだ未知の不思議なことが起こるワクワク感を出したかった。
寝ないつもりで朝を迎えたのに起きたら昼だったので、30時(6時)~11時くらいが睡眠時間だったようです。
7日目 背景滑り込み完成!いろいろねじ込んで間に合…ってないけど完成!
?時間 | ワールド2,3の背景素材・ゲームサムネイル | |
?時間 | デバッグ・パズル最終調整 | |
10時間 | ストーリー演出、タイトル画面、ポーズ・スキップ、ランキング、リリース作業 |
~12:30 マ:デモ作成
Recolitの開発経験とコードを活かして、プチストーリーに合わせたセリフを入れました。
ワールドクリアとワールド開始が基本ですが、
1-1はあえてなしで1-2に最初のセリフを持ってきたのがにしたのがすぐに触れるゲーム体験に出来ていい感じに。
~17:30 問:デバッグ・パズル最終調整
デバッグ・別解潰しを続けてましたが、17時ごろに最後の問題修正を入れたらもうやることはないので離脱してもらいました。
挙動バグは一応報告してもらいましたが、すぐ直せないものは諦めました。
~18:00 絵:背景素材全部!
昼に起きたらワールド1の背景は出来てました。
レベルデザインに合わせた背景になっててビックリ。Editorすら開いてないはずがどうやって・・・。未だに謎です(今度聞いてみよう)。
質が落ちても全部揃えることを優先してくれて助かりました。最後にガッツが出せるクリエイターは強いです。 おかげで2,3の背景も18時頃滑り込み。
サムネイル画像を作ってもらいつつ、丸ダイスはリリース作業に専念します。
~18:00 マ:タイトル画面
少し悩んでゲームタイトルも決めました。逆立ちをひらがなにすると締まりがよかったのでシンプルに「さかだちの街」。
何気にマウス・キー両対応のUIです。
最後の追い込み
~18:45 ポーズ・スキップ機能
一本道パズルは詰むと即「キミの冒険はここまでだ!」なのでねじ込みました
~19:20 ランキング
NCMBを使ったことあるとは言え、インポート等含めて30分なのでやっぱりスゴイ。全クリ自慢くらいしか意味がないのでおまけ。
naichiさんの「とにかく手軽に」の心遣いが染みる… GitHub - naichilab/unity-simple-ranking
~20:00 ビルド&リリース(ver1.0.0 公開出来ず)
IL2CPP重いよ~(いつもの)。ビルド失敗してない! 滑り込んだ! と思いきや、1-1で即地形抜け。
WebGLでPhysics2Dがそもそも動作しない最悪のケースが浮かんで真っ青になりました。 フチヌローさんに土下座して、まずは深呼吸。
~20:30 リリース(ver1.0.1 公開!)
よく考えたら落ちてるんだからPhysics2Dは動いてます。TileMapのコリジョンが死んでるいう感だったので、お願いGoogle!ですぐ対処出来ました。
(原因は、「Tile Mapに使うテクスチャはWrite Enableにしないとビルド時にTile Colliderが当たりを作れない」。知らんがな。)
最低限遊べることだけ確認して、公開!!! せっかく無遅刻ペースだったんだもの!
~21:50 リリース(ver1.0.2 バグ修正して完成!)
ほぼ空だった説明を書いたり、「遊んで下さい!」と言える状態に。 お二人と挨拶して解散!お疲れ様でした!!
~22:30 宣伝ツイート
さかだちって、あべこべに見るとぶら下がって見えませんか?
— MaruDice/丸ダイス (@dice_maru) 2020年3月1日
というわけで、画面をひっくり返した時だけ、「さかだち」が「ぶら下がってる」にすり替わるゲームを1週間で作りました! 遊んでると脳がバグってくる面白いゲームになったので、遊んでみて下さい!#unity1weekhttps://t.co/wsAllNeICa pic.twitter.com/hcFXGhQlJA
バズりたい~!
振り返って
反省点
Google Driveでのプロジェクト共有はキツイです。代替手段、プリーズ……。
よかった点
フチヌローさんの可愛いドット絵やPuzzler.Kさんの解いて楽しいパズルは、ゲームに大きな魅力を与えてくれて、私には作れないものです。
ゲームはいいものを作るために求められる専門性があまりにも多いです。そこそこレベルなら「全部俺」も可能ですが、少なくとも私にはすべてを高いレベルで習得出来そうにないです…。
自分に作れない魅力を作り出せる人とのチームは、コミュニケーションなどの困難を補って十分なほど
私の目指す「より良いゲーム作り」を助けてくれるものだと、改めて確信することが出来たのがよかったです。
あとは単純にいいゲームが作れました!
で結局、「1週間で1時間規模のパズルアクションがなぜ作れたか」?
それはまぁ、3人いたからでは…
8日目~(?)
丸ダイスのゲームジャムは、もう少し続きました(続く?)
オチ:
#unity1week 投稿二本目です!(?)
— MaruDice/丸ダイス (@dice_maru) 2020年3月7日
FPSとTPSはあるのにSecond Person Shooterってないですよね?作りました!
5人いるのに自分「以外」の敵視点が全部見えてて、奥から手前に敵を狙う対戦シューター!
狂ったゲームだけど、逆に敵がこっちを狙うのも見えるのが面白いwwwhttps://t.co/bZ6nJLVCva pic.twitter.com/MFCge63imO
【Unity】Assetが未使用かプロジェクト全体をチェックする「ReferenceFinder」の紹介
こんにちは!丸ダイスです!
unityで開発していて、
「このAsset多分使ってないから消したい! でもホントに使ってないか自信がない…消してエラーのなるのは嫌だ…」
って時ないですか?私はあります。 複数人で開発してたりプロジェクトの規模が大きくなった時は特に。
そんなときに便利なのがこの「ReferenceFinder」というエディタ拡張です。 使用イメージはこんな感じ
Assetを右クリック→「Find References」で、プロジェクト内での全ての参照元を表示してくれます。 あるAssetが使っているAssetを洗い出してくれる「Select Dependencies」という標準機能がありますが、その逆ですね。
参照が0なら消してOKということですね。
参照元のAssetを選択したりそのAssetからさらに「Find References」をしたり出来るので、Assetの依存関係を整理する時に超便利です。
元はこちらのDave Lloydさんが公開されたものです。
これでも十分便利ですが、私が少し改良したコードも置いておきます。
未使用チェックではこちらの方が便利だと思います。
改良点:
- Prefabからの参照のみチェック → Prefab/Scene/ScriptableObject すべてに対応
- 孫参照を無視するかどうかを選べるようにした