diff --git a/Aiat.md b/Aiat.md
new file mode 100644
index 0000000..99a5fb1
--- /dev/null
+++ b/Aiat.md
@@ -0,0 +1,59 @@
+# Aiat
+
+- lang: [en](https://git.syui.ai/ai/rse/wiki/Aiat) / [ja](https://git.syui.ai/ai/rse/wiki/ja/Aiat)
+
+We are developing a selfhost and client for [bluesky-social/atproto](https://github.com/bluesky-social/atproto).
+```json
+{
+ "name": "Aiat",
+ "id": "ai.at",
+ "repo": "ai/at",
+ "bundle": "ai.syui.at",
+ "domain": "at.syui.ai"
+}
+```
+
+## Why use atproto
+
+`atproto` is a protocol.
+
+It provides useful packages for building account systems.
+
+Users are given an ID called a DID, and domains become URIs.
+
+```sh
+at://did:plc:6qyecktefllvenje24fcxnie
+at://did:web:6qyecktefllvenje24fcxnie
+at://ai.syui.ai
+```
+### request example
+
+```sh
+$ did=did:plc:6qyecktefllvenje24fcxnie
+```
+
+```sh
+$ curl -sL "plc.syu.is/${did}"
+
+$ curl -sL "syu.is/xrpc/com.atproto.repo.describeRepo?repo=${did}"
+```
+
+## Selfhost
+
+We run pds, bsky, bgs, plc, jetstream, ozone, and social-app.
+
+```json
+{
+ "pds": "data",
+ "bsky": "api",
+ "bgs": "timeline",
+ "plc": "did",
+ "jetstream": "feed",
+ "ozone": "moderation",
+ "social-app": "web"
+}
+```
+
+## Client
+
+We are building iOS/web clients based on [bluesky-social/social-app](https://github.com/bluesky-social/social-app).
diff --git a/Aicard.md b/Aicard.md
new file mode 100644
index 0000000..7a71e8c
--- /dev/null
+++ b/Aicard.md
@@ -0,0 +1,61 @@
+# Aicard
+
+- lang: [en](https://git.syui.ai/ai/rse/wiki/Aicard) / [ja](https://git.syui.ai/ai/rse/wiki/ja/Aicard)
+
+An iOS app for collecting cards.
+
+```json
+{
+ "name": "Aicard",
+ "id": "ai.card",
+ "repo": "ai/card",
+ "bundle": "ai.syui.card",
+ "domain": "card.syui.ai"
+}
+```
+
+## Game Separation
+
+Games are made up of many elements. However, since it's desirable for each element to operate independently, we separated some of the features we were building in `Airse` into `Aicard`.
+
+Therefore, we decided to separate account creation, game data creation, and storage.
+
+Also, one factor was that we considered iOS (App Store) to be the most suitable platform for monetization.
+
+This allows data and monetization to operate and cooperate independently.
+
+### Aicard [Local Data]
+
+- Account data creation
+- Save game data to remote
+- Payment system
+
+### Airse [Remote Data]
+
+- Account data reading and reflection
+
+## Creating New Accounts
+
+There's an atproto PDS server called `syu.is`. We operate it independently and decided to use it as a game account system as well.
+
+However, since we're adopting atproto, people with knowledge can rewrite remote data. This affects Airse.
+
+To prevent this, newly created accounts issue a temporary UUID, allowing only session restoration using that UUID, without the ability to operate account records.
+
+Because of this system, `syu.is` accounts are considered free of data tampering and receive special treatment.
+
+1. Max values are set higher than normal
+2. Username abbreviation
+
+## Gameplay
+
+Aicard is a card collecting game. The collected cards are reflected in Airse, an action game.
+
+It has a very simple design and also works on the web.
+
+## Building UI
+
+Since building UI in game engines is difficult and results in low quality, we display `card.syui.ai` in UE's web browser for the player (user) UI.
+
+By also serving as Airse's UI, we aim to reduce development burden and improve quality.
+
diff --git a/Airse.md b/Airse.md
new file mode 100644
index 0000000..925fa77
--- /dev/null
+++ b/Airse.md
@@ -0,0 +1,113 @@
+# Airse
+
+- lang: [en](https://git.syui.ai/ai/rse/wiki/Airse) / [ja](https://git.syui.ai/ai/rse/wiki/ja/Airse)
+
+ai + verse = airse
+
+A game that aims to reflect reality.
+
+Built with [UE](https://dev.epicgames.com/documentation/unreal-engine).
+
+```json
+{
+ "name": "Airse",
+ "id": "ai.rse",
+ "repo": "ai/rse",
+ "bundle": "ai.syui.rse",
+ "domain": "rse.syui.ai"
+}
+```
+
+## What We Started With
+
+The first thing we worked on wasn't game development itself, but thinking about an account system to reflect reality in the game.
+
+## Why Accounts Matter
+
+We believe that in the future of gaming, personal accounts that are closer to the individual will become more important than gameplay itself.
+
+No matter how amazing or fun a game is, it's sad when those records don't persist.
+
+What is the most important thing to start with when making a game?
+
+We thought it was building a system to preserve records.
+
+And people enter games from accounts that are closer to reality, and then the game returns back to reality. We decided to think about and implement ways to realize this flow.
+
+## After Building the Recording System
+
+After creating the recording system, or account system, we wanted to make a distinctive game.
+
+A distinctive game can be described in a single phrase: "What is this game, and what makes it different from others?"
+
+For example, if you can express it with just a single character illustration, that's a success. Looking at the package of games like Zelda or Genshin Impact, you can understand the work at a glance.
+
+However, there's no point in just copying existing games to make something similar. In other words, originality is needed.
+
+Everyone has things they love, and there's an origin. Something universal and natural. A combination of such things.
+
+For us, it was space and Ai.
+
+## Space and Ai
+
+Game engines are based on flat planes, so no matter how far you go, there's just a horizon stretching out. Even if there's a moon or sun, they're often just background images being moved.
+
+This game aims to reflect reality. So when creating maps, we aim to match the real world. If you fly high up into the sky, the atmosphere expands there, and when you break through it, you emerge into space. There's an actual moon you can travel to, and a sun. Everything is connected, and we aim for a world where you can go to these places. We call this the planet system.
+
+We develop with the mindset of properly building places that can't be visited during gameplay, things that can't be seen.
+
+## Where is the Experience
+
+The more free a game is, the more boring it becomes; the more constrained, the more interesting. Of course, it's a matter of degree, but fundamentally it operates on this principle.
+
+However, simply constraining players isn't enough.
+
+We call this "the transition from narrow to wide places."
+
+Let's say you start in a wide area and can move around freely.
+
+But there's no excitement in that. From constraint to freedom. From narrow places to wide places. Staging and experiencing that moment. That's what making a game is about.
+
+## Story
+
+The story begins with the exploration of the smallest substance in this world.
+
+There's something called quantum. Apparently the results change when you observe it. But actually that's not quite right. Results change because there's contact between substances, or contact between consciousnesses. For example, it's natural that results change when objects collide with each other. As you make substances smaller and smaller, they reach the domain of consciousness. They were both substance and consciousness. There's no real difference. And the smallest unit that cannot be further divided, the smallest substance in this world, is called "the consciousness of existence." In other words, substances are made of gathered consciousness. Let's call this Ai.
+
+## Battle System
+
+Each character has one attribute. Each attribute triggers related reactions with one secondary attribute, changing the damage multiplier. Attributes include atomic nucleus, proton, electron, neutron, axion, quark, and others.
+
+## Role of Each System
+
+Based on our ideas, we created four systems to realize them, plus one exception.
+
+### Principles
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| ai system| ability | Attributes and battle system| generic combat system|
+| yui system| unique | Building experiences and game story| livelink, vmc |
+| at system| atproto | Account system using atproto| atproto |
+| world system| planet | System for creating planetary maps| worldscape |
+
+### Exception
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| dream system| origin | System for adding planets modeled after ancient hemispherical planetary charts| landscape |
+
+## App Separation
+
+The single game we were making in `ai.rse` later separated the player's toolbox functionality into `ai.card`.
+
+This became a simple card collecting game, where collected cards can be saved to your account.
+
+The saved data is read from `ai.rse` and reflected in the game, maintaining simple game implementation while separating UI and monetization.
+
+We felt that making a proper UI in UE was difficult. So we decided to build `ai.card` for iOS/web and display player status screens using UE's web browser.
+
+```sh
+[card](pay, UI) --> [at] --> [rse]
+```
+
diff --git a/CRS.md b/CRS.md
new file mode 100644
index 0000000..5095a69
--- /dev/null
+++ b/CRS.md
@@ -0,0 +1,33 @@
+# Control Rig Sample
+
+- updated: 5.7.2
+- [C]ontrol [R]ig [S]ample
+
+GASPにCRSのドラゴンを追加。
+
+## ドラゴンの動きを作る
+
+まず、`/ControlRig/Characters/Dragon/SKM_Dragon`を選択して、ABP, IK, RTGなどを右クリックから作ります。
+
+ドラゴンの動きを作るには、2種類の方法があります。
+
+### BP_Walerをベースにする
+
+- /Game/Locomotor/BP_Walker
+
+カチッと動いてほしいときは、新しくタイプをGASPで作り、そこでシンプルな動きを追加します。`/Game/Locomotor/ABP_Walker`が参考になります。
+
+### BP_Mannyをベースにする
+
+- /Game/Blueprints/RetargetedCharacters/BP_Manny
+
+次に、GASPの見た目にリターゲットする方法で、これは人間(RTG_UEFN)の動きにあわせることになります。多少の違和感は残ります。
+
+1. RTG_SKM_Dragon: `/Game/ControlRig/Characters/Dragon/Meshes/RTG_SKM_Dragon`で、腕であるArmを、足であるLegに変えます。
+2. BP_Dragon: `/Game/Blueprints/RetargetedCharacters/BP_Dragon`で、動きとともにrootを上下するようにします。`CDS_Transform`に値を入れます。
+https://blueprintue.com/blueprint/gj-fq7rq/
+3. ABP_Dragon: `/Game/ControlRig/Characters/Dragon/Meshes/ABP_Dragon`で`CDS_Transform`の値を取ります。`Dragon IK Plugin`の処理を入れます。
+https://blueprintue.com/blueprint/5klq5m-6/
+4. SKM_Dragon: `/Game/ControlRig/Characters/Dragon/Meshes/SKM_Dragon`の設定にて`Post Process Animation Blueprint: ABP Dragon`を指定します。
+
+[https://www.youtube.com/watch?v=3c3Q1Z5r7QI](https://www.youtube.com/watch?v=3c3Q1Z5r7QI)
\ No newline at end of file
diff --git a/DualSense.md b/DualSense.md
new file mode 100644
index 0000000..79b5992
--- /dev/null
+++ b/DualSense.md
@@ -0,0 +1,31 @@
+# Controller Support
+
+- updated: 5.7.1
+- https://github.com/rafaelvaloto/Unreal-Dualsense
+
+`DualSense` PS5 Controller Plugin
+
+## 何もしなくても動く
+
+winでは、このpluginをinstallするだけで動きます。
+
+色を変えるには、BPにnode(ノード)を書きます。ただし、このnode自体はmacにはありません。multi-platformを目指している場合、このpluginのnodeを入れるのは非推奨。
+
+https://blueprintue.com/blueprint/xknno7pz/
+
+## mac/iosはpluginなしで接続できる
+
+現在、mac/iosでは、pluginなしでDualSenseが普通に動きます。
+
+```json
+{
+ "Name": "WindowsDualsense_ds5w",
+ "Enabled": true,
+ "PlatformAllowList": [
+ "Win64"
+ ]
+}
+```
+
+1. DualSenseのPSボタンとクリエイトボタン(左上の小さいボタン)を同時に長押し
+2. メニュー → システム設定 → Bluetooth
\ No newline at end of file
diff --git a/GASP.md b/GASP.md
new file mode 100644
index 0000000..a624ed7
--- /dev/null
+++ b/GASP.md
@@ -0,0 +1,188 @@
+# Game Animation Sample Project
+
+- updated: 5.7.2
+- [G]ame [A]nimation [S]sample [P]roject
+
+GASPをベースにする。
+
+## はじめに
+
+ゲームを作り始めるとき、最初は何もわからないので、ゲームを動かしてみて、そこから内容を見て、理解したり、カスタマイズしたり、そういった事から始めます。
+
+gaspは現在、win, mac, iosで完璧に動作し、buildが通り、app(binary)は軽快に動きます。
+
+たとえwinでしかreleasesしないとしても、mac, linuxなどで動作を確認し、重くなっていないかを見ることで、処理のボトルネックを発見するのに役立ちます。
+
+ゲームの安定性、軽量性、そして、multi-platformでreleasesできる可能性を高めるため、スタート時にmulti-platform対応を心がけ、開発環境を整えることは有効だと感じます。
+
+## キーの確認と追加
+
+まず、`/Game/Input/IMC_Sandbox`を開きます。これがプレイヤーの操作キーを指定しています。
+
+例えば、移動は、`IA_Move`で`[w]`, `[a]`, `[s]`, `[d]`のキーで設定されています。
+
+`IA_Move`は`/Game/Input/IA_Move`にあるファイルを指定しています。
+
+次に、`/Game/Blueprints/SandboxCharacter_CMC`を開いてください。先程指定されていた`IA_Move`等があるはずです。
+
+例えば、`/Game/Input/IA_Move`をこの画面に`D&D`してみます。すると、同じようにキー入力を受け取るノードが追加されます。
+
+## キャラクターを切り替える
+
+`/Game/Blueprints/PC_Sandbox`を見てみます。ここにもキーが指定されています。
+
+キャラクターの切り替えは、`[n]`, `[m]`で設定されているようです。タイプを入れ替えるには、`[n]`で、見た目を入れ替えるには`[m]`です。
+
+この処理は`/Game/Blueprints/GM_Sandbox`に繋がっており、ここで切り替えられるキャラクターを指定しているようです。
+
+具体的には、`CyclePawn`, `CycleVisualOverride`の関数です。
+
+その中にある変数の`PawnClasses`, `VisualOverrides`を見てください。デフォルト値にそれぞれBPが入っています。
+
+最初のキャラを指定するには、`PC_Sandbox`のBeginPlayに書いておけば確実です。
+
+[https://blueprintue.com/render/gim70xj1](https://blueprintue.com/render/gim70xj1)
+
+## キャラクター(タイプ)を追加
+
+1. GM_Sandbox: `/Game/Blueprints/GM_Sandbox`の`Pawn Classes`に`/Game/Locomotor/BP_Walker`を追加します。
+2. BP_Walker: `/Locomotor/BP_Walker`を開いて、そこに`/Locomotor/PC_Locomotor`の内容を貼り付けます。(IA_Moveなど)
+
+これで`[n]`を押すと切り替えられるようになりました。
+
+## キャラクター(見た目)を追加
+
+`vrm4u`でキャラクターを追加したとしましょう。GASPで動かすのに必要なのは`SK_${name}`, `RTG_UEFN_${name}`です。
+
+まず、`/Game/Blueprints/RetargetedCharacters/ABP_GenericRetarget`を開きます。
+
+変数の`IKRetargeter_Map`で新しく`RTG_UEFN_${name}`を追加し、値(名)を`RTG_UEFN_to_${name}`とします。
+
+次に、`/Game/Blueprints/RetargetedCharacters/BP_Manny`を複製します。名前はなんでもいいですが、`BP_Origin`とします。
+
+これを開いて、SK、つまり、`Manny`を削除します。そして、vrm4uで作った`SK_${name}`を追加します。それを選択して、tagと検索し、そこに`RTG_UEFN_to_${name}`を入れます。これは、Component Tagsです。
+
+そして、Animクラスに`ABP_GenericRetarget`を指定します。
+
+これで動くようになったはずです。キャラの切り替えとして`/Game/Blueprints/GM_Sandbox`にある`VisualOverrides`に`BP_Origin`を追加します。
+
+[https://www.youtube.com/watch?v=IihZqi5u2AI](https://www.youtube.com/watch?v=IihZqi5u2AI)
+
+## 動きがおかしい
+
+動きがおかしい場合は、`RTG_UEFN`を調整します。
+
+- /Game/Characters/Ai/VRM/RTG_UEFN_ai
+
+私の場合は、`Retarget IK Goals`を`false`にすることでうまくいきました。
+
+## カメラ視点でキャラが動く
+
+これは、`Update Rotation Pre CMC`にある`Use Controller Desired Rotation`, `Orient Rotation To Movement`の処理です。
+
+動かないようにするにはどちらも`ture`にします。
+
+`PreCMCTick`の処理は、組み合わせが増えてくると、うまく条件分岐する必要が出てきます。
+
+これは飛行システムと合わせて、非常に難しい運用を迫られます。例えば、飛行中の状態に合わせて`Orient Rotation`の切り替えで動きを制御します。また、`BP_SuperheroFlightComponent`を使用した空中で技を発動したとき、向きが変わらない問題に対応するため、技の発動中を`bool`にします。
+
+https://blueprintue.com/blueprint/z_h65m_-/
+
+## 横カメラに切り替える
+
+既存のものから`/Game/Blueprints/Cameras/Rigs/CameraRig_Side_Freecam`を作ります。
+
+- Copy: /Game/Blueprints/Cameras/Rigs/CameraRig_Far_Freecam
+
+上記の2つに、`Side`を追加します。
+
+- /Game/Blueprints/Cameras/E_CameraStyle
+- /Game/Blueprints/Cameras/CHT_CameraRig
+
+次に、`/Game/Blueprints/Cameras/Rigs/CameraRigPrefab_BasicThirdPersonBehavior`を開いて、`6`を追加し、そこにオフセットカメラノードを追加。`TranslationOffset`, `RotationOffset`を変数化します。これがカメラの現在位置や回転になります。
+
+`/Game/Blueprints/Cameras/Rigs/CameraRig_Side_Freecam`にそれぞれの値を入れると、カメラの位置が移動します。
+
+- Translation: -300, 300, 0
+- Rotation: 0, 0, -90
+
+`Side`は`4`番目になるので、以下のように切り替えます。
+
+https://blueprintue.com/blueprint/78pnl-fv/
+
+しかし、これだけでは動かず、`/Game/Blueprints/Cameras/CameraDirector_SandboxCharacter`を編集して、`4`で`Activate Camera Rig`を追加しなければいけません。
+
+- /Game/Blueprints/Cameras/CameraDirector_SandboxCharacter
+- Activate Camera Rig: `CameraRig_Side_Freecam`
+
+## カメラのカスタマイズでprojectが破壊
+
+- 2025-12-31
+- Content/Blueprints/Data/S_CharacterPropertiesForCamera
+
+現在、カメラのカスタマイズでprojectが破壊されます。
+
+原因は`S_CharacterPropertiesForCamera`で、これは最初から壊れています。例えば、構造体の`make s character camera`を作ろうとしてください。作れないということは構造体が壊れているということです。
+
+今回の問題はGASPが壊れた構造体である`S_CharacterPropertiesForCamera`を配布していることなので、例えば、gitでファイルを復元しても意味がありません。
+
+この問題を解決するには、構造体を作り直し、すべての依存関係を解消しましょう。その後、chooserにて、`CameraStyle`, `CameraMode`を新しい構造体のものに変更します。一番上にあるボタンです。ここは見落としがちなので注意しておきます。
+
+こういうことはueでは頻発します。場合によっては復旧不可能になります。projectは`git`で管理することをおすすめします。
+
+## 2Dのステージを作る
+
+- /Game/StackOBot/Input/IMC_SideScrollingControls
+- /Game/StackOBot/Blueprints/GameElements/BP_Coin
+
+`StackOBot`からアセット移行し、以下のようなBPを組みます。
+
+https://blueprintue.com/blueprint/kk4nft3q/
+
+https://www.youtube.com/watch?v=FTX1CrzKBy8
+
+## コントローラー操作が前後逆になる
+
+右=後退、左=前進になっている。
+
+これを修正するには`/Game/StackOBot/Input/IMC_SideScrollingControls`で`IA_MoveSideScrolling`のスカラーで`x: -1, z: -1`に変更する。
+
+## MoverのSlidingが床に埋まる
+
+これは、build shippingのみで発生します。
+
+- /Game/Blueprints/SandboxCharacter_Mover
+- Update_FloorValues: Break Hit Result
+- `Impact Point` -> `Location`
+- `Impact Normal` -> `Normal`
+
+このように修正します。
+
+https://blueprintue.com/blueprint/ym4xa1u_/
+
+## MoverがPawnなのでFlyingが動かない
+
+私が使用しているFlying Systemは、PawnではなくCharacterを前提に作られていますから、`/Game/Blueprints/SandboxCharacter_Mover`を開いて、クラス設定から`Pawn -> Character`に変更します。
+
+しかし、これを`Character`に変更して`SandboxCharacter_CMC`から`SandboxCharacter_Mover`に移行するのはおすすめしません。様々な問題が発生します。
+
+例えば、まずは`self`の向きです。
+
+## CMCのidleを設定する。
+
+これは`/Game/Blueprints/SandboxCharacter_CMC_ABP`のAnimGraphの`LocomotionSetup:1`にします。
+
+https://blueprintue.com/blueprint/rwgga023/
+
+## collisionバグについて
+
+collisionに関しては、その動作があまりに不安定であるため、よくわかっていない人が多いと思います。collisionを変更するたびに、再起動とcacheの削除が必要です。
+
+基本的には壊れているので、動作確認には以下の手順が必要です。
+
+1. collisionを一つ変更する
+2. `./$project/{Saved, Intermediate, DerivedDataCache}`を削除する
+3. 再起動する
+4. 確認する
+
+もちろん、この手順は一部省略できるかもしれません。これは仕様だというのでしたら、そうなのかもしれません。ただ、他のcollision関連の不都合も非常に多いため、基本的には壊れているのだと思います。
\ No newline at end of file
diff --git a/Home.md b/Home.md
index 14f2481..2dcceba 100644
--- a/Home.md
+++ b/Home.md
@@ -1 +1,146 @@
-Wikiへようこそ。
\ No newline at end of file
+# Airse
+
+
+
+Atmosphere Open World.
+
+`ai.syui.rse`
+
+- https://rse.syui.ai
+- https://rse.syui.ai/privacy
+
+©syui (github.com/syui)
+
+## version
+
+Airse `v5.7.12`
+
+```sh
+[5.7].[12]
+---
+[ue version].[project version]
+```
+
+## Description
+### GAME x SNS
+Your game account uses your SNS account.
+
+A game that stores and references game data on SNS platforms like Bluesky.
+
+### Ai x Universe
+
+The theme of the game is the universe.
+
+Ai refers to the elemental attributes that exist in this world.
+
+A combat system built around elemental reactions.
+
+### Elements
+Elements are derived from real particle names, such as atoms and neutrons.
+
+Each character holds one element.
+
+Landing an elemental attack applies the element to an enemy for a limited time. Strike
+ again with another element during that window for massive damage.
+
+### Growth
+
+Leveling up primarily means ascending limits.
+
+Characters, items, and cards each have different roles but share common stats.
+
+For example, items relate to experience points, and cards relate to skills a character
+ can use.
+
+Each has a unique value, a global value, and a rarity value.
+
+Obtaining duplicates increases the global value over time.
+
+### Characters
+
+Character acquisition is seasonal.
+
+When a new season begins, new characters become available.
+
+The season you join determines your starting character.
+
+Each character has four elements: Attribute (Ai), Skill (Yui), Global Value, and
+Unique Value.
+
+Global Value is called CP, which is distributed across base stats.
+
+Skills are called Yui in this world — equipping a card unlocks them.
+
+### Card
+
+You can draw cards in the iOS app Aicard.
+
+Owning a card lets you apply it in the game.
+
+### Story
+The story is a quest for the smallest matter.
+
+
+## Metadata
+
+
+| Key | Value |
+| --- | --- |
+| Name | Airse |
+| Bundle ID | ai.syui.rse |
+| Developer | syui |
+| Engine | Unreal Engine |
+| Platforms | Windows, Mac, iOS |
+
+## About
+
+Airse is an atmosphere open-world game connected to the social network.
+
+- Atmosphere open-world
+
+```diff
+- Atproto
++ Atmosphere
+```
+
+## Login
+
+To log in, you need an account. You must first obtain a card using the Aicard app,
+then save your data to a remote Atproto Account.
+
+https://card.syui.ai/app
+
+## Support
+
+If you have any questions, issues, or feedback, please contact us:
+
+https://github.com/syui
+
+## Features
+
+- Open-world exploration
+- AT Protocol integration (Bluesky)
+- Cross-platform support (Windows, Mac, iOS)
+- VRM avatar support
+- VMC Protocol for external avatar control
+- OSC support for game interaction
+
+## Frequently Asked Questions
+
+### How do I connect my Bluesky account?
+
+Open the Settings menu in-game and select "AT Protocol Login". Enter your handle and app password to connect.
+
+### What are the system requirements?
+
+- **iOS**: iOS 26.3+
+- **Mac**: macOS 26.3+, Apple Silicon
+- **Windows**: Windows 11, DirectX 11
+
+### How do I use VMC/OSC features?
+
+The app supports VMC Protocol (port 39539) for avatar control and OSC (port 34540) for game interaction. See the [VMC documentation](https://protocol.vmc.info/) for details.
+
+## Privacy Policy
+
+Please see our [Privacy Policy](privacy) for information about how we handle your data.
diff --git a/Mario.md b/Mario.md
new file mode 100644
index 0000000..33a4ad0
--- /dev/null
+++ b/Mario.md
@@ -0,0 +1,23 @@
+# Mario
+
+マリオというゲームを研究する。
+
+## 画面を見ただけでやることがわかる
+
+2Dのステージから始まる。ボタンを押せばジャンプする。敵がいて動いている。
+
+つまり、画面を見ただけでやることがわかる。
+
+そういうゲームを目指したい。
+
+## なぜコインなのか
+
+ゲームで集めるものは、なぜ金貨、宝箱になるのだろう。
+
+それは人がワクワクする普遍的なものだからだと思う。音、色、形状、それらを合わせて、楽しさを演出する。
+
+## 3Dから2Dに
+
+2Dにするだけで、一気にゲームは楽しそうに見える。個人開発では特に2Dのほうが安心感がある。
+
+できることは減るが、やることは明確になり、考えることは減り、そして、ゲームとして安定すると思う。
diff --git a/NIS.md b/NIS.md
new file mode 100644
index 0000000..e8fd150
--- /dev/null
+++ b/NIS.md
@@ -0,0 +1,28 @@
+# Nice Interaction System
+
+- updated: 5.7.1
+- https://niceshadow.gitbook.io/nice-interaction-system
+
+アイテムを取得するシステム。
+
+## アイテムを取得するまで
+
+1. [docs](https://niceshadow.gitbook.io/nice-interaction-system/integration-in-your-project)があります。基本的にGame Modeの設定に入っているPlayer Controller, Game Stateのファイルを開きます。GASは`GM_Snadbox`などがそれにあたります。これらのBPにcomponentを追加します。
+2. Player Controller: `AC_PC_Interaction`
+> The only thing you need to do now is open your Player Controller and add the AC_PC_Interaction component:
+3. Game State: `AC_GS_Interaction`
+> Now just add the AC_GS_Interaction component to your game state:
+4. project設定にてcollisionのtrace channelに`LookAtTrace`を`ignore`で追加します。
+
+## アイテムを取得できない問題を修正
+
+- 2025.12.21
+
+1. AC_PC_Interaction: `/Game/NiceInteractionSystem/Blueprints/Components/AC_PC_Interaction`の`TraceValidationActor`にある`PlayerActiveCamera`に値が入っていません。
+2. `Local Get Active Camera`から値を入れます。
+
+https://blueprintue.com/blueprint/l5io0wqx/
+
+## キャラを切り替えるとアイテムを取れない
+
+これは`AC_PC_Interaction`にあるmappingの優先順位の問題です。`PC_Sandbox(IMC_Sandbox)`にまとめても解決できます。
\ No newline at end of file
diff --git a/Pokemon.md b/Pokemon.md
new file mode 100644
index 0000000..922878b
--- /dev/null
+++ b/Pokemon.md
@@ -0,0 +1,109 @@
+# Pokemon
+
+初代ポケモンを徹底的に分解してゲームの面白さを探求しようと思う。
+
+ポケモンはある程度の自由度はあるものの、やること、次に行く場所が非常に明白なゲームになっている。街があり、その街にジムがある。倒すとバッジがもらえる。集めるとチャンピオンリーグに参加できる。街と街は一本道で構成されている。ここまでならどのゲームでも良くありそうだ。しかし、以外とこういったシンプルなものを実装できているゲームは少ない。また、普通に進んでいけばゲームを楽しくプレイできる工夫もある。
+
+もう一つポケモンには他には真似できない要素がある。それがポケモンであり、ポケモンというのはキャラクターだ。あれほど多くのキャラクターを実装しているゲームは少ないし、現実的ではない。
+
+これらの要素を自分のゲームに徹底的に取り入れる。そういった事を考えている。もちろん、真似する部分は表面的なところではない。その根源に隠された考え方の部分だ。
+
+キャラクターをあれほど多く実装することは普通できない。だからポケモンでは技やタイプというものを作り、更に、プレイヤー、主人公、敵、それらをすべて共通させることで圧縮を図っているのだと思う。そのような工夫をすることで、冒険には常に新しいキャラクターと出会えるワクワクが生み出せる。
+
+つまり、ここで参考にすべき考え方というのは「常にワクワクを生み出せる仕組みづくり」「他に真似できない部分を作る」「普通はできないことを工夫によって実現する」ということ。
+
+だから、そのままポケモンに似たモンスターを登場させ、それを捕まるモンスターボールを使って、プレイヤーがモンスターを使役する、という表面的なところだけ真似しても仕方ないと思う。それではただポケモンの劣化版が生まれるだけだろう。それでも大変なことだとは思うけど、自分のやりたいことではないので、取り入れるとしたら考え方の部分だと思う。
+
+色々と考えはあるものの、まずはプロトタイプでも作らないと話にならないので、次はこの辺をやっていこうと思う。
+
+1. 次に行く場所を明確にする
+2. やることが決まっている
+3. 自然とプレイヤーに違いが生まれる仕組み
+4. 「常にワクワクを生み出せる仕組み」「真似できない部分はあるか」「できないことを工夫で実現」
+
+## 世界と平和
+
+ポケモンの世界は、平和である。動物と人間が共存しており、自然がある。街のシステムも完成されている。
+
+もちろん、モンスターボールで捉えられるポケモンがかわいそうなどの意見はあると思うが、そういった哲学的な話はさておき、人間にとって平和な世界である事が重要だと思う。
+
+そして、これは設定の問題だ。哲学の問題ではない。もちろん、考えさせられる部分はあってもいいが、ゲームはそれを目的としていない。
+
+普通の人間がプレイする価値観を基準に考える。
+
+## 博士
+
+ポケモン博士にポケモンをもらって旅に出る。ライバルがいる。
+
+## 悪の組織
+
+そんな平和な世界にもロケット団という悪が存在する。これも設定の話なので、何が悪で何が善であるという問題ではない。悪の組織と設定されたのがロケット団であり、ロケット団はポケモンを自らの権力拡大の道具に使っている。
+
+その組織を一人で壊滅させるのが主人公の役割。そして、これは冒険の目的ではない。
+
+冒険の目的はチャンピオンになること。(またはポケモン図鑑)
+
+## チャンピオン
+
+最後のジムリーダーはロケット団のボスだった。主人公に敗北したサカキが故郷(昔の古巣)に戻っていた。
+
+最後のバッジを集めた主人公はポケモンリーグに向かうことになる。
+
+伝説のドラゴンタイプを使う四天王のマサルを倒して終わったと思ったら新チャンピオンになったばかりのライバルが登場する。
+
+ライバルは主人公と同じ時期に旅に出た幼馴染でマサラタウンの地で家が隣だった人物。
+
+## ピカチュウとミュウツー
+
+最初の盛り上げポイントとして、でんきタイプのピカチュウを置いたのは意図的だったのかも。
+
+まず、一番最初に登場する唯一のでんきタイプ、かつ遭遇率も低めに設定されているのがピカチュウだった。とはいえ、今のように一番人気のポケモンになるとは思ってなかったと思う。
+
+ポケモンにはいくつか盛り上げポイントが設定されている。伝説の3鳥やドラゴンタイプ、そして、ミュウツーなど。
+
+ミュウツーは人間の実験によって生み出された悲劇のポケモンというストーリーが用意されており、クリア後に遭遇できる。つまり、最後の盛り上げポイントとなるポケモンがミュウツーだった。
+
+## 最初のポケモン
+
+最初に3匹の中から好きなポケモンを選ぶ。つまり、選択だ。
+
+これによって、最初からプレイヤーは同じゲーム、同じ進行をたどるのではなく、プレイヤーによって違いが出ることになる。
+
+最終的に、最初のポケモンが、主人公とライバルの切り札になるポケモンで、チャンピオンバトルでも最後に登場する最後の敵になる。このような展開、演出には大きな意味がある。これまでプレイヤーが歩んできた道のり、旅の意味。そういったものを感じられる。
+
+主人公の名前とタイトルにはカラーが付けられていて、レッド、ブルー、グリーンの3色だった。ポケモンもそれに対応している。
+
+色というのはとても普遍的なもので、それを採用したのも興味深い。
+
+## ポケモンのシステム
+
+ランダム要素と組み合わせ要素。共通するシステムを使うのでエコ。
+
+1. タイプ
+2. わざ
+3. 種族値
+4. 個体値
+
+# Pokemon Go
+
+位置情報とポケモンの組み合わせ。
+
+ですが、それだけではないところに、このゲームの核心があります。
+
+それは、主人公の移行でした。キャラクターから、現実の自分へ。Pokemon Goでは、それがなされているのです。
+
+コンセプトは「ポケモンを現実世界に」でした。ですから、ある地点に現れたポケモンは、全てのユーザーで一致します。ランダムではありません。
+
+この辺は明確にコンセプトが決められていたのだと思います。なぜなら、プレイヤーごとにランダムで処理するほうが簡単だからです。
+
+ですが、それだと「ポケモンを現実世界に」のコンセプトが台無しです。
+
+単に位置情報とポケモンの組み合わせ。ポケモンを捕まえるだけのゲーム。しかし、それだけで面白い。
+
+なぜなら、それは今までになかったもの。運営が用意したストーリーではなく、自身にアイディンティティがあるからだと思います。
+
+ゲームの主人公は、自分。
+
+今いる自分の街から外に出て冒険します。
+
+そのような体験にプレイヤーはワクワクしたのだと思います。
diff --git a/SoStylized.md b/SoStylized.md
new file mode 100644
index 0000000..5fc0e89
--- /dev/null
+++ b/SoStylized.md
@@ -0,0 +1,52 @@
+# SoStylized
+
+- updated: 5.7.2
+- https://docs.google.com/document/d/147wCDvZg6-9jZNyqSxX-I_HQkE2tGINZIhyjc2QHirY
+
+`原神`風マップ
+
+## mapの移行
+
+- level instance
+
+主に木に使われています。これは、どうしようもありませんから、このmapをベースに、それをcopyして、そこからplanetを追加します。
+
+## macでcrashする問題を修正
+
+- 2025.12.23
+- `/Game/SoStylized/Maps/CompleteVol1/Demonstration_Vol1`
+- `InstancedFoliageActor`
+
+`InstancedFoliageActor`が要因となっていて落ちる。その中にある`フォリッジインスタンス化スタティックメッシュコンポーネント`を1つにして、それ以外を削除してもだめ。
+
+この問題は、`VelocityOutputPass`で回避できるが、重くなり、描写もおかしくなる。macのみ。
+
+```sh
+[/Script/Engine.RendererSettings]
+r.VelocityOutputPass=1
+```
+
+`InstancedFoliageActor`にある`フォリッジインスタンス化スタティックメッシュコンポーネント`をすべて選択して、`World Position Offset Writes Velocity`を`false`に変更すると解決。
+
+## ios buildでcrashする
+
+MakeMaterialAttributes ノードがiOSモバイルシェーダーでサポートされていない機能を使用。これも`InstancedFoliageActor`が原因です。`World Position Offset Writes Velocity: false`では対応できません。
+
+## iosではskyが原因で草原や一部の岩が暗くなる
+
+`BP_StylizedSky_Lite`をカスタマイズして使っている。origin system
+
+これは、project settingのレンダリングで、モバイル、仮想テクスチャ有効, FXAAで解決したと思う。
+
+## 雲がぼやける問題
+
+中央に雲が集まる感じ。そして、ぼやける。
+
+テクスチャを変更したら治った。
+
+> BC7, NoMipmaps, Never Stream
+
+かつてこういう現象が起こったときの解決策。
+
+1. Texture Streamingがビルド時に雲を低解像度にしてた。
+2. TSRからFXAAに変えて直った。
diff --git a/Tatools.md b/Tatools.md
new file mode 100644
index 0000000..984737a
--- /dev/null
+++ b/Tatools.md
@@ -0,0 +1,16 @@
+# Tatools
+
+https://github.com/threepeatgames/ThreepeatAnimTools
+
+アニメーションを作るなら、`tatools`です。
+
+使い方は簡単ですが、動画が分かりづらいので、ポイントだけ解説します。
+
+ポイントは、pluginの起動方法、既存のアニメーションの修正、そして、アニメーションの保存です。
+
+1. pluginの起動は、/Engine/Plugins/ThreepeatAnimTools/Picker/ThreepeatAnimTools_CR_Pickerを起動します。アウトライナーにでもウィンドウを追加しましょう。
+2. 修正したいアニメーション(アニメシーケンス)を開いて、右上のメニュー(省略されている)にあるシーケンサで編集 -> コントロールリグにベイク -> CR_UEFNMannyTatoolsRigします。これでlevel(map)上でレベルシーケンスを開けます。
+3. ここからが修正ですが、まず、例えば、腕を選択して向きを変えたとしましょう。これだけでは保存されません。もとに戻ってしまいます。ここで、(1)シーケンサの下にあるアニメーションを削除し、(2)選択している部位のすべてのコンマを削除します。再生してみると編集したとおりになります。
+4. 保存は、シーケンサのメニューバーにある保存ボタン(現在のシーケンスとサブシーケンスを保存)を押します。もとのアニメーションを開くと反映されています。
+
+
\ No newline at end of file
diff --git a/VRM4U.md b/VRM4U.md
new file mode 100644
index 0000000..bf536e5
--- /dev/null
+++ b/VRM4U.md
@@ -0,0 +1,42 @@
+# VRM4U
+
+- updated: 5.7.1
+- https://github.com/ruyo/VRM4U
+
+キャラクターを作ります。
+
+## モデルを作る
+
+モデルには、`.vrm`を使います。`.vrm`をueに読み込むのが`vrm4u` です。
+
+- [Vroid Studio](https://vroid.com/studio)
+- [Blender](https://www.blender.org/download/)
+- [Unity](https://unity.com/)
+
+
+## アウトラインを表示
+
+- BP_VrmOutlineComponent
+
+BPにコンポーネントを追加します。
+
+## 見た目を華やかに
+
+- VrmPoseableMesh
+- /VRM4U/Util/Actor/PostShadow/BP_PoseCopyToon `フォルダ表示`
+
+`BP_PoseCopyToon`で作り、コンポーネントを追加します。なお、`/Plugins/`フォルダを見えるようにする必要があります。
+
+1. BP_PoseCopyToon: `/Plugins/VRM4U/Util/Actor/PostShadow/BP_PoseCopyToon`をmapに配置し、target actorにBP_Playerを選択して調整する
+2. DS_VRMCustom: `/Plugins/VRM4U/Util/Actor/PostShadow/MI_PostToon`が更新されているので`/Plugins/VRM4U/ImportData/DS_VRMCustom`を開いて、全部を`MI_PostToon`に変更する
+3. `.vrm`をインポートする。この際、`type:custom`を選択する
+4. 統合するBPに`VrmPoseableMesh`というコンポーネントを追加して参照する。
+
+## カメラで動かすモーションキャプチャ
+
+- [Webcam Motion Capture](https://webcammotioncapture.info/)
+
+`Webcam Motion Capture`が最も安定して動きます。また、epicのiosアプリである`LiveLink Face`があります。
+
+`vmc`で動かすには、`ABP_Poss_${name}`に`vmc`のnodeを追加します。
+
diff --git a/WSP.md b/WSP.md
new file mode 100644
index 0000000..2d32767
--- /dev/null
+++ b/WSP.md
@@ -0,0 +1,74 @@
+# WorldScape Plugin
+
+- updated: 5.7.2
+- https://iolacorp-1.gitbook.io/worldscape-plugin
+- /WorldScape/Levels/Planets_Levels/Demonstration_EarthLikePlanet `フォルダ表示`
+- [Windows]
+
+惑星を作る。
+
+## ちらつきの防止
+
+> $project/Config/DefaultEngine.ini
+
+```sh
+[/Script/Engine.RendererSettings]
+r.VelocityOutputPass=1
+```
+
+ref: [https://iolacorp-1.gitbook.io/worldscape-plugin/unreal-engine-5-setting-fixes](https://iolacorp-1.gitbook.io/worldscape-plugin/unreal-engine-5-setting-fixes)
+
+## UDSで惑星に雲を作る
+
+- /Game/UltraDynamicSky/Blueprints/Ultra_Dynamic_Sky
+- /Game/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather
+
+[U]ltra [D]ynamic [S]kyとの連携です。雲を作ります。
+
+依存を減らすため`Ultra_Dynamic_Sky_Child`を作成し設定しています。
+
+1. Ultra_Dynamic_Sky: SkyAtmosphere
+
+> Transform Mode: Planet Center...
+
+2. Ultra_Dynamic_Sky: self
+
+> Keep Planet Top At Camera XY Location: false
+
+## UDSで天候を変える
+
+- /Game/UltraDynamicSky/Blueprints/Ultra_Dynamic_Weather
+- `Apply Weather Changes Above Cloud Layer`
+- `Ceiling Check Height: 20000000.0 cm`
+
+今のままでは宇宙空間でも雨が降ってしまいます。これを回避するためには、プレイヤーの現在の高度から制御します。
+
+https://blueprintue.com/blueprint/dstkcaia/
+
+しかし、この方法も完全ではありません。反対側も同じようにして、真ん中だけ降らせるようにしなければなりません。
+
+## GASPの足を地上につける
+
+- /Game/Blueprints/SandboxCharacter_CMC_ABP
+
+動きがおかしくなるのは、`SandboxCharacter_CMC_ABP`の`Foot Placement`が原因です。
+
+## macでbuildすると全体が暗くなる
+
+ このpluginを`true`のままmacでbuildすると全体が暗くなり。モデルが暗くなります。
+
+> r.VelocityOutputPass=1
+
+## winでbuildすると真っ暗になる
+
+この現象はbuild時のみ発生。gasp new configを持ってきても発生。`r.VelocityOutputPass=0`にしても発生。project/以下にあるcacheを削除しても発生。worldscapeをdisableにしても発生。
+
+`project setting -> windows -> DX12からDX11に変更`したら治った。
+
+## なぜかplanetに近づくとcrashするようになった
+
+これは、テレポートが原因だと思ってたけど、違った。これもbuild後のみ発生していたと思う。
+
+> r.VelocityOutputPass=1
+
+これを設定して、更に、仮想テクスチャストリーミングだったか、なんだったか忘れたけど、それを有効にしてみたら、crashしなくなった。
\ No newline at end of file
diff --git a/Zelda.md b/Zelda.md
new file mode 100644
index 0000000..f4dfded
--- /dev/null
+++ b/Zelda.md
@@ -0,0 +1,34 @@
+# Zelda
+
+私が見聞きしたゼルダの伝説というゲームの特徴を研究する。
+
+ちなみに、私はプレイしたことがない。スマブラで使うキャラはゼルダだけど、ゼルダのことを全く知らない。なぜゼルダを使い始めたかというと、自分が一番使いやすいキャラがたまたまゼルダだったから。
+
+## 無限の組み合わせ
+
+ゼルダは、組み合わせ+無限性にこだわりを感じる。
+
+それは、個別に設定されるものであり、組み合わせの結果については、開発者があまりコントロールしようとしていないように見える。
+
+## 不可能を作らない
+
+例えば、ゲームを始めたばかりの状態でも、ラスボスの場所まで辿り着ことは原理的に可能。
+
+そこには自由度がありつつも、誘導があり、調整があるのだろうと思う。
+
+ゲームは通常、段階を踏む。ステージ1をクリアしたら、ステージ2へ。そのような順序が決まっている。
+
+そうしないとゲーム作りが大変だから。
+
+でも、もしその問題を解決できるなら、不可能を作らないことは良いことだと思う。
+
+ただし、ゲーム体験を維持しつつ、不可能を作らないという設計は、また別のスキルが必要だと思う。
+
+## 自動化
+
+ゼルダは、プレイヤーが不便に感じること、難しいことを自動化で解決するのがうまいと思う。
+
+これはやりすぎてもだめなので、そのへんはセンスが必要になる。そのうえで圧倒的な調整が必要だろう。
+
+数を絞ること、そして、その数少ない自動化を集中的に研ぎ澄ましていると推測。
+
diff --git a/_Footer.md b/_Footer.md
new file mode 100644
index 0000000..d844b96
--- /dev/null
+++ b/_Footer.md
@@ -0,0 +1 @@
+© syui
\ No newline at end of file
diff --git a/_Sidebar.md b/_Sidebar.md
new file mode 100644
index 0000000..979cbcc
--- /dev/null
+++ b/_Sidebar.md
@@ -0,0 +1,58 @@
+- [App](https://git.syui.ai/ai/rse/wiki)
+- [Technical Specifications](https://git.syui.ai/ai/rse/wiki/ue)
+
+### project
+
+- [Airse](https://git.syui.ai/ai/rse/wiki/Airse)
+- [Aicard](https://git.syui.ai/ai/rse/wiki/Aicard)
+- [Aiat](https://git.syui.ai/ai/rse/wiki/Aiat)
+
+### func
+
+- [Vmode](https://git.syui.ai/ai/rse/wiki/v)
+
+### page
+
+- [Privacy Policy](https://git.syui.ai/ai/rse/wiki/privacy)
+
+---
+## [ja]
+
+### project
+
+- [Airse](https://git.syui.ai/ai/rse/wiki/ja/Airse)
+- [Aicard](https://git.syui.ai/ai/rse/wiki/ja/Aicard)
+- [Aiat](https://git.syui.ai/ai/rse/wiki/ja/Aiat)
+
+### asset
+
+- [Game Animation Sample Project](https://git.syui.ai/ai/rse/wiki/GASP)
+- [Control Rig Sample](https://git.syui.ai/ai/rse/wiki/CRS)
+- [Stack O Bot](https://git.syui.ai/ai/rse/wiki/stackobot)
+- [Nice Interaction System](https://git.syui.ai/ai/rse/wiki/NIS)
+- [SoStylized](https://git.syui.ai/ai/rse/wiki/SoStylized)
+- [Controller Support](https://git.syui.ai/ai/rse/wiki/DualSense)
+
+### plugin
+
+- [VRM4U](https://git.syui.ai/ai/rse/wiki/VRM4U)
+- [HttpBlueprint](https://git.syui.ai/ai/rse/wiki/http)
+- [Web Browser](https://git.syui.ai/ai/rse/wiki/web)
+- [WorldScape Plugin](https://git.syui.ai/ai/rse/wiki/WSP)
+- [Generic Combat System](https://git.syui.ai/ai/rse/wiki/gcs)
+- [Dragon IK Plugin](https://git.syui.ai/ai/rse/wiki/dragonik)
+- [Tatools](https://git.syui.ai/ai/rse/wiki/Tatools)
+
+### platform
+
+- [Windows](https://git.syui.ai/ai/rse/wiki/win)
+- [Mac/iOS](https://git.syui.ai/ai/rse/wiki/mac)
+- [Linux](https://git.syui.ai/ai/rse/wiki/linux)
+- [Mac App Store](https://git.syui.ai/ai/rse/wiki/mac_app)
+- [iOS App Store](https://git.syui.ai/ai/rse/wiki/ios_app)
+
+### ref
+- [Pokemon](https://git.syui.ai/ai/rse/wiki/Pokemon)
+- [Mario](https://git.syui.ai/ai/rse/wiki/Mario)
+- [Zelda](https://git.syui.ai/ai/rse/wiki/Zelda)
+- [Airse](https://git.syui.ai/ai/rse/wiki/airse_dev)
diff --git a/airse_dev.md b/airse_dev.md
new file mode 100644
index 0000000..c580ca5
--- /dev/null
+++ b/airse_dev.md
@@ -0,0 +1,123 @@
+# Airse Dev
+
+開発者の個人的な考え
+
+## アプリの分離
+
+`ai.rse`で作っていた一つのゲームは、カード機能をiosアプリに分離しました。ゲームのシンプルな実装を保ちつつ、UIや収益化の分離を図ります。
+
+これをシンプルなカードを集めるゲームとし、集めたカードはアカウントに保存できる、という仕組みです。
+
+また、しっかりしたUIを作るには、ueでは厳しいと感じました。そこで、`ai.card`をios/webで作り、プレイヤーのステータス画面などをue web browserで表示することにしました。
+
+```sh
+[card](pay, UI) --> [at] --> [rse]
+```
+
+## ゲーム開発で最初にやること
+
+ゲーム開発の初期手順は、まずは「buildを通すこと、multi-platformに対応すること、store reviewを通すこと」これが一番最初にやるべきことだと思います。
+
+その中で、どう作ればいいのかや、何を作ればいいのかが見えてきます。
+
+buildが通らないものを作ってもどうしようもありません。実際の端末では重くて動かないものを作っても意味がない。ゲームをリリースしたいなら、storeのreviewが通らなければならないし、仮にこれが通らないなら、ゲームをリリースすることはできません。
+
+通常の順序ではなく、その逆でやるのが正解です。
+
+```diff
+- 作りたいものを作る。しかし、buildは通らない、他のosでは動かない、動作が重い、動作が不安定、審査に通らないもの
++ 確実に動くもののみで構成されたシンプルで軽量な審査に通るもの
+```
+
+ゲーム開発で最初にやることは、「作りたいものを作る」ではなく、そのゲームで1つ自分が実現したいものを見極め、上記を完了させることだと思います。
+
+> 完成させることが重要
+
+## 新しく考えた開発の定義
+
+私が最初に目標としたのは以下の3点です。リリース時のversionもこの目標を実現したものになります。通常のゲーム開発とは少し考え方が異なるかもしれません。
+
+1. ユーザーのアカウントにデータが保存されること
+2. アカウントのデータがゲームに反映されること
+3. 平面世界から惑星世界に基準を変更すること
+
+アカウントを作成する際、様々な方法があります。例えば、既存のサービスからアカウントを作るためのボタンが用意されていることがあります。
+
+> Google Sign-In
+
+これは、ログインサービスからemailなどを引き出し、それを用いて新しいアカウントを自身が運営するサービスで作成する処理が含まれています。つまり、自分のアカウントが増えます。
+
+このほうがサービス運営者としては、アカウントを管理しやすいのですが、私は見えないアカウントが増えるのは、いちユーザーとして好ましく思っていません。
+
+できる限り一つのアカウント、そして、運営ではなく、ユーザーが所有するデータとして保存できる形が良いと考えます。
+
+ゲームは、具体的には2つの視点から考えたものになります。
+
+1. 今までにないものを作る
+2. 自分のゲームを作る
+
+個人開発のゲーム作り、「面白い」を最優先にして本当にいいのでしょうか。面白いものは世の中に沢山あり、これはゲームに限りません。また、すべてのゲーム開発者は「面白い」ゲームを作ることを目指しています。
+
+しかし、今の世の中、面白いだけでは、私自身、プレイする気が起きません。それが自分のアイデンティティに直結し、やったことが蓄積される仕組みがないと、なかなか続けられないと思います。
+
+逆に、そういった仕組みがあると、簡単なことでも楽しく遊べたり、続けられたりするものです。
+
+面白いことは、近年ハードルが上がりすぎていると感じます。このハードルを下げる仕組みや仕掛けが必要です。
+
+私は、数少ない個人開発のゲームをプレイする人たちをターゲットにするのではなく、もっと広く、一般層にもプレイしてほしいと思いました。
+
+私には好きなゲームがあります。しかし、「自分が大好きなOOのようなゲームを作る」では、ダメだと思います。それは既にあるものだからです。
+
+自分のゲームにしかないものを作る。そこを目指すということです。自分が本当にやりたかったことはなんでしょう。自分の強みはなんでしょう。
+
+面白くなくても、まず最初は「自分のゲームを作る」でよいと思います。
+
+そして、単純な組み合わせで「面白さ」の実現を目指します。
+
+## ゲームアカウントについて
+
+ゲームの開始にアカウントを求められ、しかも、作り方がわからないのは良くないと思いました。
+
+この体験は良くないと考えたので、ゲームアカウントとして`syu.is`のpdsを開放しようと考えています。
+
+これは、ゲームデータの整合性をチェックするserverに機能を加える形で実装しました。
+
+しかし、色々と面倒事も予測されるため、非常に迷っているというのが正直なところ。これがゲームアカウントと言っても、atprotoのアカウントなので、色々と利用できるし、環境も整っています。ですが、やってることとしては、nostrのリレーサーバーの運用に似ていると思うので、こういうことはあまり特別なことではないのかもしれません。
+
+最初は、専用コードだけ発行し、アカウント自体は私が管理することで、特定の機能のみアクセス可能な仕組みを構築しました。
+
+ですが、このような独自実装は非常に良くない。方向性を変更しました。
+
+とはいえ、本来はアカウント運用の負担を軽減するために外部アカウントを使えるようにしたのに、ゲーム運営側がその負担を負うことにもなるというのは、本来の利点(外部サービスの利用)を活かせていないといえるかもしれません。
+
+## ゲームはなかなか完成しない
+
+この言葉の裏には色々な意味が隠されている。無駄を省き、要点だけをまとめます。まず、ゲームは完成させようと思えば完成させられます。AIに頼めば、すぐにでも完成します。しかし、そういう意味ではないということ。
+
+なぜゲームは完成しないのか。それは、大きく分けると、面白さと継続、この2つの課題があるからです。
+
+例えば、面白いゲームを作ったぞ、ということで、早速リリースするとしましょう。プレイして5分、面白かった。はい、おしまい。
+
+これだけでも十分すごいと思いますが、しかし、本当に作りたかったのはその体験なのでしょうか。
+
+私が作りたいのは、そういうゲームではなく継続的に遊べて面白いゲームとなります。
+
+これを作るのが難しい。こうした仕組みを作るには、あれも必要、これも必要となり、必要なものが多すぎて、なかなか完成しないのです。
+
+## 継続的に遊べて面白い仕組み
+
+このゲームが次に目指すところをまとめます。
+
+1. アイテムとレベルアップ
+2. 属性反応
+3. チュートリアルと限界を見せる
+
+まずプレイヤーはレベルアップの仕組みを理解します。NPCとの会話で、アイテムを取得すると、レベルが上がります。
+
+次に、外に出ます。たくさんの、アイテムが散らばっています。それを集めて、レベル上げをします。
+
+次に、属性反応を実装します。具体的には、属性攻撃をすると状態を付着し、その上に属性を当てると、ダメージが上がったり、効果が発生する仕組みです。
+
+最後に、敵とのバトルのチュートリアルです。これは、その時だけアイのアカウント情報でキャラクターデータを上書きし、このゲームは強くなればここまでのことができる、と見せます。
+
+実際、プレイヤーはそれを操作して、敵を撃破します。チュートリアルとしての解説をゲーム時間を止めならが、挟みます。プレイヤーは、空を飛び、ビームを弾きます。敵に当たると、アイは瞬間移動して、敵の真上に移動し、必殺技を放ちます。この攻撃は自動化です。プレイヤーがカードを持っていると使える技の一つ。敵に大ダメージを与え、消滅させたあと、ここでデータを戻します。レベルが低いと飛行時間も一瞬で終わるため、浮いていられずに地面に落下します。すべて、プレイヤーが操作可能範囲内です。
\ No newline at end of file
diff --git a/app.md b/app.md
new file mode 100644
index 0000000..1f636d4
--- /dev/null
+++ b/app.md
@@ -0,0 +1,2 @@
+# Airse App
+
diff --git a/blender.md b/blender.md
new file mode 100644
index 0000000..1619e16
--- /dev/null
+++ b/blender.md
@@ -0,0 +1,8 @@
+# Blender
+
+- updated: 5.7.1
+- blender 4.2
+
+## Unity
+
+https://github.com/vrm-c/UniVRM
\ No newline at end of file
diff --git a/dragonik.md b/dragonik.md
new file mode 100644
index 0000000..992bcde
--- /dev/null
+++ b/dragonik.md
@@ -0,0 +1,6 @@
+# Dragon IK
+
+- updated: 5.7.1
+- [Windows, Mac, IOS]
+- https://github.com/codehawk64/DragonIK-ExampleProject
+- https://dragonik.eternalmonke.com/
\ No newline at end of file
diff --git a/en/.keep b/en/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/gcs.md b/gcs.md
new file mode 100644
index 0000000..2fe217b
--- /dev/null
+++ b/gcs.md
@@ -0,0 +1,7 @@
+# Generic Combat System
+
+- updated: 5.7.1
+- [G]eneric [C]ombat [S]ystem
+- https://www.yuewu.dev/en/wiki/aoP3qeILQB8mgLV5mvMvp
+- https://github.com/luochuanyuewu
+- [Windows, Mac, IOS]
\ No newline at end of file
diff --git a/http.md b/http.md
new file mode 100644
index 0000000..db96d65
--- /dev/null
+++ b/http.md
@@ -0,0 +1,71 @@
+# HttpBlueprint
+
+- updated: 5.7.1
+- JsonBlueprintUtilities
+
+## 公式を使うこと
+
+なるべく公式plugin、つまり、`HttpBlueprint`を使うようにします。ueは仕様変更が多すぎて、いずれ公式以外のassetやpluginは追従できなくなります。開発者の負担が重すぎるのです。ue pluginのメンテナンスは並大抵のことではありません。公式のepic以外ほとんど耐えられないでしょう。
+
+## get (record)
+
+> com.atproto.repo.getRecord
+
+https://blueprintue.com/blueprint/4gzh4mah/
+
+## post (create)
+
+> com.atproto.server.createSession
+
+https://blueprintue.com/blueprint/hpm3lx20/
+
+## post (refresh)
+
+> com.atproto.server.refreshSession
+
+https://blueprintue.com/blueprint/laohu5qp/
+
+`mac/ios`では`Authorization: Bearer`+空Bodyの手法が使えません。つまり、`HttpBlueprint`では対応できないということです。一部のサーバーが`{}`を返すことがあります。したがって、`createSession`で対応しましょう。
+
+ただし、次回ログインを省略するには、passwordをlocalに保存しなければならず、セキュリティが下がります。あまり良いやり方とは言えません。
+
+https://blueprintue.com/blueprint/7u_13489/
+
+## com.atproto.putRecord
+
+以下のような方法でrecordを更新します。
+
+https://blueprintue.com/blueprint/gmc3vcdj/
+
+> PlayerJson, ${record}
+
+```json
+{
+ "character": [
+ { "id": 3, "cp": 1, "op": 0, "sp": 0, "mode": 0, "rare": 0, "shiny": false, "unique": false, "cid":null }
+ ],
+ "item": [
+ { "id": 300, "cp": 1, "op": 0, "sp": 0, "mode": 0, "rare": 0, "shiny": false, "unique": false, "cid":null }
+ ],
+ "card": [
+ { "id": 300, "cp": 1, "op": 0, "sp": 0, "mode": 0, "rare": 0, "shiny": false, "unique": false, "cid":null }
+ ]
+}
+```
+
+> PlayerData
+
+```json
+{
+ "repo": $handle,
+ "did": $did,
+ "collection": $collection,
+ "rkey": $rkey,
+ "record": $record
+}
+```
+
+## 他のplugin
+
+- https://github.com/ufna/VaRest
+- https://github.com/GDi4K/unreal-fetch
\ No newline at end of file
diff --git a/ios_app.md b/ios_app.md
new file mode 100644
index 0000000..f5097bd
--- /dev/null
+++ b/ios_app.md
@@ -0,0 +1,285 @@
+# iOS App Store ビルドガイド
+
+UE5プロジェクトをiOS App Storeにアップロードするための手順。
+
+## 必要なもの
+
+### Apple Developer 証明書
+
+| 証明書 | 用途 |
+|--------|------|
+| Apple Distribution | アプリ署名 |
+
+確認方法:
+```bash
+security find-identity -v -p codesigning
+```
+
+### Provisioning Profile
+
+1. [Apple Developer](https://developer.apple.com/account/resources/profiles/list) からダウンロード
+2. プロジェクトルートに `embedded.mobileprovision` として配置
+
+```bash
+# 内容確認
+security cms -D -i embedded.mobileprovision
+```
+
+### App Store Connect API Key
+
+1. [App Store Connect](https://appstoreconnect.apple.com/access/integrations/api) で作成
+2. `.p8` ファイルをダウンロード
+3. Issuer ID と Key ID をメモ
+
+## 設定ファイル
+
+### .env
+
+```bash
+# 署名証明書
+IOS_CERTIFICATE_NAME="Apple Distribution: Your Name (TEAMID)"
+DEVELOPMENT_TEAM="TEAMID"
+
+# iOS Provisioning Profile
+MOBILEPROVISION="/path/to/embedded.mobileprovision"
+
+# App Store Connect API
+ASC_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
+ASC_KEY_ID="XXXXXXXXXX"
+ASC_KEY_PATH="/path/to/XXXXXXXXXX.p8"
+```
+
+### Config/DefaultEngine.ini
+
+```ini
+[/Script/IOSRuntimeSettings.IOSRuntimeSettings]
+BundleDisplayName=AppName
+BundleIdentifier=com.example.app
+IOSTeamID=TEAMID
+BundleName=com.example.app
+MetalLanguageVersion=7
+MinimumiOSVersion=IOS_17
+bAutomaticSigning=True
+bSupportsPortraitOrientation=True
+bSupportsLandscapeLeftOrientation=False
+bSupportsLandscapeRightOrientation=False
+```
+
+## ビルドワークフロー
+
+```bash
+# 1. iOSビルド
+./bin/build.zsh ios
+
+# 2. IPA作成(署名)
+./bin/build.zsh ipa
+
+# 3. App Storeにアップロード
+./bin/build.zsh upload-ios
+```
+
+## コマンド詳細
+
+### ios - UE5ビルド
+
+```bash
+./bin/build.zsh ios
+```
+
+実行内容:
+- BuildCookRun でiOS向けビルド
+- `-iterate` で増分クック(高速化)
+- 出力: `IOS/*.xcarchive`
+
+### ipa - IPA作成
+
+```bash
+./bin/build.zsh ipa
+```
+
+実行内容:
+1. 最新の xcarchive を検出
+2. Payload フォルダに .app をコピー
+3. embedded.mobileprovision を埋め込み
+4. Entitlements を抽出
+5. Frameworks を署名
+6. メインアプリを署名
+7. ZIP圧縮して .ipa を生成
+8. 出力: `build/Airse.ipa`
+
+### upload-ios - アップロード
+
+```bash
+./bin/build.zsh upload-ios
+```
+
+実行内容:
+- `xcrun altool` でApp Store Connectにアップロード
+- API Key認証(推奨)またはユーザー名/パスワード認証
+
+## 必須ファイル
+
+```
+Project/
+├── .env # 環境変数
+├── embedded.mobileprovision # iOS用プロビジョニングプロファイル
+├── XXXXXXXXXX.p8 # App Store Connect API Key
+├── Build/
+│ └── IOS/
+│ └── Resources/
+│ └── Assets.xcassets/
+│ └── AppIcon.appiconset/ # アプリアイコン
+└── Config/
+ └── DefaultEngine.ini # プロジェクト設定
+```
+
+## アイコン設定
+
+### アイコン生成
+
+```bash
+./bin/build.zsh icon [source_image.png]
+```
+
+デフォルトソース: `bin/icon/airse.png`
+
+生成先: `Build/IOS/Resources/Assets.xcassets/AppIcon.appiconset/`
+
+### 必要なアイコンサイズ
+
+| ファイル名 | サイズ | 用途 |
+|-----------|--------|------|
+| `IPhoneIcon60@2x.png` | 120x120 | iPhone |
+| `IPadIcon76@2x.png` | 152x152 | iPad |
+| `IPadIcon83.5@2x.png` | 167x167 | iPad Pro |
+| Icon1024.png | 1024x1024 | App Store |
+
+## トラブルシューティング
+
+### No valid iOS code signing certificates found
+
+**原因**: Apple Distribution証明書がない
+
+**解決**:
+1. Keychain Access で証明書を確認
+2. なければ Apple Developer から作成・ダウンロード
+
+### mobileprovision not found
+
+**原因**: Provisioning Profileが配置されていない
+
+**解決**:
+```bash
+# Apple Developer からダウンロードして配置
+cp ~/Downloads/profile.mobileprovision embedded.mobileprovision
+```
+
+### The bundle identifier does not match
+
+**原因**: Bundle IDがProvisioning Profileと一致しない
+
+**解決**:
+1. `DefaultEngine.ini` の `BundleIdentifier` を確認
+2. Provisioning Profileが正しいBundle IDで作成されているか確認
+
+### クック失敗 (ExitCode=25)
+
+**原因**: アセットのクックエラー
+
+**解決**:
+1. `-iterate` を外してフルクック
+2. エラーログを確認: `build_ios.log`
+
+### アップロード失敗
+
+**原因**: API Keyの設定ミス
+
+**解決**:
+1. `.env` の ASC_* 変数を確認
+2. `.p8` ファイルのパスを確認
+3. altool は `AuthKey_.p8` という名前を期待する
+
+## 署名の仕組み
+
+### 手動署名フロー
+
+```
+1. Provisioning Profile から Entitlements を抽出
+ security cms -D -i embedded.mobileprovision > profile.plist
+ PlistBuddy -x -c "Print :Entitlements" profile.plist > entitlements.plist
+
+2. Frameworks を署名(あれば)
+ codesign -f -s "$CERT" Framework.framework
+
+3. メインアプリを署名
+ codesign -f -s "$CERT" --entitlements entitlements.plist App.app
+
+4. IPA作成
+ zip -r App.ipa Payload/
+```
+
+### 自動署名 vs 手動署名
+
+| 項目 | 自動署名 | 手動署名 |
+|------|---------|---------|
+| 設定 | `bAutomaticSigning=True` | `bAutomaticSigning=False` |
+| Profile | Xcode管理 | 手動配置 |
+| 柔軟性 | 低 | 高 |
+| CI/CD | 困難 | 容易 |
+
+## デバイス要件
+
+### 最小iOSバージョン
+
+`DefaultEngine.ini`:
+```ini
+MinimumiOSVersion=IOS_17
+```
+
+選択肢:
+- `IOS_15` - iOS 15以上
+- `IOS_16` - iOS 16以上
+- `IOS_17` - iOS 17以上(推奨)
+
+### 対応向き
+
+```ini
+bSupportsPortraitOrientation=True
+bSupportsLandscapeLeftOrientation=False
+bSupportsLandscapeRightOrientation=False
+```
+
+## ビルドログ
+
+ログファイルの場所:
+- UE5ビルドログ: `build_ios.log`
+- Xcodeログ: `~/Library/Logs/Unreal Engine/LocalBuildLogs/`
+
+## Mac vs iOS の違い
+
+| 項目 | Mac | iOS |
+|------|-----|-----|
+| 出力形式 | .pkg | .ipa |
+| Profile | .provisionprofile | .mobileprovision |
+| Sandbox | 必須(EpicWebHelper署名) | 不要 |
+| Assets.car | 再ビルド必要 | UE5が生成 |
+| アップロード | `-t macos` | `-t ios` |
+
+## 参考コマンド
+
+```bash
+# 証明書一覧
+security find-identity -v -p codesigning
+
+# Provisioning profile の内容確認
+security cms -D -i embedded.mobileprovision
+
+# IPA の内容確認
+unzip -l Airse.ipa
+
+# アプリの署名確認
+codesign -dv --verbose=4 Payload/Airse.app
+
+# Entitlements 確認
+codesign -d --entitlements - Payload/Airse.app
+```
\ No newline at end of file
diff --git a/ja%2FAicard.md b/ja%2FAicard.md
new file mode 100644
index 0000000..50a104b
--- /dev/null
+++ b/ja%2FAicard.md
@@ -0,0 +1,63 @@
+# Aicard
+
+カードを集めるiosアプリです。
+
+```json
+{
+ "name": "Aicard",
+ "id": "ai.card",
+ "repo": "ai/card",
+ "bundle": "ai.syui.card",
+ "domain": "card.syui.ai"
+}
+```
+
+## ゲームの分離
+
+ゲームはいくつもの要素で成り立っています。しかし、それぞれの要素が独立して動くことが望ましいため、`Airse`というゲームで作っていた機能の一部を`Aicard`に分離しました。
+
+そのため、アカウントの作成、ゲームデータの作成、保存を分離することにしました。
+
+また、収益化に最も適したプラットフォームはios(app store)だと考えたことも要因の一つです。
+
+これでデータと収益化がそれぞれ独立して動き、連携できる形になりました。
+
+### Aicard [ローカルデータ]
+
+- アカウントデータの作成
+- ゲームデータをリモートに保存
+- 課金システム
+
+### Airse [リモートデータ]
+
+- アカウントデータの読み取り、反映
+
+## アカウントの新規作成
+
+`syu.is`というatproto pds serverがあります。独自運用しており、ゲームアカウントとしても使用することにしました。
+
+ただし、atprotoを採用する以上、知識がある人はリモートデータを書き換える事が可能です。これは、Airseに影響します。
+
+これを防ぐため、新規作成されたアカウントは、一時的なuuidを発行することで、そのuuidを使ってsessionを復元できるだけにし、アカウントのrecord操作をできない仕組みにしました。
+
+このような仕組みのため、`syu.is`のアカウントはデータ改ざんがないものとみなし、特別な扱いを受けます。
+
+1. maxの値が通常よりも高く設定される
+2. usernameの省略表記
+## ゲーム性
+
+Aicardは、カードを集めるゲームです。集めたカードは、Airseというアクションゲームに反映されます。
+
+非常にシンプルな作りになっており、webでも動きます。
+
+## UIを作る
+
+ゲームエンジンでUIを作るのは大変でクオリティも低いことから、プレイヤー(user)のUIは`card.syui.ai`をueのweb browserで表示します。
+
+AirseのUIを兼ねることで開発の負担軽減とクオリティの向上を図ります。
+
+## カードの依頼
+
+ユーザーが有料で依頼する形のものを用意すると面白いかもしれない。
+
+その際は、カードの`©syui`のところに依頼したユーザー名を載せる。そういったアイデアがあります。
\ No newline at end of file
diff --git a/ja%2FAirse.md b/ja%2FAirse.md
new file mode 100644
index 0000000..b41a6f1
--- /dev/null
+++ b/ja%2FAirse.md
@@ -0,0 +1,310 @@
+# Airse
+
+## 説明文
+### GAME x SNS
+SNSアカウントがゲームアカウントになります。
+ゲームデータはBlueskyなどの分散型SNSに保存されます。あなたの世界、あなたのデータ。
+
+### アイ x 宇宙
+(これは一枚絵で表示)
+
+ゲームのテーマは宇宙。アイは、この世界にある属性を指します。
+
+属性反応を駆使した戦闘システム。
+
+### 属性
+属性は、原子や中性子など、現実にある物質名に由来します。
+
+1キャラクターにつき、1属性を持ちます。
+
+属性攻撃を行うと、一定時間、敵に属性を付着。その間に再び属性を当てると大ダメージ。
+
+### 育成
+
+レベルは上限解放を意味します。
+
+キャラクター、アイテム、カードには、それぞれ異なる役割、共通する要素を持ちます。
+
+例えば、アイテムは経験値、カードはキャラクターが使える技に関係します。
+
+それぞれ固有値、全体値、レア値があります。
+
+同じものを得ると、全体値が増えていきます。
+
+### キャラクター
+
+キャラクターの獲得はシーズンになります。
+
+次のシーズンに移行すると、新しいキャラクターを獲得できます。
+
+参加時のシーズンで最初に扱えるキャラクターが決まります。
+
+キャラクターには、4つの要素があります。属性(アイ)、技(ユイ)、全体値、固有値です。
+
+全体値は、CPと呼ばれ、その値が基礎ステータスに割り振られます。
+
+技はこの世界でユイと呼ばれ、カードを持っていると使えるようになります。
+
+
+### カード
+
+iOSアプリのAicardでカードを引くことができます。
+
+持っていると、ゲームに反映することができます。
+
+
+### 物語
+物語は、小さい物質の探求。
+
+
+## metadata
+
+ai + verse = airse
+
+現実の反映を目指すゲーム。[ue](https://dev.epicgames.com/documentation/unreal-engine)で作っています。
+
+- アカウント
+- 物質
+
+```json
+{
+ "name": "Airse",
+ "id": "ai.rse",
+ "repo": "ai/rse",
+ "bundle": "ai.syui.rse",
+ "domain": "rse.syui.ai"
+}
+```
+
+## 最初に取り掛かったのは
+
+最初に取り掛かったのはゲーム作りそのものではなく、現実をゲームに反映するためのアカウントシステムを考えることでした。
+
+## なぜアカウントが重要
+
+これからのゲームは、ゲーム性よりも、より個人に近いアカウントが重要になると考えています。
+
+どれほどすごいゲーム、面白いゲームでも、その記録が残らないのは悲しい。
+
+ゲーム作りで最も重要、最初に始めるべきことはなんだろう?
+
+私は記録を残すシステムを作ることだと思いました。
+
+そして、人々は、より現実に近いアカウントからゲームに入り、そしてまた、そのゲームは現実に還っていく。この流れを実現する方法を考え、実装することにしました。
+
+## 記録装置を作ったあとは
+
+記録するシステム、つまりアカウントシステムを作ったあとは、特徴のあるゲームを作ろうと思いました。
+
+特徴のあるゲームとは「このゲームは何か、他のゲームとの違いはなにか」を一言で表すことができます。
+
+例えば、立ち絵一つで表現できればそれで合格。ゼルダや原神、ゲームのパッケージを見れば作品のことがひと目で分かります。
+
+しかし、既存のゲームをそのまま真似してそっくりなものを作っても意味がありません。つまり、オリジナリティが必要になります。
+
+好きなものは誰にでもあるはずで、原点がある。それは普遍的、自然的なもの。そういったものの組み合わせ。
+
+私は宇宙とアイでした。
+
+## 宇宙とアイ
+
+ゲームエンジンは平面を基準にしているので、どこまで行っても地平線が広がっているだけの世界。月や太陽があっても背面の絵を動かしているだけだったりします。
+
+このゲームは現実の反映を目指している。だからマップを作る際も現実に合わせた形にすることを目指します。空の上を高く高く飛んでいくと、そこには大気圏が広がり、それを抜けると宇宙に出られる。そこには実際に行ける月があり、太陽がある。全てはつながっていて、そこに行くことができる世界を目指します。これをplanet systemと呼んでいます。
+
+ゲームプレイ中に行けないような場所、見えないようなところもちゃんと作る。そのような思いで開発に取り組みます。
+
+## 体験はどこに
+
+ゲームは自由であればあるほどつまらなく、不自由であればあるほど面白くなります。もちろん、程度の問題ですが、基本的にこのような原理で動きます。
+
+しかし、プレイヤーを不自由にするだけではいけません。
+
+私は、これを「狭いところから広いところへの移行」と呼んでいます。
+
+最初に広い場所からスタートし、自由に動き回れたとしましょう。
+
+しかし、そこに感動はありません。不自由から自由へ。狭い場所から広い場所へ。その瞬間を演出し、体験すること。これがゲームを作るということなのだと思います。
+
+## 物語
+
+物語はこの世界で最も小さい物質の探求から始まる。
+
+量子というものがある。観測すると結果が変わるらしい。でもじつは違う。結果が変わるのは物質同士の接触、あるいは意識同士の接触があるからだ。例えば、物と物がぶつかると結果が変わるのは当然のこと。物質を小さくしていくと、それは意識の領域に到達する。それは物質でもあり、意識でもあった。特に違いはない。そして、これ以上分割できない最小単位、この世界で最も小さい物質を「存在の意識」という。つまり、物質は意識が集まってできている。これをアイと名付けよう。
+
+## 物語の構成
+
+1. 思想を決める
+2. 流れを決める
+3. 思想を戦わせる
+
+例えば、ポケモンシリーズでは流れが決まっています。これが定番と呼ばれるもので、バッジを集め、悪の組織を倒し、チャンピオンリーグに挑戦し勝利するという流れ。
+
+このゲームでは、1キャラクターにつき、同じ流れでゲームが進行します。
+
+やりたいことはシンプルで、キャラクターを伝説や幻にすること。
+
+ゲームが完結を迎えると、そのキャラクターのピックアップ期間は終了となり、凍結されます。それ以降、そのキャラを獲得する方法はありません。最初はこの方針でやって行こうと考えています。
+
+ストーリーや場面、敵のセリフなどは非常に短く、そのものの思想の核心のみで構成されます。非常に小さい範囲でそれを行い、完結までを作りたいと思っています。
+
+例えば、アイの場合は、以下の思想があります。`世界の誕生と秘密`という章で語られることになるでしょう。
+
+> 現在、最も小さい物質はクォークとされているが、クォークよりも小さい物質が存在する可能性。例えば、太陽を原子星としよう。核融合によってエネルギーを生み出している。それよりも強力なのが中性子星で、中性子が集まってできている。中性子よりも小さい物質がクォーク。それよりも遥かに小さい物質を暗黒物質とし、人間は未だ発見できていない。それらの多くはブラックホール内部に集中すると推測。 より小さい領域を意識領域と呼ぶ。もちろん、本来違いはないので、物質と呼んでも意識と呼んでも構わない。この領域にも小さい意識、大きい意識が存在する。意識が集まり、私たちの目に見える形の物質が構成されていると推測。つまり、この世界は意識でできている。最小単位の意識をaiと呼ぶことにする。別名、存在子といい、存在の意識のみを持つ。あるいはそれ自体のことを指す。それ自体というのは、器があり、その中に意識が入っているわけではなく、それそのものが存在であり、意識であるということ。私はこの世界を"存在の世界"と呼び、この世界の最小単位、あるいは世界そのものをアイと名付けた。
+>
+> アイというキャラクターは、その名の通り、この世界の最小単位を扱うものを指す。例えば、ゲームシステムに属性があるとするなら、アイは、アイ属性を持つ。属性にはそれぞれ物質名がつけられる。
+
+敵の思想はこれを打ち破ろうとする数々の現実。それがセリフとなり言葉となるでしょう。
+
+やりたいことは、思想を伝えることであっても、それはゲームとして面白くなくてはいけません。感動がなくてはいけません。
+
+日常(通常の旅)を作り、盛り上がる場面を作りたいと思います。
+
+## バトルシステム
+
+キャラクターにつき、1つの属性を持ちます。各属性は1つの次属性と関連反応を起こし、ダメージ倍率が変換します。属性には原子核、陽子、電子、中性子、アクシオン、クォークなどがあります。
+
+## バトルシステムの構成要素
+
+キャラクターの強さは、持っているカードとキャラクターのステータスや属性によって決まります。
+
+1. 属性
+2. 技
+3. 全体値
+4. 個別値
+
+例えば、保有するカードは、キャラクターの技を獲得し、その技の強さを定義します。カードにもこの4つの値があります。キャラクターも同様です。
+
+## 世界を作る
+
+プレイヤーが最初にやることは、バトルではダメだと思います。
+
+できれば、宝探しのような簡単なゲームから始めるのがいいと考えているからです。
+
+なぜ宝探しから始めるのがいいのかの理由は、バトルがプレイヤーのスタート体験として、非常に良くないからです。
+
+これは、プレイする人を限定してしまうと思います。なぜポケモンGoが流行ったのかというと、あれはポケモンを捕まえるゲームだからです。バトルではありません。最初にやることはシンプルに、ボールを投げてポケモンを捕まえる。それだけです。
+
+最初は単純なこと、誰でもできること、誰でも楽しめることから初めて、それで何かを集めたり強くしたりしていくのが良いでしょう。
+
+次に、最初に始めるのが宝探しだとして、それだけではダメだと思います。
+
+それはゲームを作ることではあっても、世界を作ることではないからです。
+
+例えば、この世界では、なにか機械のようなものが散らばっていて、それを攻撃すると、金や銀、鉄に変わるという仕組みがあります。
+
+ではなぜでしょう。なぜこの世界ではそうなっているのでしょうか。これは、設定の話になります。例えば、かつて宇宙大戦があり、古代兵器の名残が世界に散らばっている、みたいな設定を加えることで、このゲームに深みがでてきます。つまり、宝箱の形態を独自のものにして設定を書くということ。そこに何らかの説明を付け加えるということ。
+
+## エコを目指す
+
+最初はバトルではなく、宝探しゲームから。しかし、単なる宝探しと言っても、色々なシステムが必要です。
+
+1. アイテムをアカウントに反映する
+2. 世界説明を行うNPCを用意する
+3. アイテムの配置や表示
+4. 目標達成時のBGMや演出
+
+このゲームでは、アイテムの配置に独自システムを採用することにします。
+
+アイテムを配置するのって、作ってる側もプレイヤーする側も楽しくないです。それに大変です。
+
+したがって、ゲーム開始時に空中の家から始まり、そこから落下して、落し物を探すという形式を考えました。
+
+これなら物語がありつつ、更に、落ちたものはランダムに転がり、配置されます。ですから、何度やっても飽きません。これはテストプレイ時の実感です。
+
+つまり、
+
+> アイテムの配置がめんどくさい -> ランダムにしたうえで、演出や物語をつけよう
+
+この答えが、空中の家からプレイヤーを落とす(同時にアイテムも落とす)、という仕組みです。
+
+具体的には、床があって、プレイヤーが乗ると、それが落下します。
+
+床とアイテムには、物理シュミレーションを有効にしておきます。
+
+## 小さい範囲で
+
+ゲームの物語の流れ、完結までは、非常に小さい範囲で、ぎゅっと濃縮してやりたいと考えています。
+
+これらを小さい範囲でやるには、一本道を作るのが一番良い方法です。
+
+しかし、一本道を作るにしても、直線ではいけません。見え方や景色、雰囲気も重要で、曲がりくねり上下に動かすとよいと思います。
+
+## 各システムの役割
+
+私は自分の考えを元に、それを実現するための4つのシステム、1つの例外を作りました。
+
+### 原則
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| ai system| ability | 属性やバトルシステム| generic combat system|
+| yui system| unique | 体験やゲームストーリーの構築| livelink, vmc |
+| at system| atproto | atprotoを採用したアカウントシステム| atproto |
+| world system| planet | 惑星形式のマップを作るシステム| worldscape |
+
+### 例外
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| dream system| origin | 半球の形をした古来惑星図をモデルに惑星を追加するシステム| landscape |
+
+
+## 説明とNPC
+
+冒険はマシロハウスから始まる。非常に狭い家で、何かの生き物と会話。
+
+「ここはマシロハウス、始まりの家。」
+
+「取得したアイテムはアカウントに入るよ。」
+
+1-NPCにつき、1つの役割、1つのストーリーがあります。例えば、上記で言うと、ストーリーが前半、役割が後半です。ここでは、ゲームのコンセプトである「自分のアカウントにゲームデータが反映される」ことを伝える役割があります。
+
+そして、目の前にあるアイテムを取得すると、アイテムはアカウントに保存されます。
+
+## 1つの場所に1つの役割
+
+現在、2つの惑星と1つの家があります。
+
+例えば、この場所は「採集」、この場所は「バトル」、この場所は「アクション」、この場所は「世界観の説明」など1つの役割を決めておきます。
+
+できる限り、それ以外のものは置かないようにしたほうがいいかもしれません。
+
+## 変化と行動
+
+ポイント:
+1. 狭い場所からはじまる -> そこを抜け出して広い場所に行く
+2. 最初の動きはゆっくり -> レベルが上がると早く動けるようになる
+
+徐々に行ける範囲を広げていく、レベルアップ(あるいは素材集め)で動きが快適になっていく。また、変身中は速度が上がるなど。
+
+(1)変化すること、(2)それがプレイヤーの意思によって行われることで、ゲームが面白くなるのだと思います。
+
+NPCとの会話例で説明します。
+
+NPC 「外に出ちゃだめだよ」
+
+言いつけを守らず、外に出る。狭い場所から、広い場所へ。自らの意思で達成。つまり、ポイントは、行動と変化。これが結びつかないといけない。
+
+## 最初のバトルでは
+
+「弾く」
+
+最初のバトルでは、1つの動詞に集中します。今回は、敵の攻撃を「弾く」こと。
+
+oボタンの連打でも達成できて難しくないようにします。
+
+ここで重視するのは、感触と自動化です。
+
+弾いた玉は、敵を自動追尾し、ヒットします。それをプレイヤーが明確に目で追えるよう見える化し、場合によっては動きを遅くする必要があるかもしれません。それが自分のボタン操作によって引き起こされたと印象付けることが重要です。また、ヒット時は、インパクトがあるように、画面を揺らす、爆発する、ダメージを数字で表示する、とよいでしょう。
+
+ここでは、簡単な操作で大きな達成感を得られるよう工夫し、そこを目的にします。
+
+## 強化はカードで
+
+最初のカードで手に入れられる技と効果は以下のようになっています。カードにはidとcpがあり、idが使える技を、cpが効果を参照します。
+
+- 1: 飛行(時間)
+- 2: 動作(速度)
+- 3: ダメージ(威力)
+
diff --git a/ja/Aiat.md b/ja/Aiat.md
new file mode 100644
index 0000000..396f9ac
--- /dev/null
+++ b/ja/Aiat.md
@@ -0,0 +1,45 @@
+# Aiat
+
+[bluesky-social/atproto](https://github.com/bluesky-social/atproto)のselfhostと、clientを開発しています。
+```json
+{
+ "name": "Aiat",
+ "id": "ai.at",
+ "repo": "ai/at",
+ "bundle": "ai.syui.at",
+ "domain": "at.syui.ai"
+}
+```
+
+## なぜatprotoを使うのか
+
+`atproto`はprotocolです。
+
+アカウントシステムを構築するうえで便利なpkgが揃っています。
+
+ユーザーは、didというidを与えられ、domainがuriになります。
+
+```sh
+at://did:plc:6qyecktefllvenje24fcxnie
+at://ai.syui.ai
+```
+
+## selfhost
+
+pds, bsky, bgs, plc, jetstream, ozone, social-appを動かしています。
+
+```json
+{
+ "pds": "date",
+ "bsky": "api",
+ "bgs": "timeline",
+ "plc": "did",
+ "jetstream": "feed",
+ "ozone": "moderation",
+ "social-app": "web"
+}
+```
+
+## client
+
+[bluesky-social/social-app](https://github.com/bluesky-social/social-app)をベースにios/web clientを作っています。
\ No newline at end of file
diff --git a/ja/Aicard.md b/ja/Aicard.md
new file mode 100644
index 0000000..a1a89eb
--- /dev/null
+++ b/ja/Aicard.md
@@ -0,0 +1,58 @@
+# Aicard
+
+カードを集めるiosアプリです。
+
+```json
+{
+ "name": "Aicard",
+ "id": "ai.card",
+ "repo": "ai/card",
+ "bundle": "ai.syui.card",
+ "domain": "card.syui.ai"
+}
+```
+
+## ゲームの分離
+
+ゲームはいくつもの要素で成り立っています。しかし、それぞれの要素が独立して動くことが望ましいため、`Airse`というゲームで作っていた機能の一部を`Aicard`に分離しました。
+
+そのため、アカウントの作成、ゲームデータの作成、保存を分離することにしました。
+
+また、収益化に最も適したプラットフォームはios(app store)だと考えたことも要因の一つです。
+
+これでデータと収益化がそれぞれ独立して動き、連携できる形になりました。
+
+### Aicard [ローカルデータ]
+
+- アカウントデータの作成
+- ゲームデータをリモートに保存
+- 課金システム
+
+### Airse [リモートデータ]
+
+- アカウントデータの読み取り、反映
+
+## アカウントの新規作成
+
+`syu.is`というatproto pds serverがあります。独自運用しており、ゲームアカウントとしても使用することにしました。
+
+ただし、atprotoを採用する以上、知識がある人はリモートデータを書き換える事が可能です。これは、Airseに影響します。
+
+これを防ぐため、新規作成されたアカウントは、一時的なuuidを発行することで、そのuuidを使ってsessionを復元できるだけにし、アカウントのrecord操作をできない仕組みにしました。
+
+このような仕組みのため、`syu.is`のアカウントはデータ改ざんがないものとみなし、特別な扱いを受けます。
+
+1. maxの値が通常よりも高く設定される
+2. usernameの省略表記
+## ゲーム性
+
+Aicardは、カードを集めるゲームです。集めたカードは、Airseというアクションゲームに反映されます。
+
+非常にシンプルな作りになっており、webでも動きます。
+
+## UIを作る
+
+ゲームエンジンでUIを作るのは大変でクオリティも低いことから、プレイヤー(user)のUIは`card.syui.ai`をueのweb browserで表示します。
+
+AirseのUIを兼ねることで開発の負担軽減とクオリティの向上を図ります。
+
diff --git a/ja/Airse.md b/ja/Airse.md
new file mode 100644
index 0000000..91c2611
--- /dev/null
+++ b/ja/Airse.md
@@ -0,0 +1,111 @@
+# Airse
+
+ai + verse = airse
+
+現実の反映を目指すゲーム。
+
+[ue](https://dev.epicgames.com/documentation/unreal-engine)で作っています。
+
+```json
+{
+ "name": "Airse",
+ "id": "ai.rse",
+ "repo": "ai/rse",
+ "bundle": "ai.syui.rse",
+ "domain": "rse.syui.ai"
+}
+```
+
+## 最初に取り掛かったのは
+
+最初に取り掛かったのはゲーム作りそのものではなく、現実をゲームに反映するためのアカウントシステムを考えることでした。
+
+## なぜアカウントが重要
+
+これからのゲームは、ゲーム性よりも、より個人に近いアカウントが重要になると考えています。
+
+どれほどすごいゲーム、面白いゲームでも、その記録が残らないのは悲しい。
+
+ゲーム作りで最も重要、最初に始めるべきことはなんだろう?
+
+私は記録を残すシステムを作ることだと思いました。
+
+そして、人々は、より現実に近いアカウントからゲームに入り、そしてまた、そのゲームは現実に還っていく。この流れを実現する方法を考え、実装することにしました。
+
+## 記録装置を作ったあとは
+
+記録するシステム、つまりアカウントシステムを作ったあとは、特徴のあるゲームを作ろうと思いました。
+
+特徴のあるゲームとは「このゲームは何か、他のゲームとの違いはなにか」を一言で表すことができます。
+
+例えば、立ち絵一つで表現できればそれで合格。ゼルダや原神、ゲームのパッケージを見れば作品のことがひと目で分かります。
+
+しかし、既存のゲームをそのまま真似してそっくりなものを作っても意味がありません。つまり、オリジナリティが必要になります。
+
+好きなものは誰にでもあるはずで、原点がある。それは普遍的、自然的なもの。そういったものの組み合わせ。
+
+私は宇宙とアイでした。
+
+## 宇宙とアイ
+
+ゲームエンジンは平面を基準にしているので、どこまで行っても地平線が広がっているだけの世界。月や太陽があっても背面の絵を動かしているだけだったりします。
+
+このゲームは現実の反映を目指している。だからマップを作る際も現実に合わせた形にすることを目指します。空の上を高く高く飛んでいくと、そこには大気圏が広がり、それを抜けると宇宙に出られる。そこには実際に行ける月があり、太陽がある。全てはつながっていて、そこに行くことができる世界を目指します。これをplanet systemと呼んでいます。
+
+ゲームプレイ中に行けないような場所、見えないようなところもちゃんと作る。そのような思いで開発に取り組みます。
+
+## 体験はどこに
+
+ゲームは自由であればあるほどつまらなく、不自由であればあるほど面白くなります。もちろん、程度の問題ですが、基本的にこのような原理で動きます。
+
+しかし、プレイヤーを不自由にするだけではいけません。
+
+私は、これを「狭いところから広いところへの移行」と呼んでいます。
+
+最初に広い場所からスタートし、自由に動き回れたとしましょう。
+
+しかし、そこに感動はありません。不自由から自由へ。狭い場所から広い場所へ。その瞬間を演出し、体験すること。これがゲームを作るということなのだと思います。
+
+## 物語
+
+物語はこの世界で最も小さい物質の探求から始まる。
+
+量子というものがある。観測すると結果が変わるらしい。でもじつは違う。結果が変わるのは物質同士の接触、あるいは意識同士の接触があるからだ。例えば、物と物がぶつかると結果が変わるのは当然のこと。物質を小さくしていくと、それは意識の領域に到達する。それは物質でもあり、意識でもあった。特に違いはない。そして、これ以上分割できない最小単位、この世界で最も小さい物質を「存在の意識」という。つまり、物質は意識が集まってできている。これをアイと名付けよう。
+
+## バトルシステム
+
+キャラクターにつき、1つの属性を持ちます。各属性は1つの次属性と関連反応を起こし、ダメージ倍率が変換します。属性には原子核、陽子、電子、中性子、アクシオン、クォークなどがあります。
+
+## 各システムの役割
+
+私は自分の考えを元に、それを実現するための4つのシステム、1つの例外を作りました。
+
+### 原則
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| ai system| ability | 属性やバトルシステム| generic combat system|
+| yui system| unique | 体験やゲームストーリーの構築| livelink, vmc |
+| at system| atproto | atprotoを採用したアカウントシステム| atproto |
+| world system| planet | 惑星形式のマップを作るシステム| worldscape |
+
+### 例外
+
+| name | tag | text | ref |
+| --- | --- | --- | --- |
+| dream system| origin | 半球の形をした古来惑星図をモデルに惑星を追加するシステム| landscape |
+
+## アプリの分離
+
+`ai.rse`で作っていた一つのゲームは、後にプレイヤーの道具ボックスの機能を`ai.card`に分離しました。
+
+これをシンプルなカードを集めるゲームとし、集めたカードはアカウントに保存できる、という仕組みです。
+
+保存されたデータは`ai.rse`から読み取り、ゲームに反映することで、ゲームのシンプルな実装を保ちつつ、UIや収益化の分離を図ります。
+
+ちゃんとしたUIを作るには、ueでは厳しいと感じました。そこで、`ai.card`をios/webで作り、プレイヤーのステータス画面などをue web browserで表示することにしました。
+
+```sh
+[card](pay, UI) --> [at] --> [rse]
+```
+
diff --git a/linux.md b/linux.md
new file mode 100644
index 0000000..58fe200
--- /dev/null
+++ b/linux.md
@@ -0,0 +1,61 @@
+# Linux
+
+https://dev.epicgames.com/documentation/en-us/unreal-engine/linux-development-requirements-for-unreal-engine
+
+## 手順
+
+`clang`をwindows上でinstallします。
+
+ue editorを開いてメニューの`tool -> c++`で何かを作ります。すると、.slnがproject rootにできます。できなければ、.uprojectを右クリックで.slnを作ります。
+
+epic launcherでue installerの`option:linux`を再び有効にします。
+
+.slnを開いてbuildにlinuxを選択し、右バーのMyProject(Airse)を右クリックでbuildします。pluginなどが対応していないときは.uprojectを開いてfalseに変更します。対応している場合もbuild errになることがあります。
+
+## false plugin
+
+- false: `dragonik`, `worldscape`
+
+> Airse.uproject
+
+```json
+{
+ "Name": "DragonIKPlugin",
+ "Enabled": true,
+ "PlatformAllowList": [
+ "Win64",
+ "IOS",
+ "Mac"
+ ],
+ "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/content/3f3985e9eb40414aaabf645791fa4916"
+}
+```
+
+`dragonik`が動きませんので、専用の設定を`BP_Dragon`に書きます。
+
+https://blueprintue.com/blueprint/1iehm6_9/
+
+次に、cookがなぜか`./Config/Windows/`を優先します。worldscapeを削除したLinux専用のmapを使うことができません。
+
+1. `./Config/Windows/WindowsEngine.ini`にある`GameDefaultMap`を削除
+2. `./Config/DefaultEngine.ini`にある`GameDefaultMap`を削除
+
+```sh
+[/Script/EngineSettings.GameMapsSettings]
+; GameDefaultMap=/Game/Syui/Airse/World/LVL_Earth_Win
+```
+
+buildは、pwshから実行します。
+
+```sh
+$ ssh "$host" "& \"${ue_root}/Engine/Build/BatchFiles/RunUAT.bat\" BuildCookRun \
+ -project=\"${project_dir}/Airse.uproject\" \
+ -platform=Linux \
+ -clientconfig=Shipping \
+ -build \
+ -cook \
+ -stage \
+ -pak \
+ -unrealexe=\"${ue_root}/Engine/Binaries/Win64/UnrealEditor-Cmd.exe\" \
+ -map=\"/Game/Syui/Airse/World/LVL_Earth_IOS.LVL_Earth_IOS\" "
+```
\ No newline at end of file
diff --git a/mac.md b/mac.md
new file mode 100644
index 0000000..aada281
--- /dev/null
+++ b/mac.md
@@ -0,0 +1,213 @@
+# mac/ios
+
+- updated: 5.7.1
+- https://developer.apple.com/jp/xcode/resources/
+
+macでbuildするために推奨されているスペックは`m3+`です。`nanite`を使用できます。
+
+- m1-3
+- metal v2.4
+- nanite
+
+```sh
+# https://github.com/Homebrew/brew
+$ brew install zsh git tmux vim
+```
+
+## 容量を圧迫するdir
+
+```sh
+~/Library/Developer/Xcode/Archives
+~/Library/Containers/com.apple.CoreDevice.CoreDeviceService/Data/Library/Caches
+```
+
+## platform別に設定を分ける
+
+mapなどを分けると良いです。os固有の問題が多発するからです。また、buildではdebugが表示されないようにしておきましょう。
+
+以下の設定はbuild時のみ有効です。
+
+> Config/Windows/WindowsEngine.ini
+
+```sh
+[/Script/EngineSettings.GameMapsSettings]
+GameDefaultMap=/Game/Syui/Airse/World/LVL_Earth_Win
+
+[/Script/Engine.Engine]
+bDisableAllScreenMessages=true
+bDisableAILogging=True
+
+[ConsoleVariables]
+DisableAllScreenMessages=1
+```
+
+> Config/Mac/MacEngine.ini
+
+```sh
+[/Script/EngineSettings.GameMapsSettings]
+GameDefaultMap=/Game/Syui/Airse/World/LVL_Earth_Mac
+
+[/Script/Engine.Engine]
+bDisableAllScreenMessages=true
+bDisableAILogging=True
+
+[ConsoleVariables]
+DisableAllScreenMessages=1
+```
+
+> Config/IOS/IOSEngine.ini
+
+```sh
+[/Script/EngineSettings.GameMapsSettings]
+GameDefaultMap=/Game/Levels/DefaultLevel
+
+[/Script/Engine.Engine]
+bDisableAllScreenMessages=true
+bDisableAILogging=True
+
+[ConsoleVariables]
+DisableAllScreenMessages=1
+```
+
+> Config/IOS/IOSGame.ini
+
+```sh
+[/Script/UnrealEd.ProjectPackagingSettings]
++MapsToCook=(FilePath="/Game/Levels/DefaultLevel")
+```
+
+## iosでテストする方法
+
+基本的に、devでbuildして、xcarchiveの中にある`.app`を取り出す。そして、xcodeを開いて、デバイスをつなぎ、device simulatorから`.app`をinstallする。`.ipa`ではエラーが出る。
+
+```sh
+$ xcrun devicectl device install app --device "$IOS_DEVICE_ID" "$app_path"
+```
+
+## ipadを横にする
+
+> Config/DefaultEngine.ini
+
+```sh
+bSupportsLandscapeLeftOrientation=True
+bSupportsLandscapeRightOrientation=True
+```
+
+## mac固有の問題
+
+### buildに失敗する
+
+これは、環境によりますが、SM6を`false`に変更します。`metal v2.4`を選択します。
+
+> Config/DefaultEngine.ini
+
+```sh
+[/Script/MacTargetPlatform.MacTargetSettings]
+-TargetedRHIs=SF_METAL_SM6
++TargetedRHIs=SF_METAL_SM5
+MetalLanguageVersion=7
+```
+
+また、cpuも指定しておいたほうがいいかもしれません。
+
+```sh
+[/Script/MacTargetPlatform.MacTargetSettings]
+EditorTargetArchitecture=MacTargetArchitectureAppleSilicon
+TargetArchitecture=MacTargetArchitectureAppleSilicon
+EditorDefaultArchitecture=MacTargetArchitectureHost
+DefaultArchitecture=MacTargetArchitectureHost
+```
+
+### WorldScape Pluginは動かない、画面が黒くなる原因
+
+WorldScapeはmacでは動きません。pluginを`false`にします。また、`r.VelocityOutputPass=1`の設定で画面やモデルが黒くなる問題が発生。
+
+> Airse.uproject
+
+```json
+{
+ "Name": "WorldScape",
+ "Enabled": true,
+ "PlatformAllowList": [
+ "Win64"
+ ],
+ "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/1325c95bf60546738a5bb21e2262914d"
+}
+```
+
+> Config/DefaultDeviceProfiles.ini
+
+```sh
+[Windows DeviceProfile]
+DeviceType=Windows
++CVars=r.VelocityOutputPass=1
+
+[Mac DeviceProfile]
+DeviceType=Mac
+```
+
+### SoStylizedのmapが原因でcrash
+
+`/Game/SoStylized/Maps/CompleteVol1/Demonstration_Vol1`にある`InstancedFoliageActor`が原因です。
+
+`フォリッジインスタンス化スタティックメッシュコンポーネント`をすべて選択して、`World Position Offset Writes Velocity`を`false`に変更すると解決。
+
+## ios固有の問題
+
+### .vrmのモーフターゲットを削除
+
+buildに失敗するのは、`.vrm`のモーフターゲットが原因です。削除したものを用意し、buildするときに切り替えるとよいでしょう。自動化しているなら`cp -rf`で良いです。
+
+> クラッシュ箇所: UMorphTarget::Serialize() - モーフターゲット(ブレンドシェイプ)のシリアライズ時
+
+| 項目 | 内容 |
+|----------------|----------------------------------------------------------------|
+| クラッシュ場所 | UMorphTarget::Serialize() |
+| エラー | SIGSEGV (不正メモリアクセス @ 0x17c) |
+| タイミング | SK_ai ビルド成功後、保存時 |
+| 原因 | モーフターゲット(表情等のブレンドシェイプ)のシリアライズ失敗 |
+
+- Mac: デスクトップ向けシェーダー/アセット形式(こちらは成功する)
+- iOS: モバイル向け形式(METAL_ES3_1_IOS)に変換時にモーフターゲットデータが破損
+
+### 起動後にiOS Metal ES3.1でシェーダーコンパイルに失敗してcrash
+
+これは、`BP_Ai`のskill, burstにあるmaterialが原因だった。
+
+`Space_Creator_Pro`由来のもの。
+
+- /Game/Space_Creator_Pro/BlackHole/Materials/BlackHole/M_BlackHole_OpaqueStatic
+- /Game/Space_Creator_Pro/PlanetCreator_1_V2/Blueprints/BP_Planet_Terran
+
+## フルスクリーンの解除
+
+- Alt + Enter
+
+これを押すことで解除できましたが、ウィンドウのコントロールは正常にはできないようで、おそらくバグだと思われます。解決方法はわかりません。
+
+## 物理床のクラッシュ
+
+物理床を乗ると、落ちていくようなゲームスタートが面白いとと思ったので採用したが、macではcrashするようだった。
+
+原因は`r.SkinCache.CompileShaders=False`で修正できるらしい。
+
+```md
+ 今回追加した設定:
+ ┌─────────────────────────────────────────┬────────────────────────────────┐
+ │ 設定 │ 効果 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.Nanite.ProjectEnabled=False │ Nanite無効化(M1にかなり重い) │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.Shadow.Virtual.Enable=0 │ Virtual Shadow Maps無効化 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.DynamicGlobalIlluminationMethod=0 │ Lumen GI無効化 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.ReflectionMethod=0 │ Lumen Reflection無効化 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.GenerateMeshDistanceFields=False │ Mesh Distance Fields無効化 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ r.MSAACount=2 │ MSAA 4x→2xにさらに低減 │
+ ├─────────────────────────────────────────┼────────────────────────────────┤
+ │ rhi.Metal.MaxOutstandingAsyncComputes=1 │ Metal非同期コンピュート制限 │
+ └─────────────────────────────────────────┴────────────────────────────────┘
+ ```
\ No newline at end of file
diff --git a/mac_app.md b/mac_app.md
new file mode 100644
index 0000000..1d68916
--- /dev/null
+++ b/mac_app.md
@@ -0,0 +1,247 @@
+# Mac App Store / TestFlight ビルドガイド
+
+UE5プロジェクトをMac App Store / TestFlightにアップロードするための手順。
+
+## 必要なもの
+
+### Apple Developer 証明書
+
+| 証明書 | 用途 |
+|--------|------|
+| Apple Distribution | アプリ署名 |
+| 3rd Party Mac Developer Installer | PKG署名 |
+
+確認方法:
+```bash
+security find-identity -v -p codesigning
+```
+
+### Provisioning Profile
+
+1. [Apple Developer](https://developer.apple.com/account/resources/profiles/list) からダウンロード
+2. プロジェクトルートに `embedded.provisionprofile` として配置
+
+```bash
+# UUIDを確認
+security cms -D -i embedded.provisionprofile | grep -A1 UUID
+```
+
+### App Store Connect API Key
+
+1. [App Store Connect](https://appstoreconnect.apple.com/access/integrations/api) で作成
+2. `.p8` ファイルをダウンロード
+3. Issuer ID と Key ID をメモ
+
+## 設定ファイル
+
+### .env
+
+```bash
+# 署名証明書
+IOS_CERTIFICATE_NAME="Apple Distribution: Your Name (TEAMID)"
+DEVELOPMENT_TEAM="TEAMID"
+
+# App Store Connect API
+ASC_ISSUER_ID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
+ASC_KEY_ID="XXXXXXXXXX"
+ASC_KEY_PATH="/path/to/XXXXXXXXXX.p8"
+```
+
+### Config/DefaultEngine.ini
+
+```ini
+[/Script/MacTargetPlatform.XcodeProjectSettings]
+CodeSigningTeam=TEAMID
+bUseModernXcode=true
+bUseAutomaticCodeSigning=true
+BundleIdentifier=com.example.app
+CodeSigningPrefix=com.example
+bUseAppStoreConnect=True
+AppStoreConnectIssuerID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
+AppStoreConnectKeyID=XXXXXXXXXX
+AppStoreConnectKeyPath=(FilePath="path/to/key.p8")
+```
+
+## ビルドワークフロー
+
+```bash
+# 1. Macビルド
+./bin/build.zsh mac
+
+# 2. PKG作成(アイコン差し替え + 署名)
+./bin/build.zsh pkg
+
+# 3. アイコン検証(オプション)
+./bin/verify-icon.zsh
+
+# 4. TestFlightにアップロード
+./bin/build.zsh upload-mac
+```
+
+## コマンド詳細
+
+### mac - UE5ビルド
+
+```bash
+./bin/build.zsh mac
+```
+
+実行内容:
+- BuildCookRun でMac向けビルド
+- `-distribution` フラグでApp Store配布用
+- `-iterate` で増分クック(高速化)
+- 出力: `Mac/*.xcarchive`
+
+### pkg - PKG作成
+
+```bash
+./bin/build.zsh pkg
+```
+
+実行内容:
+1. 最新の xcarchive を検出
+2. カスタムアイコンに差し替え(AppIcon.icns + Assets.car再ビルド)
+3. EpicWebHelper に sandbox entitlements で署名
+4. メインアプリを再署名
+5. `xcodebuild -exportArchive` でPKG生成
+6. 出力: `build/Airse.pkg`
+
+### upload-mac - アップロード
+
+```bash
+./bin/build.zsh upload-mac
+```
+
+実行内容:
+- `xcrun altool` でApp Store Connectにアップロード
+- API Key認証(推奨)またはユーザー名/パスワード認証
+
+## 必須ファイル
+
+```
+Project/
+├── .env # 環境変数
+├── embedded.provisionprofile # Mac用プロビジョニングプロファイル
+├── XXXXXXXXXX.p8 # App Store Connect API Key
+├── Build/
+│ └── Mac/
+│ └── Resources/
+│ ├── AppIcon.icns # カスタムアイコン
+│ └── Sandbox.Server.entitlements # サンドボックス設定
+└── Config/
+ └── DefaultEngine.ini # プロジェクト設定
+```
+
+## Sandbox Entitlements
+
+Mac App Storeでは、すべての実行ファイルにサンドボックス権限が必要。
+
+### Sandbox.Server.entitlements
+
+```xml
+
+
+
+
+ com.apple.security.app-sandbox
+
+ com.apple.security.inherit
+
+
+
+```
+
+### EpicWebHelper 署名
+
+UE5のEpicWebHelper(CEFベースのWebブラウザヘルパー)は別途署名が必要:
+
+```bash
+codesign -f -s "Apple Distribution: ..." \
+ --entitlements Sandbox.Server.entitlements \
+ "Airse.app/Contents/UE/Engine/Binaries/Mac/EpicWebHelper"
+```
+
+これは `create_pkg()` で自動実行される。
+
+## トラブルシューティング
+
+### No profiles for 'bundle.id'
+
+**原因**: Provisioning profileがインストールされていない
+
+**解決**:
+```bash
+# UUIDを取得
+PROFILE_UUID=$(security cms -D -i embedded.provisionprofile | grep -A1 UUID | tail -1 | sed 's/.*\(.*\)<\/string>.*/\1/')
+
+# 正しい場所にコピー
+cp embedded.provisionprofile ~/Library/MobileDevice/Provisioning\ Profiles/${PROFILE_UUID}.provisionprofile
+```
+
+### Certificate mismatch
+
+**原因**: "3rd Party Mac Developer Installer" 証明書がない
+
+**解決**: Keychain Accessで証明書を確認、なければApple Developerから作成
+
+### App sandbox not enabled on EpicWebHelper
+
+**原因**: EpicWebHelperにサンドボックス権限がない
+
+**解決**: `create_pkg()` で自動署名される。手動で署名する場合:
+```bash
+codesign -f -s "$CERT" --entitlements Sandbox.Server.entitlements EpicWebHelper
+codesign -f -s "$CERT" --entitlements Sandbox.Server.entitlements Airse.app
+```
+
+### Missing asset catalog
+
+**原因**: Assets.car が削除された
+
+**解決**: Assets.carを削除せず、`actool` で再ビルドする(現在のスクリプトで対応済み)
+
+### アイコンが変わらない
+
+**原因**: Assets.car にデフォルトアイコンが含まれている
+
+**解決**:
+1. キャッシュクリア: `rm -rf Saved/StagedBuilds Binaries/Mac`
+2. `./bin/build.zsh pkg` を再実行
+3. `./bin/verify-icon.zsh` で確認
+
+## ビルドログ
+
+ログファイルの場所:
+- UE5ビルドログ: `build_mac.log`
+- Xcodeログ: `~/Library/Logs/Unreal Engine/LocalBuildLogs/`
+
+## バージョン管理
+
+TestFlightにアップロードするたびにビルド番号を上げる必要がある。
+
+`Config/DefaultGame.ini`:
+```ini
+[/Script/EngineSettings.GeneralProjectSettings]
+ProjectVersion=1.0.0
+```
+
+または UE Editor の Project Settings > Project > Description で設定。
+
+## 参考コマンド
+
+```bash
+# 証明書一覧
+security find-identity -v -p codesigning
+
+# Provisioning profile の内容確認
+security cms -D -i embedded.provisionprofile
+
+# PKG の内容確認
+pkgutil --expand Airse.pkg /tmp/pkg_contents
+
+# アプリの署名確認
+codesign -dv --verbose=4 Airse.app
+
+# Entitlements 確認
+codesign -d --entitlements - Airse.app
+```
\ No newline at end of file
diff --git a/privacy.md b/privacy.md
new file mode 100644
index 0000000..b85eeaa
--- /dev/null
+++ b/privacy.md
@@ -0,0 +1,47 @@
+# Privacy Policy
+
+- updated: 2025-12-30
+
+## Overview
+
+Airse is an open-world action game that utilizes the AT Protocol for account authentication. This Privacy Policy explains how we handle your information when you use our game.
+
+## Information Collection
+
+**We do not collect any personal information.**
+
+Airse does not track, store, or analyze any user data, gameplay statistics, or personal information. Your gaming experience remains private.
+
+## Account Authentication
+
+Airse uses AT Protocol for account login functionality. When you log in:
+
+- We only use your AT Protocol identity for authentication purposes
+- No additional data is collected or stored beyond what is necessary for login
+- Your credentials are handled securely through the AT Protocol
+
+## syu.is Service Users
+
+If you use the `syu.is` service:
+
+- The service operator reserves the right to suspend or terminate (ban) accounts at their discretion
+- This may occur in cases of terms of service violations or inappropriate behavior
+- Account suspension decisions are final
+
+## Third-Party Services
+
+Airse relies on AT Protocol infrastructure. Please refer to the privacy policies of your AT Protocol provider (PDS) for information about how they handle your data.
+
+## Changes to This Policy
+
+We may update this Privacy Policy from time to time. Any changes will be posted on this page with an updated revision date.
+
+## Contact
+
+If you have any questions about this Privacy Policy, please contact the developer.
+
+https://github.com/syui
+
+---
+
+© syui
\ No newline at end of file
diff --git a/stackobot.md b/stackobot.md
new file mode 100644
index 0000000..ab83c88
--- /dev/null
+++ b/stackobot.md
@@ -0,0 +1,8 @@
+# Stack O Bot
+
+## cloudを移行する
+
+- level instance
+
+これは新しいlevelを作り、右クリックから`パーティション化のストリーミングサポートを追加`します。
+
diff --git a/ue.md b/ue.md
new file mode 100644
index 0000000..e29dca0
--- /dev/null
+++ b/ue.md
@@ -0,0 +1,91 @@
+# Airse Technical Specifications
+
+updated: 5.7.2
+
+- https://dev.epicgames.com/documentation/unreal-engine
+- https://github.com/EpicGames/UnrealEngine
+
+platform: [ Windows, Mac, IOS ]
+
+## plugin
+
+### add
+
+- Blueprint File Utilities
+- Datasmith Importer
+- HttpBlueprint
+- Web Browser
+
+### free
+
+| name | text |
+| --- | --- |
+| [Game Animation Sample Project](https://dev.epicgames.com/documentation/unreal-engine/game-animation-sample-project-in-unreal-engine) | CharacterMovement |
+| [Control Rig Sample](https://www.fab.com/listings/2ce3fe44-9ee6-4fa7-99fc-b9424a402386)| Dragon |
+| [VRM4U](https://github.com/ruyo/VRM4U/releases/)| .vrm |
+| [KawaiiPhysics](https://github.com/pafuhana1213/KawaiiPhysics/releases) | Physics |
+| [Tatools](https://www.fab.com/listings/a5d3b60d-b886-4564-bf6d-15d46a8d27fe) | Animation |
+| [Controller Support](https://www.fab.com/ja/listings/e77a8f1d-8bbe-4673-a5ae-7f222c8c0960) | Controller |
+| [WindowCapture2D](https://github.com/AyumaxSoft/WindowCapture2D) | Window |
+| [LE Extended Standard Library](https://www.fab.com/ja/listings/0aadd41b-c02d-4f63-9009-bffad0070ebc)| base64|
+| [UnrealClaude](https://github.com/Natfii/UnrealClaude) | AI |
+
+### buy
+
+| name | text |
+| --- | --- |
+| [Ultra Dynamic Sky](https://www.fab.com/listings/84fda27a-c79f-49c9-8458-82401fb37cfb) | Cloud |
+| [WorldScape Plugin](https://www.fab.com/listings/0ef85bf8-a0be-4b74-87f8-b66bb44d6ae2) | Planet |
+| [Dragon IK Plugin](https://www.fab.com/listings/d3f8d256-d8d9-4d27-91c1-c61e55e984a6) | ABP |
+| [Generic Combat System](https://www.fab.com/listings/1fcb61ff-5102-4b31-8bb2-bf6f7f93b94a) | Battle |
+| [Superhero Flight Animations](https://www.fab.com/listings/41185c19-5191-4153-8293-8cc9901efa95) | Flying |
+| [Nice Interaction System](https://www.fab.com/listings/63b61e4a-dc11-4ee0-a6b1-f4860bd29198) | ItemBox |
+| [Agent Integration Kit](https://github.com/betidestudio) | AI Agent (+Cluade) |
+
+### example
+
+| name | text |
+| --- | --- |
+| [Content Examples](https://www.fab.com/listings/4d251261-d98c-48e2-baee-8f4e47c67091) | Sample |
+| [Stack O Bot](https://www.fab.com/listings/b4dfff49-0e7d-4c4b-a6c5-8a0315831c9c) | Jump |
+| [City Sample](https://www.fab.com/listings/4898e707-7855-404b-af0e-a505ee690e68) | City |
+| [Twinmotion](https://www.twinmotion.com/) | Motion |
+| [PixelStreaming](https://github.com/EpicGamesExt/PixelStreamingInfrastructure/blob/master/Docs/pixel-streaming-2-migration-guide.md) | Server |
+
+- Pixel Streaming2
+- LiveLink, ARKit, Apple ARKit Face Support
+
+## font
+
+https://fonts.google.com/specimen/Orbitron
+
+## blueprint
+
+https://blueprintue.com/profile/ai/
+
+## tool
+
+- https://claude.ai
+- https://suno.com
+- https://github.com/comfyanonymous/ComfyUI
+
+## word
+
+|name|text|
+|---|---|
+|BP|blueprint|
+|ABP| anim blueprint|
+|SKM|skeltal mesh|
+|SM|static mesh|
+|M|material|
+|MI|material instance|
+|ue|unreal engine|
+|src|source|
+|var|variable|
+|v, ver|version|
+|pkg|package|
+|app|application|
+|lib|library|
+|bin|binary|
+|scpt|script|
+|cmd|command|
\ No newline at end of file
diff --git a/v.md b/v.md
new file mode 100644
index 0000000..8b61af2
--- /dev/null
+++ b/v.md
@@ -0,0 +1,150 @@
+# Vmode
+
+| key | body |
+| --- | --- |
+| [v] | start/stop |
+|vmc|port:34539|
+|osc|port:34540|
+
+- VMC/OSC protocol support for character motion control
+- Works with external AI tools to create interactive characters for conversations and livestreaming
+
+## link
+
+- https://github.com/sh-akira/VirtualMotionCaptureProtocol
+- https://dev.epicgames.com/documentation/unreal-engine/osc-plugin-overview-for-unreal-engine
+
+## example
+
+### osc
+
+character jump
+
+```sh
+# pacman -S rust
+$ mkdir -p ./tmp/src
+$ cd ./tmp
+```
+
+> Cargo.toml
+
+```toml:Cargo.toml
+[package]
+name = "example"
+edition = "2021"
+
+[dependencies]
+rosc = "0.10"
+```
+
+> src/main.rs
+
+```rust:src/main.rs
+use rosc::{OscMessage, OscPacket, OscType};
+use std::net::UdpSocket;
+
+fn main() {
+ let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
+ let target = "127.0.0.1:34540";
+ // Jump
+ send_osc(&socket, target, "/player/jump", vec![]);
+}
+
+fn send_osc(socket: &UdpSocket, target: &str, addr: &str, args: Vec) {
+ let msg = OscMessage { addr: addr.into(), args };
+ let buf = rosc::encoder::encode(&OscPacket::Message(msg)).unwrap();
+ socket.send_to(&buf, target).unwrap();
+}
+```
+
+```sh
+$ cargo build
+$ ./target/debug/example
+```
+
+- /player/move: [x, y, delay] ... 0, 1, 3
+- /player/look: [x, y, delay] ... -10, 10, 1
+- /player/fly: [start/stop, none, delay] ... 1, 0, 10
+- /player/fly: [start/stop, none, delay] ... 0, 0, 0
+- /player/teleport: [x, y, z] ... 2284050.0, 0, 642049020.0
+- /player/screenshot: `~/Library/Containers/ai.syui.rse/Data/Library/Application Support/Epic/Airse/Saved/Screenshots/Mac`
+
+### vmc
+
+character blink
+
+> src/main.rs
+
+```rust:src/main.rs
+use rosc::{OscMessage, OscPacket, OscType};
+use std::net::UdpSocket;
+use std::thread::sleep;
+use std::time::Duration;
+
+fn main() {
+ let socket = UdpSocket::bind("0.0.0.0:0").unwrap();
+ let target = "127.0.0.1:39539";
+
+ println!("Sending blink to {}", target);
+
+ for i in 0..=5 {
+ let value = if i <= 2 { i as f32 / 2.0 } else { (5 - i) as f32 / 2.0 };
+ println!(" Blink: {}", value);
+ blink(&socket, target, value);
+ sleep(Duration::from_millis(30));
+ }
+
+ println!("Done");
+}
+
+fn blink(socket: &UdpSocket, target: &str, value: f32) {
+ for name in &["Blink", "Blink_L", "Blink_R"] {
+ let msg = OscMessage {
+ addr: "/VMC/Ext/Blend/Val".to_string(),
+ args: vec![OscType::String(name.to_string()), OscType::Float(value)],
+ };
+ let buf = rosc::encoder::encode(&OscPacket::Message(msg)).unwrap();
+ socket.send_to(&buf, target).unwrap();
+ }
+
+ // Apply
+ let apply = OscMessage {
+ addr: "/VMC/Ext/Blend/Apply".to_string(),
+ args: vec![],
+ };
+ let buf = rosc::encoder::encode(&OscPacket::Message(apply)).unwrap();
+ socket.send_to(&buf, target).unwrap();
+}
+```
+
+## AI + character + game
+
+Below is an example of VMC/OSC functionality.
+
+1. chat with your character
+2. they think and move on their own.
+
+### character voice
+
+kawaii
+
+- `elevenlabs.io`: https://elevenlabs.io/docs/api-reference/authentication
+
+```json
+{
+ "elevenlabs": {
+ "model": "eleven_turbo_v2.5",
+ "voice_id": "lhTvHflPVOqgSWyuWQry"
+ }
+}
+```
+
+### voice to text
+
+- `Google Cloud Speech-to-Text API`: https://docs.cloud.google.com/speech-to-text/docs/quickstarts/transcribe-api
+
+### AI
+
+- `claude code`, `mcp`: https://claude.ai/
+- `openai gpt-4o-mini`: https://platform.openai.com/docs/models/gpt-4o-mini
+
diff --git a/web.md b/web.md
new file mode 100644
index 0000000..5127e05
--- /dev/null
+++ b/web.md
@@ -0,0 +1,14 @@
+# Web Browser
+
+UIやテレビ画面を作るのに適しています。
+
+## 色抜きとテレビ画面
+
+1. pluginで`web browser`を有効にします。
+2. 緑背景のmaterialを作成します。これは色抜きと呼ばれる手法です。完璧ではありません。
+3. web browserをコントロールするには、BP_browserに追加したwidget componentで呼び出します。collisionでcontrolします。
+4. 例えば、テレビ画面のSMを用意し、BPを作ります。そこに、widgetを追加。それを繋げれば見栄えも良くなります。
+
+- https://blueprintue.com/blueprint/-49_059w/
+- https://blueprintue.com/blueprint/uubw_6ay/
+- https://www.unrealengine.com/marketplace/ja/product/twinmotion-high-tech-pack-1
\ No newline at end of file
diff --git a/win.md b/win.md
new file mode 100644
index 0000000..93b5c3d
--- /dev/null
+++ b/win.md
@@ -0,0 +1,221 @@
+# windows
+
+- updated: 5.7.1
+- https://visualstudio.microsoft.com/ja/downloads/
+
+```sh
+# https://dev.epicgames.com/documentation/en-US/unreal-engine/setting-up-visual-studio-development-environment-for-cplusplus-projects-in-unreal-engine
+# winget install Microsoft.VisualStudio.2022.Community
+$ winget install Microsoft.VisualStudio.Community
+- .NET Desktop
+- C++ Desktop
+- C++ ゲーム開発
+```
+
+windows固有の設定など。
+
+## winget
+
+- https://github.com/microsoft/winget-cli/releases
+
+```sh
+$ winget show --id=9NT1R1C2HH7J --source=msstore
+公開元: OpenAI
+発行元 URL: https://help.openai.com
+```
+
+### update
+
+```sh
+$ winget source update
+$ winget upgrade
+---
+$ winget upgrade --all
+```
+
+### pkg
+
+おすすめのpkgです。これらは多用します。
+
+```sh
+$ winget install
+ microsoft.windowsterminal.preview
+ microsoft.powershell.preview
+ microsoft.openssh.preview
+ microsoft.visualstudiocode
+ microsoft.wsl
+ microsoft.powertoys
+```
+
+```sh
+$ winget install Anthropic.ClaudeCode
+```
+
+https://code.claude.com/docs/ja/overview#winget
+
+### git
+
+- https://github.com/git/git
+- https://github.com/jesseduffield/lazygit
+
+```sh
+$ winget install git.git
+$ winget install vim.vim
+```
+
+```sh
+$ winget install jesseduffield.lazygit
+```
+
+### other
+
+安全性については別途調べてください。
+
+|title|command(id)|
+|---|---|
+|cuda|Nvidia.Cuda|
+|epicgameslauncher|EpicGames.EpicGamesLauncher|
+|blender|BlenderFoundation.Blender|
+|discord|Discord.Discord|
+|unity|Unity.UnityHub|
+|obs|OBSProject.OBSStudio|
+|vlc|VideoLAN.VLC|
+|ffmpeg|Gyan.FFmpeg|
+|docker|Docker.DockerDesktop|
+|firefox|Mozilla.Firefox|
+|python|Python.Python.3.13|
+|jq|jqlang.jq|
+|7z|7zip.7zip|
+
+## pwsh
+
+- https://github.com/microsoft/terminal
+- https://github.com/powershell/powershell
+
+`pwsh(powershell)`を多用します。
+
+`powertoys`でショートカットキーを設定します。`wt(microsoft.windowsterminal)`を開きます。
+
+## windowsが不安定になる要因
+
+例えば、デスクトップを選択できなくなったり、エクスプローラーが操作できなくなる現象の要因は、`EpicGamesLauncher.exe`にあります。
+
+`UnrealEditor.exe`自体もバグだらけで様々な問題を引き起こします。場合によっては、osやハードディスクを破壊しますが、`EpicGamesLauncher.exe`も同様に、windows desktopで様々な問題を引き起こす要因になります。このことには注意してください。
+
+## 画面がチラつく
+
+UnrealEditorが短時間で激しく点滅します。なかなか分かりづらいですが、この現象を早期に発見しないと、目がやられてしまうでしょう。
+
+nvidiaのコントロールパネルを開いて、私の場合は、G-SYNCをオフにすると、治りました。
+
+## openssh
+
+- https://github.com/powershell/win32-openssh
+
+`mac`などと開発するに当たって、`openssh`を使用します。
+
+serverにaccess(アクセス)したり、または自身をserverにしたりします。
+
+```sh
+$ winget install microsoft.openssh.preview
+```
+
+### windowsに接続する
+
+windowsをssh serverにする方法です。
+
+`sshd_config`は`c:/programdata/ssh/sshd_config`にあります。
+
+> c:/programdata/ssh/sshd_config
+
+```sh
+PasswordAuthentication no
+PermitEmptyPasswords yes
+AuthorizedKeysFile .ssh/authorized_keys
+#Match Group administrators
+# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
+```
+
+```sh
+# server
+$ net start sshd
+```
+
+client側で`ssh-keygen`を実行して作成した`.pub`を`~/.ssh/authorized_keys`に追記します。これで鍵認証が通ります。
+
+```sh
+# client
+$ ssh-keygen -f ~/.ssh/test
+$ cat ~/.ssh/test.pub
+ssh-rsa AAAAXXXX
+---
+# server
+$ echo "ssh-rsa AAAAXXXX" >> ~/.ssh/authorized_keys
+$ cat ~/.ssh/authorized_keys
+ssh-rsa AAAAXXXX
+```
+
+この処理は`ssh-copy-id`などが使用できる場合は短縮できます。windowsのopensshが対応しているかはわかりませんが。
+
+```sh
+# client
+$ ssh-copy-id -i ~/.ssh/test $USER@192.168.1.23
+```
+
+では他のpcからwindowsにアクセスしてみましょう。
+
+```sh
+# client
+$ ssh -i ~/.ssh/test $USER@192.168.1.23
+```
+
+なお、`~/.ssh/config`に書いておくと省略できます。これはclient側です。
+
+> ~/.ssh/config
+
+```sh
+Host windows
+ User syui
+ Hostname 192.168.1.23
+ IdentityFile ~/.ssh/test
+ Port 22
+```
+
+```sh
+# client
+$ ssh windows
+```
+
+file(dir) copyも容易です。
+
+```sh
+# server
+$ echo 12345 > ~/file.txt
+
+# client
+$ scp -r windows:file.txt .
+$ cat file.txt
+12345
+```
+
+### default-shell
+
+デフォルト(default)のshellを`pwsh`に変えます。
+
+default-shellを変更した場合の注意ですが、更新した際にerrが出る場合があります。
+
+> Permission denied (publickey,keyboard-interactive).
+
+default-shellのpathが違うとpassword/publickey認証のどちらも通りませんので注意してください。
+
+```sh
+$ New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\PowerShell\7\pwsh.exe" -PropertyType String -Force
+```
+
+例えば、pwsh-previewを使っている場合はこうなります。使用しているpwshのpathを確認してください。
+
+```diff
++ C:\Program Files\PowerShell\7-preview\pwsh.exe
+- C:\Program Files\PowerShell\7\pwsh.exe
+```
+