原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【雑記】Unity1weekを振り返る

f:id:Karvan:20210309215654p:plain

映画

会社の同僚が急遽有給休暇を取ったので何事かと思ったら、「シン・エヴァンゲリオンを観る為」だと知ってビックリした皆さんこんにちは。私も今回の映画でスッキリ終わってくれるなら観に行くつもりですが、どうなんでしょう?また全員が拍手して終わる、とかないよな。

 

Unity1Week

いつの間にか評価期間が二週間となったので未だに終わってはいないのですが、開発者の視点からすると作品の投稿を終えてアップデートする予定もないので最早終了した気分です。

unityroom.com

この手のイベントは主に開発者同士が批評しあうので、どうしても褒め合いの様相を呈するのですが、今回私の作品に寄せられたコメントを拝見すると、(私からすると)それ以上に最大級の褒め言葉がズラズラと並んでいるので、有難いと言うより逆に怖いです、どうしよう。いえ、ありがとうございます。

下のリンクから遊べるので未だプレイしていない方は是非遊んでください。簡単なパズルゲームです。

unityroom.com

 

振り返る

今回の作品で登場するパズルは単純なアイデアから生まれたのですが、なぜか前述のように沢山の方が「凄い、凄い」と褒めてくるので、ここでその技術な解説(ネタ晴らし)をすると「なぁんだ・・・」とか思われそう、よってネタ晴らしは評価期間が終わった次の更新で行う事にしました。今回は開発期間の振り返りです。

 

■0日目(~2/21)

直前に線を描画するアセットLinefyを購入していた為、それを生かしたゲームをアレコレと構想する。

f:id:Karvan:20210216203026g:plain

元々unity1weekに投稿する作品はお題から作品を構想するのではなく、作りたいと思ったゲームをお題に合わせる形で作っていくので、お題の発表前に上の動画のようにLinefyで描かれたグリッド上をオブジェクトが移動するゲームを構想する。

グリッドの交点で方向を変更しながら障害物やら敵やらを避ける、グリッドの交点がBGMのリズムに合わせて流れてくるようにするとリズムゲーっぽくて面白そう、とかそんなことを考える。

 

■1日目(2/22)

お題が発表され今回は「回」になったことを知る。

「回」だから何かしら回っていれば良いんでしょう、と開き直って自機が自転しながらグリッド上を動くゲームを作りだす・・・

 

が、

 

どうやってもGROOVE COASTERの劣化版にしかならない事に気づく、グリッドの交点がリズムに乗って流れてくるとかそのまんまじゃないか。

というわけで練り直し。とはいっても時間はないので、作成中の脱出ゲームの方で使おうと思っていたパズルのネタを引っ張り出して実装してみる。

 

そしてこれが案外うまくいった

f:id:Karvan:20210223201010g:plain
 

 

■2日目(2/23)

思っていた通りにパズルは作れそうだが、普通のパズルゲームみたいにステージ制にするのは辞めようと誓う。

なぜならステージ制にするとある程度数を作らないといけないし、ステージ選択のUIも用意する必要があるし、同じ事の繰り返しでユーザも途中で飽きるだろうし、何よりもう一度書くけど数を作らないといけない=面倒くさい。

なので美術館の絵画のようにパズルが並んでいて、それをLinefyで描かれた線で繋ぎ、その線に沿ってプレイヤーが進んでいく、という形を思いつく。我ながら天才。これならそこそこの数で済むし。

というわけでこの日はオープニングのイベント部分を作って満足して終了

f:id:Karvan:20210223200754g:plain

 

■3~5日目(2/24~2/26)

パズル制作に没頭する、とは言え平日なので一日にパズル一つしか作れない。各パズルのロジックは共通だけどカメラ位置とかオブジェクトの配置等の微調整に結構時間が取られる。でもまぁ、パズルを作ってしまえば後は線で結ぶだけだしぃと、この時までは開発期間内(2/22~2/28)に開発が終わると踏んで気楽だった。

 

■6日目(2/27)

土曜日なのに会議をするという自社からの嫌がらせを受ける。会議とはいっても9割は暇だったので合間に今回の作品についてアレコレ考えていると、悪魔的なささやきが脳裏をよぎる。

 

パズル毎に場面(シーン)が展開するようにしよう。

 

それまでは広い空間に並んでいるだけだったパズルを、パズル毎に海だったり平原だったりの場所に配して、パズルを解く毎に場面が展開するようにしたら面白いんじゃないか、そんな考えが頭をよぎり、会議そっちのけで構想を巡らす。当然期間内に開発が終わらないことになるけど。

 

■7日目(2/28)

公式では開発期間最終日。

当然間に合うわけはなくパズルを配置する舞台づくりとその間を移動するロジックづくりに精を出す。バグ多発、一つ解消したら次のバグが生まれてくるとか嫌になる。

■8~10日目(3/1~3/3)

平日なので殆ど時間がとれないが何とか一通りパズルの間を移動できるようになる。

大変だったのは後半の方のテストをしようと思っても、ゲームを一から進めないといけないので目的の場所に辿り着くまで時間が掛かる事、オープニングのパズルとか何回やっただろうか。

10日目(3/3)の夜にエンディングまで完成するもWEBGLのビルドが全然終わらず投稿は翌日に持ち越しとなる。

 

■11日目(3/4)

会社から帰宅して速攻unityroomに投稿する。ありがとうございました。

 

まとめ

振り返ると開発途中で思いついた色々なアイデアが運よく融合できて良かったなぁ、という事と、相変わらず期間内に開発が終わらない、という反省点が残ります。

特に開発途中でアレコレ思いついて当初の構想と異なる作品ができるのはいつもの事なんですが、それが今回は(コメント欄等を拝見すると)良い方向に転がったのではないでしょうか。

未だ評価期間は終わっておらず最終的な評価は分かりませんが、これがラッキーパンチにならないよう、今後も精進していきたいと思います。

 

【雑記】終わりそうで終わらない一週間

助成制度

日本ゲーム文化振興財団に助成制度がある事を知り、さっそく応募要件を調べたら当の昔に助成の対象外だったことを知ってショックを受けた皆さんこんにちは。年齢差別良くない。

 

Unity1Week

前回の記事でも触れましたがunityroomというサイトでunity1weekというイベントが開催されています。

unityroom.com

今回は前回の開催から期間が短く、また何かしらのイベントと連動しているわけでもないので参加者は少ないのかな、と思っていたのですが意に反して前回と同じぐらいの作品数が投稿されているようです。

 

イベントのスケジュールして現在(3/2)は開発期間が終わり評価期間のようですが、私はいつもの通り開発期間継続中なので、unityのSceneビューと睨めっこしならがら片手間にこの記事を書いている状況です。ビルドも出来ていません、どうしよう。

f:id:Karvan:20210302234500p:plain

こんな気分

 

本来なら今回の作品で用いた手法についてアレコレと解説した記事を書く予定だったのですが、なんせバグを一つ潰したと思ったら別のバグが発覚して、それを直した影響で一部が作り直しになったりと、例の金融系システムも真っ青な魑魅魍魎っぷりなので・・・いや、これはみ〇ほの方が酷いか、そんな感じなのですが、取りあえずは完成したい。

 

f:id:Karvan:20210302234527g:plain

頑張ります。

【雑記】unity1weekの進捗報告

三寒四温

正に早春といった季節で毎日の気温の寒暖差に戸惑うより先に、unity1weekの開催ペースに戸惑いを隠せない皆さんこんにちは。

今回も私は参加予定ですが、きっといつものようにドット絵ガチ勢がランキング上位を占めると思うので、評価は気にせず完成することを目標にしたいと思います。まぁ、ランキング云々言う前に閲覧数が全く伸びないのを何とかしないといけないのですが。

 

今回のお題

今回は『回』がお題です。Twitter等を拝見するとお題の意味から連想して色々なゲームを発案されているようですが、私の場合はお題からゲーム案を練るのでなく、その時に作りたいゲームをお題に合わせて試行版として作っているので、今回も前々から構想していたゲーム案をお題に沿うように修正しながら作っています。

 

今回はこんなパズルゲーム

f:id:Karvan:20210223201010g:plain

パズルの形をお題の文字の形に合わせています。

 

現在の進捗

上の動画はお試しとして作ったものなので、実際の作品としては手を付けたばかりです。今日現在(2/23)ではオープニングの場面がやっとできたところ。

 

f:id:Karvan:20210223200754g:plain

 

これだけでも丸々一日掛かりました。明日からは平日なので果たして期限内にできるかどうか・・・(毎度言っている気もするけど、きっと気のせい)

 

 

 

【Unity】アセット紹介:高速描画アセットLinefyを使って線を引く

バレンタイン中止

今年も自主的にバレンタインが中止だった皆さんこんにちは。近頃では男性の言動で女性が不快に思う事はモラルの問題でなく人権問題として取り上げられるので女性に経済的な負担を強いるバレンタインなんて当然中止です。そのうち満員電車で女性に席を譲らないと差別主義者で糾弾される社会になると思います。怖い、怖い。

 

ゲームクリエータズラボ

去年末に話題となった『講談社ゲームクリエータズラボ』ですが、ついに第一期のメンバーが決定したようです。

daysneo.com

私は残念ながら一次選考で落ちてしまったのですが、こうしたインディゲーム開発者に対する支援企画が立ち上がる事は良い傾向だと思います。

どうやら二期メンバーを今年の秋ごろに募集するらしいのでそれまでに叡智を蓄えておきたいと思います。

 

一線を引く

Twitterで「~に抗議します」「~を求めます」系のハッシュタグをつけて投稿する人には一線を引くために距離を開けますが、Unityでゲーム画面上に一線を引くためにはLineRendererを主に使用します。

私も以前このブログでLineRendererを使った線描画についての記事を書いています。

www.karvan1230.com

まぁ単純に線を描画するなら上の記事でも書いたようにLineRendererで事足りるのですが、完全に個別の線を複数個描画したい場合はLineRendererを持つゲームオブジェクトを描画したい線の数だけ用意する必要があったり、線にTextureを適用したり色をつけたりする場合は個別にMaterialを用意する必要があったりと、使う場面によっては面倒くさい事があります。

なので最近、使い勝手の良さそうな描画系のアセットを購入しました。

上のリンクの概要欄に記載があるようにGPUを使用してLine等の描画を行うらしく

  • 割り当てがゼロの高速動的描画
  • CPU使用率がゼロの最速の静的描画
  • モバイル、WebGLを含むクロスプラットフォームに対応、レンダリングパイプラインに依存しない

等々が主な機能として書かれています。

 

使ってみよう

Linefyで線を描画する場合はLineRendererと異なり、線ごとにゲームオブジェクトを用意する必要はありません

スクリプト内でLinesクラスを生成し、描画する各線(Lineクラス)に始点、終点等の必要な情報を設定した後に、Drawメソッドをコールするだけです。

ただし、DrawメソッドはUpdate、FixedUpdate等で毎フレームコールする必要があります

f:id:Karvan:20210216202601p:plain

上のソースを実行すると

f:id:Karvan:20210216202621p:plain

こんな感じに線が引けます。

各線(Lineクラス)には始点、終点の色や幅を設定することができ、Textureも適用することもできます。(Materialは必要なし)

 

f:id:Karvan:20210216202700p:plain

始点と終点で色や幅を変えた例

 

f:id:Karvan:20210216202717p:plain

Textureを適用した例

 

多角形の線を描画する場合はPolylinesを使用します。多角形を構成する頂点の数と頂点の位置を指定するのはLineRendererと同じです。

f:id:Karvan:20210216202802p:plain

上のソースを実行した結果

f:id:Karvan:20210216202830p:plain

こんな感じ、polylineのisClosedプロパティをtrueに設定すると上のように閉じた図形となります。ここら辺はLineRendererと同じですね。

Polylinesも同様にDrawメソッドを毎フレームコールする必要があります。ちょっと面倒くさいなぁ、と思うかもしれませんが、考えようによってはリアルタイムに線の形状を変えられるという事なので、例えば下のようにオブジェクトの動きを追ってリアルタイムに線を描画する事も簡単にできます。

f:id:Karvan:20210216203026g:plain

 

他にもパラメータを変えて多角形を随時更新するとか、

f:id:Karvan:20210216203127g:plain

 

もうちょっと凝った使い方が知りたい場合は、サンプルシーンとしてグラフの描画やボールの軌跡描画を実装した使用例が内包されているので参考になると思います。

f:id:Karvan:20210216203243g:plain

 

f:id:Karvan:20210216203407g:plain

 

その他の機能

Linefyでは線描画以外にもSpriteをDotsとして扱うことが出来たり

f:id:Karvan:20210216203648g:plain

 

ポリゴンメッシュ(Polygonal Meshes)を生成することが出来ます。

f:id:Karvan:20210216203742g:plain

 

何かと有用っぽいので今度のunity1weekで使ってみようと構想中。。。せっかく買ったし。

【雑記】窓シェーダーは良いぞ

f:id:Karvan:20210209212259p:plain

 

猫の関節

unityのアセットストアから可愛い猫のモデルを購入したので

f:id:Karvan:20210209212350g:plain

VeryAnimationで座った状態のアニメーションを作ろうしたら見事に土日が潰れた皆さんこんにちは。

だって、座った状態の猫の関節がどうなってるとか知らんし、写真を見ても毛に埋もれて分からんし、危うく正座した猫を作るところでした。

 

f:id:Karvan:20210209212514g:plain

しっぽのアニメーションがぎこちないですが、これが限界です。後ろ足の方も少し違和感がありますが、これで勘弁してください

 

窓シェーダー

限られた範囲内でしかオブジェクトを描画しないシェーダーはこれまでも何度か利用させてもらっています。

 

styly.cc

上のリンクで公開しているシェーダーの利点としてはマスクするオブジェクトと窓となるオブジェクトの対が複数個定義できることで、たとえばAというオブジェクトはaという窓を覗かないと表示できない、Bというオブジェクトはbという窓を覗かないと表示できない、という処理が簡単に実現できます。

つまり、これを利用することで「複数の窓を覗いた時、それぞれ見えるものが異なる」というギミックを作成することができます。

 

下の動画だとボックス型の各面にそれぞれ別のマスク値を設定しており、各面から見えるオブジェクトが異なっています。

f:id:Karvan:20210209212740g:plain

 

デメリットとしてはマスクするオブジェクトには必ずこのシェーダを適用しなければならない(他のシェーダと併用できない)という点にありますが、これはもう割り切るしかありません。

 

使用例

現在、製作中のゲームではパスコードのヒントを示すギミックとして使用しています。

f:id:Karvan:20210209213031g:plain

他にもいろいろな場面で使えそうです。ホラー的な演出にも合うかも

 

【雑記】脱出ゲーム進捗報告

読み方

みんな大好き"DOTween"の読み方が『ドゥ・トゥイーン 』じゃなくて『ドットゥイーン 』だと知ってショックを受けている皆さんこんにちは。いや、私はこれからもドゥ・トゥイーンと呼ぶけども。

 

前々回の記事で青木とと氏の演出処理についてアレコレ私見で書いたら、まさかのご本人にレスを頂いてビックリするやら恐縮するやらで、申し訳ない気持ちにでいっぱいになりました。人の創作物について許可を取らずに詮索する(記事にする)のはご法度ですね、反省します。

 

新ステージ

さて、去年から引き続き製作中の3D脱出ゲームですが、これまで館の中から脱出するゲームと言いながら殆ど廊下が舞台となるステージばかりだったのですが、ここに来てようやく部屋らしい部屋が出来上がりました。

 

ドン!

f:id:Karvan:20210202202024p:plain

 

きっとこれを見た方は『ありがちでシンプルな部屋だなぁ』とか思われるでしょう。しかしこれでも作成するのに2~3週間かかりました。

 まず、部屋の中に何を配置するかで悩む。書斎をイメージしているので机と椅子を置くことは決まっているけど、それだけだとスカスカで監獄みたいになっちゃうので棚を置いたり、暖炉を置いたり、カーペットを敷いたり・・・と、部屋の空間を埋めるのに一苦労。

さらにインテリアをどうするかで悩む。リアルな自宅の部屋は壁にポスターも張ってないシンプルな部屋なのでインテリアとか全然知らない。とはいえ、棚の上に何もないのは寂しいし、壁に何もないのは殺風景、何より手抜きに見える。

 

普段、RPGやAVGをプレイしているとこういった『普通の部屋』の家具やインテリアやらに注目することなんてないのですが、作る側に周ってみると何気ない場所でも作り手の手間がかかっているんだなぁ、という事を実感します。

今回作った部屋でも奥の棚に並んだ家電製品とかキャンドルランプ等々も何を置けば良いか、デザインはどうする、か相当頭を悩ませた結果の成果物です。まぁ、プレイされる方が注目することはないと思いますが。

f:id:Karvan:20210202202210p:plain

 

新パズル

脱出ゲームなので当然ながら新しいパズルを配置しています。

今回はこの部屋に入る前に一つ

f:id:Karvan:20210202202651g:plain

 

部屋の中に一つ、作成しました。

f:id:Karvan:20210202202752g:plain

 

これで完成というわけではなくて、この部屋ではトランプがギミックとして登場しますが、現在想定しているストーリー上ではトランプは絡んでこないので、ちょっとストーリーを変更する必要があったり、また、他にもパズルを設置する予定ですが未だ手つかずだったりと、アレコレと作業が残っています。

f:id:Karvan:20210202202852g:plain

未完成のパズル

 

悩み事

講談社のゲームラボに落選した時も漏らしたのですが、テストプレイをしてれる第三者がいないことが最近の大きな悩み事です。

製作の方はもう中盤辺りに来ているのですが、テストプレイヤー(デバッガーではない)がいないので、プレイヤーがこちらの狙い通りに動いてくれるかどうか、パズルのレベルデザインが適正か(難しすぎないか)等の客観的な評価が全く見えない状態です。
他のインディゲーム開発者はどうしているのでしょうかね?どこかのサイトやSNSで募集しているのでしょうか?

 

このゲームの序盤部分をunityroomに公開していますが、ありがたい事に批判的なコメントは書き込まれていません。

ただ、こういった開発者コミュニティのコメント欄には当たり障りのない内容が書かれる事が多く、プレイ上の問題点が指摘される事はあまりないので客観的な評価は見えないままです。

Twitterで募集してみようかなぁ、応募なさそうだけど。

 

【Unity】アセット紹介:Minimalist - Lowpoly Flat/Gradient Shader

窓の外に

会社で自席から見える街頭のディスプレイ広告にラピュタの廉価版みたいなアニメ映画のCMが延々と流れていてうんざりな皆さんこんにちは。もう三週間ぐらいずっと同じCMが流れている。よっぽどお金があるんですね。

 

アバターアイコン変更

このブログを立ち上げてからずっと使用していたアバターアイコンを変更しました。イラストとか描けないので作成中のゲームのスクリーンショットを加工して仕上げました。

f:id:Karvan:20210126214806p:plain

アイコンが変わっただけなのですが、なんだか『気分一新』した心持になれますね。

 

色付けシェーダー

テクスチャを必要とせずに3Dモデルに色付けることが出来る色付けシェーダーは、私のようなBlender等を使ってオリジナルな3Dモデルを作ることができない開発者にはありがたいアセットです。

 

Unityのアセットストアにはこのようなシェーダーが数々売られていますが、つい最近、その中でも評判がよさそうな色付けシェーダーを購入しました。

assetstore.unity.com

 

使い方は他の色付けシェーダーと同様、3Dモデルの上下左右前後それぞれの面に色を付けていく形になります。

このシェーダーでは各面の方向をグローバル座標を基準とするか、ローカル座標を基準とするかでシェーダーを使い分ける必要があります

f:id:Karvan:20210126215323g:plain

Standardがグローバル座標基準、LocalSpaceがローカル座標基準です。

グローバル座標を基準とした場合、上の動画のように回転するオブジェクトに適用すると、各方向から光を当てられたような表現となりますが、ローカル座標を基準とした場合は回転しても指定された色の位置は変わりません。

 

各六面すべての面に色を指定する必要がない場合はColor Correctionオプションでオブジェクト全体に色を設定することもできます。

f:id:Karvan:20210126215717p:plain

ただこのオプションはStandardシェーダーのEmissionのように、オブジェクトがその色を発光してるような指定となるので、Custom Shadingで各面に指定された色はこのオプションで指定された色の影響を受けることになります。

f:id:Karvan:20210126215617g:plain

 

 独自のオプション

上記の内容は他の色付けシェーダーでも同様の機能かと思うのですが、このシェーダーでは以下のような表現も指定することが出来ます。

 

f:id:Karvan:20210126215835g:plain

残念ながらOutlineの指定ができませんが、ShadowやFadeについてはかなり使い勝手が良いかと思います。Shadowは色を指定できるし。

 

また、特徴的なのはAO(ambient occlusion)の指定が行えることで、3DモデルにライトマップをBakeしたテクスチャがあればそれを使ってモデルに陰影をつけることが出来ます。

f:id:Karvan:20210126215942p:plain

色付けシェーダーは基本的に各面にグラデーションを掛けて立体感をだしますが、このAOが指定できるとさらに立体的な表現をすることができます。

f:id:Karvan:20210126220006p:plain

 

ローポリ系のゲームを作る場合にはかなり有用なシェーダではないでしょうか。

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。