전체 글 151

팀 프로젝트 진행 - 멀티플레이 구현

팀원이 제작한 플레이어 오브젝트를 네트워크 오브젝트화 하여 멀티플레이를 구현하였습니다. 캐릭터 생성 로직네트워크 오브젝트를 스폰하기 위한 클래스를 생성해주었습니다.이후 모든 오브젝트의 생성을 이 클래스가 당담할 예정입니다.public class NetworkSpawnController : MonoSingleton{ public Transform profassorSpawnPoint; public Transform studentSpawnPoint; public NetworkObject playerPrefab; protected override void Awake() { Create(); if (Instance != this) { ..

팀프로젝트 진행 - 재시작 문제 해결

호스트와의 연결이 끊길경우, 호스트가 서버를 종료했을경우 클라이언트 플레이어가 로비로 돌아오도록 수정해주었습니다.public class NetworkConnectController : MonoBehaviour{ public NetworkObject networkGameManager; private void Awake() { if (NetworkManager.Singleton.IsHost) { NetworkObject netGameManager = Instantiate(networkGameManager); netGameManager.Spawn(true); } } //게스트 플레이어의 경우, 서버와 연결이..

Netcode - NetworkObject, NetworkBehaviour

NetworkObject 서버를 통해 작동해야하는 오브젝트에 붙여주는 컴포넌트호스트측에서 Instantiate 를 한 뒤, Spawn을 해서 클라이언트측에서 해당 오브젝트가 생성됨클라이언트측에서는 오브젝트를 생성, Spawn 할 권리가 없음Spawn(false) 를 할 경우, DontDestroyOnLoad 가 붙은 오브젝트로 생성됨(기본값이 true, 씬을 넘어가면 파괴됨)호스트측에서 오브젝트를 생성하고, SpawnWithOwnerShip() 을 사용하여 입력한 클라이언트 ID 의 소유로 생성해 줄 수 있다Spawn시 유니티 생명주기중 Awake 이후에 스폰된다, 따라서 Awake를 사용할 수 없다NetworkBehaviourNetworkManager 와 별도로 IsHost, IsClient 등의 플래..

팀 프로젝트 - Vivox 조작 UI 제작

좌측 하단에 다른 참가자가 입력을 할 경우 이를 시작적으로 표시해 줄 수 있는 HUD UI와, 보이스채팅 음량을 조절할 수 있는 UI를 제작하였습니다. 보이스채팅 채널에 입장할 때, HUD UI를 생성해주는 코드입니다.public class VoiceChatSetter : MonoSingleton{ public List chatList = new List(); public RosterItem hudUiPrefab; public Transform hudParentPosition; protected override void Awake() { Create(); if (Instance != this) { Destroy(gameO..

팀프로젝트 - 프로토타입 로비 완성, Vivox 연동 시작

레디 기능, 방 떠나기 기능, 강퇴기능을 로비에 추가하고, 게임 시작시 Relay를 통해 연결하는 내용까지 구현하여 프로토타입 로비를 완성하였습니다. 위의 사진과 같이 게스트 참여자의 경우 Ready 버튼이 활성화 되며, Ready 버튼을 누를경우 준비가 완료되었다는 뜻으로 체크 이미지가 표기됩니다.호스트의 경우, Ready 버튼 위치에 Kick 버튼이 활성화되며, 이 버튼을 누를경우 참여자가 강퇴되게 됩니다. 또한 호스트 플레이어의 경우 Kick, Ready 버튼이 모두 비활성화 됩니다. 또한 우측 아래 Leave Lobby 버튼을 눌러서 로비에서 나갈 수 있으며 호스트가 로비를 떠날경우 로비 게스트 참여자도 강제로 로비에서 내보내는 방식으로 제작하였습니다.또한 게임 시작 버튼의 경우 모든 참여자가 준..

팀 프로젝트 진행 - 프로토타입 로비 제작

UGS의 Lobby 기능을 사용하여 로비를 생성하고, 방 코드를 입력하여 생성된 로비에 입장할 수 있도록 만들어주었습니다. 먼저 로비기능을 관리하는 클래스입니다.제네릭 싱글톤이 현재 씬을 넘어가는 형태로만 제작되어있기 떄문에, Awake를 재정의하여 씬을 넘어가지 않도록 만들어주었습니다.public class LobbyManager : MonoSingleton{ public TMP_InputField nameInput; public TMP_InputField roomCodeInput; //UI관리용 이벤트 //로비에 참여하면 호출 public event Action OnJoinLobbyEvent; //로비에서 나가면 호출 public event Action OnLea..

팀프로젝트 진행 - UGS 연결

UGS의 Lobby, Relay, Vivox 를 이용하여 멀티플레이를 구현할 예정이기 때문에, 프로젝트에 UGS를 연결하게 되었습니다. UGS 페이지에서 신규 프로젝틀를 등록할 경우 해당 프로젝트의 ID를 발급받을 수 있습니다.이 아이디를 유니티 에디터에 등록하면 UGS에 프로젝트를 연동하여 UGS 시스템을 이용할 수 있습니다. 에디터에서는 Edit - Project Setting - Services 에서 UGS 에 연결 할 수 있습니다.프로젝트를 생성했거나 생성할 조직을 선택한 뒤, Use an existing cloud project 를 선택하면 사전에 만들어준 프로젝트를 선택하여 ID를 등록할 수 있으며Create a new cloud project 를 선택하면 새로운 프로젝트를 생성하여 ID를 발..

특강 - 그래픽스와 셰이더

CPU - 모든 연산을 처리RAM - 주 기억장치SSD(하드디스크) - 보조 기억장치 - 모니터의 해상도가 커지면서, 모니터의 모든 픽셀을 CPU가 연산하여 처리하기에는 비 효율적→ 낮은 연산능력의 코어를 여러개 가져서, 낮은 수준의 많은 연산을 동시 처리하는 GPU가 등장하게됨 다수의 픽셀 처리를 GPU가 당담하게 되어 CPU는 중요 연산만 처리하고, 화면은 GPU가 당담※ 여담, 이러한 병렬처리 능력 때문에 딥러닝에서 GPU를 주로 사용하게 된다.컨벌루젼 네트워크를 통해 학습을 진행하는데, 이것이 점마다 연산을 처리한 뒤, 결과물을 다시 연산하는것을 반복하기 때문이다. 랜더링 파이프라인3차원으로 만들어진 모델을, 2차원으로 투영하는 과정3차원 도형은 버텍스라는 이름의 점으로 이루어져있으며, 버텍스는 ..

최종 팀프로젝트 - 멀티플레이 기반 생각하기

최종 프로젝트로 한쪽이 갇혀 있는상태로 퍼즐에 대한 힌트를 주고, 다른 한쪽은 외부에서 돌아다니며 퍼즐을 풀어 갇힌 사람을 구해내는 형태의 공포 게임을 제작하기로 하였습니다. 이를 위해 멀티플레이 로비와 인게임 보이스 채팅을 구현해야하게 되었습니다. 일단 로비와 플레이의 경우, Photon2를 사용하여 구현해볼까 하다가, 한번 UGS를 활용하여 Lobby, Relay를 사용하여 구현해볼 생각입니다. 또한 현재는 2명의 플레이어의 협동 플레이 게임이므로, P2P 형태의 서버를 구축하여도 문제가 없다고 생각중 입니다. 또한, 인게임 보이스 채팅은 UGS에서 Vivox 를 통해 지원하며, 5000명 이하의 동시 사용에 대해 무료로 사용할 수 있음을 확인하였으며, Lobby, Relay와의 연동이 잘 되어있다고..

특강 - 게임을 완성시키기 위한 기획

게임 개발에서의 커뮤니케이션서로의 생각을 이해하고, 함께 가고자 하는 방향으로 합쳐나가는것함께 가고자 하는 방향을 어떻게 잡을것인가 → 기조를 어떻게 잡을것인가기획에 대한 생각을 납득하게 하는것이 중요하다.납득을 위해 논리를 사용하게 된다.기조는 보통 상급자 (기획자)가 결정하게 되지만, 아마추어 단계에서는 개발자 본인이 결정하게 될 수도 있다. 좋은기조가능한 모든 구성원이 동의할 수 있어야한다.쉽게 변경되지 않아야한다.기조간의 우선순위가 명확하게 체계화 되어야한다.좋은 기조를 위한 기반논의를 주도할 리더가 있어야한다수평적 의사결정은 오히려 독이 될 가능성이 있다프로젝트 초기에 기조를 정해두는것이 좋다기조는 의견합치가 중여한데, 추상적인 상태에서 합치는것이 쉽다중간에 기조를 바꿀경우 의견 충돌의 가능성이..