게임 클라이언트 개발
-
UGUI의 성능 최적화게임 클라이언트 개발/Unity 2023. 11. 8. 00:38
여러 장르의 게임이 존재하지만, 공통적으로 제일 중요한 부분은 사용자 인터페이스를 맡고 있는 UI일 것이다. UI는 사용자와 어떻게 상호작용을 할 것인지도 중요하지만 Unity Profiler에선 UI만 따로 볼 수 있을 정도로 UI의 성능 또한 매우 중요하다. Unity의 UI를 담당하는 Component 중 가장 기본적인 Component는 Canvas일 것이다. Canvas의 Render Mode는 Screen Space - Overlay, Screen Space - Camera, World Space 총 세 가지가 존재하며 이번 UGUI의 성능 최적화는 Screen Space - Overlay 최적화를 목표로 한다. 출처 : Unity Korea 공식 유튜브 https://www.youtube.c..
-
Unity 스크립트 최적화게임 클라이언트 개발/Unity 2023. 11. 7. 01:07
유니티에서 사용하는 C#은 프로그래머가 직접 메모리를 해제하는 C++과 달리 메모리 해제를 Garbage Collector(통칭 GC)에 의해 수행된다. GC의 메모리 해제 로직(Mark and Sweep)은 프로파일러를 확인해보면 일정 주기마다 이루어지는데 이때 해제해야 하는 메모리가 많다면 성능에 영향을 주는데 이를 Spark 현상이라고 한다. 이런 스파크 현상이 많다면 게임이 뚝뚝 끊기는 현상이 발생하여 게임 플레이에 지장을 준다. 이번 스크립트 최적화에선 GC 최적화를 주로 목표로 하며 이외의 최적화 방법도 소개한다. GetComponent, Find 사용 줄이기 GetComponent, Find, FindObjectOfType 등의 함수는 Hierarchy 내에 오브젝트를 탐색하기에 비용이 비싸..
-
Photon 동기화 방식 - Custom Properties게임 클라이언트 개발/Photon 2023. 11. 7. 00:12
Photon 동기화 방식은 크게 5가지가 있다. 그 중 Custom Properties에 관한 글이다. Custom Properties ExitGames.Client.Photon.Hashtable 반환형의 Dictionary로 게임 내에서 자주 변하지 않는 변수(Ex. 스테이지 클리어 시 다음 스테이지로 가는 문이 열렸는지 여부에 대한 변수 등)를 동기화할 때 사용한다. Key는 string 타입, Value는 object 타입이고 RPC Method의 파라미터와 마찬가지로 기본 타입만 Value로 사용할 수 있다. Custom Properties는 Room과 Player에 모두 존재하며 로컬 클라이언트에서 수정하면 모든 클라이언트에 업데이트된다. 코드 사용법 1. Set ,Get using Photon..
-
Photon 동기화 방식 - RPC Method게임 클라이언트 개발/Photon 2023. 11. 5. 05:05
Photon 동기화 방식은 크게 5가지가 있다. 그 중 RPC Method에 관한 글이다. RPC란? 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시저를 실행할 수 있게하는 프로세스 간 통신 기술 (출처 : 위키백과) 네트워킹 관점에서 본다면 별도의 원격 제어 없이 다른 클라이언트에서 함수를 실행할 수 있게하는 통신 기술이라고 이해할 수 있다. Photon에선 Animator, Rigidbody, Transform Component 외의 함수로 동기화 시 사용한다. 코드 사용법 1. 호출하고자 하는 RPC Method PunRPC 속성을 부여해야 한다. 네이밍 컨벤션으론 마지막에 RPC를 붙인다. (다른 컨벤션이 있다면 해당 컨벤션 사용) 파라미터는 기본 형식만 가능하다. byte,..
-
Photon 동기화 방식 - Photon View Component게임 클라이언트 개발/Photon 2023. 11. 3. 20:00
Photon 동기화 방식은 크게 5가지가 있다. 그 중 Photon View Component에 관한 글이다. Photon View Component Photon View Component는 Photon 동기화 시 네트워크가 동기화를 위해 오브젝트를 관측하는 Component이다. Photon View Component의 맴버 변수 View ID : 오브젝트를 식별하기 위한 고유 ID IsMine : 로컬 플레이어의 소유인 Photon View Component인가? 즉, Owner가 로컬 플레이어인가? Owner : 해당 Photon View Component의 소유권을 가지고 있는 플레이어 Creator : 해당 Photon View Component를 생성한 플레이어 Observable Compon..