호출자는 클래스가 아니라 구현한 능력을 향한다

발사체는 대상의 구체 클래스 대신 BPI_Damageable 계약만 확인하고 같은 메시지를 보낸다.

Interface: BPI_DamageableFunction: ApplyDamageInput: DamageAmount: Float
Event HitOther Actor를 메시지 대상 후보로 확보
Does Implement Interface?BPI_Damageable 계약만 검사
ApplyDamage (Message)True일 때 Target과 DamageAmount 전달
TRUE — 같은 메시지, 다른 구현
BP_Enemy체력 차감
BP_Player방어막 → 체력
BP_Breakable내구도와 파괴
FALSE — 안전한 제외
StaticMeshActor
Cast나 멤버 접근 없이 통과
Cast 감소
호출자가 클래스 이름을 모른다.
구현체 확장
새 액터는 계약만 구현한다.
변경 격리
대상별 규칙은 각 이벤트에 남는다.