트러블 슈팅
1. 멀티 공격 시, 통신 딜레이
기존에 멀티 전투를 구현했을 때는 문제가 없이 잘 작동했는데, 개발을 진행하다보니 공격 시, 콜라이더가 작동하지 않는 버그가 생겼다. 모바일 -> PC를 공격하는 것은 정상적으로 작동되고, PC -> 모바일을 공격하는 것은 작동되지 않았다. 멀티의 통신 딜레이로 인해 모바일에서는 공격 콜라이더를 제대로 감지하지 못하는 것이라고 예상했다.
2. PhotonAnimatorView 동기화 시, 씹힘 현상
연속적으로 애니메이션이 실행되면 동기화가 어느정도 되지만, 한번씩 위와 같이 상대 PC에서는 동기화가 되지 않아서 애니메이션이 실행되지 않는다.
Synchronize Parameters 또한 모두 Continuous로 설정했지만 위와 같이 애니메이션이 실행되지 않는 경우가 많았다. 그 이유는 Photon Animator View를 사용할 때, Trigger Parameters의 경우 주의할 점이 몇가지 있다. Trigger는 특성 상, 애니메이션 이벤트가 활성화 될 때, 활성화 되고 Update문이 실행되기 전, 비활성화 된다. GameObject의 컴포넌트는 위에서 부터 순서대로 실행되기 때문에 Trigger을 실행하는 코드가 실행되고, 무조건 PhotonAnimatorView 컴포넌트가 실행되야 한다. 그래서 PhotonAnimatorView 컴포넌트는 가장 아래에 존재해야 한다. 나의 경우, PhotonAnimatorView 컴포넌트를 가장 아래에 존재했지만, Trigger을 실행하는 코드가 같은 GameObject에 존재하지 않고, 외부 스크립트에서 실행되기 때문에 Trigger 실행 코드와 PhotonAnimatorView 컴포넌트 중, 어떤 것이 먼저 실행될지 알 수 없어서 위와 같은 현상이 생기는 것이라고 생각했다.
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
if (!_photonView.IsMine)
{
_atk = _playerCharacter.Atk;
other.GetComponent<PlayerCharacter>().PhotonView.RPC("RPCPlayerNuckback", RpcTarget.AllViaServer, _playerCharacter.transform.position, _atk);
}
}
}
[PunRPC]
public void PlayerAttackRPC()
{
_anim.SetTrigger("Attack");
}
그래서 Trigger Parameter의 경우, PhotonAnimatorView를 통해 동기화 하지 않고, RPC를 통해 각자의 PC에서 개별적으로 함수를 실행해서 SetTrigger 코드를 실행하도록 수정했다.
RPC를 통해 Trigger을 실행해서 애니메이션 동기화가 씹히는 현상을 해결할 수 있었다!
3. 빌드 오류
어제 깃허브 Revert로 해결했던 빌드 오류가 다시 생겼다.. 아마도 GPGS와 Admob의 충돌을 피할 수는 없는 것 같다. 위 오류는 몇일간 구글링을 해도 결국 해결하지 못했던 내용이다. 결국, GPGS 사용을 포기하도록 했다. 애초에 GPGS는 뒤끝 서버의 회원가입을 위한 로그인 아이디를 받아오기 위한 용도로만 사용했다.
public int IdSetting()
{
int id = Random.Range(0, 10000);
GameManager.I.DataManager.GameData.LoginID = id.ToString();
return id;
}
대신 Random 함수를 사용해 랜덤 ID를 생성해서 회원가입을 진행하도록 했다.
현재 진행 중인 프로젝트에서 GPGS와 Admob을 제거하고, Admob을 다시 설치했지만, 동일한 빌드 오류가 발생했다. 현재 프로젝트에서는 설치 및 제거를 많이 반복해서 이미 어딘가 충돌해서 더 진행하기 어렵다고 판단했다. 그래서 새로운 프로젝트를 생성하고, 작업 내용을 모두 옮겨서 새로운 프로젝트에서 빌드를 진행해서 위 오류를 해결할 수 있었다.
회고
최대한 버그 수정에 시간을 쓰려고 노력했다. 예상 제작 기간을 훨씬 넘었기 때문이다. 일단 빌드 오류의 경우는 여러가지 테스트를 시도하고 플러그인을 설치, 삭제를 반복하다보니 프로젝트 자체에 문제가 생겼다고 판단하고 새로운 프로젝트에서 빌드를 하니 문제가 해결되었다. 애니메이션이 100% 동기화 되지 않는 것도 PUN2를 사용하게되면 어쩔수 없는 부분이라고 생각했지만 RPC를 사용해서 애니메이션 trigger 실행 함수 자체를 동기화해서 100% 애니메이션이 동기화 되도록 수정할 수 있었다. 마지막으로 문제는 빌드 후, 안드로이드 환경에서 공격이 제대로 적용되지 않는 것이었다. 이 부분은 여러가지 테스트 결과, 콜라이더 자체를 인식하지 못하고 공격 자체를 관통하는 것이라고 추측했다. 모바일 PVP 게임 특성 상, 모바일에서 공격이 적용되지 않으면 게임을 진행할 수 없다. 아직까지 방법을 도저히 찾을 수 없었기 때문에 해결 후, 업로드 하도록 하겠다!
'1인 개발 > Push And Slash' 카테고리의 다른 글
푸쉬앤슬래시 개인 프로젝트 34일차 (0) | 2024.07.06 |
---|---|
푸쉬앤슬래시 개인 프로젝트 33일차 (0) | 2024.07.04 |
푸쉬앤슬래시 개인 프로젝트 31일차 (0) | 2024.06.26 |
푸쉬앤슬래시 개인 프로젝트 30일차 (0) | 2024.06.24 |
푸쉬앤슬래시 개인 프로젝트 29일차 (0) | 2024.06.22 |