2017年11月20日月曜日

フリーのアセット/素材のおかげで爆誕した高速3Dアクションゲーム「Dangerous Space Transporter ~危険な宇宙の運び屋~」について

Unity1Week の今回のテーマは「Space」でした。
すきま、空間、宇宙、スペースキーといろいろ思案した結果、3Dの宇宙空間の運び屋というテーマを選びました。
その結果できたのが、タイトルの「Dangerous Space Transporter ~危険な宇宙の運び屋~」です。






今までも、フリーのアセットを多少は使ってきましたが、あまり積極的に利用するという気持ちはありませんでした。
特にデザインが色濃くでる3Dモデルなどは、なんとなく敬遠していました。

しかし、今回の unity1week のキャンペーンで積極的に使ってみると、今までは出来なかった表現が楽しめるようになりました。

今回は、ゲームDSTの制作について、アセットの紹介を踏まえながら書きたいと思います。

unity1week で作っていたときの感じ

unity1week開催の数日前にバウチャーが何とかという話はツイッターで知っていました。

とりあえず、テーマを聞いて、思い浮かんだら作ろうといつもどおり思ってました。
今回はバウチャー(報酬)がもらえるということで、いつもより積極的だったことは否めません。

そんなこんなで出されたテーマは「Space」。
とりあえずキーボードのスペースキーをじーっとみました。
(スペースキーって良く見ると「Space」とすら打たれていないんですね。少なくとも自分のはそうでした)

その後に浮かんだのが、レトロな2Dシューティングです。
レトロといってもすごい作品がたくさんあるので、もっと具体的にいえば、シンプルなレトロな2Dシューティングです。

だけど、せっかくアセットを使うなら、3Dもいいんじゃないかと思って考えたのが今回のゲーム制作の始まりです。

3Dアクションというと、私はダークソウル2しかクリア(DLCは含まない)した覚えがありません。
(しかも、敵を地味に枯らしながら進むスタイルでした)

他にゾンビを倒すメジャーなゲームもやりましたが、基本的に操作が難しくて楽しめません。
もう、ルールを覚えるのがストレスになってだめだし、実際やってみてもうまく動かなくてつまんないというパターンが多いんですよね。

そんな自分でも、3Dで楽しめるにはどうしたらいいか。

とりあえず、操作をなるべくシンプルにすることにしました。
シンプルでいて、プレイした満足感を味わえる塩梅を考えました。

そこで思いついたのが、勝手に3D空間を前進する状態で、敵をよけつつ、加速アイテムをとって、ゴールになるべく速くたどりつくことを目的にするゲームでした。

これって、勝手に3Dとして進むけど、実際の操作は上下左右の2Dなんですよね。
でも、3Dな雰囲気も味わえるし、自分的にも3Dを操作したぞ!って感じになると思いました。
だから3Dゲーと思っていいと思います。

最初は、HPを設定して、敵に何回かぶつかったら負けとか回復アイテムとか考えたのですが、せっかくがんばったのに途中でゲームオーバーはやだなと思い、あきらめなければクリアできる設定にしました。
ぬるゲーという人はタイムアタックをすればいいだけだし、僕は下手なゲームプレイヤーなので下手でもなるべくストレスを受けないようにしたかったです。

実装で一番がんばったのは、クイックイッとコースのコーナーで視点が回転することです。
3Dの表現でこれだけはやりたかったんですよね。

NavMesh とかいろいろ方法はあると思うのですが、とりあえず簡単に実装できそうだったので、トリガーを持つ GameObject の配列要素を順に追いかける作りにしました。

目標の GameObject に接触したら、その次の要素に角度を3秒くらいで変えて直進するっていうトラクターコンポーネントを作って、それにカメラの案内をさせる感じです。
カメラの先には固定でプレイヤー機が存在し、カメラのフレームの範囲内で自由に上下左右に移動できるようにします。
あとは、岩にぶつかったら減速、ブーストリングにぶつかったら加速というだけです。

でも、これだけのゲームの作成でも3日間かかりました。
ゲームのアイデアを考える時間も考えると5日ほどかかりました。

アイデアを思いついて、「~だけ」という表現になるまでシンプルにすることが最近はとても重要だと思っています。
「~も」という表現が残っているうちはまだまだ収拾がついていない状態だと思います。

「~だけ」といっても意外とえぐい要素があったりするので安心はできませんが、けずっていくことで本質が見えたり、他の思わぬ要素と結び付けやすくなると思います。
単純すぎてつまんなくてもだめですが、ごちゃごちゃしてると作れないし、ごちゃごちゃなものを作ってもどう受け止めていいか混乱してしまいます。

今回のゲームは、ブーストリングで加速する快感を中心に作りました。
3Dは経験が浅いですが、その部分だけはこだわったつもりです。
ブーストリングにふれると、ジェット噴射のようなものがかっこよくバリバリッと出て、音もいい感じでなって、メーターがビューンとあがるようにしました。

小惑星にぶつかったときは、逆にがっかりするようにしました。
本当は、カメラをぶるぶる振動させたかったのですが今の実装ではちょっと難しくてやめました。
そのかわり、一瞬スクリーンを赤くしてダメージをうけた感じを表現しました。

減速したりブーストリングを通過しそこねて、とろとろになって、次のブーストリングまで待つところをプレイヤーへの抑圧(ストレス)にしています。
それをブーストリングにふれることで解放する感じにしました。

実装の3日目のほとんどを使ったのがステージの設計です。
最初に、こんなトラップがあるといいなというのを6つくらいノートに書いて、それをレベル順に並び替えて実際に配置していきました。
100回以上は実際にプレイしながらの微調整をしたと思います。
3D制作になれている人ならばもっと短時間でできたのかもしれませんが、ちょっと試しては小惑星の配置をずらすということを何度もやりました。

長々と語りましたが、まとめると
  • バウチャー(報酬)もらえるし、3Dとかのアセットもいっぱい使ってみよう
  • 3D操作が下手でも楽しめるようにしよう
  • 加速する感覚をSFっぽく楽しみたい
です。
あんまり成果はでなかったかもしれませんが、テストプレイのときは結構わくわくしました。

ここからは、今回使ったアセットについて紹介したいと思います。

使ったアセットについて

アルファベット順。全部無料。

Action Music Pack


このゲームで使っている3つのBGMはすべてこのアセットのものです。
かっこいいですね。SFに限らずRPG系でも使えそうなバトル系が多いです。

Arcade SFX Free


このゲームのボタン音、ゲーム開始音、ブースト音などの効果音はすべてのこのアセットのものです。
SFな感じの効果音以外にもレトロなジャンプやコイン取得の音などもあります。

iTween


かなり前からお世話になっています。オブジェクトに動きをつけるときに便利なスクリプトです。移動・回転・拡大のアニメーションをさくっとやってくれます。

KY Magic Effects Free


今回のブーストのかっこよさを演出してくれた素敵なCGエフェクトを含むアセットです。魔法っぽいエフェクトが数種類あります。ループの可否や表示する時間の長さなどもアレンジできるみたいです。

LeaderboardForUnityWebGL

https://github.com/NCMBMania/LeaderboardForUnityWebGL

ネットのランキングをお手軽に実装できたのはこのアセットのおかげです。
github のリンクしか知らないのでアセットかどうかも厳密にはわかりませんが、何度もお世話になっています。

Modular Space Raider


今回のゲームのプレイヤー機のモデルが含まれているアセットです。宇宙船っぽいかっこいいモデルが数種類あります。

MSFMC - Radar Dish


今回のゴールの基地として使ったオブジェクトを含むアセットです。レーダーらしいですが、SFで幅広く使える感じがします。色も変更して使うことができます。

Skybox Volume 2 (Nebula)


今回の背景のスカイボックスです。数種類のきれいな宇宙の背景が選べます。これを入れただけで宇宙!って感じがして、視点を変えるだけでガラッと違う雰囲気を出せました。

Space Asteroids


今回の小惑星を含む多くの小惑星の3Dモデルのアセットです。たくさん配置して小惑星群を表現できました。接近して拡大しても荒く感じないリアルさがあります。

M+ FONTS
アセットではありませんが、今までもお世話になっているフォント素材として、 M+ FONTS も紹介します。今回も多くのテキストで使わせていただきました。

今回の感想

今までほとんど2Dだけを作ってきたので、3Dのゲームを作るのはいろいろと学ぶことも多かったです。
不慣れなため、簡単にできそうなのにできないことも多くありました。

しかし、フリーのアセットを用いるだけで、難しいと思っている3Dのゲームも想像よりも簡単に作ることができるということを知りました。
また、今回の unity1week の他の作品を見て、3Dでもとてもかわいらしく仕上げられることを発見できました。

なんとなくやっぱり次は2Dを作りたいという気分のほうが強いのですが、また機会があったら3Dも挑戦したいと思っています。

改めまして、unityroom 様には貴重な作成の機会と公開の場を与えていただき感謝致します。


2017年7月31日月曜日

春から初夏にかけてリリースしたゲームのことを振り返ってみた(2017)

3月にリリースした「青汁ごくごく生放送」のあと、ブログを書いていませんでした。
なんでやめたんでしょうね。 自分でも思い出せません。
ブログを書いてる途中で思い出せるかもしれないし、順を追って最近作った4作品を紹介していこうと思います。


まずは「ポテキャッチ」です。
確か、春ごろにじゃがいも不足が深刻でポテトチップスの一部の商品の供給が途絶えたときに作ったゲームです。
闇ポテチというパワーワードを聞いて、なんかゲームにできないかなーと思って作りました。
モチーフは忍者ハットリくんのFCゲームです。そのゲーム内のステージクリアのときのボーナスゲームが何か印象的だったので、それをモチーフにしました。

あわよくば android でもリリースしてバズればいいなという姑息さが画面サイズからにじみでてますね。
それを除けば、シンプルだけどなんか楽しい感じに仕上がったと思います。

次は「跳ねる岩の洞窟」です。
unity1week という一週間で作成するゲームジャムの初回だったと思います。
お題がジャンプとか跳ねるとかそういったものだったと思います。
最初はプレイヤーがジャンプするゲームを考えていたんですが、操作をシンプルにしたいということで、プレイヤーは歩くか走るのみにしました。

しかし、シンプルに徒歩に限ったせいでゴールまでのダンジョンの構造がかなり制限されてしまいました。
そこで、エレベーター的なものがあるといいなと思い、お題の跳ねるにヒントを得て、ぴょんぴょん跳ねる大きな岩をダンジョンのギミックにすることにしました。
これは、エレベーター代わりでもあり、マリオのドッスンみたいな敵としての面も持ち合わせています。
このことに気づいたときは、開発のテンションがあがりました。

ただ、つぶされたときの判定の実装が難しかったです。
たまにそんなにつぶされていないのにゲームオーバーになるデリケート仕様になってしまいましたので、あまり岩にのっているときは壁にくっつかないようにしてあげてください。

岩、鍵、扉、スライムというシンプルなギミックでわりとスリリングなアクションができたんじゃないかなと思っています。



これはあほげー第23回にエントリーした作品です。お題は「半分」でした。
お題発表の夜は、寝る前に作る案を3つくらい出すようにしているのですが、なかなかでてきませんでした。
それでも寝るまでに考えたものの中で、一番わかりやすかったので作ってみました。

元ネタはポケモンスマッシュ(サンデー?)の博士の発明品です。
顔の上下を組み合わせてすごく笑えたのを思い出して、モンタージュみたいな感じのゲームを作りました。

絵は8キャラは用意したいと思っていて、いくらゆるキャラ系でよいとはいっても、きちんと笑えそうな絵を8つ用意するのに4時間くらいかかりました。

最初は、モンタージュで一致した数だけを競うことにしていたのですが、欲が出て勇者とのバトルシーンもつけよう、それならクリーチャーのステータスも決めなきゃと、気づいたら遅刻してました。
ステータスは基本的にSSR(絵柄があってる)クリーチャーが強いです。
それぞれ攻撃力重視、防御力重視、速度重視と個性がありますが、これが1体出れば基本的に勇者は倒せます。
SSRじゃないクリーチャーは、上と下のそれぞれのSSRキャラのステータスをもとに計算しています。
上のSSRステータス*0.5 と 下のSSRステータス*0.5の間のランダム値です。
といっても、わかりにくくてわかりませんね。
とにかくSSRキャラのほうが強いけど、SSRキャラじゃなくても組み合わせによってはわりと強いキャラができますよという感じにしました。

勇者とのバトルはあくまでおまけで、モンタージュで笑ってもらえるように作りました。
だけど、やっぱりバトルとかのほうが注目されるのかな。伝え方が難しいです。
頑張ったわりに反響がなかったなぁと思った作品でした。

あと、この作品から Unity2017 を使っているのですが、なんかローカルで WebGL ビルドが失敗するんですよ。
夕方にできて、あとは WebGL ビルドだと思ってたら30分してみると失敗しましたとかいって止まっちゃう。
それで、「跳ねる岩の洞窟」のときに初めてやった Cloud Build を18時ごろに思い出してやって、何度か失敗してエントリーが大遅刻してしまいました。
今まで使っていた Unity といえども、バージョンを新しくしたなら、一通りできることを確認したほうが良いですね。



最も最近リリースしたのが「おばけのこんにゃくピターン大作戦」です。
unity1weekが始まってもいいアイデアがなくて参加は見送ろうと思っていました。

その期間中、偶然にも「#ドット絵版毎日真剣60分1本勝負」というツイッターでやっている企画に参加して、おばけのドット絵を描いてたんです。
これが、ゲームのツイートよりもいいねもRTもぐんぐんのびてすごくうれしかったんですよね。
それで、なんとなくこのおばけを使った肝試しのゲームを作ってみようと思いました。
ここで、 unity1weekの企画にも出せるぞと思い、急遽作ったゲームです。

自分でも信じられないのですが、Unityを起動したのは締め切り日の午前10時過ぎでした。
おばけの絵は用意してあったし、前日のうちに少年のアニメーションは作っておきましたが、他の素材も作って Unity の実装も半日でやるというのは無理かなと思いながら始めました。
なんで実装が遅くなったかといえば、どういうゲームにするかずっとぼやけていたからです。
決まらなかったら unity1week は諦めようと思っていたのですが、締め切り前日の土曜日にやっと全体の仕様が決まって、間に合うか半信半疑で作りました。
今までも使ってきた Unity だからこそなんとか間に合ったのだと思います。

ちなみに今回も Unity2017 で作りましたがローカルで WebGL ビルドは失敗するので同じように Cloud Build にしました。
Cloud Build は成功してくれるので良いのですが、Queue 状態が1時間も続くことがあって、歯がゆいときがあります。やっぱりローカルでもビルドできるようになりたいです。

このゲームで使っている、明かりは黄色の半透明画像をスプライトにしているだけなんですが、それだけで、うまく周囲を照らしているような感じになってくれたのがうれしかったです。
地面や草はスプライトをタイル状にできる 5.6 あたりからの比較的新しい機能を使いました。
Sprite Editor で簡単に設定ができて楽でした。

音楽も「フリー音楽素材/魔王魂」様で良いものが見つかり雰囲気をもりあげてもらいました。
あと、フォントも「PixelMplus」というレトロゲームと相性がよい感じの文字が最近気に入っていて使わせてもらっています。
使わせていただいたフリー素材の提供者様に改めて感謝いたします。
また、ゲームジャムの運営様には機会と場所を提供していただき感謝いたします。

ちなみにお化けなのに壁をすり抜けられないのは、こんにゃくを持つために実体化しているためという設定です。
おどろいたときは、お堂にテレポートしますが、これは壁抜けではない方法で移動しているという設定です。
肝試しっぽい雰囲気で楽しんでもらえるとうれしいです。

まとめ

駆け足で春から初夏にかけてリリースした作品を紹介してきました。
結局、なんでブログをかかなくなったのかはわからないのですが、たぶんなんとなくだったんでしょう。
もしもブログを楽しみにしている方がいたならば、すみませんでした。
なるべく書くようにこころがけます。

いつにもまして長くて乱文になってしまいましたが、読んでくれてありがとうございます。

2017年3月20日月曜日

リズムゲー「青汁ごくごく生放送」リリース

第22回あほげーに参加させてもらいました。
作ったのは、リズムゲームらしきブラウザゲームです。





第22回あほげー参加

今回のあほげーのお題は「グリーン」でした。
幅が広いお題だと思うのですが、なかなか何をすればいいか決まりませんでした。
だけど、時間もないし、最初に全体像が浮かんできたこのネタにしました。
最初は、↓のようなおっさん(青汁俳優)を想定していたのですが、朝起きてから、若い女性のユーチoーバーに変えました。
理由はなんとなくです。
 このネタに決めたひとつの理由は、当然一日で実装できそうだからです。
だけど、思いのほかに遅刻してしまい、締め切りの21時を19時間ほど遅刻して、次の日の夕方になってしまいました。
「なんでなのかなー?」と今になって振り返って見ます。

遅刻の原因1 画像の作り直し

ボツになった青汁俳優の5種類ほどの下書きを書いて、金曜日の夜は終わりました。
土曜日の朝にはボツが決定し、別の人物の絵を書いていました。
あと、人物のほかに、 GUI の色などが出来上がってからみると統一感がなくて、幅なども含めて微調整しました。
遅れは、1時間とか2時間だと思います。
中途半端に最初の画像に時間をかけるのはよくないのかもしれません。
完全に下書きと割り切った短時間で作った画像を使うか、完成版の画像を最初に作ってしまう手が考えられます。
今の自分のやり方ならば、最初は1分でできるような下書きを使って差し替えるのが良いのかと思います。

遅刻の原因2 ステージ作成(レベルデザインとは呼べないと思う)

配置がランダムではないゲームの場合、ステージ作りに意外に時間がかかると思います。
これは、前から思っていたのですが、今回も見落としていました。
だんだんと難しくなっていく流れを作り、その後自分でやってだるいと思ったところを修正することを繰り返しました。
プレイを繰り返して、3時間ほどかかった気がします。

遅刻の原因3 思わぬバグ

ビルドエラー

Unity5.5.0f3 を使っているのですが、 WebGL 版のビルドで
FileNotFoundException: Could not find file "D:\Unity5\青汁ごくごく生放送\Temp\StagingArea\Data\Native\build.asm.js".
というエラーが出ました。
先月に豆まき陰陽師をビルドしたときは起きなかったので、かなり戸惑いました。
ビルドエラーの原因はプロジェクトフォルダ名を半角英数以外にしたことでした。

ツイート機能のバグ

もうひとつはツイート機能のバグです。実際にサーバにアップして試したら、 Unity では動作していたのにエラーが起きました。
古い使い方をしていたためでした。
Application.ExternalEval(string.Format("window.open('{0}','_blank')", url));
を使うことで直りました。
これは豆まき陰陽師のときにわかっていたことでした。備忘録かUnityメモのようなものを作り、再利用できるようにしたいと思います。

本番での UI のずれ

他にも実際にビルドすると UI の配置がずれていて何度かビルドと修正を繰り返しました。
UI についてはもう少しきちんと配置の勉強をしないとまた同じことになると思います。
あとは、予期せぬバグは起きるものと考えて余裕をもったスケジュールにしないといけないと思いました。

振り返って

今回は(も?)大遅刻をしてしまいましたが、なんとかエントリーできてよかったです。
運営の皆様にも、無事に遊んでもらえて安心しました。
このような機会を与えてもらいあらためてお礼を申し上げます。


2:10:40あたりから本作を紹介してもらっています。
1発目でクリアしたときは驚きました。

また、素材提供のサイト様にも改めまして御礼申し上げます。

  • フリー効果音素材・無料効果音 : http://taira-komori.jpn.org/freesound.html
  • M+ FONTS | ABOUT : https://mplus-fonts.osdn.jp/about.html


次回は、なるべく遅刻しないようにしたいです。


2017/03/20追記