diff --git a/book/SUMMARY.md b/book/SUMMARY.md
index 7f14d2e..171bdd0 100644
--- a/book/SUMMARY.md
+++ b/book/SUMMARY.md
@@ -6,5 +6,6 @@
* [start](default/01_start.md)
* [install](default/02_install.md)
* [gas](gas/README.md)
- * [custom](gas/00_custom.md)
+ * [新しいキャラを追加する](gas/00_character_new.md)
+ * [飛びつける高さを増やす](gas/01_jump_high.md)
* [end](end/README.md)
diff --git a/book/default/00_version.md b/book/default/00_version.md
index 1eebb8f..ccbec92 100644
--- a/book/default/00_version.md
+++ b/book/default/00_version.md
@@ -27,7 +27,7 @@
|name|latest|
|---|---|
-|[ultra dynamic sky](https://docs.google.com/document/d/1xAr0Hd3mY7Mp0g0waKLUvJaddUPaVxEeRoEEFXctCE0/)|20250203|天候|
+|[ultra dynamic sky](https://docs.google.com/document/d/1xAr0Hd3mY7Mp0g0waKLUvJaddUPaVxEeRoEEFXctCE0/)|20250203|空や天候を自動化|
|[superhero flight animations](https://www.fab.com/ja/listings/41185c19-5191-4153-8293-8cc9901efa95)|20241217|空を飛ぶ|
## link
diff --git a/book/default/01_start.md b/book/default/01_start.md
index c3a6d57..f6d2250 100644
--- a/book/default/01_start.md
+++ b/book/default/01_start.md
@@ -51,5 +51,6 @@ ueを長く使っているとわかることですが、ゲーム制作にはあ
|repository|repo|リポジトリ、主にsrc codeの一式が置いてある場所|
|project||プロジェクト、ueでは主に新しいゲームを作った時のフォルダ一式|
|blueprint|bp|ブループリント、ueのノードベースで書く形式。anim blueprintはabp、character blueprintはcbpと略される事が多く、ファイル名は`BP_XXX`, `ABP_XXX`, `CBP_XXX`となる。基本大文字が使われる|
+|variable|var|変数、一時的な値の保存場所|
基本的に英語で書けるものは英語で書きます。ueのmenuは英語にするのがおすすめです。様々な単語に慣れておきましょう。
diff --git a/book/gas/00_custom.md b/book/gas/00_character_new.md
similarity index 52%
rename from book/gas/00_custom.md
rename to book/gas/00_character_new.md
index f2e1f39..46c0b83 100644
--- a/book/gas/00_custom.md
+++ b/book/gas/00_character_new.md
@@ -3,21 +3,9 @@
これには`IKリターゲット`が必要です。
1. `Content/Blueprints/CBP_SandboxCharacter_Manny`をcopyして`CBP_SandboxCharacter_test`を作ります。
-2. `CBP_SandboxCharacter_test`を開いて、`Mesh`の下にあるSKM(スケルタルメッシュ)の`Manny`を選択します。その状態で`詳細(details) -> タグ(tags)`からインデックス(index)の0を`RTG_UEFN_to_UE5_test`に書き換えます。
+2. `CBP_SandboxCharacter_test`を開いて、`Mesh`の下にあるSKM(スケルタルメッシュ)の`Manny`を選択します。その状態で`詳細(details) -> タグ(tags) -> Component Tags`から`index[0]`を`RTG_UEFN_to_UE5_test`に書き換えます。
3. `Content/Blueprints/RetargetedCharacters/ABP_GenericRetarget`を開き、変数の`IKRetargeter_Map`に新しく`RTG_UEFN_to_UE5_test`を追加し、ファイルは`/Content/Characters/UE5_Mannequins/Rigs/RTG_UEFN_to_UE5_Mannequin`を参照します。
4. `/Content/Widgets/GameAnimationWidget`を開いて、characterのiconのところをcopyして貼り付けます。そして、詳細からObjectで `Content/Blueprints/CBP_SandboxCharacter_test`を参照します。
これで新しいキャラを使用することが可能になります。
-## 飛びつける高さを増やす
-
-1. `Content/Blueprints/CBP_SandboxCharacter`を開いて、関数の`TryTraversalAction`を編集します。
-2. 一番下の`Max:275`を`Max:475`に変更します。
-3. `/Content/Characters/UEFN_Mannequin/Animations/Traversal/CHT_TraversalAnims`を開きます。
-4. `Mantles(編集)`から先程変更した値のところを全部`275 -> 475`に書き換えます。
-
-例えば、levelにあるblockの高さを変更して飛びつけるか確認します。
-
-1. `LevelBlock_TraversableXX`を選択します。
-2. トランスフォーム(transform)の拡大(scale)のところで青色(transform-scale-z)を`4.5`にします。
-
diff --git a/book/gas/01_jump_high.md b/book/gas/01_jump_high.md
new file mode 100644
index 0000000..d502e58
--- /dev/null
+++ b/book/gas/01_jump_high.md
@@ -0,0 +1,12 @@
+## 飛びつける高さを増やす
+
+1. `Content/Blueprints/CBP_SandboxCharacter`を開いて、関数の`TryTraversalAction`を編集します。
+2. 一番下の`Max:275`を`Max:475`に変更します。
+3. `/Content/Characters/UEFN_Mannequin/Animations/Traversal/CHT_TraversalAnims`を開きます。
+4. `Mantles(編集)`から先程変更した値のところを全部`275 -> 475`に書き換えます。
+
+例えば、levelにあるblockの高さを変更して飛びつけるか確認します。
+
+1. `LevelBlock_TraversableXX`を選択します。
+2. トランスフォーム(transform)の拡大(scale)のところで青色(transform-scale-z)を`4.5`にします。
+
diff --git a/book/gas/README.md b/book/gas/README.md
index 7816203..d4c1591 100644
--- a/book/gas/README.md
+++ b/book/gas/README.md
@@ -2,7 +2,7 @@
[game aimation sample](https://www.fab.com/ja/listings/880e319a-a59e-4ed2-b268-b32dac7fa016)はepicgamesが提供しているassetです。
-まずはこれを使ってキャラクター(chacater)を動かしてみましょう。
+まずはこれを使ってキャラクター(character)を動かしてみましょう。
## level(map)
@@ -34,25 +34,108 @@
characterは`/Content/Blueprints/CBP_SandboxCharacter`で動かしています。このファイルを開いて編集してみましょう。
1. `EventGraph`というノードが記述されている場所(画面中央)で右クリックし、`Debug Key 1`を追加します。
-2. Releasedというピンから`Print String`を追加します。
+2. Releasedというピン(pin)から`Print String`を追加します。
3. ゲームを再生します。
4. キーボード(keyboard)の`[1]`を押すと、画面に`Hello`が表示されます。
これがbp(blueprint)でゲームを作る要領になります。
+## ABP
+
+characterの動きは`/Content/Blueprints/ABP_SandboxCharacter`で設定されています。
+
## input
まずkeyがどこで設定されているのかと言うと、`/Content/Input/IMC_Sandbox`で設定されています。
例えば、`/Content/Input/IA_Aim`をコピー(copy)して、新しく`IA_One`を作ってみましょう。それを`IMC_Sandbox`で読み込んで`[1]`に割り当てます。
-次に、`IA_One`を先程の`CBP_Sandbox_Character`にドラッグ&ドロップ(D&D)します。
+次に、`IA_One`を先程の`CBP_SandboxCharacter`にドラッグ&ドロップ(D&D)します。
すると`EnhancedInputAction IA_One`という赤いノードが作成されたと思います。`Debug Key 1`を削除して代わりにつなぎます。色にも意味がありますが、そのうちわかってくると思います。
ゲームを再生してみると先ほどと同じkeyで動きます。
-## ABP
+### variable(var)
+
+ここから本当に重要なことを書きます。最初はわからないかもしれませんが、最後まで読んでまた来ると、わかるようになっているかもしれません。
+
+1. フォルダの`/Content/Blueprints/`で右クリックして、ブループリントクラス、`GameInstance`を作り、名前を`GM_DefaultConfig`にします。
+2. `設定 -> プロジェクト設定 -> マップ&モード`の`Game Instance:GameInstance Class`に`GM_DefaultConfig`を読み込みます。
+
+これを開いて、変数のところで`UserTest`という名前で`string`型の変数を作ります。コンパイル(compile)してください。デフォルト値は`World`とでも入れておきましょう。
+
+次に、`/Content/Blueprints/CBP_SandboxCharacter`を開いて、EventGraphで右クリックし、`Cast To GM_DefaultConfig`を選択します。
+
+インプット(input)のpin(ピン)にあるObjectには`Get Game Instance`をつなぎます。そして、アウトプット(output)の青線は`Get UserTest`と検索し、それを`Print String`につなぎます。
+
+さて、こにkeyを設定して再生すると`World`と表示されるはずです。
+
+特に重要なのが`変数の型`です。種類もそうですが、変数の型の右側にある色アイコンをクリックしてみると、たくさんの形式があることがわかります。
+
+- 単一
+- 配列
+- 設定
+- マップ
+
+配列を使ってみましょう。`UserTestList`という名前で`string`の配列を作成します。
+
+ここで、デフォルト値に追加できることに気づくはずです。
+
+例えば、単語を3つ追加してみます。
+
+- [0]ai
+- [1]burst
+- [2]can
+
+`Cast To GM_DefaultConfig`から`Get UserTestList`を引っ張り出し、`Length`につなげます。それをprintしてみると、`2`と表示されるはずです。
+
+`length(len)`はその配列に追加された数を知ることができます。
+
+では、全部の値を取り出すため`for`を書きましょう。`UserTestList`から`For Each Loop`を伸ばして`Loop Body`からprintにつなぎます。値は`Array Element`から取ります。
+
+もし文字列をつなぎたいなら`Append`が使えます。
+
+変数にはObjectをいれることもできます。たくさんのObjectを入れておき、`Find`で検索して取り出すこともできます。
+
+では、characterを全部まとめて検索できる変数を作ってみます。
+
+名前は`UserCharacterObj`でstringを選択し、マップを選択します。右側のマップは`オブジェクト(object)`と検索し、object参照を選択します。
+
+```sh
+str obj
+--- ---
+```
+
+`cbp character`と検索し、characterのcbpを入れていきます。名前はわかりやすいものにしてください。例えば、`manny`, `quinn`など。
+
+では繋いでいきます。
+
+```sh
+[Get Game Instance] --> [Cast To GM_Defaultconfig] --> [UserCharacterObj]
+
+--> [Find(manny)] --> [Get Object Name] --> [Print String]
+```
+
+
+
+基本的にこれを利用して、他のBPと値をやり取りすることになります。例えば、`ABP_SandboxCharacter`で条件を満たしたとき実行してほしいアニメーション(anim)があったとします。
+
+この場合、まず`GM_DefaultConfig`の変数で`UserCharacterAnim`をboolean型で作り、実行してほしいタイミングで`CBP_SandboxCharacter`に書いた`Cast To GM_Defaultconfig`から`UserCharacterAnim`を`true`に変更します。`Set UserCharacterAnim`で検索してください。そして、ABPには`UserCharacterAnim`がtrueならanimを再生する処理を書きます。
+
+## function(func)
+
+次は関数です。関数は簡単で、何度も繰り返す部分を再利用可能な形で残します。それが関数です。
+
+新しい関数を作ってみましょう。左バーの関数(+)を押せば作成されます。名前は`FuncTest`にします。
+
+関数を表す紫色のボックス(box)を選択した状態でinputとoutputの見てもらって、inputにboolという名前でboolean型を作ります。outputにはstrという名前でstring型を作ります。
+
+処理の内容はboolがtrueなら`[yes]`というstringを出力し、falseなら`[no]`にします。
+
+
+
+確認してみましょう。`[9]`を押すと`[yes][no]`が表示されます。
-characterの動きは`/Content/Blueprints/ABP_Sandbox_Character`で設定されています。
+