Unity : 마샬링(Marshalling) 과 메모리 풀링(Memory Pooling)
·
Unity
마샬링(Marshalling) 이란? C#과 같은 Managed 환경은 가비지 컬렉터(GC)가 메모리를 관리하며, 데이터가 메모리에 배치되는 방식의 런타임에 의해 유동적으로 결정될 수 있다. 반면 C/C++ 같은 Unmanaged 환경은 개발자가 직접 메모리를 제어하며, 메모리 레이아웃이 고정되어 있다. 이런 서로 다른 두 환경에서 데이터를 교환하려면 번역 과정이 필요하게 된다.예를 들어 C#의 string 타입은 내부적으로 UTF-16 인코딩을 사용하는 객체지만, C++ 에서는 const char* (UTF-8 또는 ASCII) 형태의 포인터 배열로 돼있다.이때 C#의 문자열을 C++이 이해할 수 있는 메모리 구조로 복사하고 변환해 주는 작업이 마샬링이다. Blittable 타입과 Non-Blittab..
Unity Network : Photon Pun2 - PhotonView, IPunObservable, RPC
·
Unity
PhotonViewPhoton 네트워크에서 동기화 단위의 기준점네트워크 상에서 하나의 오브젝트를 식별하는 IDRPC, 변수 동기화, Ownership 판단의 기준PhotonView가 없는 오브젝트는 네트워크에 존재하지 않는다역할설명네트워크 IDViewID로 객체 식별소유권 관리Owner / IsMineRPC 송신View 기준 호출변수 동기화Observe 대상 지정 PhotonView pv;pv.IsMine // 내가 소유한 오브젝트인가pv.Owner // 소유 Playerpv.Owner.ActorNumber // pv의 인덱스처럼 1000씩 증가하는 고유 값pv.ViewID // 네트워크 고유 IDpv.RPC(함수명, RpcTarget.Others, 함수 파라미터); IPunObserv..
Unity Network : Photon Pun 2 - Lobby / Room
·
Unity
Photon PUN2 : Lobby / Room Photon 네트워크의 전체 흐름 요약Photon PUN2에서 클라이언트는 다음과 같은 흐름으로 네트워크에 참여한다.Photon Server Connect → Lobby → Room → InGameLobby: 방 목록을 조회하고, 방을 고르는 대기 공간Room: 실제로 플레이어들이 모여 동기화된 게임을 진행하는 공간LobbyLobby는 말 그대로 방 목록을 관리하는 대기 공간이다.현재 열려 있는 Room 목록을 서버로부터 전달받는다플레이어는 여기서새로운 Room을 생성하거나기존 Room에 참가한다Lobby에 들어갔다고 해서 다른 플레이어와 동기화가 되는 것은 아니다.Lobby는 매칭을 위한 공간일 뿐이다.동기화X 없음게임 로직X 실행 불가Room 목록O 조..
Unity : Photon PUN2, Voice 2 로 실시간 멀티 플레이, 음성채팅 적용하기
·
카테고리 없음
Photon PUN2 와 Voice2로 멀티플레이, 음성채팅을 적용하기 위한 유닛 테스트다.거두 절미하고 과정을 빠르게 설명 Asset Store 에서 Photon PUN 2, Photon Voice 2 Free 버전을 다운 받는다.유니티 공식 에셋 스토어에서 검색해서 다운 받으면 된다. Photon 프로젝트 및 AppId 설정https://dashboard.photonengine.com/ko-kr해당 사이트에 접속해 회원가입 / 로그인 진행Dashboard (관리화면) 으로 이동새 어플리케이션 만들기로 Voice와 Pun을 생성해준다. 각각 창에 보이는 AppID를 사용해야한다. 유니티에서 세팅유니티 프로젝트에서 두 에셋을 다운로드 후 임포트 한다.Window 탭에 있는 Photon Unity Netw..