【UE4,Unity】俺、最適化、完全に理解した。(書いてる途中)

前置き

ダニング=クルーガー効果でいう、最初の高い所に来た気がするので記事かこ~
この先は、長い長い道を進むことになるので、よく見るページのブックマークとして使う予定です。
そして、ここまで歩んできた道のりを、あとの方が最短で歩めそうな記事なればなと思います。

こんな問題の解決に取り組む必要がある方
 ・作ったアプリが重い!何とかしたい!
 ・カクってする場所がある。
 ・ロードがすっごい長い。
 ・スマホアプリの場合で、電池が減るの早すぎ。
 ・突然落ちる。
 ・現状の仕様をほとんど変えず、クォリティ上げたい。



初級

★スタート★
「カクカクする!プロファイルとオプティマイズよろ!」
「えっと・・・ぷろふぁいる?おぷてぃまいず? なにそれ?」

この講演でプロファイル(調査)とオプティマイズ(最適化)について理解!
 講演:「アーティストの為のプロファイル入門!~楽しいRenderDocの使い方~」

★ーーー★ーーー★

プロファイルとオプティマイズについては分かった。RenderDocもググれば使える。(UE4、Unityどっちも使い方はネットにあります)
3Dモデルどうやっていじればいいの?ってなったらこれ!

Blenderを少しだけかじって操作を覚えて、ポリゴン減らす方法を調べる。
 書籍:「Blender標準テクニック ローポリキャラクター制作で学ぶ3DCG Kindle版」
●Blender2.8をメインに使うと思うので、目次見る限りでは、こっちの本でもいいかもしれない。
 書籍:「Blender 2.8 3DCG スーパーテクニック」

★ーーー★ーーー★

オブジェクトのポリゴンを減らしたり、テクスチャを小さくしたり、するといいのは分かった。
ポリゴンを減らして、イラストソフトで解像度を下げたテクスチャも作れる。
その後はどうするの?ってなったらこの講演
 講演:「Oculus GoでLAMさんのキャラを7+1人出そうとした話(東京クロノス)」
 講演:「60fpsアクションを実現する秘訣を伝授 基礎編」

★ーーー★ーーー★

へ~こういう事やっていけばいいんだなって言うことは分かった。
モバイルやVRとかの何となくの判断基準が欲しい! もっと事例をっ!
 講演:「【Unite 2017 Tokyo】「オルタナティブガールズ」〜50cmの距離感で3D美少女を最高にかわいく魅せる方法〜」

合わせてこの講演も読むと良い。
ライティングとアセットリダクション、アニメーションについて、やれることがさらにわかる!
 講演:「Fortniteを支える技術」

★ーーー★ーーー★

ここまでで、なんとなくの最適化はできるようになりましたね!
初心に戻りましょう。
 講演:【スライド】「【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術」
    【動画】「【Unite 2017 Tokyo】最適化をする前に覚えておきたい技術」

★ーーー★ーーー★

ここまで来たので心構え
 「快適に遊べる範囲内で、クオリティを引き上げることが目標なので、全部やらなくてもいい」
VR向けへの心構え
 「クオリティを妥協しつつも、仕様を満たし、快適に体験できるところまで落とし込むのが目標なので、重箱の隅をつつくぐらいやろう」

★ーーー★ーーー★

中級


プロファイングについて、もう少し踏み入ってみよう。
 講演:「Unityプロファイリングマニアクス」

★ーーー★ーーー★

 講演:「【Unity道場 2016】パフォーマンス最適化のポイント」
 講演:「60fpsアクションを実現する秘訣を伝授 解析編」

★ーーー★ーーー★

ここら辺でこの本を読めば、GPUのお仕事が分かって楽しい!!
 書籍:「ゲーム制作者になるための3Dグラフィックス技術」

★ーーー★ーーー★

コードも、アセットも最適化がガンガン進む1冊!!
講演でスライド1枚程度で語られてた内容がめっちゃ詳しく載ってます。
ここまでで覚えたことを踏まえれば、なんとか実践投入できるんじゃないかなと。
 書籍:「Unity 2017最適化ガイド Unityのあらゆるパフォーマンス問題を解決するための手引き」

★ーーー★ーーー★

ここまで来たので、基本と応用が記事におりまぜてあって、面白く読める講演の紹介  講演:「『ドラゴンクエストXI S』はいかにUnreal Engine 4で最適化されたか? “UNREAL FEST EAST 2019”のセッションをお届け」
 講演:(動画)Nintendo Switch『OCTOPATH TRAVELER』はこうして作られた

★ーーー★ーーー★

 講演:(動画)そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について
 講演:(スライド)「そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 1
 講演:(スライド)「そう、UE4ならね。あなたのモバイルゲームをより快適にする沢山の冴えたやり方について Part 2

★ーーー★ーーー★

上級

ここまできたらの講演を面白く聞ける!
 講演:【CEDEC2016】Unreal Engine 4 のレンダリングフロー総おさらい
 講演:「なぜなにリアルタイムレンダリング」

★ーーー★ーーー★

ここまで来ればやっと、読めるようになりますね。この本のこの部分が!
 書籍:「ゲームエンジンアーキテクチャ 第2版」の第3部第10章レンダリングエンジン

★ーーー★ーーー★

レギュレーション決めの基準になりそうな事例、
 講演:UE4におけるエフェクトの基本戦略事例 後半

★ーーー★ーーー★

 講演:「UE4におけるLoadingとGCのProfilingと最適化手法」
 講演:「UE4をレンダラとした趣味的スピード背景ルックデブ(UE4 Environment Art Dive)」
 動画:「Unreal Japan Stream | UE4のプロファイリングと最適化のTips!Part 1 」
 動画: 「 Unreal Japan Stream | UE4のプロファイリングと最適化のTips!Part 2」


★ーーー★ーーー★

メモーーーーー

GitHub - TwoTailsGames/Unity-Built-in-Shaders: Unity Built in Shaders

エピック・ゲームズ・ジャパン Epic Games Japan Presentations on SlideShare

BlenderからVRMファイルを出力する時にでたエラーと解決法

一覧

エラーと解決法
 ・XXXXの頂点idXXに影響を与えるボーンが5以上あります。4つ以下にしてください
 ・ポリゴンはすべて三角形である必要があります。
 ・マテリアル:XXXXはVRMexport向けノードグループが直接Material output node に繋がれていません。ノードグループからそれらを使ってください。


その他
 ・出力時によく忘れること
  ・全部選択はオブジェクトモードにして、ビューポートで A キーを押す。
   (アウトライナーAキーアウトライナーの選択になっている)

XXXXの頂点idXXに影響を与えるボーンが5以上あります。4つ以下にしてください

【自動】  1. ボーンを選択、Shiftを押しながらXXXXを選択
 2. ウェイトペイントのモードにする
 3. あっちこっちに手を出してそうなボーンを選択(ctrlを押しながらクリック)  4. ウェイトから合計を制限を選択
 5. 制限を5に上げて4に戻す。
f:id:NazzTea:20200316001722j:plain
【手動】(綺麗にしたと思ったのにボーンの影響が残っているのを消すときに使える)
 1. ブラシのウェイトを0にする
 2. 半径を500pxにする
 3. 前面のみにチェック
 4. ボーンを選んで、全体を人塗りする(これでそのボーンはどの頂点にも影響を及ぼさなくなる)

ポリゴンはすべて三角形である必要があります。

【四角面を三角面に変換 】
 1. 対象を選択して、編集モード
 2. から面を三角化を選択
f:id:NazzTea:20200316000846p:plain

XXXXはVRMexport向けノードグループが直接Material output node に繋がれていません。ノードグループからそれらを使ってください。

【MToon_universionedを使う】
 1. サーフェスでMToon_universionedを選択
 2. MainTextureは画像テクスチャを選んで画像を入れる
 3. 以降はお好みで?
f:id:NazzTea:20200316002634p:plain

【Unity】ゲーム配布『Re:pair』:2020年GGJ

3日間にわたる2020年GGJが終わりました!
今回はノベルゲームジャンルで制作しました。
f:id:NazzTea:20200204002444p:plain
f:id:NazzTea:20200204002503p:plain

1万7千文字、立ち絵差分46枚、サウンド9曲というゲームジャムで作ったとは思えないボリュームに! 各個人が半端ない力を持ったチームだった。
プログラマーがいて、デザイナーがいなかったので、デザインで参戦しました。
なので、初めてコードを一切書かないゲームジャムになりました!

作るものが決まったのが土曜日の夜なので、そこから大ボリュームの作品になったのに完成するとは正直びっくりしてます。 自分は、VRoidでキャラクターの3Dモデル作って、立ち絵やタイトル画像、背景画像を作ってました。 15時間で立ち絵46枚は常人の域を超えれたと思う。
COCOPStudioとデザイン系アプリを組み合わせることで、ジャムでデザイナーとしてもいけるのがわかった!
画像のような感じ、テクニカルについては、今月にあるVRM勉強会のネタにしようかなと思います。
f:id:NazzTea:20200203234640j:plain

チーム

 デザイナー (若草なずな)
 プログラマー&ディレクター 1人(学生)
 サウンド 2人(プロ、学生)
 シナリオライター 2人

ダウンロード

ゲームとプロジェクトはGGJのサイトで配布してます。 Executable: ggj2020_build_01.zipからダウンロード
それを適当な所に解答して、.exeを実行すると遊ぶことができます。
globalgamejam.org

【Unity】Gradleビルドができない・・・

Unityバージョン:2018.4.7f1、2018.4.8f1、2018.4.13f1
AndroidStudio:3.4.0

ビルドができない。

f:id:NazzTea:20191208023535p:plain
よしググろう(com.google.gson.stream.MalformedJsonExcept)

いろいろ調べて、
classpath 'com.android.tools.build:gradle:3.4.0'
の部分を修正したらいいようです?

Android Gradle プラグインのリリースノート
https://developer.android.com/studio/releases/gradle-plugin?hl=ja
Android Studio のダウンロード アーカイブ
https://developer.android.com/studio/archive.html

色々なバージョンを試す

build.gradle(project側)
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.android.tools.build:gradle:5.1.1'
(エラーは出なくなったが、apkが作られず)
classpath 'com.android.tools.build:gradle:4.4.0'
(エラーは出なくなったが、apkが作られず)
classpath 'com.android.tools.build:gradle:3.2.1'


mainTemplate.gradle(Unity側)
classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.android.tools.build:gradle:5.1.1'
(エラーは出なくなったが、apkが作られず)
classpath 'com.android.tools.build:gradle:4.4.0'
(エラーは出なくなったが、apkが作られず)

ビルド確認できている環境を参考にする

もともとこのプロジェクトを作っていたPCはビルドできる
Unityバージョン:2018.4.7f1
AndroidStudio:3.3.1


それじゃ、別PCで確認できたバージョンに合わせてビルドするか。
Unityバージョン:2018.4.7f1
AndroidStudio:3.3.1
mainTemplate.gradle(Unity側): classpath 'com.android.tools.build:gradle:3.4.0'
f:id:NazzTea:20191208023535p:plain


ビルドのたびに、mainTemplate.gradleがbuild.gradleを更新している・・・
ということは?
Unityバージョン:2018.4.7f1
AndroidStudio:3.3.1
mainTemplate.gradle(Unity側): classpath 'com.android.tools.build:gradle:3.2.1'
ビルドできたーーーーっ!!

ということはーーーっ!
Unityバージョン:2018.4.13f1
AndroidStudio:3.3.1
mainTemplate.gradle(Unity側): classpath 'com.android.tools.build:gradle:3.2.1'
ビルドできたーーーーっ!!

【Windows10】Pixel4開発準備(adbコマンドを使えるようにする)

前提
 ・AndroidStudioインストール済み
 ・adbコマンドが実行出来る環境
前提が整ってない方は検索して準備してください!

TypeAとTypeCのデータ通信ができるケーブルを買う

※PCにTypeCで接続できるならいらない。
私が買ったのはこれ
item.rakuten.co.jp


Pixel4をデータ通信可能に設定と開発者モード

Pixel4をデータ通信可能に設定(PCに接続したら毎回やらんといけない感じ・・・)  1.PCに接続
 2.USBの使用をファイル転送に設定
   設定→接続済みのデバイス→USBの設定→USBの使用

開発者モードとUSBデバッグ
 1.ビルド番号を7回タップ
   設定→デバイス情報→ビルド番号
 2.USBデバッグを許可する    設定→システム→詳細→開発者向けオプション→USBデバッグ

Google USB Driverインストール

1.Android StudioからGoogle USB Driverを入手
  Configure → SDK Manager → Android SDK → SDK Tools
 Google USB Driverにチェックを入れる。
 OKを選択してインストール

f:id:NazzTea:20191117134159p:plain


参考:
Google USB ドライバを入手する  |  Android Developers


ここまでやったら、コマンドプロンプト開いて、adb devices と打ち込んでリストにデバイスが表示されるはず!

【Unity、Xcode】他アプリと画面分割やりたい!

バージョン
  ・Unity : 2018.3
  ・Xcode: 11.1

こんな感じのことがやりたいです。(結果)
f:id:NazzTea:20191027235031p:plain

Xcode側で設定
f:id:NazzTea:20191027235120p:plain
参考:
https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForSlideOverAndSplitView.html

メモ

関係ないかもしれないけど、あるかもしれないメモ
Unity側:”PlayerSettings”→”Resolution and Presentation”→”Requires Fullscreen”のチェックを外す
Xcode側:”Supports multiple windows”のチェックを外す
f:id:NazzTea:20191027235247p:plain