반응형

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
반응형

 

배그에서는 인벤토리 창을 열면 위와같이 캐릭터 외관을 렌더링 해준다 

비슷하게나마 구현하는 법 강좌를 찾았는데 https://www.youtube.com/watch?v=mSDgMmaddJw

실제 멀티플레이에서는 어떻게 PlayerCharacter와 동기화 시키는 지는 안나와있다

아래방법은 위강좌에 보충하여 데이터 동기화 하는법까지 나와있다

 

  • Actor를 만들기
  • RenderTarget 만들고 UI Material 만들기
  • Widget 블루프린트 작성, PlayerCharacter 데이터 동기화 준비
  • PlayerController 에서 액터 스폰
  • Recording 액터에서 데이터 동기화 하기

 

 

1.RecordingActor는 Actor클래스이다 SceneCaptureComponent2D 를 추가한뒤 PlayerCharacter와 똑같은 메쉬 정보를 한뒤 그것을 캡쳐하여 RenderTarget을 만든다
2.RenderTarget의 사이즈를 알맞게 맞춘다 보통 ( x:y = 1.5 : 2 )

 

 

3.Material을 만든뒤 Material Domain : 유저 인터페이스 BlendMode : Translucent

 

 

 

 

4.WidgetBP 를 만든뒤 Custom Scale로 아까 RenderTarget 사이즈와 맞춘다 Image를 추가 하고 RenderTaget Material을 Image로 셋팅한다

 

 

 

5. PlayerContorller   객체에서   Spawn  한뒤   변수로   승격하여   Reference 를   가지고   있는다

 

 

 

 

 

 

6.아까 만든 WidgetBP 에선 Construct 이벤트시 playerController가 가지고 있는 RecordingActor 레퍼런스를 변수로 승격하여 가지고 있는다 또한 GetControlledPawn을 통해 PlayerCharacter를 가지고 온후 RecordingActor의 변수로 가지고 있는 playerCharacter에 Set 시킨다

Recording Actor 에서는 Tick 이벤트를 통해 PlayerCharacter 레퍼런스를 통해 Mesh 정보들을 동기화 시킨다

 

 

 

 

 

 

결과 화면

활성레벨   에디터   뷰포트로   플레이할시   이렇게   나오는데

 

 

 

그러나 실제 Shipping 하면 잘나온다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

'GameProgramming > Unreal' 카테고리의 다른 글

차 Mesh 땅에 반쯤 가라앉는 버그  (0) 2019.09.02
반응형

Oracle 기본 -3


1.GROUP BY

특정 그룹(컬럼)으로 묶어 GROUP 함수와 같이 사용해서 

합계(SUM), 평균(AVG), 최대(MAX), 최소(MIN), 갯수(COUNT) 값들을 구해줌

그러므로 SELECT 뒤에는 기준컬럼 하나만 쓰고 나머지는 GROUP 함수들을 써줌


-- 문법 양식

SELECT 기준컬럼

FROM 테이블

GROUP BY 기준컬럼;



-- SELECT 뒤의 컬럼과 GROUP BY의 기준컬럼이 일치해야됨;






2.GROUP 함수


문법 양식

SELECT 기준컬럼, AVG(적용할 컬럼), MIN(적용할 컬럼), MAX(적용할 컬럼)

FROM 테이블

GROUP BY 기준컬럼;


AVG(적용할 컬럼)



MIN(적용할 컬럼), MAX(적용할 컬럼)



 

SUM(적용할 컬럼) , COUNT(적용할 컬럼)














3.HAVING

GROUP BY 기준컬럼이나 GROUP함수에 조건을 줄때 즉, 사용 결과에 필터링 해주는 역할



SELECT 기준컬럼, AVG(적용할 컬럼), MIN(적용할 컬럼), MAX(적용할 컬럼)

FROM 테이블

GROUP BY 기준컬럼

HAVING 조건절;





평균 연봉 2000이상 출력




평균연봉 2000이상 3000이하





직무가 매니저, 이미 직무 별로 묶어놨으므로 ROW는 하나만 나옴







반응형

+ Recent posts