add post
This commit is contained in:
		
							
								
								
									
										64
									
								
								my-blog/content/posts/2025-07-30-game.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								my-blog/content/posts/2025-07-30-game.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,64 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					title: "ue5のgaspとdragonikを組み合わせてenemyを作る"
 | 
				
			||||||
 | 
					slug: "gasp-dragonik-enemy-chbcharacter"
 | 
				
			||||||
 | 
					date: "2025-07-30"
 | 
				
			||||||
 | 
					tags: ["ue"]
 | 
				
			||||||
 | 
					draft: false
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ue5.6でgasp(game animation sample project)をベースにゲーム、特にキャラクターの操作を作っています。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					そして、enemy(敵)を作り、バトルシーンを作成する予定ですが、これはどのように開発すればいいのでしょう。その方針を明確にします。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					1. enemyもgaspの`cbp_character`に統合し、自キャラ、敵キャラどちらでも使用可能にする
 | 
				
			||||||
 | 
					2. 2番目のcharacterは動物型(type:animal)にし、gaspに統合する
 | 
				
			||||||
 | 
					3. enemyとして使用する場合は、enemy-AI-componentを追加するだけで完結する
 | 
				
			||||||
 | 
					4. characterのすべての操作を統一する
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					このようにすることで、応用可能なenemyを作ることができます。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					例えば、`2番目のcharacterは動物型(type:animal)にする`というのはどういうことでしょう。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					登場するキャラクターを人型(type:human), 動物型(type:animal)に分けるとして、動物型のテンプレートを作る必要があります。そのまま動物のmeshをgaspで使うと動きが変になってしまうので、それを調整する必要があるということ。そして、調整したものをテンプレート化して、他の動物にも適用できるようにしておくと、後の開発は楽ですよね。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ですから、早いうちにtype:humanから脱却し、他のtypeを作るほうがいいと判断しました。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					これには、`dragon ik plugin`を使って、手っ取り早く動きを作ります。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					`characterのすべての操作を統一する`というのは、1キャラにつき1属性、1通常攻撃、1スキル、1バースト、などのルールを作り、それらを共通化することです。共通化というのは、playerもenemy-AI-componentも違うキャラを同じ操作で使用できることを指します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## 2番目のキャラクター
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					原作には、西洋ドラゴンのドライ(drai)というキャラが登場します。その父親が東洋ドラゴンのシンオウ(shin-oh)です。これをshinという名前で登録し、2番目のキャラクターとして設定しました。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3d-modelは今のところue5のcrsp(control rig sample project)にあるchinese dragonを使用しています。後に改造して原作に近づけるようにしたいところですが、今は時間が取れません。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<iframe width="100%" height="415" src="https://www.youtube.com/embed/3c3Q1Z5r7QI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## データ構造の作成と適用
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ゲームデータはatproto collection recordに保存して、そこからゲームに反映させたいと考えています。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					まず基本データを`ai.syui.ai`のアカウントに保存。個別データをplayerのatprotoアカウントに保存する形が理想です。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					基本データは、ゲームの基本的な設定のこと。例えば、キャラクターの名前や属性、スキルなど変更されることがない値。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					個別データは、プレイヤーが使えるキャラ、レベル、攻撃力など、ゲームの進行とともに変更される値です。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ゲームをスタートさせると、まず基本データを取得し、それを`cbp_character`に適用します。ログインすると、`cbp_character`の変数(var)に値が振り分けられます。例えば、`skill-damage:0.0`があったとして、この値が変わります。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					しかし、ゲームを開発していると、基本データも個別データも構造が複雑になります。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					それを防ぐため、`{simple, core} mode`のような考え方を取り入れます。必要最小限の構成を分離、保存して、それをいつでも統合、適用できるように設計しておきます。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## gaspとdragonikを統合する方法
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					では、いよいよgaspとdragonikの統合手法を解説します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					まず、abpを作ります。それにdragonikを当て、それをSKM_Dragonのpost process animに指定します。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					次に、動きに合わせて首を上下させます。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<iframe src="https://blueprintue.com/render/piiw14oz" scrolling="no" allowfullscreen style="width:100%;height:400px"></iframe>
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								my-blog/static/img/ue_gasp_dragonik_shin_v0001.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								my-blog/static/img/ue_gasp_dragonik_shin_v0001.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 723 KiB  | 
		Reference in New Issue
	
	Block a user