Raspberlyのブログ

Raspberlyのブログ

Unityネタをメインとした技術系ブログです。にゃんこ大戦争や日常なども。そろそろブログタイトル決めたい

【勉強会レポ】: Unity道場 7月~ゲーム制作に使う数学を学習しよう~

 

勉強会のレポート(メモ)です。
参加したのはこちら、「Unity道場 7月~ゲーム制作に使う数学を学習しよう~」
会場はユニティ・テクノロジーズ・ジャパンさんです。

meetup.unity3d.jp

ハッシュタグ : #Unity道場

 

f:id:Raspberly:20190726005534p:plain

 

 

資料と動画はUnityLearningMaterialsにて掲載予定です 
掲載されました、スライドなどが閲覧できます。

learning.unity3d.jp

 

youtubeで配信された動画はこちら、チャットなども見ることができます


Unity道場 2019 7月 ゲーム制作に使う数学を学習しよう

 

part8まであります
けっこうヘビーですが寝ないように頑張りましょう
わからない方は雰囲気だけ持ち帰っていただいて復習してください

 

 

 

要点などのメモになります。

講師である安原さんの説明やスライドがわかりやすいので動画を見ることをおすすめします。

 

 

 

 

part1 数式とグラフ

数式はよくでてきますが、グラフには見方があります
x軸が入力y軸は出力と捉えるといいかと思います

入力が単純だが出力を変化させたいときに数式は役に立ちます

逆関数

関数を見た時にその逆関数はなにかを意識したほうがいいくらい重要

まとめ

・f(x)という表記になれよう
・グラフは入力と出力の関係
逆関数を意識しよう

 


 

 

 


part2 式の読み方

数式を見るとぱっと目をそらす人が多いが、このパートでは3秒まで持つようにはしたい。

 

足し算と引き算はおなじようなもの、これには境界があり塊同士は混ざらない。
単位が異なるものはイコールにもならない、意味が区切られる

漸化式

通常の式とは異なる
必ず初期値があり、プログラミングに親和性が高い

まとめ

・足し算引き算と統合は分離されます
・(物理の場合)必ず単位があります これを意識しましょう
・漸化式があります

 


 

 

 

 


part3 対数

一番身になる大切な話

指数関数

これの逆関数は何か、これがlogであり対数と呼びます

底の交換

対数で大事なのはこの公式ただ一つ
これだけは覚えた方がいい、プログラミングでも絶対使います

まとめ

・対数は定数倍で底が交換できる

 


 

 

 

 

 

part4 浮動小数

eがでてきたら、その後ろの数は10のべき乗である

実はfloatの幅は超絶広い 

やはり限界はある、主に仮数

つまり大きな数字に小さな数字が足されているのはまずい
ゲーム開始後ずっとTimeを足し続けるなど

doubleはもっとすごい

timeとかもdoubleであれば問題ない

まとめ

・floatの限界を知ろう
・2進数と10進数の桁の関係を理解しよう

qiita.com

 


 

 

 

 

 

part5 RPGで数列

レベルアップの経験値テーブルの話
等比数列を作りましょう

まとめ

・経験値は指数関数で実装できる
等比数列を使えるようになりましょう
・対数があれば経験値からレベルを逆算できます

qiita.com

 


 

 

 

 

 

part6 easing解析

Lerpによる線形保管が使われていますが
漸化式から一般項を求めてみましょう
これを求めるとグラフをかけるようになります

これによりフレームレートによらず同じ動きをさせることができます

まとめ

・Lerpの動きは等比数列で溶ける
・解き方は調べればでてくるので、解けることをわかっておきましょう
・フレームレートの異なる環境でも対応可能

qiita.com

 


 

 

 

 

 

part7 複素数

虚数

これはわからなくていい、虚数がなぜ便利なのかというと複素数があるから


これを理解するのに有効なのが、プログラミングで実装してみること
これをやると気づくことがあります、iが登場しないんです、iは作用だと考えましょう。

複素数クォータニオンがありますがこちらはわかりやすい動画があります


【Unity道場 博多スペシャル 2017】クォータニオン完全マスター

マンデルブロ集合

古典的で基本なのでおさえておこう

 


 

 

 

 


part8 複素数

まとめ

複雑なのでブログをみてください

qiita.com

 


 

 

 

 

Unityなんでも相談所

part4にて以下のような疑問を抱いたので椿さんに聞いてみた。

 

結論からいうとあり得るとのこと。

ただしエンドレスランゲームの場合、プレイヤーの座標は変化せず周りのステージを動かすのが主流らしい。
ステージを動かすのはプレイヤーを動かすよりも処理負荷が高そうだが、そこまで気にならないとのこと。

 

だいぶ昔ですが、日経ソフトウェアの付録でUnityのサンプルプロジェクトがありました。

こちらにランゲームが収録されており、
まさにプレイヤーを直接動かすタイプのゲームでしたが、こういうアプローチはよくないらしい。

 


 

 

 

 

実際に挑んでみた

スライドでもあった方法でゲームオブジェクトを遠くまで移動させてみます。

使うモデルはユニティちゃんです。なるべく耐えてくださいね。

f:id:Raspberly:20190726004231g:plain

おおよそ700kmを超えたあたりから人の形を保てなくなります。

 

また1600kmを超えたあたりで以下のようなエラーがでました。
なんでもカメラが遠くまで行きすぎるとこういうエラーがでるっぽい。

f:id:Raspberly:20190726004439p:plain

 

 


 

 

 

 

 

懇親会

f:id:Raspberly:20190726005752p:plain

 

 

講師の安原さんもドレスアップ。記念写真も撮れました。

f:id:Raspberly:20190726010027p:plainf:id:Raspberly:20190726010043p:plain

 


 

 

 

 

タイムライン

 

 

 

講師の安原さんは2月のUnity道場でもシェーダーの講演をしてくださいました。

raspberly.hateblo.jp

 

 

 

 

 間違っている箇所、消してほしいツイートがありましたらコメントにお願いします。