반응형

Reloading System

 

1stWeaponAmmo/BagRifleAmmo

 

- BagRifleAmmo == 0

ex 1) 0/0 -> 불가능

ex 2) 25/0  -> 불가능

 

1stWeaponAmmo + BagRifleAmmo < MaxAmmo and BagRifleAmmo < ProvideAmmo

ex 3) 0/25 -> 1stWeaponAmmo = BagRifleAmmo, BagRifleAmmo = 0  

-> 25/0

 

1stWeaponAmmo + BagRifleAmmo < MaxAmmo and BagRifleAmmo >= MaxAmmo 

ex 4) 0/40 ->1stWeaponAmmo = MaxAmmo, BagRifleAmmo = BagRifleAmmo - MaxAmmo   

-> 30/10

 

 

1stWeaponAmmo > 0 and BagRifleAmmo >= MaxAmmo 

ex 5) 25/30 -> 1stWeaponAmmo = MaxAmmo ,

BagRifleAmmo = BagRifleAmmo - (MaxAmmo - 1stWeaponAmmo)

 -> 30/25

 

ex 6) 25/110 -> 1stWeaponAmmo = MaxAmmo ,

BagRifleAmmo = BagRifleAmmo - (MaxAmmo - 1stWeaponAmmo)

-> 30/105

 

 

1stWeaponAmmo > 0 and BagRifleAmmo < MaxAmmo 

ex 7) 25/28-> 1stWeaponAmmo = MaxAmmo ,

BagRifleAmmo = BagRifleAmmo - (MaxAmmo - 1stWeaponAmmo)

-> 30/23

 

 

1stWeaponAmmo + BagRifleAmmo < MaxAmmo 

Ex 8) 24/5 ->

 

-> 29/0

반응형

'develop-note > Unreal_BattleGround' 카테고리의 다른 글

Customize Skin 동기화 버그  (0) 2019.08.20
반응형

Lobby 화면에서 PlayerCharacter의 스킨을 설정한뒤 저장(Save)하여 나중에 

Match나 Dedicated Server에 들어갔을때 Load Game from Slot 을 통해 

Skin 데이터를 불러와서

동기화를 시키는데 모든 플레이어에게 동기화 되버리는 버그 발생

Skin Customize 화면
저장해둔 Skin 데이터를 Load 하여 동기화 시키는 로직

원인 : 서버/GameMode 에서 PlayerCharacter를 Spawn 시킬때 동기화를 시작한다

이때 GetPlayerController(PlayerIndex) 함수를 썼는데

클라이언트에서는 0번이 자기자신의 컨트롤러를 뜻하지만, 서버에서는 0번이 실제 0번째 플레이어를 뜻하므로

0번째 플레이어 컨트롤러의 Skin 데이터를 적용한다가 되버린다

 

 

 

 

해결

동기화 로직을 서버/GameMode 에서 PlayerCharacter/BeginPlay 에서 처리하도록 옮겼다

 

Load Game from Slot 을 통해 데이터를 불러온뒤 PlayerController 객체에 변수로 저장해둠
PlayerCharacter/BeginPlay, 이때 GetController를 통해 올바른 데이터를 가진 컨트롤러를 가져온다

 

 

 

반응형

'develop-note > Unreal_BattleGround' 카테고리의 다른 글

Reloading System  (0) 2019.09.02

+ Recent posts