지금 팀프로젝트를 진행중인데, 로컬멀티플레이는 계산해두지 않고 제작하고있다.
이번주 주말에 로아숙제가 빨리 끝난다면 로컬멀티플레이는 내가 꼭 하고싶은 부분이다.
하지만 막상 하려고 할때 어디부터 어떻게 해야할지 정말 막막할것이다.
그런 나를 위한 ! 로컬 멀티플레이를 추가하기위한 TIL겸 가이드 !!
체크리스트 !
1. 입력 시스템
- Unity New Input System을 사용하는 경우 각 플레이어의 Action Map를 설정하고 Player1, Player2 등으로 분리
- Player Input Manager클래스에서 플레이어마다 입력을 처리할 수 있도록 수정
2. 카메라 시스템 (싱글 카메라로 사용할지 분할 카메라로 사용할지 결정 우리는 싱글로 충분 !)
3. UI 및 HUD 시스템
- 각 플레이어의 체력, 스코어 가 분리되어 표시하기
- 공용UI는 잘 분리하여 놔두기
- 개인 UI의 색과 캐릭터 색을 맞추고 캐릭터 머리위에 어떤 화살표 등으로 표시하는것도 매우 좋아보임.
4. 게임 로직 및 데이터
- 체력, 스코어, 능력 등을 개별적으로 관리하는 구조로 변경할것 (상자아이템은 누가먼저 먹냐로 재밌을듯 ?)
- 기존의 한명의 플레이어 로직을 건드는것 X 확장을 하여 두명의 플레이어가 사용하는것을 만들것 !!
5. 충돌 및 상호작용 시스템
- 플레이어와 불 환경등의 충돌이 개별적으로 잘 이루어지는지 체크할것
6. 게임 상태 관리
- 한 플레이어가 죽어도 다른 플레이어가 남아있으면 게임 진행이 멈추지 않도록 설정했는지 확인할것
7. 플레이어 스폰위치 조정
8. 사운드 및 효과 확인
- 각플레이어의 효과사운드(점프) 같은것들이 분리되어 출력이 잘 되는지 체크하기
- 동시에 피격됐을때 작동이 잘 되는지 확인하기
9. 씬 조정하기
- 혼자 게임할지 두명에서 게임할지 정하는것이 필요 (게임 가이드도 필요해 보임 키 안내 등)
- 캐릭터 선택 시 첫번째 플레이어의 캐릭터 선택 이후 두번째 플레이어의 선택 알려주는것도 필요해 보임
아래는 해당 가이드를 바탕으로 우리 프로젝트에서 필요한 부분을 그대로 따라하면 될 정도로 정리함.
스크립트별 분리를 해두었음
게임매니저에 싱글, 멀티 선택한걸 저장해두고
싱글플레이시 Player1만 적용하고 멀티플레이 선택시 2도 함께 하는식으로 로직을 변경하면됨
싱글 혹은 멀티 선택을 받으면
public enum GameMode { SinglePlayer, MultiPlayer }
public static GameMode currentGameMode;
public void StartSinglePlayer()
{
currentGameMode = GameMode.SinglePlayer;
}
public void StartMultiPlayer()
{
currentGameMode = GameMode.MultiPlayer;
}
위의 열거형을 바탕으로 로직을 수정해나감
if (GameManager.currentGameMode == GameMode.MultiPlayer)
{
// 멀티로직
}
else
{
// 싱글로직
}
1. PlayerController 및 Player
- Playe1과 Player2를 프리팹으로 분리해주기 (이미 분리 돼있는듯 캐릭터 선택이 아닌, 왼쪽이 1번 오른쪽이2번으로 미리 고정해두는것도 좋아보임)
- PlayerInputController에서 Onmove 및 Onjump를 각 플레이어가 독립적으로 조작할수있게 설정하기 ?
- 캐릭터 선택이 끝나고 시작했을때 두명이 동시에 스폰되게 바꾸기(이건 게임매니저에서 하면 될듯)
2. InputPlayerInform 및 PlayerInformManager
- 닉네임 입력을 분리해서 받을것
- 각 캐릭터에 분리해서 받은것을 나눠서 할당해줄것
3. Score 및 ScoreManager
- ScoreManager에서 두명의 점수를 따로 관리해줄것
4. RandomBoxSpawner 및 RandomEffectManager
- 두 플레이어 모두에게 동일한 효과를 주도록 적용할것
- 시간이 느려지는것은 게임자체를 건드는것이고 자석효과같은부분에서 수정이 필요함
5. UIManager
- 체력과 점수를 개별표기할것
유니티에서 할일 !
1. 플레이어를 각각의 PlayerController로 스폰시키고 입력을 따로 할당하도록 설정
2. Input System 에서 Player2의 Input System만들어주기
3. UI 추가해주기