Skip to content

Commit

Permalink
add book
Browse files Browse the repository at this point in the history
  • Loading branch information
syui committed Feb 7, 2025
1 parent bfc9b78 commit 55c48f0
Show file tree
Hide file tree
Showing 33 changed files with 538 additions and 0 deletions.
33 changes: 33 additions & 0 deletions .github/workflows/gh-pages.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: github pages

on:
push:
branches:
- main

jobs:
build-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 23

- name: Build
env:
TZ: "Asia/Tokyo"
run: |
cd ./book
npm i
npx honkit build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./book/_book
publish_branch: gh-pages
user_name: 'ai[bot]'
user_email: '138105980+yui-syui-ai[bot]@users.noreply.github.com'
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,6 @@
/scpt/*.jpeg
/scpt/*.png
config
book/_book
book/node_modules
book/desktop.ini
1 change: 1 addition & 0 deletions book/CNAME
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ue-book.syui.ai
5 changes: 5 additions & 0 deletions book/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
![](cover.jpg)

# Unreal Engine 5 Guide Book

<a href="/book.pdf" target=”_blank”>download</a> | <a href="https://ue-book.syui.ai" target="_blank">web</a>
26 changes: 26 additions & 0 deletions book/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Summary

* [Unreal Engine 5 Guild Book](README.md)
* [default](default/README.md)
* [version](default/00_version.md)
* [start](default/01_start.md)
* [install](default/02_install.md)
* [tips](default/03_tips.md)
* [game animation sample](gas/README.md)
* [キャラクターを追加する](gas/01_character.md)
* [飛びつける高さを増やす](gas/02_jump.md)
* [キャラクターの見た目を変える](gas/03_vrm.md)
* [モーションキャプチャで動かす](gas/04_vmc.md)
* [揺れものを設定する](gas/05_kawaii.md)
* [カメラワークの設定する](gas/06_camera.md)
* [control rig sample](crs/README.md)
* [CRでキャラクターを動かす](crs/01_character.md)
* [city sample](city/README.md)
* [海の境界を消す](city/01_remove.md)
* [json blueprint utilities](json/README.md)
* [apiから情報を取得する](json/01_varest.md)
* [有料アセット](plan/README.md)
* [superhero fligth animations](plan/01_flying.md)
* [ultra dynamic sky](plan/02_uds.md)
* [ocean waves](plan/03_ocean.md)
* [end](end/README.md)
5 changes: 5 additions & 0 deletions book/city/01_remove.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# 海の境界を消す

海には境界があってそれが惑星システム(planet system)を構築する際に邪魔になるので消します。


4 changes: 4 additions & 0 deletions book/city/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# city sample

[city sample](https://www.unrealengine.com/marketplace/ja/product/city-sample)

Binary file added book/cover.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added book/cover_b.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions book/crs/01_character.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# CRでキャラクターを動かす

`control rig``CR_xxx`というファイル名がつけられています。

4 changes: 4 additions & 0 deletions book/crs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# control rig sample

[control rig sample](https://www.fab.com/ja/listings/2ce3fe44-9ee6-4fa7-99fc-b9424a402386)

40 changes: 40 additions & 0 deletions book/default/00_version.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@

現在使用しているpluginやassetの`version`を記述します。

ゲーム制作は無料のassetだけで作れます。しかし、時間やクオリティを向上させたい場合は有料のassetを使いましょう。

本書の一部では有料assetの使い方を解説します。

## asset

|name|latest|body|
|---|---|---|
|[game animation sample](https://dev.epicgames.com/documentation/en-us/unreal-engine/game-animation-sample-project-in-unreal-engine)|5.5|キャラクターをパルクールアクション|
|[city sample](https://www.unrealengine.com/marketplace/ja/product/city-sample)|5.5|大規模な都市を構築|
|[control rig sample](https://www.fab.com/ja/listings/2ce3fe44-9ee6-4fa7-99fc-b9424a402386)|5.5|人間以外のキャラクター|

## plugin

|name|latest|body|
|---|---|---|
|[pixel streaming](https://github.com/EpicGamesExt/PixelStreamingInfrastructure/blob/master/Docs/pixel-streaming-2-migration-guide.md)|2|ゲームをserverにdeployしてwebからプレイ|
|[twinmotion](https://www.twinmotion.com/ja)|20250101p|建造物をインポート|
|[vrm4u](https://github.com/ruyo/VRM4U/releases/tag/20250103)|20250103|vrmモデルを動かす|
|[kawaiiphysics](https://github.com/pafuhana1213/KawaiiPhysics)|20241201|揺れものを設定|
|[varest](https://github.com/ufna/VaRest)|20240828|curlのようなもの。保守が終了しているのでbuildが必要|

## 有料

|name|latest|
|---|---|
|[superhero flight animations](https://www.fab.com/ja/listings/41185c19-5191-4153-8293-8cc9901efa95)|20241217|空を飛ぶ|
|[ultra dynamic sky](https://docs.google.com/document/d/1xAr0Hd3mY7Mp0g0waKLUvJaddUPaVxEeRoEEFXctCE0/)|20250203|空や天候を自動化|
|[ocean waves](https://www.unrealengine.com/marketplace/ja/product/ocean-waves)|20241217|惑星の海を作る|

## link

こちらで最新情報を取り扱っています。

- https://git.syui.ai/ai/ue/
- https://blueprintue.com/profile/ai/
- https://dev.epicgames.com/community/profile/organization/gdkg/ai/
56 changes: 56 additions & 0 deletions book/default/01_start.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
## ueとは

`Unreal Engine``epic games`という会社が作っているゲームエンジンです。よく`ue`と略されます。

最新バージョン(latest version)は`5`なので、`ue5`となります。

`ue`の他には`unity`, `godto`が有名です。`DirectX`というものがあり、例えば、`DX12`からGPUに命令を送ることができます。ゲームエンジンの多くは`DX11`, `DX12`を使用します。

|name|url|
|---|---|
|unreal engine|https://unrealengine.com/|
|github|https://github.com/EpicGames/UnrealEngine|

ソース(source)からビルド(build)して使うこともできます。一部でbuildしないと使えない機能があります。private repoなので[こちら](https://www.unrealengine.com/ja/ue-on-github)からアクセス権をもらいます。

## ueの特徴と注意

`c++``blueprint`で書きます。

ueの特徴はグラフィックが綺麗なことです。と言ってもきれいなグラフィックはunityなどでも実現可能です。しかし、ueは初期設定でもそれが実現できるので、主にグラフィック用途で使用されています。

ueはバグ(bug)が多く基本的に動きません。これはアップデート(update)が速く、3Dを扱うソフトウェア(software)なので仕方ありません。複雑なのです。

ueを長く使っているとわかることですが、ゲーム制作にはあまり向きません。unityのほうがおすすめです。ueはきれいな画像やシーンを作る用途におすすめです。

「ueはバグが多く基本的に壊れている」このことを最初に理解しておかないと「おかしいなあ」と時間を無駄にしてしまいます。また、保存せず長時間コードを書き続けるのは危険です。クラッシュ(crash)すると消えてしまいます。プロジェクト(project)そのものが壊れることもよくあります。注意しましょう。

## 用語の解説

|title|short|body|
|---|---|---|
|unrealengine|ue|アンリアルエンジン|
|version|ver|バージョン|
|code||コード、プログラミング言語で書かれた文章|
|build||ビルド、osで実行できる形式にすること。windowsなら`.exe`|
|compile||コンパイル、コンピュータで実行できる形式にすること。buildと同じ意味で使われる|
|source|src|ソース、主にソースコードの略|
|server||サーバー、リクエストに応じるコンピュータ|
|deploy||serverに実行ファイルを置くこと|
|example|ex|例、uriではexample.comが有名|
|install||インストール、アプリをインストールすること|
|application|app|アプリ、ソフトウェア(software)のこと|
|library|lib|ライブラリ、softwareを構築するための部品|
|package|pkg|パッケージ、appだったり、libだったり色々。基本的にpkg managerでinstallできるものを指す|
|update|up|アップデート、5.5の`x.5`の部分を言う ex: 5.4 -> 5.5|
|upgrade||アップグレード、5.5の`5.x`の部分を言う ex: 4.0 -> 5.0|
|asset||アセット、ueでは購入できるlibやexampleを指す|
|plugin|plug|プラグイン、エンジンに直接入れる追加機能。新たなblueprintなどを使えるようになる|
|crash||クラッシュ、アプリやosが落ちること|
|cache||キャッシュ、一時ファイルのこと。tmpなども使われる|
|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は英語にするのがおすすめです。様々な単語に慣れておきましょう。
53 changes: 53 additions & 0 deletions book/default/02_install.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
## install

srcからbuildしない場合は`epicgames launcher`からinstallします。

https://www.unrealengine.com/download

また、[vsinstaller](https://visualstudio.microsoft.com/ja/downloads/)を使用して必要なpackageを入れてください。

![](../img/0001.png)

[vscode](https://github.com/microsoft/vscode)でbuildするには`.uproject`を右クリックして`.sln`を作ります。

## package build

まずは新しいprojectを作り、package buildできるかを試してみましょう。

ueではbuildが通らないことがよくあります。長い時間をかけて作り上げたもののbuildが通らない事態は避けましょう。

なお、`mac`, `linux`は、ほとんどうまくいきません。package化に成功してもappが正常に起動しないことがあります。使用するpluginやassetなども影響します。

```sh
# corss compile tool : https://dev.epicgames.com/documentation/ja-jp/unreal-engine/linux-development-requirements-for-unreal-engine
# ubuntu(xorg + nvidia)

$ sudo apt-get install xorg xvfb
Xvfb :99 &
export DISPLAY=:99

$ sudo apt-get install vulkan-tools
$ sudo apt-get install mesa-vulkan-drivers
```

## engineとproject

installする場所は自分で決められます。参考の場所を紹介します。

```sh
# engine
C:\Program Files\Epic\UE_5.5\Engine\Binaries\Win64\UnrealEditor.exe

# project
C:\Users\$USER\Documents\Unreal Projects\MyProject\MyProject.uproject
```

## windows tool

|name|url|
|---|---|
|pwsh|https://github.com/PowerShell/PowerShell|
|windows terminal|https://github.com/microsoft/terminal|
|openssh|https://github.com/PowerShell/Win32-OpenSSH|
|vscode|https://github.com/microsoft/vscode|

89 changes: 89 additions & 0 deletions book/default/03_tips.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
この章は読み飛ばしてください。まとめやすいように重要項目を上にしています。

最初はわからないかもしれませんが、最後まで読んでまた来ると、わかるようになっているかもしれません。

## variable(var)

まずは変数の紹介です。変数はローカル変数(local)、グローバル変数(global)があります。最初はprojectで読み込むところに作ります。

1. フォルダの`/Content/Blueprints/`で右クリックして、ブループリントクラス、`GameInstance`を作ります。例えば、`GM_xxx`にします。(名前はなんでもいいです)
2. `設定 -> プロジェクト設定 -> マップ&モード``Game Instance:GameInstance Class``GM_xxx`を読み込みます。

なお、名前に`Default`, `Test`, `Config`などを使う場合は予約されていることがあります。注意してください。

これを開いて、変数のところで`UserTest`という名前で`string`型の変数を作ります。コンパイル(compile)してください。デフォルト値は`World`とでも入れておきましょう。

次に、`/Content/Blueprints/CBP_SandboxCharacter`を開いて、EventGraphで右クリックし、`Cast To GM_xxx`を選択します。

インプット(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_xxx`から`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]
```

<iframe src="https://blueprintue.com/render/_q-q_ffz/" scrolling="no" allowfullscreen style="width:100%;height:400px"></iframe>

基本的にこれを利用して、他のBPと値をやり取りすることになります。例えば、`ABP_SandboxCharacter`で条件を満たしたとき実行してほしいアニメーション(anim)があったとします。

この場合、まず`GM_xxx`の変数で`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]`にします。

<iframe src="https://blueprintue.com/render/pvn4lao9/2" scrolling="no" allowfullscreen style="width:100%;height:400px"></iframe>

確認してみましょう。`[9]`を押すと`[yes][no]`が表示されます。

<iframe src="https://blueprintue.com/render/pvn4lao9/1" scrolling="no" allowfullscreen style="width:100%;height:400px"></iframe>

9 changes: 9 additions & 0 deletions book/default/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
## 本書の目的

ue5でゲームを作成するまでの過程をまとめます。

主に`example`形式で記述し、実行するとその通りの結果になることを目指します。

|name|latest|body|
|---|---|---|
|[unreal engine](https://dev.epicgames.com/documentation/ja-jp/unreal-engine/unreal-engine-5.5-release-notes)|5.5.2|ゲームエンジン|
5 changes: 5 additions & 0 deletions book/end/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
![](../cover_b.jpg)

# Unreal Engine 5 Guide Book

<a href="/book.pdf" target=”_blank”>download</a> | <a href="https://ue-book.syui.ai" target="_blank">web</a>
11 changes: 11 additions & 0 deletions book/gas/01_character.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# キャラクターを追加する

これには`IKリターゲット`が必要です。

1. `Content/Blueprints/CBP_SandboxCharacter_Manny`をcopyして`CBP_SandboxCharacter_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`を参照します。

これで新しいキャラを使用することが可能になります。

12 changes: 12 additions & 0 deletions book/gas/02_jump.md
Original file line number Diff line number Diff line change
@@ -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`にします。

8 changes: 8 additions & 0 deletions book/gas/03_vrm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# キャラクターの見た目を変える

キャラクターの見た目を変えるには`.vrm`を使うと便利です。これは`pixiv`が作っている規格です。

ueで読み込むには`vrm4u`というpluginを使用します。

## vrm4u

Loading

0 comments on commit 55c48f0

Please sign in to comment.