地獄

最近3dsmaxとUnityがメインウェポンになりました/ゲーム作ったりする人

一区切りつけたので制作を振り返る

もう前回までどういう書き方してたか忘れちゃったよ

 

前回の記事(というか初回だけど)はお読みいただけたでしょうか。

ブログって『誰の話なのか』というのが分かった方が面白いかな~と個人的に感じるところがあるので、もし同感だという方はそちらにわたしの自己紹介をご用意しております。全然読み飛ばしても問題のない内容ではあります。

⇒(ゲームを作り始めていろいろ - 地獄)

 

 

■気が付いたら2019年が終わりを迎えていた

 

 

どうも糖尿デッドエンドです。2019年は概ねゲームを制作してました。

 

いやしかし前回の記事10/04だって。三か月近くあいてるけど大丈夫?

というのも理由がありまして、制作がかなりの佳境に入り、僕自身もかなり入り込んでいたのでもう日々を過ごしている感覚がなかったんですよね。

本当は制作しながら思ったことを書くブログにしようと思ってたんですが、書く時間すらもったいなかったので今回ガッツリまとめたいと思います。

 

とりあえず結論からいうと体験版サイズのものはほぼ出来ました。

なんでしょう、簡素なダンジョン一個分くらい?

 

ここまでの時間の大半はビジュアル構築、あと仕様に見合ったモーションや基本的なプログラムの構築と、それに伴うパフォーマンスチューニングとデバッグに費やしてました。

 

要するに先に部品を仕上げていたという感じですね。部品が仕上がってきたのでこれからゲームとして組み上げていく、という感じのフェーズにいます。

 

基本的なシステムやモーションはとりあえず妥協ラインで完成し、ひとまず人がプレイできる状態にはなっています。ゲームとしての導線を確保するために仮のストーリーが入っていますが、まあこれも正史ではないですね。

まあ妥協じゃない完成なんてありえないんですけどね。

 

 

また画面公開ないんですか?とご興味を持って下さった方が居たら申し訳ないんですが、モノはあるがタイミング的に公開はまだ難しいという状態にあります。

 

多分フリーソフトになる見込みなので、PS4のコントローラーと、ゲームが遊べるスペックのpcをお持ちの方ならどなたでも遊んでいただけると思います。ほかのコントローラーにはこちら側では対応をしていないのでユーザーご自身にノンサポートで対処して頂く感じになりますね。

 

どんなに遅くても3月までには一度公開をしたいな~と思っていますので、ご興味があればよろしくお願いします。

あとは厚かましくも、ツイッターで告知した際にはRTをしていただけると助かります。

死ぬほど人脈がないので

 

 

■本題

 

で、まあ一年間色々とやってきましたが、結果から言うと中々納得感の高いものができたんじゃないかなと自分では思っています。

何をしてきたのか振り返ってみると今年一年やったことはざっくり以下の通りになります。

 

※2019/01時点での糖尿

3D経験:1体のモデルとアニメーションの制作経験はあるが実践的な知識はなし。

2D経験:イラストや落書きはそれなりにやってきた。UIとかデザイナとしての知識は皆無。

プログラム:プログラム用語が全く通じない。3Dゲームの試作経験は一応ある。(なおゴリ押し)

Unity:基本的な画面の見方と操作は一通りわかる。応用、拡張的な部分の知識はない。

 

 

1.3D関係

モデル/モデリングのワークフロー整理

モデル/トポロジーが与えるライティングへの影響理解

モデル/からのトポロジー整理の勉強

モデル/スキニングのワークフロー改善

モデル/シェーダー理解によるビジュアル調整

モデル/法線編集を使ってライティングをコントロールする

モデル/法線とシェーダーを調整してライトを受けた際のビジュアルを確保する

モデル/セルルックでリアルタイムライティングを行う

アニメーション/3Dアニメーション制作のワークフロー大幅改善

アニメーション/Unity上におけるルートモーションによるアクション制御

 

モデリング勉強初期はよくトポロジーは大事とか四角ポリゴンで作らないとダメとか聞いて、あれは結局どういうことを意味していたんだろう?と思っていたんですが、今ならある程度説明できるようにはなりました。

『よくわからんがこうやるらしい』が『こうするとこうなるからこうやったほうが良い』に変化したわけですね。おかげで手戻りが大幅に減ってかなり効率的に作業できるようになりました。

……というかモデリング勉強ってここのワークフローをいかに確立できるかに全てがかかっている気がする。

セルルックでリアルタイムライティングを行う、について結構時間を費やしたんですが、これを行うことによる大きなメリットがいくつかありました。のちほど書きます。

3Dアニメーションについてはまぁ、色々書けることはあるんですが、特筆すべきはその物量ですかね。もうすぐ作ったモーション数100くらいいくんじゃないかな。

 

 

2.2D関係

UI/レイアウト調整の勉強

UI/プライオリティのつけ方の勉強

UI/色選びの勉強

UI/視線誘導

UI/アニメーションで視線をコントロールする

 

今回は2D関係の作業というとUIくらいしか出番がなかったですね。イラスト系の能力が活きるとしたらこのあとかな……

フォントの理解は奥深すぎて片手間の勉強じゃ無理でした。

UIで色を選ぶとき色相環だけ見るんじゃなくてメインのオブジェクトから色をスポイトで持ってくるとか、ブランディングとか、明度彩度でプライオリティつけるとか……そもそもしてそんな概念知ってました?僕は知らなかった。

知人にも見て頂いてアドバイスを頂戴して整理してきた部分が多かったので、得意な方が知人にたくさんいたことが大きな助けでした。ありがとうございます。

 

■エンジン関係(Unity)

パフォーマンス/リアルタイムライティングのメリットデメリットを理解する

パフォーマンス/オクルーションカリングで余計なGPU負荷を抑える

パフォーマンス/不要なオブジェクトを動かさないためのロジック構築

C#オブジェクト指向で書く

C#/可読性という概念理解

C#/基本的な変数や関数の仕様を理解

C#/3Dアクションで破綻のないプログラムを書く

C#/ScriptabelObjectを絡めてデータベースを構築する

C#/動的なコンテンツ量を持つスクロールバーの実装

C#/『様々なデータベースを参照しなければならない動的なUI』を実装

仕様/ルートモーションを使用してキャラを動かすためのあれこれ

仕様/各種コンポーネントの挙動を理解する

仕様/外部テキストファイルを読み込みSplitで分けるなど

 

演出/プリレンダではなく、リアルタイムでカットシーンを制作し再生する

演出/簡易な会話の仕組みを作る

演出/ポストエフェクトを活用して画面の説得力を担保

 

もうunityコミュニティという大海原の端から端まで泳いだんではないかというくらい調べました。もっと高度なことをしている方や、努力している人間からすると誇張表現だろうなとは思います。

 

プログラムの観点からすると、一概に3Dのアクションゲームだから作るのが難しい、とはならないんですよね。まぁ主に角度、回転系は数学上の難易度としては相当なヤバさで、糖尿の頭では本当に理解できない領域まで入ってますが、Unityでやるなら関数を理解するだけでいいですしね。……まぁその関数を理解するだけ、っていうところが既に結構な難しさだったな、とも思うんですが……

 

ともかくそんな具合なので、問題は3Dアクションの自由度と仕様上の不都合をどの割合で天秤にかけるか、なんですよね。で、今回作れば作るほど、色んな3Dゲームに存在する『仕様上の不都合を隠すための仕様』が浮き彫りになった感じがしましたね。ジャンプした後方向を変えられないゲームとかありますけど、あれだけでかなりの情報が伺えます。多分すごい検証とか仕様変更で苦しんでるんだろうな……とおもいました。

 

僕の今回作ったゲームはそこでかなり自由度を優先したせいで不要な苦労をかなり背負った感じがします。多分、やる人がやれば未だにバグとか見つけ放題だろうなとは思うんですが、とりあえず自分で検証した限りはゲームプレイに支障がないレベルに収まっているはずです。

 

 

■番外:リアルタイムライティングの恩恵

 

まず画面がきれいになりますね。

光って美しいなぁ~と思える方にはそれだけで調整する価値があります。

僕自身キャラクターが木漏れ日を受けるというビジュアルを作れた時、それだけで大分気持ちよくなりました。

 

そしてインタラクティブなメディアという観点からいくと、ユーザーの行動を誘導しやすくなるので、嫌みのない導線づくりにかなり貢献してくれました。

光っているものを設定すればユーザーは見てくれる、という法則性は、ゲームを組み立てるうえでも役に立ちますしね。……まあ勿論なんでもかんでも光らせるわけにはいかないんですが。

 

アクションゲームとしては必然的に距離感を図りやすくなります。

光ってるものってやはり視線がいくので、明確な危険物は光らせたくなるんですよね。

となると発光体の影響を受けてプレイヤーキャラが照らされると、危険物が近いというのがすぐにわかります。

あと今回ジャンプできるゲームになっているので、足元に落ちる影が地面との距離感を明確にします。

意外とこのへんテクスチャーベースで作っているゲームは難しかったりするんですよね。

 

大体こんなもんですかね。細々とした部分は省きました。

 

ここから上記に加えて、実際にゲームとして成立させるためのあれこれの研究と構築ですね。

自分でゲームをくみ上げていくうち、

『ゲームだから楽しいのではなく、楽しいからゲームとして成立できる』

ということをようやく理解できるんだな、と思います。

 

なんでゲームにはHPが存在しているのか? なんでコンボカウントがあったりするんだろうか? その理由を知って、システムとして凄まじい量で積み重なった結果、はじめて楽しいメディアとなれる、という図式でしょうか。

 

これはもう勉強というか、総合的な知識と経験で構成されることなので理屈で語りづらいので割愛します。

というか一年間を総括するような量の知識を書ききるのが難しかったんです

 

 

 

 

■総括

 

……まあ上記細々とした部分は省く、と申し上げたんですが、自分がやるとなった時にはその細々とした部分の知識が必要で知りたい、ということになるんですよね。

大体そういう内容は記載されてなくて結局自分でなんとかするしかないということになるんですが、そして私もそれと同じことをしようとしている・・・・・・・・・・・・・・・・・・・・?

 

ともかく、一年間、時間をかけたうちの3~4割くらいそこに費やしたと思います。

例えば3Dルートモーションを適用して座標を意図した通りにするために、すごくわかりづらい場所にある3つの項目を設定しなくてはいけないというのが何の説明もなしにあったりするんですよね。リファレンス読んでこれですから。

 

とはいえ、規模次第で『検索力と、最悪の場合トライアンドエラーを繰り返して独力で解決しきる不屈の精神力』が制作には絶対的に必要なので、結局これを乗り切れるかどうかも、企画として進めていくにあたっては必要なことだったのかもしれません。

 

 

 

ともかくまあ、結構有意義な一年間を過ごしたんじゃないかと思いますね。

結構モデルの見栄えとか、モーションやアクション諸々含めて、かっこよく作れたな~と思っているので早く見て頂きたいなと思っています。

 

気になったお話とかあればコメントするなりしていただければ個別にお答えします。

 あれコメント許可してたっけ?どうだっけ……

 

とまあそんなわけで、これが年内最終記事かどうかわからないですが、ひとまずのご挨拶として……

よいお年をお過ごしください。

糖尿デッドエンドでした。