문제 양상은 뭔가?
네트워크 장애인가?
<클라>
[2025.02.13-06.18.44:110][641]LogTemp: Display: AItemEntity::OnCachedOnly(476) - Cache Item : EntityName[BowWeapon_01], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], TimeStamp[24.195731]
[2025.02.13-06.18.44:110][641]LogTemp: Display: AItemEntity::OnCachedOnly(476) - Cache Item : EntityName[BowWeapon_01], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], TimeStamp[24.195731]
[2025.02.13-06.18.44:488][664]LogTemp: Display: AItemEntity::OnCachedOnly(476) - Cache Item : EntityName[Throwable_JumpPad_SkyHunter], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], TimeStamp[24.961440]
[2025.02.13-06.18.44:488][664]LogTemp: Display: AItemEntity::OnHoldInHand(396) - Hold Item : EntityName[BowWeapon_01], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], SocketName[Bow], TimeStamp[24.961440]
[2025.02.13-06.18.44:492][664]LogTemp: Display: UGRCharacterAnimInstance_FP::OnHandHeldItemChanged(163) - FP AnimInstance Change HandHeldItem[BP_BowWeapon_01_C_0] bHeld[1]
[2025.02.13-06.18.44:492][664]LogStreaming: Display: FlushAsyncLoading(616): 1 QueuedPackages, 0 AsyncPackages
[2025.02.13-06.18.44:502][664]LogTemp: Display: UHandHeldComponent::PlayEquipAnimation(881) - PlayEquipAnim : EntityName[BP_BowWeapon_01_C_0]
- Item[BP_BowWeapon_01_C_0] Visible[True]
- Item[BP_Throwable_JumpPad_SkyHunter_C_0] Visible[False]
<서버>
[2025.02.13-06.19.25:452][439]LogTemp: Display: AItemEntity::OnCachedOnly(476) - Cache Item : EntityName[Throwable_JumpPad_SkyHunter], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], TimeStamp[10.382906]
[2025.02.13-06.19.25:452][439]LogTemp: Display: AItemEntity::OnHoldInHand(396) - Hold Item : EntityName[BowWeapon_01], Holder[BP_ALS_CharacterPlayer_Skyhunter_C_0], SocketName[Bow], TimeStamp[10.382906]
[2025.02.13-06.19.25:454][439]LogTemp: Display: UGRCharacterAnimInstance_FP::OnHandHeldItemChanged(163) - FP AnimInstance Change HandHeldItem[BP_BowWeapon_01_C_0] bHeld[1]
[2025.02.13-06.19.25:454][439]LogTemp: Display: UHandHeldComponent::PlayEquipAnimation(881) - PlayEquipAnim : EntityName[BP_BowWeapon_01_C_0]
- Item[BP_BowWeapon_01_C_0] Visible[True]
- Item[BP_Throwable_JumpPad_SkyHunter_C_0] Visible[False]
로그 상 문제 없는 것으로 보임
몽타주를 중복 재생하는가?
비지블 문제인가?
- 위 로그를 보면 알겠지만, 순차적으로 잘 적용하고 있음
무기 교체시 무기가 두개가 보이는가?
왜 한 프레임이 밀릴까?
- 원인이 될 수 있는 가능성이 뭐가 있을까
- 플레이어 캐릭터
- OnHandHeldItemChanged
- Overlay 변동
- Overlay의 리플리케이션을 제어해도 문제가 똑같이 지속됐음
- 인벤토리
- 혹시 무기 변경시 새로운 액터를 스폰해서 클라에서 보이는 건가?
- 확인 결과 캐싱 되어있는 액터로 잘 전환하고 있음
- 핸드핼드 컴포넌트
- 같은 프레임 안에서 기존에 들고 있던 점프패드를 캐싱하고, 들어야 하는 활을 든 뒤, 애니메이션을 재생하는 동작이 서버와 동일하다.
- 그나마 의심해볼만한건, 그 뒤에 추가적으로 불리는 점프패드에 대한 캐싱 두 개가 활에게도 영향을 주는가?
- 아이템 객체
- Visible 관련된 함수가 추가적으로 불리는지 확인
- 애니메이션
- 몽타주 동작 자체가 클라이언트에서 뭔가 다르게 동작할 소지가 있는가?
- 애니메이션 틱 이후에 장착 애니메이션을 수행하는경우 가능성 있음
- 몽타주가 재생된 이후에 혹시 무기 교체가 이뤄지는가?
- 테스트 결과 애니메이션 교체 후 몽타주 재생됨
- 애니메이션 링크 레이어 관련 문제이진 않은가?
- 링크 레이어 갱신하는 쪽에 로그 박아서, 순서 확인 중
- HandHeld -> Refresh -> AnimInstance 순으로 정상 궤도에 있는 것을 확인
- 네트워크
해결
- 무기 선택하는 로직이 타이머를 통해서 불림
- 플레이어 캐릭터의 1인칭 매시의 틱 그룹이 PrePhysics에 해당
- 이에 무기 선택하는 로직을 수행하는 GRInventoryComponent의 Tick에서 무기를 드는 로직을 수행 -> PrePhysics
- 플레이어 캐릭터의 1인칭 매시 틱 그룹을 PostPhysics로 변경 -> 문제 해결