2024/11 19

팀프로젝트 - 프로토타입 로비 완성, 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와의 연동이 잘 되어있다고..

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

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

게임 제작을 나누는 단계

최종프로젝트 진행 전, 어떻게 프로젝트를 진행해야하는지에 대한 내용 정리입니다. 게임 사이클을 만들기게임 사이클은 게임을 시작하고, 게임이 끝날때 까지의 진행 과정입니다.솔로플레이, 챕터 진행 방식의 게임이라면, 챕터의 시작를 시작하고, 챕터가 완료될 때 까지 어떻게 진행될지를 만들어야 합니다.PVP형태의 게임이라면, 매칭이 끝나고 게임을 어떻게 시작할지, 게임의 진행은 어떻게 될지, 게임이 어떻게 종료될지(승리, 패배 판정) 을 만들어야합니다.단계를 나누기1단계구현이 종료되면 게임이 돌아가는 단계입니다.게임성, 화려한 이펙트, 추가기능등은 구현할 필요가 없습니다.게임이 진행되기만 하면 됩니다. 로그라이크형 게임일 경우, 스테이지가 시작된다 - 방에 입장하면 전투가 시작된다- 전투가 종료되고 보상을 준다..

타일맵 위치에 오브젝트 생성하기

팀 프로젝트로 타워디펜스를 제작하게 되었는데, 타일맵을 사용할 때, 타워의 설치 위치를 정해주어야 하는 상황이 생겼습니다. 일단 마우스가 Collider 에 올라가면 자신을 설치 위치로 잡아주는 오브젝트를 제작하였는데, 이것을 지정한 타일에 올려줄 방법이 필요아였습니다.public class ConstructPoint : MonoBehaviour{ public bool IsTowerConstructed { get; private set; } public Transform constructPosition; public Tower ConstructedTower { get; private set; } [SerializeField] private GameObject selectImage; ..

중첩 코루틴, 다수의 코루틴

유니티 공식문서의 코루틴 부분 마지막에는 이러한 문구가 있습니다. 일련의 작업을 최대한 적은 수의 개별 코루틴으로 압축하는 것이 가장 좋습니다. 중첩 코루틴은 코드 명료성과 유지관리에 용이하지만 코루틴이 오브젝트를 추적하기 때문에 더 많은 메모리가 소모됩니다.코루틴이 매 프레임마다 실행되고 오래 실행되는 작업에서 yield 되지 않는 경우 Update 또는 LateUpdate 콜백으로 대체하는 것이 더 효과적입니다. 이는 오래 실행되거나 무한 루프되는 코루틴의 경우에 유용합니다. 이때, 중첩 코루틴의 경우, 실행중인 코루틴 내부에서 다른 코루틴을 호출하는 경우로, 이러한 경우를 사용하지 않는것을 권고하고 있습니다. 또한, while문을 사용하여 실행중 무한히 반복되는 코루틴이나 오랜시간동안 실행되는 코루..

특강정리 - 디버깅, 프레임 워크 구조

코드가 복잡해지면, 문제가 발생할 가능성이 높아짐이를 해결해기 위해 디버깅 과정을 거쳐야함 중단점f9 혹은 디버깅을 하고 싶은 줄의 좌측을 클릭해서 생성실행중 중단점을 만나면 해당 위치에서 코드 중단유니티에서 사용시, 중단점을 찍은뒤, 유니티에 연결을 누르고, 씬 재생중단점을 만났을때, 해당 지점에서 필드에 어떤값이 들어있는지를 확인 할 수 있음호출 스택함수가 참조되었을때, 해당 함수가 어디에서 호출되었는지를 보여줌조건특정한 상황이 동시에 발생했을때 만 디버깅 하고싶을때 사용 가능중단점에 조건을 걸어서 해당 위치에서 조건을 충족중일때 코드를 중단조건이 있을경우 중단점 원에 + 가 붙음추가 기능f10 - 프로시저 단위 실행 : 해당 코드의 다음 줄 실행(메서드 내용은 단계별 실행 없이 전부실행)f11 - ..