Cz_mirror Game開発備忘録

週末にUnity でゲーム開発をしています。ゲーム開発を通じて得た情報の備忘録として活用するブログになります。

Roppongi.unity #2 in メルカリ@六本木ヒルズに参加してきました

Roppongi.unity #2 in メルカリ@六本木ヒルズに参加してきました。今情報整理しながら、記事を編集中になります。

 

Roppongi.unity #2 in メルカリ@六本木ヒルズ - connpass

roppongiunity.connpass.com

 

 

@songofsaya_さん
Unityで暖を取る!GLSLをCg/HLSLに書き換えて楽しもう!!~GPUを使い倒してレイマーチングを部屋の壁に飾るまで~

docs.google.com

レイマーチング

shadertoyでiq神のかたつむり

GLSLからCg/HLSLに書き換える

歴史の話

VRの歴史はシェーダーにつながり、シェーダーはVRにつながる

NVIDIAがCgの開発を終えた

 

GLSLのシェーダーを探してみる

Shadertoyとかでいい感じのシェーダーが見つかる

www.shadertoy.com

 

glslsandbox.com

glslfan.com

 

シェーダーを探すコツ

なるべく小さいものを選ぶようにする。ただし時間はそれなりにかけた方がよい印象をうけました。
iq神のかたつむりを実際に移植した際のコードがscrapboxにアップされていました。

scrapbox.io

 

GLSLをUnityに持ってくる手順のアウトライン

Unity場での下準備

板ポリを準備

 

 定数宣言

 

円周率

GLSLでは定数でPIを定義しているコードがよくみられる

 

vec3みたいなのはfloat3

 

時間

時間を扱うシェーダー処理系の組み込み変数を変更する。

 

コンストラクタの違い

変数の定義をしている箇所がシェーダーエラーになった場合、該当の行をみてもなかなか気づきづらい。

 

行列の掛け算

行列とベクトルの掛け算を書き換える

 

組み込み関数の変更

modは一式コピペして利用するとよい

 

座標の初期加工

ここで間違うと絵が出なくなる恐れがある

 

ループの変数名変更

エラーが出るときに変数を変えるなど調整は必要

 

@evil07さん
プランナーがUnityでスマホゲーム2本出してみた(仮)

 

プランナーがUnityでスマホゲーム2本出してみた - Google スライド
https://docs.google.com/presentation/d/1oXF80vU1z2TMBTbrGzY1ahXAhkifW3xzCf-v8N0HzhU/edit

 

マシーナリーとも子さん徳集め

和尚本を元にゲームをカスタマイズして、タップゲームを作った事例で、マルチタップ対策などの工夫をされている。

シンプルなゲームでも歯車の位置を調整したりタップ以外の操作を混ぜるなどをすることで面白くなるのではないか。

 

上記のゲームを改良し作った次のゲーム

コンセプトはどこまでも走れ友子

参考書だけではだめなので、Magicaboxを使った素材を組み込んだゲーム

モデルにリグを入れるのにmixamoを使った。

www.mixamo.com

必要なのは簡単な設定だけで、あごや四肢に対して設定し、モーションを選ぶとデモが見られる。 

Unityにドラッグしてアニメーションを設定すると完了。

 

マネタイズはどちらもAdmobを採用(Unity SDKが用意されているので簡単だった。知見も多い)

 

宣伝は大事で遊んでもらう前に見てもらう工夫は必要。

 

@hayu_devさん
ゲーム作りに助けを求めるのは間違っているだろうか

ねこわける(iOSで配信中)

ねこわける

ねこわける

  • Takehito Gondo
  • ゲーム
  • 無料

 

ねこはしる(iOSで配信中)

 

カジュアルゲームを作ってきたときにRPGを作りたくなった。

今回紹介するものはデモ用なので実務向きではない。

 

キャラクターのアニメーション、会話などのイベントを実現できるものを想定

アニメはパラパラマンガの要領で実現

キャラクターの移動はキーボード入力。0か1で歩行と停止を表現

調べるコマンド キャラクターとNPCの距離が近いときにRaycastHit2Dによるメソッドを実行している。

 

会話イベント

AssetStoreのFungusを使用していて、専用画面でイベントを作れる。

会話はフローチャートを仕込んで、選択肢を出すなども可能。

 

@guru_takaさん
Unity歴2ヶ月のド素人が塗り絵ARを作るまでのお話

https://twitter.com/guru_taka/status/1109430308502302725

qiita.com

塗り絵ARの知見

精神崩壊しない健全な勉強法

 

AR上に塗り絵をする(qiitaにも投稿済み)

blenderモデリング、UVマップ

UnityでOpenCVスキャン、AR

 

ARKitも知見

YCbCr形式:輝度信号Yと、2つの色差信号を使って表現される色空間

Y+Cbcr→YUVMaterialを使う!

 

Shader(HLSL)の知見

Unlitで影だし

水面Shaser

Unityが用意している(マクロ写真)macro photoや関数で実現可能!

 

失敗談

Shaderの理論で挫折してしまい、塗り絵ARも挫折してしまい、いけてるモデリングができなかった。

チュートリアル is 正義→操作に悩まない、ハードルが下がることで楽しさにつながる。

 Youtube(キーワードにTutorialを入れるなどする)、猫本(Unityの教科書)などで学んだ。

 

ぼっちの鬼門

Unity道場→ぼっちの救世主→質問所などもあり、高い確率で回答してもらえる。 

 

@kajitaj63b3さん
スクロール表現の為のUV to Positionのテクニック

スクロール表現のための Position Bake のコピー - Google スライド

docs.google.com

 

HarukaKajita/PositionBaker

github.com

 

モデルの体に沿ってスクロールしなかった。→オブジェクト座標のY座標に依存しているので体に沿ってスクロールしない→腕を上げた時の座標を記録しておき、ジオメトリシェーダーでUV展開

テクスチャ化→ベイクしたテクスチャでスクロールできるようになった

→場合によっては問題がある座標をそのまま色にしている、座標が0〜1の範囲をはみ出すとクランプしてしまう。

 

解決策

float値一つをfixed値4つに分解するテクニックがある。→テクスチャ4枚必要になる

座標をベクトルの向きと長さに分けてベイク→テクスチャ2枚

 

Lengthテクスチャ

色=RGB(8bitx3チャンネル)

 

注意

Import Settingsで圧縮・ミップマップはきる

圧縮とかフィルタが絡むときはきる

 

Generative Programming 1 - Genera - BOOTH

booth.pm

 

@kannan_xiao4さん
GUILayoutをランタイムで使おう

GUILayout != EditorGUILayout

GUILayoutクラスはGUIの自動レイアウトを行うためにインターフェース

EditorGUILayout=EditorGUI このクラスはGUIクラスの機能と同じように動作する

 

使用方法

MonoBehaviorを継承したクラスを作成、void OnGUIで処理を実装し、GameObjectにアタッチする

実装時の注意

OnGUIはだいたいUpdateと同じように呼び出されるため、負荷のかかる処理は書かずにAwakeやStartを活用したり、条件式の中で実行する。

Buttonが押された分だけTrueになる。

活用できるところ

デバッグ画面、最大のメリットはuGUI GameObjectの配置が不要(ButtonやTextの配置不要)、置いたButtonにActionの紐付け不要、自動レイアウトされる

 

向かないこと

メインUI構築→uGUIに比べて表現が非力で個々がGameObjectではないのでAnimationできない。

煩雑な処理→GUIメインで書くことになるので処理が複雑になる。

 

GUILayoutを使えばGUIスクリプトだけ出かけてデバッグ画面UIを作らなくていいので楽。

 

@lycoris102さん
分かった気になる!TimelineSignals

speakerdeck.com

Signals→Unity2019から追加された新機能。Timeline上で任意の処理を実施する。

スローにするシグナルと元に戻すシグナルを追加する

Signalレシーバーが必要

制御用のスクリプト(SignalReceiverスクリプトにSlowなどのシグナルを指定する)

Timelineのスローにしたいところにシグナルを置く

TImeScaleの値のレパートリーが増えるたびにSignalを増やしたくない→値も合わせて通知できるようにしたMakerを使用できる。

 

もしMarkerが任意のTrack上にあるのであれば、Trackの対象として指定したGameObjectに。

 

@taptappunさん
Unity × Docker

Unity × Docker - Google スライド

docs.google.com

Dockerfile

github.com

Unityをサーバーにアップロードして使うことはライセンス規約に違反するため十分に気をつける。

 

面倒な仕事をバックエンド側に仕事をやらせるイメージ

自動でテスト、自動ビルド、動画を自動で作ったり、アセットバンドルのビルドやアップロードを自動でやってほしい

→面倒なことをサーバーにさせる

 

Unityクラウドビルドだと細かい調整ができない→Dockerを使ってUnityを導入してみる

UnityでのCLI操作→公式ドキュメントあり

 

@TANY_FMPMDさんの展示関連のQiita記事

Unity で HDR (High Dynamic Range) と WCG (Wide Color Gamut) を考える (UnityHDROutputPlugin の解説) - Qiita

qiita.com

 

らずさんの勉強会レポに詳細な内容がまとまっていて非常に振り返りがしやすいです。

raspberly.hateblo.jp