Persona
Pawn Module / PersonaSystem
Persona
Pawn이 Collective Reasoning 파이프라인에 주입하는 판단 소스(judgment source). 성격 분산 파라미터를 보유하며, AI가 동일 상황에서도 개체마다 다른 판단을 내리도록 하는 입력 레이어다.
역할 개요
Persona가 없으면 Collective Reasoning 파이프라인은 모든 Pawn에게 동일한 판단 분포를 적용한다. Persona를 주입하면 성격 분산(personality variance) 파라미터가 PawnEncode 입력에 섞여, 같은 환경 상태에서도 Pawn마다 다른 행동 확률을 갖게 된다. 소극적·공격적·신중한 등의 행동 경향을 에셋 단위로 정의하고 재사용하는 것이 목적이다.
IPersona는 현재 멤버가 없는 마커 상태다.
코드 내 // TODO: add personality variance source 주석이 남아 있으며,
실제 판단 소스 필드 설계가 완료되지 않았다.
Persona ScriptableObject 역시 현재 빈 구현체이며, 파이프라인 연결은 미구현이다.
인터페이스 & 구현체
public interface IPersona
{
// TODO: add personality variance source
} 현재 마커 인터페이스. 향후 성격 분산 파라미터(공격성, 신중함, 사회성 등) 접근자를 여기에 정의 예정.
[CreateAssetMenu(menuName = "Forks/Pawn/Persona")]
public class Persona : ScriptableObject, IPersona, IPawnModule
{
// 판단 소스 필드 — 미구현
}
IPersona + IPawnModule 동시 구현. Pawn에 직접 참조(SetPersona)
또는 AssetReference(SetPersonaRef)로 연결한다.
Collective Reasoning 파이프라인 연계
Persona는 Pawn이 CollectiveReasoning 파이프라인을 실행할 때 PawnEncode 패스의 입력 채널에 성격 분산 값을 제공할 예정이다. 파이프라인 구조는 아래와 같다.
inputChannels 중 일부를 Persona 판단 소스가 채울 예정.
현재는 Persona 입력 없이 동작.
pawn_action_state 결정.
Persona 분산이 주입되면 같은 State에서도 Pawn마다 다른 행동 확률이 나온다.
Flow 노드
Persona 관련 노드는 모두 Pawn/Build 카테고리에 등록된다.
직렬화된 Persona 에셋을 그래프에 공급하는 소스 노드.
기존 Pawn에 Persona를 연결한 뒤 반환.
내부적으로 pawn.SetPersona(persona)를 호출.
Pawn 입력 없으면 빈 Pawn 자동 생성.