AdSenseBlogHead

2018年6月11日月曜日

unity1week(お題:ぎりぎり)で「十倍返しの魔鏡(マジックミラー)」を作りました。

先週(2018/6/4~10)開催された unity1week(お題:ぎりぎり) に参加しました。

今回は締め切り4時間前にはエントリーが完了していたので、気力とか体力とかに余力があるようで、こうしてブログもすぐに書いている状態です。

せっかくなので、記憶が割と鮮明なうちに、今回のゲーム制作について書いておきます。

作ったもの 

十倍返しの魔鏡(マジックミラー)」というゲームを作りました。

百聞は一見にしかずなので、次の動画をご覧いただければ、だいたいの雰囲気は伝わると思います。


画面サイズは、なんとなく、スマートフォンへの移植を意識したような 360x640px のポートレート型です。(移植予定はありません)

ゲームの名前にハッシュタグがついてるんだけど

unityroom様の投稿ページでは「#十倍返しの魔鏡 」という感じで、 # を先頭につけました。
これは、単純にハッシュタグで検索しやすくするためです。
SSR級のごく小数のプレイヤーのツイートを無視しないように今回から取り入れてみました。
引用:https://unityroom.com/games/magicmirrorcounterx10

unityroom様のページのデザインが少しずつ改良されていて、このゲーム名のフォントもいいなぁと思いました。

作成過程を振り返る(長い……)

月曜日にお題の「ぎりぎり」をみて、「ギリジャンよこっとび」というアトランティスチックなイメージが思い浮かびました。
そのあとも、10個くらいネタだしをして、なんとなく今回はこれを作りたいなーと思ったのが、マホカ○タやリフ○ク系の魔法を跳ね返すゲームです。

ただ魔法を跳ね返すのではなく、ぎりぎりで跳ね返すほど、威力を倍増させられるところを楽しめるように作りたいと思いました。

それと同時に、
  • アクションが苦手な人は、あんまり欲張らず威力は低めでも余裕をもってバリアをはればクリアできて
  • アクションが上手な人は、ハイリスクハイリターンで高速クリアを目指せる
下手でも上手でもそれなりに楽しめることを意識しました。

火曜日あたりまでは、そんな感じで、アイデアを思い浮かべては整理していました。
本当はすぐにでもプロトタイプを作って動かしたいのだけど、頭のどこかでしっくりいっていないのか、プログラムをする気にはならなかったので、とりあえず、こんな構図でいいかなーという画面の絵の仮組みを作りました。


ツイートしたら何人かの方にいいねされてうれしかったです。
考えたら、このいいねで、やる気がでてきたのかもしれません。

水曜日に、ちょっとだけ Unity で仮組みの絵でキャラを動かしたり、暫定の弾を落としたりしてみました。

まだ、このときは、主人公は横に移動するし、ミサイルも決められた場所から一定間隔でふってくるだけでした。
このときは、なんかこれ面白くないかもという感じがありました。

木曜日はあんまりプログラミングする気力がなかったので、魔法弾(炎、氷、どくろ、雷)の4つの画像を作りました。
でも、寝る前に、「跳ね返ったときに大きさを10倍にして反対方向を向くようにする処理」だけ試してみたくて、ちょこっといれてみると、これが意外にインパクトがありました。

小さかった弾が、打ち返した瞬間に巨大になって相手に向かっていく。

仕様として文章では書いておいたのですが、これを実際にやってみると、思ったよりも楽しく感じました。
実際に動かしてみるっていうのは想像以上に大事だし、テンションをあげてくれるんだなぁと思いました。

金曜日は、テンションがあがっていっきに魔法弾の各4パターンの動きを実装しました。多少バグはあったのですが、それでもいろんなパターンの魔法攻撃が次々にくるのは、見ていて楽しかったです。

土曜日は、今までいれてなかったランキングシステム(naichiさんとニフクラさんのおかげでかなりスムーズに導入できました)やツイートシステム、ゲームクリア、ゲームオーバーなどをいっきに追加し、仮組みながらも基本機能は一応できました。

途中やる気がなくなったときは、BGMや効果音を選んでいれると、いっきにそれっぽい雰囲気がでてきて、テンションがあがりました。

魔法弾のちょっとしたバグもなんとか直せて、明日は本番用の画像を作って、タイトル画面を作るだけという段階までがんばりました。

日曜日は4時過ぎに起きられたので、早朝のうちにタイトル画面の大枠をつくりました。
その後、お昼前に巫女さんの画像もわりとすんなり作れました。

敵の悪霊の絵も描いてみたんですが、仮組みの絵を超えるやつが描けなくて、時間的にもこれでいいかなと思い、そのまま本番用にしました。
プレイヤーの方にどう映ったかはわかりませんが、4~5日も見ていたせいか、敵の絵については違和感は感じていません。

巫女さんのほうは、倒れるシーンもつくってみました。地味ですが、負けた感じを出せてると思います。
あと、敵の悪霊がやられるシーンで徐々に消滅していき、そのあと天の川が現れる演出は作ってよかったと思いました。

日曜の午後からは、本番環境でのテストということで、 WebGLをビルド・アップロードして、試しました。
いつもなら音がでないとか、何かしら問題があるのですが、今回はすんなりいけたので、そのままプレイ動画をとったり、その動画をもとに、紹介用の gif やアイコンを作って、夕方にはエントリー完了。

お題が「ぎりぎり」なのに対して、今までで一番余裕のあるエントリーになりました。

締め切り後、他の方の作品を10~15作品程度遊ばせてもらいました。
すでに170作品もエントリーがあったので、アイコンやタイトルが気になったものや、知っている人の作品を中心にプレイしました。
さまざまなアイデアや演出がありとても勉強になったし、楽しめました。

さいごに

ゲームジャムは、普段なら空中分解してしまうゲーム制作をなぜかリリースまでさせる力があると思います。

しかし、私には、そこで作ったゲームを育てるということができていません。

なんか飽きてしまうというか、もうこれは終わったものという感じで、興味がなくなってしまいます。
しかし、もっと本格的にバージョン管理をしたり、計画をたてて少しずつバージョンアップを楽しみながらすることができれば、今までよりも規模の大きいゲームが作れるのではないかと思っています。

そこらへんをできるようになれれば、もう少し多くの人に長く遊んでもらえるゲームができるのかなと思いました。

いろいろ不安定な状態ですが、できる範囲で無理せずがんばりたいと思います。

最後に、今回もゲーム制作の機会と公開の場を与えていただいた unityroom 様と、ゲームをプレイ・RT・いいねしてくれた方たちに改めて御礼を申し上げます。

次のブログが何ヵ月後になるかは私にもわかりませんが、もしよろしければまた読んでやってください。

今回のゲームは、次のリンクから PC のウェブブラウザでプレイできます。


2018年5月13日日曜日

生存報告2018春。ブログさぼってた半年間、ゲームジャムに参加して3D/2Dアクションゲームとか作ったりいろいろしてたよ。

半年くらい間があいてしまいましたが、その間のことをずらーっと書きつつ、リリースしたゲームとかを紹介していきたいと思います。

寛容な人たちに支えられアプリ内課金の記事を連載できた!

あれから5ヶ月以上、何もこちらには投稿していませんでしたが、実は裏ではがんばってブログ以上の文章を書かせていただいていました。

いますぐ始めるアプリ内課金 カテゴリーの記事一覧 - itemstore BLOG

ペンネーム(SakuraCrowd)も出してるし、ポートフォリオとして使っても良いよということでしたので、少し感想というか報告をさせてください。

前述のとおり、ペンネームを公開させてもらいうれしかったのですが、その反面プレッシャーがあったり、他にもしんどいこともありました。
だけど、クライアントの方や itemstore のサポートチームの方、家族のサポートのおかげでなんとか連載を達成できました。

記事の内容としては、サンプルのゲームアプリ(ブロック崩し)をつくり、itemstore のアプリ内課金を導入し、課金の動作確認を行うまでの工程を、ブログとQiitaとgithubを連動して紹介しています。

初心者や課金の実装に苦手意識を持っている方たちが、課金アプリが簡単に作れると思っていただけると幸いです。

もし良かったら、読んでみてください。

あと、課金のないブロック崩しは android アプリとして公開されているので、もしよかったら、遊んでみてください。

ブロック崩し(教材) - Google Play のアプリ




2Dアクション、「ドラゴン遺跡のディガー」リリース

あと、今年2月に行われた Unity1週間ゲームジャム(テーマ:当てる) では「ドラゴン遺跡のディガー」という2Dアクションをリリースしました。
これは、はじめて unity1week の1週間をフル活用した作品になります。
というのも、今までは、作りたいゲームのイメージが固まるまで3~4日かかることもあり、実装は2~3日ということがほとんどでした。

それが、今回は、テーマ発表日のうちに作りたいものが明確になり、実装にとりかかることができました。
思い浮かんだジャンルが、自分の好きな2D探索アクションだったから仕様を決めやすかったのかもしれません。

結局、最初に思い浮かんだ10分の1程度のものしか実装はできませんでしたが、それでも、こんなところを楽しんで欲しいという部分はひととおり公開できたと思っています。

そこらへんの葛藤なども含め、Unity1weekに参加してみた体験レポートを書かせていただきましたので、よろしければご覧ください。

【自作ゲーム】Unity 1週間ゲームジャムに参加しました! - itemstore BLOG

手書きの未実装のステージの図案とか、妥協した点などを、 unity1weekの素晴らしさや感想と共に書かせていただいています。

ゲームは unityroom 様のほうでウェブブラウザからプレイできます。
ドラゴン遺跡のディガー~Digger in Dragon Ruins~ | 無料ゲーム投稿サイト unityroom


Unity(ProBuilder)製、3Dアクション「とりでの中のp.b.j.a.m」リリース


そして、前述の記事の連載が無事おわり、なんか抜け殻状態になっていたころに、 ProBuilderゲームジャム(#pbjam)というイベントがあることを知り、5月6日から ProBuilder をインポートして勉強しながら、丸4日をかけてつくったのが「とりでの中のp.b.j.a.m」です。


前回の「ドラゴン遺跡のディガー」では、ぎりぎりでジャンプしない限りゴールまでたどりつけない部分がありましたが、そこであきらめて楽しく終われないこともあることがわかりました。
その反省を活かし、今回は難しいコースと、簡単(だけど時間がかかる)コースを用意して、なるべく多くの人に、クリアして達成感を感じてもらえるように作りました。

2Dのゲームを作ることが多い筆者にとっては、例えば、カメラとプレイアブルキャラとの間で壁が邪魔をして画面に壁しか映らなかったり、 マップエディットも2次元ではなく3次元ならではの難しさがありました。

3Dというと Blender で過去数回挫折を繰り返しているのですが、今回のゲームジャムの条件にもなっている ProBuilder は、直感的でこだわりすぎなければ、3Dの地形やちょっとした建物が簡単に作れました。
簡単とはいっても、2日間は3Dモデリングに費やしたのですが、4日間で3Dアクションゲームができたのは自信になったと同時に、 ProBuilder すげーと思います。

昨年に作った「DangerousSpaceTransporter~危険な宇宙の運び屋」も3Dの作品で、苦労したことは苦労したんですが、今回のような建物の 3D モデリングなどはなく、宇宙空間にフリーのアセットの小惑星の障害物置いていくことでマップを作っていたので、今回のほうより高度なことをやった気分になっています。

あと、3Dなので、プレイヤーの向きを意識してフィールドを作りました。

このゲームはフィールドの p, b, j, a, m の文字をとると、扉が開いたりして次に進むことができるシステムです。

例えば p という文字に触れると、砦の扉が開くアニメーションがあるのですが、pをとった瞬間はだいたいその扉のほうを見ていて欲しいと開発してたら思うでしょう。
実際、 p に触れて目の前の扉がすーっとあいていく部分は、自分でテストプレイしながら、これは良い演出!と勝手に盛り上がっています。

b をとると目の前に階段が現れるのも、そちらの向きを向いた状態で b をとりやすいマップにしました。
できたら、階段はもっと上から下に垂れ下がってくるとかやってみたかったんですが、今回は不慣れな3Dだし、あんまり細部にこだわると間に合わないと思っていたので、非表示から表示に切り替えるだけにしました。

他にも j をとった瞬間にエレベータが作動して、そのままエレベータにのれる感じのタイミング、あれははっきりいって偶然なのですが、配置うめー!と勝手に盛り上がっています。

a はなんか、まぁ、あれですね。天空への階段をふさいでいる柵がすーっと上にあがるんですけど、カメラアクションとかつけないと気づかれないプレイヤーさんも多いかなと思う地味演出になってしまいました。

m の文字をとるとゴール(というか全部そろう)なんですが、あそこはあせると落ちます。そんな意地悪なつくりではないんですが、あせって一回作者は落ちました。
もうちょっと、ゴールのあとはカメラワークで砦をうつしたり、したかったんですが、そういうのはまた今度の課題にしようと思います。

そんなこんなで、妥協もしつつ、こだわるところは少しこだわりつつ、3Dアクションがうまい人にはより高度なプレイ、苦手な人でも地道にやればクリアできることを意識したフィールドを作りました。

あと、ボールのジャンプ力とか、移動のブレーキの係り具合などは、プログラムのほうで、自分でもよくわからない感じのロジックで、少し調整しています。

今回のゲーム制作を通じて、3Dをもう一回勉強してみようかな、3Dゲームも意外と面白いなと思うようになりました。

そんな手作り感満載の3Dフィールドをかけぬける「とりでの中のp.b.j.a.m」も unityroom様のほうでプレイできます。よろしければやってみてください。

とりでの中のp.b.j.a.m | 無料ゲーム投稿サイト unityroom




ちょっとしたスクリプトの公開

pbjam に向けて作っていたときに、カメラとプレイアブルキャラクターの間の壁が邪魔で表示がうまくできないと話したのですが、そのときに作ったスクリプトを Qiita と github で公開しました。
ライセンスは NYSL なのでご自由にお使いください。

カメラと対象の間に入った遮蔽物を一時的に Renderer.enabled = false で描画させなくするだけのスクリプトです。

3D初心者なので、見当違いかもしれませんが、ちゃんと動作したし、1つのファイルでアップしやすかったので公開してみました。
もしよかったら使ってみてください。

Unity でカメラと被写体の間の遮蔽物を非表示にするスクリプトを作ってみた - Qiita
github の gist

おわりに

ここ数年、30作品近くミニゲームを公開してきて、毎回毎回世の中にはすごい人や作品がたくさん存在することを改めて知り、これからどうしようかなという、途方にくれた感じもあります。

リリース直後はなぜか死ぬほど落ち込むことも多いのに、なぜかまた作りたくなります。下手の横好きかもしれませんが、それが活力になっていると感じます。

今も、まだゲーム制作のアイデアが浮かんできたり、ゲームを作りたいという気持ちはあります。

反面、このままではどうにもならないなというあせりもあります。

ゲーム制作をしつつ、他のフィールドにも機会があればチャレンジしていって、それでも結局どこにもたどり着けなかったら、そこでゲームオーバーになるのかなという感じで、びくびくしつつ開き直り、元気のあるときは挑戦していこうと思っています。

ひさびさのブログでいつもより長く、そして、変なテンションで書いてしまいました。
読んでくださってありがとうございます。

次のunity1weekもできたら参加したいと思っています。
そのときに、ブログを書くかはわかりませんが、もしよかったら読んでやってください。

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 様には貴重な作成の機会と公開の場を与えていただき感謝致します。