ゲーム開発チーム「丸ダイス」の開発ブログです! 公式サイトはこちら

【密ですビートゲーム】バズを狙って作ったゲームが思ったよりバズった

こんにちは。緊急事態関係なく引きこもりの丸ダイスです。

 

4/26(月)~5/3(日)に開催

 


された unity1week #16 お題「密」で「密ですビート・ストリート」(通称:密ですビートゲーム)というゲームを作りました。

 

開発終了後に投稿したこちらのゲーム紹介ツイートが5/5現在1万以上RTされており、ゲーム開発史上(というか人生で)もっともバズったツイートになりました。嬉しいです。

 

前回は長々書きすぎて大変だったので簡単に、企画~開発~広報の流れを振り返ってみます。

 

 

企画。安直でもPVではこれには絶対に勝てない

f:id:marudice:20200505161216p:plain

今回のアイデアメモで真っ先に出た一枚。今回のゲームジャムでブレストをしたら100人中95人が書きそうです。

あまりにも安直ですが、結局このネタで作ることになります。

 

「密です」のネットミームは、「密ですビート」や

f:id:marudice:20200507200642p:plain

このイラスト、密ですゲーム あたりが人気で、総じて口に出して言いたいパワーワードの性質があります。

 

みんな、密です を言いたいのです。だから「密です」のゲームが欲しい。

 

既にあった「密ですゲーム」は、数も少なくそこまで品質が高くなかった(作った方ゴメンナサイ…)ので、300もの作品が投稿されるunity1weekから、潜在的な「密です言いたい」需要を強く満たす作品がバズることは容易に想像出来ました。

 

結果、「GWクソ暇だけど、密ですゲームがたくさんあるらしいぞ!遊ぼうぜ!」となることが主催のnaichiさんがGWをプレイ期間にした意図でもありそうでした(もちろんそれは我々開発者も嬉しい!Win Win Winで最高です!)。

 

革命的で最高のプロトタイプを作り上げることを野望してゲームジャムに挑む身としては、「密ですゲーム」を作らずに済む道も考えていたのですが、Baba Is You を超えるアイデアの天啓でも受けもしない限り「密ですゲーム」を超えるウケは狙えそうになかったので、ウケれば良しの回と割り切って「密ですゲーム」を作ることにしました。

 

繰り返しですが、「密ですゲーム」は「密です言いたい」需要のためのゲームなので、プラットフォーマーやパズルではなくリズムゲーム格闘ゲームがいいです。格闘ゲームは1週間では作れません。なので、ロジカルにリズムゲームに確定しました。

 

 出来た企画書

f:id:marudice:20200505163408j:plain f:id:marudice:20200505160908j:plain 

 

前回のゲームジャムの振り返りでも使ったフォーマットです。これホンマ便利最高です。強制的に全てが具体的になります。

 

イデアでなく理詰めで企画を決めたので丸被りも覚悟しました。

ただ、「←→」での位置の押し分けと「ZXC」での種類の押し分けを、レーンストップで2キーノーツにすることで素直に融合出来る仕様はアイデアだったので、完全な被りはなかろう……くらいの気持ちでした。

これで仕様まで決まったので制作開始。

 

制作

制作の流れは、前回の開発とそんなに大きな違いはなかったです。

最終的に4人チームという大所帯ですが、企画が決まった後で適宜打診してたので、スクラム組んでえいえいおー!って感じじゃないです。…そんな冷たい感じでもないですよ!

フチヌローさん

f:id:marudice:20200310013956p:plain

企画を決めた月曜夜に打診して一緒にやることに。

f:id:marudice:20200507213524p:plain

絵の仕様は大体決まってたので、こんな感じのモックを速攻でお見せして、ひたすら素材イラストを上げて頂きました。(これは私が描いたヘッタクソな絵ですが、レイヤーで差分も揃えてて、ポーズ・サイズ感の目安になってそのまま仮画像になるので結構大事です)

細かい部分はお任せしているので、例えば

f:id:marudice:20200507214637p:plain 「座って向かい合う市民」という仕様で

f:id:marudice:20200507214654p:plain こう上がってきたりするのは遊び心のある嬉しい想定外でした。 

 

最高のアーティストにお任せすると、自由に描いて頂ければ最高の絵に仕上がるので最高ですね! 

Puzzler.Kさん

f:id:marudice:20200310014011p:plain

月曜に打診して、譜面作成+作曲を担当してもらうことに。

譜面エディタが準備出来るまではヒマなので、参戦したのは木曜夜。

 

Puzzler.Kさんはそもそも自分で遊びを作れる人なので、自作した譜面エディタ(後述)の使い方を説明したら、後は自由に作曲&譜面作成して頂きました。

2,3曲目の譜面担当なので、品質は遊んで頂ければ分かるかと・・。スゴイゾ。

 

最高のプランナーにお任せすると、自由に作って頂ければ最高の遊びが出来るので最高ですね!

 

NoEさん 

NoE

ゲームに合った曲作りが得意そうという理由で、木曜に打診して2曲目の楽曲を作成して頂きました。大正解。

木曜打診土曜締め切りというムチャスケジュールにも関わらずいいものを仕上げて頂いて、お陰様で宣伝する時の動画にも使わせて頂きました。

 

最高のコンポーザーにお任せすると、最高の曲が上がってくるので最高ですね!

 

丸ダイス

f:id:marudice:20200310013738p:plain

プログラム書いたり、残りを気合で作りました。

「さかだちの街」のモバイル版が出たばかりで対応に追われたり、長く閉じこもって人と合わなかったせいか、木曜まではあまり元気がなかった…。追い込みの週末は徹夜したりハイで元気でした。

実装的には、音ゲーなので時間の扱いがとにかく大変でした。deltaTimeの差分時間を禁止してAudioSettings.dspTimeの積分時間で議論すること、拍数で正規化した時間で議論するのがポイントだと思います。

 

リアルタイム譜面エディタ

 木曜?に始めて、金曜にほぼ出来ました。

youtu.be

こんな感じで、プレイ時のキーを押すとノーツが出現して記録される実際に曲を聞きながら編集出来る、リアルタイム譜面エディタを開発機能として作りました。

音ゲーの譜面を考える時に、押した通りに記録してくれたらいいのに…と思っていたので試してみたらいい感じ。

譜面を作り上げるには追加で 消しゴム/巻き戻し/早送り も必要で、ゲームジャム期間の中では結構重い実装でしたが、これのおかげでイテレーション早く譜面を作り込めるようになりました。

とは言っても、音ゲー作るならみんなやってるかも。

 

チュートリアル 

今回作ったゲームは、3曲x3難易度がゲームの本編ですが、その前にこんな具合のチュートリアルをプレイ必須の0曲目として入れました。

www.youtube.com

 プレイ中に譜面やレーンストップが動的に変わったりイレギュラーが多いので、半日弱くらいはかかりました。

 自分のペースで進めるプラットフォーマーやパズルなら、レベルデザインに自然に入れる(=ジャンプするボタンを表示しながら段差を配置)のが定石です。 一方、音ゲーやシューティングはプレイヤーが転んで泣いていてもどんどん先に進んでしまい、プレイヤーとの対話は失敗です。 不要かも…?とも考えたけどやっぱり必要でした。

 チュートリアルがなくても遊べるゲームを作るのが一番ですが、そのために既視感のある体験しか作らないのは個人的にはつまらないです。 新しい初めての体験を作るためにも、プレイヤーとの対話は丁寧にしたい…。

 

広報

恥ずかしいので詳細はナイショですが、バズったツイートは適当な投稿ではないです。 どこを最初の10秒にして動画にするかも、どんな文章を添えて興味を引くかも、考えて書いてます。

自然体に見えて次々にバズツイートを生み出す人って、なんかいますよね。ずるい。

スクショ一撃でゲームが面白そうに見えるイケイケアーティスト各位も羨ましい…。

バズの呼吸を身に付けられないものかと、日々考えています。

 

バズればそれでいいのか?

そんなことはないです。

学習目的以外でのゲームジャム参加は、目的が大事だと思っています。私の場合は、

  1. プロダクトにつなげる価値があるゲームのプロトタイプを作ること
  2. 面白いゲームを作るクリエイターとして認知されること
  3. 苦楽を共にした仲間として他の開発者と仲良くなること
  4. 普段の中長期開発の息抜き(大事!!)

このあたりが目的です。

unity1weekはコンテストでもあるので順位が気になってしまうのですが、深呼吸して考えてみると良い順位を取ることは2.にいくらか寄与するくらいで、それ自体が何かを生むものではないです。

統計なのでコントロール出来ない上に、明確な採点基準がなく印象や流れで決まってしまう危うさを秘めた、フェアな競技とは大分性質が違うものです。

よかった時はもちろん嬉しいですがそのために苦しむのはつらいので、最近は何のためにゲームジャムに参加するのかを言い聞かせながら参加しています。順位はよければラッキーくらいの気持ちで…。

 

今回は1.を企画段階で捨てた(これを展開させるのは無理でしょう…ボコボコに叩かれる…)ので2.がメイン目的でしたが、予想以上に達成出来たので一安心。 広報効果は(え、こんなもんなの…?)でもありましたが…世知辛いのじゃ…。

 

アプリ化やプラットフォーム展開は叩かれそうだけど譜面や曲を増やすくらいなら喜ばれそうなので、やりたい方いたら大歓迎です! ぼくのGitHubにInvite!

 

おしまい。 よかったら遊んでみてね!

 

 

追記:

キズナアイさんがプレイしてくれた!!! 完全にただの記念なんですが、実はファンだったのでぶち上がりました。 人生の実績が解除される音がしました。

 

f:id:marudice:20200519234347p:plain

これは私が作ったゲームをアイちゃんがめっちゃ楽しい!ってプレイしてる画像です。YoutubeTwitterが滅んでもこの事実が残るように投稿された動画から引用させて頂きました。

もう印刷したのではてなブログが滅んでも大丈夫です。

Unityゲームをモバイルリリースする道のり。何に時間がかかったか

こんにちは!丸ダイスです。

先日、Unityで開発したゲームのモバイル版をリリースしました。

https://twitter.com/dice_maru/status/1253657786283520001

前に出した時に苦労した覚えがあって、PCで遊べる完成したゲームでもモバイル版を出すのはとにかく大変というイメージがあります。

…みんなあるよね?あってほしい。

なので、「結局、何にどれだけ時間がかかったか?」をまとめておこうという記事です。

「このゲームをモバイルで出そうかな?」と思った時、やるかどうか、何を削るかの判断にきっと役に立つはず!

※ 実は、正確に言うとiOS版がリリース出来ていません。Appleの審査が通らないからです(というか審査してくれない…)。が、ビルドや公開準備など開発側としてやることは終わってるので、かかる時間の比較の上では不問ということにしています。

画面の再設計して、バーチャルパッドで遊べるようにした(14時間)

結構悩むことに。

元のゲームは1画面1ステージなので、広告やバーチャルパッドを置く「隠れてもいい場所」がない。

f:id:marudice:20200425170204p:plain:w300

なので、元のゲーム画面を縮小する↑こんなのを作りかけたけど、メットボーイを参考にゲーム画面を分割した操作しやすい方法をひらめいて…   f:id:marudice:20200425171042p:plain:w400

こうなった。

https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631?locale=ja-JP:titleを使うのは初めてだったが、やりたいことはシンプルだったので半日でほぼ動くように。

f:id:marudice:20200425170657p:plain:w400

このバーチャルパッド設定が必要だったので、ついでに「設定」「クレジット」「課金」など、オリジナル版にない追加UIは画面レイアウトだけ作った。(設定画面は過去作から使いまわし)   TMProでのSprite Assetを勉強。元はキー操作(R)だったHowToを絵文字でやるように差し替えて終了。

f:id:marudice:20200425171936p:plain:w400

外国語への翻訳(7時間)

いい機会なので、GoogleSpreadSheetのテキストを一発でcsvにして取り込めるようにワークフローを整備しました。

f:id:marudice:20200425172321p:plain

Google翻訳最高!!知らない言語もとりあえず翻訳は出来ます。

今までせいぜい 日本語、英語、中国語 までだったのが、それら含めて(一応)9言語が選べるように!

ひたすらプロジェクト中にKEYを入れて、日本語をSpreadsheetに移す作業(つらい・・)。

まとめて翻訳出来るとはいっても

f:id:marudice:20200425172426p:plain

おす」が「男性」に…。ちがうんや…。

こういう誤翻訳は起こるので、気付いたら直しました。

英語は流石に一通り誤訳がないか読みました。

他は明らかにおかしい中国語に気付くくらいでほぼ読めないのでそのまま。

なんとなく、自動翻訳は

  • 日本語→(中国語、韓国語)
  • 英語→(ヨーロッパ系言語)

としてみたけど、効果があったかは不明。

文字溢れ

f:id:marudice:20200425173050p:plain

和「かいだんづくり( ◜◡◝ )」→ 独「Treppen Herstellung💢」

ドイツ語は・・ドイツ語はな・・・・。

Text Mesh Pro のAuto Sizingを使って文字が縮むようにしました。

1言語しか表示されないとUI上でのRect設定が適当だったりするので、文字が出る要素は一通りチェックする必要があった。

セリフの翻訳

f:id:marudice:20200425173158p:plain

口語なので自動翻訳が難しい。翻訳がダメだった時の萎え度も高いので、本当はネイティブに頼みたいところ。

今話題のDeepL翻訳を試してみました。

f:id:marudice:20200425173245p:plain

あれ?結構いい感じじゃね?知らんけど。 Heh hehがカワイイです。

ちなみに、Google翻訳はこちら

f:id:marudice:20200425173338p:plain

SpreadSheetと違って手動で翻訳しないとダメだけど、デモ1つごとにコピペ1回で済みそうだったのでDeepLで。

面倒なので、英語以外は英語からのGoogle翻訳で済ませる。

セリフの多いゲームではないけど、DeepL翻訳の英文は都度チェックして訳しやすいように日本語を調整したので、数時間はかかった。

f:id:marudice:20200425173508p:plain

翻訳終わり!Heh heh!

プライバシーポリシー表示の組み込み(3.5時間)

f:id:marudice:20200425173952p:plain

こういうヤツ。うっとうしいですよね。実装する方も面倒くさい思っています…。

でも、こうして各アプリが同意を取るおかげで、GoogleさんやAppleさんの利用規約がゆるくなってる・・・はず。

初回のみの言語切替も作りかけたけど、自動判定出来そうだったのでボツに。

広告をゲーム遷移に組み込む(4時間)

AdMobSDKの組み込み

GoogleMobileAdsSDKの最新版unityパッケージをGitHubからもらってくる。 何度かやってるのでほぼ秒。実機でちゃんと出るかはともかく…。

バナー広告の検討

AdMobのサポートページとかを見てうまくやると、Editor上でもバナー広告のサイズ感を再現可能。

それでダミー広告で画面を隠してみて…

f:id:marudice:20200425174353p:plain

諦めました。

パズルゆえ考えてる時間が長いので出したかったが、流石にプレイ体験を損ないすぎる… 遅れてくる企画の敗北です…

全画面広告

シンプルに、パズルをクリアして次のパズルが始まる直前に全画面広告。画面に広告タイマーを表示。

f:id:marudice:20200425174639p:plain

遊ぶ側の広告への憎しみを忘れないために、Editor上でも出来るだけダサいデザインでダミー広告が出るように。

f:id:marudice:20200425174911p:plain

この、このクソ広告め・・・。消えろ!消えろ!!!

Androidで実機ビルドする(6.5時間)

一旦広告だけある状態で実機確認。

他のも組み込んだ後にダメだと、どこまでなら動くか切り分けるのが大変に…。

一度ビルドを走らせると平気で30分とか待たされて、Androidコマンドライン部分(結構最後の方)で失敗…、少し変えてもう一度、また30分…。

NDKがどうだの.jarがgradleでdeprecatedだのがConsoleに吐かれるも、中間処理がいっぱい挟まってるので何が原因か全く分からない。

あぁこれ…最高にモバイル版ビルド作業…って感じ

素直にAndroid ビルドはExport Projectに変えて、Android Studioを使って自分でapkをビルドします。

f:id:marudice:20200425175610p:plain

意味不明なエラーを気合で直して、ようやくデバッグ版の.apkが出来ました。たった2時間半で済んでよかった   その後KeyStore準備とか何やかんやあってrelease版が出来た。

ようやく実機で遊べる状態になるも、広告が表示されない…。

とりあえず放置しました

広報用のトレーラー動画 (7時間)

気が重かったけど、ストアページやGoogle 広告などいろいろ便利なので、作らざるを得ない。

今までトレーラーは同人ゲームまとめ動画向けに 1~3分くらいの尺で作ってたのですが(https://www.youtube.com/watch?v=P2CYM9GtNFEhttps://www.youtube.com/watch?v=7ie43FNA5JA

ストア向けの動画はApp Storeの30秒が一番短い制限です。今回はこのショートPV一本に絞ってサッと作りました。  

www.youtube.com

出来た。 30秒だと必然的に「本題!ドヤドヤ!終わり!」みたいな構成になるけど、その方が要点がまとまった良いPVなのでは…という気もしますね。

日本語版もついでに作って終了。

Android実機で広告が出ない…(12時間)

時間が経てば動くやろ と思っていたけど、待てど暮らせど広告が表示される気配はなし。

PlayServiceResolverって何だ。イチから勉強するか。aarって誰だ。Androidのシミュレーターなら出るのか。ええいNCMBは一回外すぞ。っていうか意味が分からないログが多すぎてどれがクリティカルなのか全然分からない…。

最終的に、未公開アプリのデバッグビルドなのに本番広告が出るリクエストになってしまっていた…? ようで、テスト広告はなんとか実機で見られました。

が、言ってることが分からないログと警告は特に消えず……。

つらさの主な原因は、UnityからAndroid Studioなどの実機用エディタに移ると全てがブラックボックス化されることでしょうか…。

f:id:marudice:20200425180727p:plain

アプリ内課金 (0時間。中止)

これ以上ネイティブプラグインで苦しむのが嫌だったので中止しました。 

(ゲーム内コンテンツに比べ圧倒的に買われない広告削除くらいしか課金要素はないし)

Androidのストア登録(3.5時間)

気合で登録しました。空いてる空欄をひらすら埋める作業…。

f:id:marudice:20200425181148p:plain:w400

広報用のテキストは他のプラットフォームとかでプレスリリースで便利なのでテキストとして保存します。

広告メディエーションの導入(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 f:id:marudice:20200425183058p:plain:w400

4:3 f:id:marudice:20200425183120p:plain:w400

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

f:id:marudice:20200425203018p:plain

実機ビルドも広い意味では問題対処ですが、モバイルリリースではほぼ必ずぶつかる壁なので別にしました。

合わせると半分近く、約40時間近くを問題対処に使っていました。実機ビルドに慣れてきたり問題が起こらなければこれらはほぼゼロになるはず。

一方、モバイル版仕様や素材作成、翻訳、広報などは制作作業なので、リリース経験が増えてもあまり減らない作業コストです。

評価

お気づきかと思いますが、3月末から期間にして約1ヶ月、オリジナルゲームの開発よりもはるかに時間がかかりました。

集計する前は、「1作品20時間くらいでモバイル対応して、ゲームジャムに参加する度にリリース!」と出来たらいいなと思っていたのですが、現実的には慣れたとしても40時間、2週間くらいはかかりそうな印象です。

ゲームジャム作品で言えば、3割をモバイルリリースに進めるくらいがコスト対効果として適切かなぁ…。

【さかだちの街】モバイル版をリリースしました!

こんにちは!丸ダイスです!

以前の #unity1week で作った「さかだちの街」のモバイル版をリリースしました!

Android: https://play.google.com/store/apps/details?id=com.marudice.sakadachi iOS(申請中:予約受付中): さかだちの街の配信日と事前登録 | 予約トップ10

広報用にいろいろ便利なのでPVも自分で作っちゃいました!

www.youtube.com

コミケにゲーム出す時の動画で慣れてきたのか、 一撃で推しが伝わる内容が割と短時間で作れて満足です!

よかったら遊んでみて下さい!

古いMacBook AirのOSをSierraからMojave経由でCatalinaに上げる

  • UnityアプリのiOS版を出そうにも、iOSビルド用MacのOSが古すぎて最近のUnity+iOSビルドのワークフローが使えなさそうなので、出来るだけ新しいバージョンに上げることに。
  • 普段はWindowsでUnity開発してます

環境

 

まずMojave(10.14系に上げた)

最新はCatalina(10.15系)だった。AppleのOSアップグレードサポートを見ると、SierraからはApp Storeで上げられるとのことだったのでやってみる。

f:id:marudice:20200411143841p:plain

 

この画面。本来はこの画像のように「ダウンロード」を押すと下に残り時間が出るはずが、ダウンロードを押しても下のバーがそもそも出ない。

App Storeのトラブル対応の記事を見て Wifiの確認、DNSを8.8.8.8、再サインイン など試して見るも、効果なし。

 

App StoremacOS Mojave(10.14系. ほぼ最新) のダウンロードを試してみたら、こちらは問題なくすんなり成功。AppleのOSアップグレードサポート によるとMojaveからだとCatalinaは上げやすいらしい。

 

次にCatalina(10.15系)に上げた

Mojave→Catalina へのアップデートは システム環境設定→ソフトウェアアップデートで上げられるそうなのでやってみる。

「今すぐアップグレード」を押すと、8GB程度のダウンロードが始まる。

これはいけそうだと思うも、プログレスバーが一杯になってもアップグレードが始まるわけでもなく、「今すぐアップグレード」がまた押せる状態に戻っている。

押すと平然とダウンロードが再スタート。え、アップグレードしてよ…

 

よく見ると、アップグレード先のOSバージョンの代わりに「(null)」と表示されている。なんか挙動が怪しい・・・。

 

調べると、同じ問題を踏んでいる海外のフォーラムを発見 。

f:id:marudice:20200411145440p:plain

こうなるらしい(上のリンクから転載)。表示も症状もほぼ同じ。さぁどうしたら治るの?

Apple Beta Software Programme に入ってると起こるから一旦抜けた方がいいよ!」とのこと。が、私のMacでは左の「Apple Beta~」の表示はなし。入ってない模様。詰んだ…。

 

ここでふと、App StoremacOS Catalina のページを開いてみる。

f:id:marudice:20200411150755p:plain

「入手」を押すが、先程の「ソフトウェアアップデート」が開くだけ。それじゃダメなんだよ~。と思っていたのですが…

 

f:id:marudice:20200411151048p:plain

なぜか正常にCatalinaのインストール画面が開きました。

「ソフトウェアアップデート」でOSのデータダウンロード後に開くはずだった画面遷移が、App Store経由だとなぜか開いた?理由は分かりません。

 

結局これらをやったことになります。

  • 「ソフトウェアアップデート」から普通にアップグレードしようとする(途中で止まる)
  • App Store経由で再度アップグレード

 

この後は画面に従ってボタンを押したり待ったりして、無事アップグレード出来ました。他事やりながらだけど、2,3日かかってしまいました。

 

1週間で1時間規模のパズルアクションがなぜ作れたか

丸ダイスです!

unity1weekというオンラインのゲームジャムイベントで「さかだちの街」というゲームを3人チームで制作しました。

f:id:marudice:20200310061117g:plain:w200

さかだちの街 | フリーゲーム投稿サイト unityroom

unity1weekにはこれまでも何度か参加していたのですが、今回総合ランキング1位という栄誉を頂くことが出来ました。

丸ダイス喜びの感激ツイート

Twitterでもゲーム紹介ページでも多くのコメントを頂きましたが、

  • 完成度
  • クォリティ
  • (ステージ数など)ボリューム

といったものが多く、総合的に「1週間という期間に対して、作られたものの量と質が高い」と感じて頂けたようです。…なので

f:id:marudice:20200310013738p:plain:w50 1時間 プレイヤー挙動の実装

こんな感じで「誰が・どれだけ・何に」時間を使ったのかが分かるように書いてみようと思います。

※正確な記録ではなく、チャットログ・コミットログ・記憶からの概算です。また、あくまで丸ダイス目線なので、ほかの2人のものは知らなかったり精度が落ちます。

※フチヌローさんも振り返り記事を書いてくれました!こちらではあまり触れないアニメ作りについて詳しく書かれてます!

「さかだちの街」チーム制作振り返り|フチヌロー|note

登場人物は、開発に参加したこの3人です。

アイコン 名前 主な担当
f:id:marudice:20200310013738p:plain:w50 丸ダイス ディレクション・プログラム・UnityEditorを使うこと全て @dice_maru
f:id:marudice:20200310013956p:plain:w50 フチヌロー アートデザイン・キャラクタードット・背景グラフィック  @futinuro
f:id:marudice:20200310014011p:plain:w50 Puzzler.K レベルデザインの全て @k_puzzler

目次

-6日目 2人での共同開発を決定

f:id:marudice:20200310013738p:plain:w50 f:id:marudice:20200310013956p:plain:w50 1時間 共同開発の交渉

unity1week に限らず、画作りが出来る人と組みたいなぁ…と思っていた丸ダイスは

お会いした時に「絵は描けるけど、プログラムが難しくて…」と話していたフチヌローさんにDMを送ります。 快諾を頂いて一安心。2人開発が決定しました。

立て続けにクソ長DMを送り、

f:id:marudice:20200309043428p:plain:w200

  • コミュニケーション手段:Discord
  • 開発環境:UnityのVersion統一
  • プロジェクトの共有手段:Google Drive

を決めました。

ついでに、丸ダイス以外はunity1week経験が多くなかったので、知ってもらった方が動きやすかろうと思いスケジュール感を共有しました。

-5日目 ボイチャでのチームメイクMTG

f:id:marudice:20200310013738p:plain:w50 f:id:marudice:20200310013956p:plain:w50 1時間 ボイチャで打ち合わせ

お互い知らないことが多すぎたので、まずはDiscordのボイスチャットで打ち合わせをしました。

どんなスキルがあるか? 何を作りたいか? ゲームジャムに参加するモチベーションはなにか?

といったことを聞いたり話したりして、

  • フチヌローさんは絵作りに専念
  • 丸ダイスはそれ以外
  • 企画は二人で考える
  • たぶんドット絵の2Dゲーム
  • ドット背景を活かせると強い。ドットアニメも多分いける。

と、作業分担が決まって企画を考える方針が立ちました。

また、お題発表の24日(月・祝)にお互い企画を持ち寄ってリアルで打ち合わせ ということも決めて解散。

-2日目 開発環境の準備。『企画』と『アイデア』のフォーマットを共有

f:id:marudice:20200310013738p:plain:w50 3時間 Google Driveの事前準備
f:id:marudice:20200310013738p:plain:w50 1時間 Githubリポジトリ、プロジェクト準備
f:id:marudice:20200310013738p:plain:w50 2時間 『企画』と『アイデア』のフォーマットを共有

開発の準備 f:id:marudice:20200310013738p:plain:w40

Githubは私しか使ったことないようなので即諦めました。ぶっつけで使うにはGitはあまりにも難しい。

Google Driveの自動共有について調べて、「素材共有用」「プロジェクト共有用」の2つのフォルダを作って終了。

Unityのキャッシュファイルが大量に共有されてしまうのが懸念でしたが、なんとかなるやろと思ってました(なりませんでした。地獄を見ます)。

自分で使うリポジトリや最小プロジェクトのセットアップはいつも通りなので苦もなく完了。

持ち寄る『企画』と『アイデア』のフォーマットを決めた f:id:marudice:20200310013738p:plain:w40

『企画』は、こちらのフォーマットをそのまま使うことにしました。

ゲームジャムで役立つ超速ゲーム企画 – Unity Learning Materials

(私はこれを、去年7月のゲームジャムで たアケイクさんとryosukeさんがRECを共同開発された時のレポートで知って感銘を受けました。 ゲームジャムとチーム開発がイメージしやすい筆致で書かれていて、必読です。 たアケイクさんの企画のノウハウ、もっと知りたい。)

この『企画』のフォーマットは、形式に従おうとすると自ずと何をするゲームなのかが明確な企画になる点で非常に優れているのですが、その分書く難易度は高いです。

より良いゲームジャムを経験してもらうために、受け身でなく企画に参加出来るようにしたかったです。

なので、ネタを出すハードルを下げるため、面白そうなキーワードを書いた『アイデア』だけでも出来るだけ持ってきて下さい!と伝えました。

0日目深夜 各自で「アイデア」と「企画」を出した

f:id:marudice:20200310013738p:plain:w50 3時間 企画・アイデア出し
f:id:marudice:20200310013956p:plain:w50 ?時間 企画・アイデア出し

お題発表後の深夜1時。まず『アイデア』を思いつく限り出しました。最終的にはこんな感じに。

f:id:marudice:20200312021345p:plain:w400

予想以上に難しく、「逆」っていじわるなお題だな…と思ったのをよく覚えています。

一人でやってますが、いわゆるブレストです。 思いついたキーワードを片っ端から書いては貼ります。

カテゴリに分類出来ることには途中で気付き、シチュエーションありきで一発ネタで終わりそうな「立場が逆転」系よりも

動きや見た目に結びついている「ひっくり返す」系の方が筋が良さそうだと悩んでいたのですが……

企画1.「Shooting Me(Second Person Shooting)」

  • テーマと表現
    • 無機質なハコ頭人間(なんでもよい)
  • プレイヤーの行動
    • 敵視点の画面を見ながら自分を操作して敵を撃ち殺す
  • メカニクス
    • 人物視点型シューター

f:id:marudice:20200312021550p:plain:w100

企画2.「逆立ちのアリス」

  • テーマと表現
  • プレイヤーの行動
    • 逆立ちすると自分以外の重力が反転。スイッチを押すと世界が反転して、逆立ちはぶら下がりになる。
  • メカニクス
    • 2Dパズルアクション

f:id:marudice:20200312021633p:plain:w100

最終的には「いけそう」な企画として思いついたのはこの2つでした。

まずシューターの方を思いつき、そこそこ「いけそう」でしたが、ドット絵とは相性最悪だったので抑えの企画としました。

本題はもう一方。ポストイットに「逆立ち」と書いた時は、内心「…で?」とセルフツッコミを入れたゴミアイデアでしたが、絵が「ぶら下がってる」ように見えた瞬間に脳に電撃が走りました。

後の思考プロセスは(逆立ちで世界をひっくり返すとぶら下がり。これだと逆立ちに意味がないから周りが「自分の下」に落ちる。 おまけで逆立ち時の性能差。 一貫性があって少し変な挙動のルール=新しいパズルゲームが作れる。 逆立ちで走り回るゲームはほぼ見たことないしインパクトもよし)と、「逆立ちを反転=ぶら下がり」を起点に企画が固まりました。

私はメカニクスや行動から考えるタイプなので、どちらもテーマと表現は後付けです。このフォーマットをちゃんと書くのは初めてでしたが、確かにそこまで考えている方が企画に説得力がありそう。

企画出来ますオーラを出した手前もう1つ出したかったですが、思いつかなかったのとAM4時を回っていたので仕方なく終了……。

フチヌローさんが考えてたアイデア類はこちらから。

1日目 企画決定!Puzzler.K参戦!仕様を固めて制作開始

f:id:marudice:20200310013738p:plain:w50f:id:marudice:20200310013956p:plain:w50 2時間 企画MTG
f:id:marudice:20200310013738p:plain:w50f:id:marudice:20200310013956p:plain:w50 1時間 グラフィックのタスクと仕様MTG
f:id:marudice:20200310013738p:plain:w50f:id:marudice:20200310014011p:plain:w50 1時間 パズルの仮仕様MTG
f:id:marudice:20200310014011p:plain:w50 ?時間 パズルの作問開始(+6問)
f:id:marudice:20200310013956p:plain:w50 ?時間 アートデザイン
f:id:marudice:20200310013738p:plain:w50f:id:marudice:20200310013956p:plain:w50 1時間 プレイヤーデザイン相談
f:id:marudice:20200310013738p:plain:w50 6時間 プレイヤー基本挙動の実装

時は2/24 月・祝 振り返れば長い一日の始まりです…。

9:30 企画MTG f:id:marudice:20200310013738p:plain:w40 f:id:marudice:20200310013956p:plain:w40

都内の喫茶店。フチヌローさんと直接あっての企画会議。早朝のおかげでノートやiPadを広げて話しやすかったです。

私は企画2つとアイデアノート。フチヌローさんは企画はなし、iPadにアイデアをたくさん書いてきてくれました。

フチヌローさんも「鮭の遡上」「逆脱出ゲーム」「北風と太陽」「聖剣を抜かない」といった企画に近かったり面白くなりそうなアイデアがありましたが、話し合った結果『逆立ちのアリス』に決定。

ただしデザインについては一度考えてみたいとのことで宿題になりました。

12:00 グラフィックのタスクと仕様MTG

そのままグラフィックタスクと仕様を決めました。

プレイヤードットは、「立ち・走り・逆立ち・逆立ち走り・ジャンプ」など必須なものから、「箱押し・逆立ち開遷移・逆立ちジャンプ・ゴールダンス」 などゲーム仕様や余力次第なものがあると伝えてリストアップ。

プレイヤードットはどうしても最優先だけど、ギミック・背景・エフェクトも余力があればやろうというところまで決定。 得意なドット背景を遊びに活かせないのを申し訳なく思いつつ…。

14:00 パズルの仮仕様MTG f:id:marudice:20200310014011p:plain:w40 f:id:marudice:20200310013738p:plain:w40

午後1時。『逆立ちのアリス』はPuzzler.Kさんなら素晴らしいパズルを作れるゲームだという確信はあったので、帰りの電車に乗ったらすぐさま連絡を取りました。

幸いにも時間が取れるとのことだったので、正式にチームに入ってもらえました。(Puzzler.Kさんは以前から一緒にゲームを作ってる丸ダイスのサークルメンバーです)

帰着後すぐにDiscordでMTGです。 経緯の説明から、ゲームの基本アイデアを伝え、作れそうか?どんなギミックが欲しいか?を聞きます。

Puzzler.Kさんは硬派なパズラーなので、ギミックを増やしたがる丸ダイスを気にせず

  • 押せるブロック
  • 押すと世界が反転するスイッチ(=逆立ちが「ぶら下がり」になる)

だけで作ることに。 作ってみないと分からない点は仮として、基本的なパズル仕様はここで決めました。

15:00 パズルの作問開始(+6問) f:id:marudice:20200310014011p:plain:w40

実際に作ってもらいながら、疑問点はDiscordで適宜相談。 箱は押せないとあまり面白くないことが分かり、箱に潰されたらどうするかが問題に。

面白さ・納得感・手触り・パズルの作りやすさの観点で、

  • 16:9 に合わせて1画面1問の (8+上下0.5マス)x16
  • 順立ち: ジャンプ1マス・ブロックを押せる
  • 逆立ち: ジャンプ不可(仮)・ブロックを押せない
  • ぶら下がり: 左右移動と落下が可能
  • 空中移動: 可能だが重力強め
  • 逆立ち・世界反転はプレイヤーやブロックが接地しないと起こらない
  • 並んだブロックはまとめて押せる
  • ブロック落下と自分落下はブロックが勝つ。圧死はなしで1マスとして挟まる。

こう決まりました。

f:id:marudice:20200310060033p:plain:w250

こんな感じの「ブロックに乗って逆立ちで浮き上がる」問題を中心に6問完成。…まだ動いてもいないのに、おそるべき速度です。

25:00 プレイヤーデザイン相談 f:id:marudice:20200310013956p:plain:w40 f:id:marudice:20200310013738p:plain:w40

MTG後に描くと言っていたデザインが無事出来上がりました。

f:id:marudice:20200310053955p:plain:w200

(世界観がイメージしにくいプレイヤー単体のデザインが上がってきたらどうしよう……)というのはとんだ杞憂。

どれも世界観もイメージしやすい素晴らしいデザインでしたので、一番好みのものを選んでもらいました(真ん中に)

「現代的な町並みを、平然とした顔で女の子が逆立ちで疾走」…見た目のインパクトも十分そうでした。

デザインに一日使ったので、最悪マップチップは素材を活用するかもとだけ伝えて終了。

20:00 プレイヤーの基本挙動実装 f:id:marudice:20200310013738p:plain:w50

パズルの仮仕様MTGまで昼食すら取らずに話し続けて疲れ果てていたので、ぶっちゃけ午後はダラけててました(チャットだけは返してた)。でも夜には開始。

まずは初めて使うUnity TileMapEditorを導入。

棒人間と、フリーアセットで最低限の陸地を用意して、2Dプラットフォーマーの基本挙動をガリガリ実装していきます。

ジャンプのある2Dアクションを作るのは初なので割とイチからゴリゴリ書いていきます。歩行・ジャンプが出来るところまで実装して終了。28時頃に就寝。

どの距離でも1マスに乗りやすいように、カーブエディタで軌跡を描いて空中浮遊のようなジャンプ挙動にしました(結局ほぼ放物線になりましたが・・)

f:id:marudice:20200312024915p:plain:w100

www.youtube.com

2日目 アニメ出来始め。目標ステージ数追加。地獄のブロック実装

f:id:marudice:20200310013956p:plain:w50 ?時間 アニメ(立ち・逆立ち)
f:id:marudice:20200310014011p:plain:w50 ?時間 反転を中心に+10問
f:id:marudice:20200310013738p:plain:w50 6.5時間 逆立ち・ブロック挙動の実装

もちろん適宜話しつつですが、ここからは基本分業で作業です。

絵:「立ち・逆立ち」 f:id:marudice:20200310013956p:plain:w40

f:id:marudice:20200312035805p:plain f:id:marudice:20200312035747p:plain

描いてもらったら、すぐに組み込み!

細かな修正箇所はあったものの、無事2点完了!

問:反転中心に+10問 f:id:marudice:20200310014011p:plain:w40

f:id:marudice:20200312035856p:plain

昨日はあまり作らなかった反転スイッチ系の問題を作ってくれました。

5ステージx3ワールドの予定でしたが、既に15ステージを超えて1問が軽そうだったので 易10,中10,難5 くらいに目標アップ。

「逆立ちジャンプ」は、出来ないことを利用した問題が出た時点で正式に確定。(アニメの作成難度も高そうだった)

また、「天井にぶつかっても擦ったまま平行移動」といった遊びやすさの為の仕様で、一部修正が必要なのが発覚。

マ:箱挙動、さかだち を実装 f:id:marudice:20200310013738p:plain:w40

地獄の「押せて落ちる箱挙動」。せいぜいI字ブロックやL字のブロックを想像していたら、Puzzler.K先生からは既に

f:id:marudice:20200312040333p:plain

こんな問題が上がって頭を抱えていました。要件は

  • サイズ1.0の箱がサイズ1.0の穴にハマる。横からも上からもあり。
  • 箱が任意の形に連結する
  • プレイヤーの上に落ちると、1.0の高さで止まる(プレイヤーは高さ1.0を走り抜けるため、当然1.0より小さい)
  • 直感的に共押し(押されたブロックが他のブロックを押す)が起こる

こんな感じです。つらい。 が、気合で実装しました。 大ざっぱに言うと、

箱は常にKinematicで動かし、速度に直交した方向に縮めた形で全ての連結箱を同時にBoxCastしました。

この時点ではバグだらけ。適宜直しました。 箱挙動NG集だけで記事がかけそうなくらいヤバイ仕様。

逆立ちは箱の速度を変えて全部止まるのを待つだけなので簡単でした。29時前に就寝…。

www.youtube.com

3日目 マップチップは素材利用に決定。ステージ遷移と量産の準備完了。

f:id:marudice:20200310013956p:plain:w50 ?時間 アニメ(走り・逆立ち走り)
f:id:marudice:20200310013738p:plain:w50 f:id:marudice:20200310013956p:plain:w50 1時間 残りの絵タスクMTG
f:id:marudice:20200310014011p:plain:w50 ?時間 既存の修正と、+5問
f:id:marudice:20200310013738p:plain:w50 5時間 パズル量産準備、エリア遷移

絵:「走り・逆立ち走り」 f:id:marudice:20200310013956p:plain:w40

f:id:marudice:20200312044141p:plain:w80 f:id:marudice:20200312044245p:plain:w80

歩きっぽい絵か走りっぽい絵か迷ってたようですが、どちらも良かったのでお好みにしてもらいました。

移動アニメが入っていい感じに!

絵:マップチップはAssetを使うことに f:id:marudice:20200310013738p:plain:w40 f:id:marudice:20200310013956p:plain:w40

必須のプレイヤーアニメの進捗的にマップチップ手作りはキツそうだということで、素材を使わせてもらうことにしました。

頑張って探して、合いそうなものを発見。 背景も、これを張り合わせて作ろうという話になりました

opengameart.org

問:既存の修正と、+5問 f:id:marudice:20200310014011p:plain:w40

f:id:marudice:20200312052326p:plain

発覚した仕様に合わせて既存のパズルを修正しつつ5問を追加してくれました。

ただし、パズルの右端・左端を揃える・開放的な街なかのイメージにするため左右の端は広めに取る といった新たな修正項目も発覚…。

マ:パズル量産準備、エリア遷移 f:id:marudice:20200310013738p:plain:w40

反転スイッチ以外の仕様が揃って、素材でマップチップを作る許しも出たので、初めて使うTileMapEditorと格闘します。

公式のRule Tileは少し試してやめて、ウディタ形式でタイルを作れるプラグインを使いました。

assetstore.unity.com

↑のドット絵CityをPhotoshopに放り込んでタイルを作り、最低限の地形と箱は爆速で配置出来るようにしました。

youtu.be

どのパズルからでもすぐに確認&ミスなく編集&後から並べ替え」が出来るようにするため、

ショートカット一発で選択中のパズルの開始状態に飛べるようにEditor拡張も整備して、Editor側の量産準備は完了!

youtu.be

クリア判定・ステージ遷移も作りました。クリア演出を凝りたい思いをグッと抑えて、右端に達してたらクリア扱いにしてカメラが遅れてついてくるだけ。29時半就寝。

www.youtube.com

4日目 パズルの並びを本格的に考え始める。必須アクションは実装完了。

f:id:marudice:20200310013956p:plain:w50 ?時間 アニメ(押し)
f:id:marudice:20200310014011p:plain:w50 f:id:marudice:20200310013738p:plain:w50 1時間 パズルの並べ方MTG
f:id:marudice:20200310013738p:plain:w50 5時間 世界反転、ぶら下がり、軽い演出を実装

絵:「押し」 f:id:marudice:20200310013956p:plain:w40

f:id:marudice:20200313020437p:plain:w80

> ロ<)

これの時に、横何ピクセルが当たり判定か決めました。

問:パズルを並べるには反転ゴール考慮が必須と判明 f:id:marudice:20200310014011p:plain:w40 f:id:marudice:20200310013738p:plain:w40

パズルを正確に理解しないとワールド内のパズルを並べられないことが分かったので、Puzzler.Kさんにやってもらうことになりました。

例えば、「2-4 ほかくのわな」のパズル原案はこれですが、

f:id:marudice:20200313022751p:plain:w300

完成形では上下反転して配置されています。

f:id:marudice:20200313022903p:plain:w400

どういうことかというと、原案のパズルは問題によって上下が反転したままゴールすることがあるので、その次に配置するパズルは上下反転しておかないと

パズルが成立しないです。実際、1つ前の「2-3 ぐるぐるぐる」は反転ゴールなので、

f:id:marudice:20200313024201p:plain

無事原案通りになります。これがこの日に判明し、Puzzler.Kさんに並び替えをお願いすることに。

マ:世界反転、ぶら下がり、BGM f:id:marudice:20200310013738p:plain:w40

「世界反転はこれをY Scaleで多分出来る」、という下準備はしていたのでやってみたらあっさり完了。

箱も親にスケールが入る前提で実装していてよかった…。

プレイヤーだけが反転のルールに背くので、反転が終わった瞬間スケールリセットして座標を身長分ズラしました。意外と違和感なく繋がりました。

youtu.be

このあたりからBGMやSEも適宜入れてました。

ドット絵なので音も可能な限り電子音やピコピコ系で揃えることに。初の試みだったので苦労しました。

www.youtube.com

もう4日目なのに ザ☆チュートリアル みたいなパズルが4つ並んでるのが世界の全てだったことに不安を覚えてました。29時半にコミットが切れてました。

f:id:marudice:20200313032118p:plain

5日目 怒涛のワールド配置とあふれ出るバグ

f:id:marudice:20200310013956p:plain:w50 ?時間 アニメ(逆立ち開始)・反転スイッチ
f:id:marudice:20200310014011p:plain:w50 ?時間 ワールド1,2の並び替え
f:id:marudice:20200310013738p:plain:w50 ?時間 ワールド1,2の配置

絵:「逆立ち開始」・スイッチ f:id:marudice:20200310013956p:plain:w40

www.youtube.com (フチヌローさんのYoutubeお借りしました)

完成のために必須なアニメではないのですが、逆立ちアクションの感触が段違いに良くなる確信があったので入れてもらいました。

当たり前に見えてすごく工夫されたアニメなので、フチヌローさんの振り返り記事を是非ご覧下さい。

(逆回し出来そうだったので、「逆立ち解除」にも使いました。こっそりと…)

仮で作ったプログラマー臭い世界反転スイッチの画像が

f:id:marudice:20200313042803p:plain

秒でキレイな画像に!スゴイ!

f:id:marudice:20200313042839p:plain

問:ワールド1,2を並べ替えて、配置 f:id:marudice:20200310014011p:plain:w40 f:id:marudice:20200310013738p:plain:w40

Puzzler.Kさんが並べ替えたのを、丸ダイスがガンガン配置していきます。

このあたりで、W1:逆立ち W2:世界反転 W3:箱リフト と、必須要素が増えるタイミングと、各ワールド10問ずつになることが決定。

並べるf:id:marudice:20200310014011p:plain:w40はパズルの左右端をつなげたり上下を気にしたりと考えることが多くて大変です。

配置するf:id:marudice:20200310013738p:plain:w40の方が早いですが、新しいパズルで起きたバグやワールド2から登場する上下反転配置で時々実装してたのでどっちもどっち。

f:id:marudice:20200313040256p:plain

f:id:marudice:20200313040324p:plain

ちゃんとしたパズルがゲームっぽくつながって、急激にゴールが見え始めました。最終コミットが28時半でした。

ワールドクリアしても虚無の空間に落ちて Index out of Exception になる以外は

6日目 全アニメ完遂! 全配置完了! デバッグしながら演出強化

f:id:marudice:20200310013956p:plain:w50 ?時間 アニメ(ジャンプ)、背景作成開始
f:id:marudice:20200310014011p:plain:w50 f:id:marudice:20200310013738p:plain:w50 ?時間 別解潰し、通しデバッグ
f:id:marudice:20200310013738p:plain:w50 10時間 にぎやかしデブリ、反転エフェクトなど演出

土曜日。寝て起きたら午後でした。

問:ワールド3の配置。パズルの通しチェック f:id:marudice:20200310014011p:plain:w40 f:id:marudice:20200310013738p:plain:w40

ワールド3は仕様的に新要素はないので手早く配置。 17時頃には全10x3ステージの配置は終わってました。

物量的には十分すぎたのでレベルデザインは品質上げのフェーズへ。

ここでGoogle DriveによるUnityプロジェクト共有」という罠がついに牙を剥き、

Puzzler.Kさんはプロジェクトの丸ごとダウンロードを何度かやるハメになりました……。

…ともかく、私以外で初めてEditorを触るPuzzler.Kさんがパズルの別解チェック兼、問題なく遊べるか通しデバッグしました。

パズルをどう直すかはPuzzler.Kさん次第なので、丸ダイスは他の作業と平行して言われるがまま配置を修正…。

絵:「ジャンプ」 f:id:marudice:20200310013956p:plain:w40

www.youtube.com

祝!全アニメ完成です!

絵:ストーリー共有。背景を作り始める f:id:marudice:20200310013956p:plain:w40 f:id:marudice:20200310013738p:plain:w40

ワールド構成が決まった時点で脳内確定してたプチストーリー

  • 朝: 登校中
  • 夕方: 下校中
  • 夜: 夜遊び

を、いよいよ背景に取り掛かる段階でフチヌローさんに共有。

朝・夕方・夜 さえ合ってれば良いので、背景画像の構成(画像の分割方法、枚数・ピクセルサイズ、リピート有無)はおまかせしました。

マ:演出面の強化 f:id:marudice:20200310013738p:plain:w40

無音で地味な演出、どこまでも同じ背景、タイトルなし、ワールドの終わりは虚無の空間…という状態だったので、

 にぎやかしデブリシステム

「適当な小さいアイテムをばらまいたら絵的にハデだし、重力の変化が視覚的に分かっていいジャン!」と思ってたので作ってみた。

youtu.be

↑多すぎることに気づいてない頃

配置もスプライトのランダム化も自動化すると、なんかジャラジャラ出したくなっちゃう病気。

さらにプレイヤーが蹴飛ばしたり出来るようにもしたけど、処理も重かったし気が散る、プレイヤー接地がなぜかまれにバグる という最悪の自体で正気に戻りました。

f:id:marudice:20200313052149p:plain:w200

↑正気に戻った後

箱としかインタラクションしないようにして、数も2~4コ。地味だけどアクセントになりました。

(ゲームと関係ないのに、開発中一番バグ調査に時間を浪費しました・・・)

 逆立ちエフェクト・世界反転エフェクト

youtu.be

合わせて遷移時間とかも調整。ここで「逆立ち」「世界反転」の感触が一気によくなりました。

特に、曲調が変わって2-1で初めて出会う「世界反転」は、いまだ未知の不思議なことが起こるワクワク感を出したかった。

寝ないつもりで朝を迎えたのに起きたら昼だったので、30時(6時)~11時くらいが睡眠時間だったようです。

7日目 背景滑り込み完成!いろいろねじ込んで間に合…ってないけど完成!

f:id:marudice:20200310013956p:plain:w50 ?時間 ワールド2,3の背景素材・ゲームサムネイル
f:id:marudice:20200310014011p:plain:w50 ?時間 デバッグ・パズル最終調整
f:id:marudice:20200310013738p:plain:w50 10時間 ストーリー演出、タイトル画面、ポーズ・スキップ、ランキング、リリース作業

~12:30 マ:デモ作成 f:id:marudice:20200310013738p:plain:w40

Recolitの開発経験とコードを活かして、プチストーリーに合わせたセリフを入れました。

ワールドクリアとワールド開始が基本ですが、

1-1はあえてなしで1-2に最初のセリフを持ってきたのがにしたのがすぐに触れるゲーム体験に出来ていい感じに。

~17:30 問:デバッグ・パズル最終調整 f:id:marudice:20200310014011p:plain:w40

デバッグ・別解潰しを続けてましたが、17時ごろに最後の問題修正を入れたらもうやることはないので離脱してもらいました。

挙動バグは一応報告してもらいましたが、すぐ直せないものは諦めました。

~18:00 絵:背景素材全部! f:id:marudice:20200310013956p:plain:w40

昼に起きたらワールド1の背景は出来てました。

レベルデザインに合わせた背景になっててビックリ。Editorすら開いてないはずがどうやって・・・。未だに謎です(今度聞いてみよう)。

質が落ちても全部揃えることを優先してくれて助かりました。最後にガッツが出せるクリエイターは強いです。 おかげで2,3の背景も18時頃滑り込み。

サムネイル画像を作ってもらいつつ、丸ダイスはリリース作業に専念します。

~18:00 マ:タイトル画面 f:id:marudice:20200310013738p:plain:w40

少し悩んでゲームタイトルも決めました。逆立ちをひらがなにすると締まりがよかったのでシンプルに「さかだちの街」。

何気にマウス・キー両対応のUIです。

最後の追い込み f:id:marudice:20200310013738p:plain:w40 f:id:marudice:20200310013956p:plain:w40

~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 宣伝ツイート

バズりたい~!

振り返って

反省点

Google Driveでのプロジェクト共有はキツイです。代替手段、プリーズ……。

よかった点

フチヌローさんの可愛いドット絵やPuzzler.Kさんの解いて楽しいパズルは、ゲームに大きな魅力を与えてくれて、私には作れないものです。

ゲームはいいものを作るために求められる専門性があまりにも多いです。そこそこレベルなら「全部俺」も可能ですが、少なくとも私にはすべてを高いレベルで習得出来そうにないです…。

自分に作れない魅力を作り出せる人とのチームは、コミュニケーションなどの困難を補って十分なほど

私の目指す「より良いゲーム作り」を助けてくれるものだと、改めて確信することが出来たのがよかったです。

あとは単純にいいゲームが作れました!

で結局、「1週間で1時間規模のパズルアクションがなぜ作れたか」?

それはまぁ、3人いたからでは… f:id:marudice:20200313215638p:plain:w30

8日目~(?)

f:id:marudice:20200313221621p:plain

丸ダイスのゲームジャムは、もう少し続きました(続く?)

オチ:

【Unity】Assetが未使用かプロジェクト全体をチェックする「ReferenceFinder」の紹介

こんにちは!丸ダイスです!

unityで開発していて、

「このAsset多分使ってないから消したい! でもホントに使ってないか自信がない…消してエラーのなるのは嫌だ…」

って時ないですか?私はあります。 複数人で開発してたりプロジェクトの規模が大きくなった時は特に。

そんなときに便利なのがこの「ReferenceFinder」というエディタ拡張です。 使用イメージはこんな感じ

f:id:marudice:20200113115552g:plain

Assetを右クリック→「Find References」で、プロジェクト内での全ての参照元を表示してくれます。 あるAssetが使っているAssetを洗い出してくれる「Select Dependencies」という標準機能がありますが、その逆ですね。

参照が0なら消してOKということですね。

参照元のAssetを選択したりそのAssetからさらに「Find References」をしたり出来るので、Assetの依存関係を整理する時に超便利です。

元はこちらのDave Lloydさんが公開されたものです。

www.powerhoof.com

これでも十分便利ですが、私が少し改良したコードも置いておきます。

未使用チェックではこちらの方が便利だと思います。

改良点:

  • Prefabからの参照のみチェック → Prefab/Scene/ScriptableObject すべてに対応
  • 孫参照を無視するかどうかを選べるようにした

Image Laboさんとの「Recolit」共同開発のお知らせ

ばんばんわ!丸ダイスです!

いくらか前から、みんな知らないけど実は丸ダイスが作ってるゲームがあるぞという報告ですよ!

それがこちら、「明かり」をたよりに進んでいくアドベンチャーゲームの「Recolit」です。

image-labo.com

RecolitはサークルImage Laboのむじさんがメインで作っているゲームです。

味のあるドット絵やシナリオなど、物語作りの中心はあくまでImage Laboなので

丸ダイスくんの役割はプログラムをモリモリ書いて挙動をいい感じに仕上げるところですね!

今の最新のPVはこちら。

www.youtube.com

本編はまだまだ開発で、この冬コミにバージョンアップした体験版が出せるかも!ということで丸ダイス共々頑張って制作中です!

アドベンチャーゲームはイベント固有の挙動が引くほど多いのが難しいところですが、そこはTreehouse Riddleの開発経験が活きてるのを感じながらキビキビ開発しています!

ちょっと言い訳…

「ま、プログラムだけなら並行開発でもいけるやろ!」…と、最初は思っていたのですが、意外と大変でした!

開発中にもお構いなしにゲームジャムに参加したり他にも原因はあるのですが、丸ダイスの開発スタイルはエクストリームかつなので、

メインで作ってるゲームがちょっと遅れても、気長に待って頂けると幸いです。ちゃんと進んでるよ!