GoToSeven Blog

インディーゲーム制作集団 GoToSeven の情報や報告などを発信します!

インディーゲーム制作集団 GoToSeven のブログ

Unity1週間ゲームジャムの開発話 技術編

f:id:GoToSeven:20170601234818p:plain

自己紹介

GoToSeven、代表兼プログラム担当の26℃です。

f:id:GoToSeven:20170602012445p:plain←こんなアイコンで活動してますが特に変態ではありません !

今回作ったTheDango!について技術的な話を中心に書いていきます。

TheDango! | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

  ダンゴムシ

Unity 1週間ゲームジャムのお題が転がるということで思いついたのがハリネズミです。

TVでハリネズミの特集(ヒゲじいがでるやつ)を視聴した直後だったもので…

しかしハリネズミではパンチが足りないと考え、丸まる別の生き物ダンゴムシを作ることにしました。

そしてVeLTiNA氏に相談もなく作り出したのがこれです、

パンチがある=キモイ という考えなので脚のアニメを無駄にリアルにしてます。

 

ご覧の通り脚が丸いコライダーWheelJoint2Dとなっています、このコライダーを使うことで段差などがあっても乗り越えることが容易になりました。

ダンゴムシの上にダンゴムシが這い上る、壁に登るなどの行動もWheelJoint2Dで再現できます。

タイヤが地面に接触しているときに重力を切りダンゴムシの腹の向きのベクトルにAddForceを使い引き寄せています、引き寄せることでタイヤが地形に密着し動くことが可能となりました。

f:id:GoToSeven:20170602021612p:plain

交尾してるダンゴムシをタッチして邪魔する陰湿な遊びも考えたのですがおぶさったまま動くのはちょっと面倒なので止めました。

f:id:GoToSeven:20170602114436j:plain愛を育むダンゴムシの図(偶然)

 

WheelJoint2Dなのですが、設定が難しいですねタイヤのmassの値をちょっと変えるだけで挙動が変わります。

さらにこのダンゴムシにはバグがあります…

ダンゴムシには5つのアニメパターンがあり

アニメでタイヤを非表示、位置調整などしていたのですが

裏返りじたばたするアニメのタイヤのPositionのアニメキーを削除または値を変えると

f:id:GoToSeven:20170602103727p:plain

走っている挙動が不安定になり、空中に回転しながら舞い上がる謎のバグが発生するんです…なんで?

f:id:GoToSeven:20170602103524g:plain

裏返りじたばたするアニメは再生されてもないのに、こう影響するのはスクリプトのせいかなぁ。

アプリ版でもだそうと考えているのでその時までには解決しときたいです。

 

ダンゴムシのAIについても少し触れておきます。

ダンゴムシは正面にひたすら歩くだけです、放っておけば壁や天井も這って行きます。

脚となるタイヤが地形に触れていないと判断すると、重力を戻し落下させています。 

地形と速度の影響で体が裏返ってしまうとジタバタアニメになり体をくねらせもとに戻ります、そのとき進行方向が逆になります。

体のコライダーに強い衝撃を感じたらすぐに丸まります、体に地形が触れていないのに丸まるときがあるのですがそれはバグです(虫だけにゆるして)

  ステージコース

最初はBoxCollider2Dを利用してコースを作ったのですがコースを作るたびBoxのオブジェクトが増え編集しずらく、BoxとBoxの境目ができて見栄えが悪いという理由からEdgeCollider2Dをつかうことにしました。

EdgeCollider2Dは編集が簡単でオブジェクトを増やす必要がなくコースを作るのに最適です。

EdgeCollider2Dは自前で表示させる必要があるので頂点データをそのままLineRendererに利用しステージの線を表示しています。

  UI

ボタン・秒速・時間の表示位置の設定でCanvasを利用しました。

RenderModeでScreenSpace-cameraにするとカメラがダンゴムシを追って動いても

UIのボタンや文字は常にカメラに収まります。

これまでカメラが動くゲームをunityで作ったことがないのでこれがはじめての試みでした。f:id:GoToSeven:20170602025309j:plain

  ランキング

ゲームを白熱させる要素としてランキングは大事な要素となると思います。

今回のゲームジャムのために主催者であるnaichi氏が公開されたサンプルを組み込みました。

blog.naichilab.com

サンプルをそのまま利用しようと考えたのですがゲームデザインにこだわるVeLTiNA氏に押し負けちょっとだけデザインを変更することに。

サンプルをみるとここでもCanvasが使われておりたいへん勉強になりました。

ランキングを実装した結果ですが、狙い通り熾烈なTOP争いが繰り広げられています。

見所

ゲーム要素としてタイムアタックモードを導入しましたが、タイトル画面が一番の見所なんですよ。

ダンゴムシボタンを押すとダンゴムシが落ちてきてじっくり鑑賞できちゃいます。

制作者のロゴを絡ませるのがGoToSeven製の流儀なので上から落ちてくるんですが、まぁぶっちゃけるとダンゴムシ鑑賞の邪魔かなぁとおもったり…

 

動画だと100匹落ちてきてますが、WebGL版はメモリの負担を考えダンゴムシ20匹ぐらいしか表示できないようになってます。

たくさん落としても面白いですが、3匹ぐらいを眺めるのが丁度いいかと思います。

最後に

ゲームジャム面白かったです、参加者のゲームも刺激になるものが多々ありました。

多すぎてまだやってないのも沢山…

また次のお題がでたら参加してみたいですね、3Dゲームとか興味あるんですが1週間じゃさすがに無理かな。

前もって勉強しておきたいですがその暇がいまのところないですね、とうぶん2Dゲームつくっていきます。

いち推しゲーム

Coin GoIN | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

コインの入る穴の当たり判定でかくしてるんだろ?と思ったら判定が予想以上にちいさくて難しくムキになってクリアできるまでやってしまった…

リレーショナーしげる | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

こういうノリのゲームすき。

SynCube | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

2つの箱を操るゲーム、よくできてる。

転がる偉大な英国面 | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

ひたすら逃げるだけなのにこんなに面白くなるんですね。

ピン男 | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

難易度高すぎて未クリアですが、逃げ惑うピンがとても面白い。

石を転がして戦うやつ | ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

一番はまったゲーム(弱いキャラをムキになってレベル上げした)

ゲームバランスをよくしたら俺が幸せになれた。

 

Unity1週間ゲームジャムの開発話

f:id:GoToSeven:20170601234818p:plain

 

急遽ブログを開設したのは、『Unity1週間ゲームジャム』の開発話を書き、後でUnityroomのないちさんに取り上げて貰う為、わざわざ筆をとったわけである。

自己紹介

昨年秋から「世界に向けたインディーゲームを開発するんだ」とプログラマーの26℃氏(私は26℃たんと呼んでいるのだが)と組んで立ち上げたインディーゲーム制作集団「 GoToSeven (ゴー・トゥ・セブン)」のディレクター・グラフィックなどを担当している私ことVeLTiNAです。

f:id:GoToSeven:20170601115642p:plain←私はこんなアイコン使ってます

 

 Unityをまともに使いだした2017年4月

そもそもの参加のキッカケはUnityに環境移行するまでに遡ります。

 

私と26℃氏は、簡易プログラム言語『HotSoupProcessor(通称HSP)』の常連ユーザーであり、我々が合作したゲームはHSPコンテスト2011で総合最優秀賞GBJAM#5では世界総合ランク2位、その他多数の栄誉を頂いております。

HSPプログラムコンテスト2011 入賞作品詳細

Yokoi-san Warp by VeLTiNA

 

私VeLTiNA個人では現在HSPで製作中の「WishDragon+(ウィッシュドラゴンプラス(仮))」を翻訳し、インディーゲームとしてSteamに出す予定です。

wishdragonplus - 岡山Unity勉強会

 

そんなわけで、我々は長年に渡りHSPを使っており、色々作り慣れているので制作上何も困らないのですが・・・

 

HSPは、WindowsOS以外のプラットフォームに出せないので、お陰様で色んな方面からオファーが来ても何も対応できない・・・。

 

これではイカン!と、プログラマーの26℃氏と共に今年4月からUnityを勉強し始めました!

ちなみに私は岡山Unity勉強会の実行メンバーですが、謙遜ではなく本当に超初心者なので恥ずかしながら一緒に勉強を始めました。

members - 岡山Unity勉強会

 

本当に時期が良かった

そんな時、私のTwitter上に『Unity1週間ゲームジャム』のツイートが流れてきたのである。

自称ゲームジャマ―の私は、これは「良い機会」とプログラマー26℃氏を誘い、参加しました

 

f:id:GoToSeven:20170601115938p:plain

大分端折るが完成したのが「The Bound Sisters」である。

TheBoundSisters | ゲーム投稿サイト unityroom

 

そして、第2回にも参加

それから1ヶ月後、BitSummitが終わった翌日からスタートした第2回の1週間ゲームジャム。

テーマは「転がる」という事で、プログラマーの26℃氏が作ったプロトタイプがコチラ

ただ、この時点では「ダンゴムシ観賞」という目的らしく、全然ゲームでは無かった。

 

私の案では、ないちさんが公開してくれるであろう「ランキング」(現在公開済)を組み込んだレースゲームを考えていたのですが、Unityの中の人さんがリツイートした事もあり、1週間ゲームジャム参加者内外で反応があるならダンゴムシで行くか・・・と心を決めました。

 

 

ゲーム内容は、「ダンゴムシ観賞」を外したくないという26℃氏の意向も汲み、観賞を楽しむタイトルシーンと、ダンゴムシでレースするメインゲームに分けました。

 

完成しためっちゃ気持ち悪いタイトル

観賞パート タイトルシーンにある「ダンゴムシのボタン」は私のアイディアで、本当にダンゴムシを観賞するだけのタイトルシーンだと、シュールな1コマにしか映らないので、プレイヤーの心をまず掴むアクションが必要だなと。

スタッフロールも兼ねて私と26℃氏のアイコンを登場させ、更にダンゴムシが無限に出てこないよう演出として「ダンゴムシのボタン」が壊れて落ちるという小ネタも入れています。

f:id:GoToSeven:20170601232314p:plain

↑タイトルシーンでダンゴムシが壁を登る事も解る

ダンゴムシのゲームデザイン

肝心のメインゲーム部分ですが、ダンゴムシが不安定な体勢になると自動で丸まってしまうのは仕様・・・に見えて、実は意図しない部分もある産物です。

この意図しない部分を修正したバージョンもあるのですが、ダンゴムシが思ったように動かない「歯がゆさ」がなくなり、ゲームとして非常につまらなくなってしまったため戻しました

 

上記の意図せず丸まる仕様ですが、どんな状況で丸まりやすいかと言いますと「速度」に大きく関係しています。

このゲームは一見ただの2Dですが、段差はレースゲームのカーブのような物で、直線ではスピードを上げ、段差近くなるとスピードを下げ、ハプニングがないようダンゴムシを安定させ、坂道では丸まって超加速・・・ッ!!

そんな感じで、コースに合わせたシビアな判断と操作が要求される・・・そんなプレイになるようコースをデザインしました。

f:id:GoToSeven:20170601233318p:plain

↑初公開!これがコースの全容だ!

 

序盤に小さい山を配置、緩やかな下り坂や穴がある。中盤からは垂直に近い壁を登り、そこから一気に走り抜ける急な下り坂があり、その先にゴール

序盤は小さいミスでも取り返しが効くように設計されていますが、中盤以降は速度や丸まるタイミングのズレがタイムに反映されるように設計。

 

またテーマの「転がる」本作の重要ポイントにしたいと思っていたので、コースの最後は転がってからの大ジャンプがタイムを縮めるカギとなっています。

f:id:GoToSeven:20170601233946p:plain

↑最後の坂で大ジャンプが決まると最高に気持ちいい!

 

お陰様で皆さまから沢山のご支持頂いているようで、今でも最速タイムが更新されているようです。

f:id:GoToSeven:20170601230820p:plain

 

完成したゲームはコレ!

f:id:GoToSeven:20170601234818p:plain

TheDango! | ゲーム投稿サイト unityroom

 

今見たらおススメゲームにもなっていました!

みんな、ありがとナス!

f:id:GoToSeven:20170601234748p:plain

 

ゲームジャムを終えて

ゲームジャムの良い所新しい技術や環境を試すのにうってつけな所です!

今回はランキングも取り入れたし、エッジコライダーも使ってみました!

2回目を経て確実に我々はレベルアップしているのを感じています・・・フォロワーも増えてますし。

今後も定期的でなくても参加していきたいと思います!

 

実は・・・

第1回からお試しで Unity Collaborate を使って開発していましたが、気に入って今現在も使っています

Gitよりお手軽で使いやすく、プロジェクトのバージョン管理も出来る。しかも無料!

最高だ!皆も使おうぜ!!

 

と言うのも、私と26℃氏は一緒に開発してた2010年から数えて7年の付き合いですが・・・

 

実は一度も会った事がなく、全てのやり取りをIRC(インターネット・リレー・チャット)を使いネット上だけで開発してきたので、ファイルのやり取りもIRC、メッセージのやり取りもIRC、片方がインしていなければそれも出来ない!という開発環境を昨年まで行っていました

 

最近になって、やっとChatworkとTrelloを使うようになりましたが、リアルタイムのやり取りはIRCのままです

それでもUnity Collaborateのお陰で以前より大分マシになりました。

 

ありがとう!Unity!

 

最後に

本作を評価して頂いた皆様、遊んでくれた全てのプレイヤー様、主催のないち様、Unity関係者様、本当にありがとうございました!

 

技術的な話は、26℃氏に丸投げします。

後日、更新があるかもしれません。

 

\それでは!また!/
  f:id:GoToSeven:20170601115642p:plain

f:id:GoToSeven:20170601104941p:plain

インディーゲーム制作集団 GoToSeven

VeLTiNA (@veltina_soft)