260109 커맨드 패턴
·
📖TIL
모바일 기기에서 가로/세로 모드 고정하고 싶을때 옵션 설정Portraits 커맨드 패턴리플레이 시스템 : 어느 타이밍에 무엇을 눌렀는지 기억함이걸 그냥 하나씩 수행하면 그게 곧 리플레이가 된다. 커맨트 패턴이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 메서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. 키 설정 변경입력 기록 저장실행 취소리플레이파이어베이스 + 커맨드 패턴커맨드는 객체니깐, 직렬화 해서 서버에 저장시킬 수 있다.예 : 타임어택의 고스트Photon + 커맨드 패턴공격 명령을 언제 어떻게 했다RPC로 커맨드를 날려서 수행하게 하기. 상태패턴과 엮을수 있다.할수 있는 것AI 행동 큐RTS 명령 버퍼격투게임 입력..
260109 네트워크 데이터 드리븐
·
📖TIL
데이터를 저장하고 직접 사용Firebase 데이터 베이스를 구성하고 사용할 수 있다.데이터 베이스 사용을 위해 데이터를 구조화하여 다룰 수 있다. 실시간 데이터베이스 보안 규칙https://firebase.google.com/docs/database/security/core-syntax?hl=ko&authuser=0문제가 생겼을때 앱 삭제를 진행하면 된다google-services.json 파일은 반드시 Asset 폴더 안에 있어야한다.using UnityEngine;using UnityEngine.UI;using Firebase.Auth; // 로그인 기능을 쓰기 위해 필요using Firebase.Database; // 파이어베이스 데이터베이스를 임포트 하면 쓸수 있는 DB 기능using Fireba..
Firebase
·
🌍Network
Firebase파이어베이스는 어플리케이션 개발에 필요한 백엔드 플랫폼이다.게임의 경우 클라이언트 뿐만 아니라 게임을 구성하기 위한 다양한 백엔드 플랫폼 기능들이 필요하다.파이어베이스는 다양한 기능의 백엔드 기능을 제공하여 개발자에서 클라이언트 개발에 집중할 수 있도록 한다.서버를 직접 만들지 않아도 로그인, DB, 알림, 분석까지 한 번에 해결해주는 서비스모바일, 웹, 앱을 빠르게 만들기 위한 백엔드 서비스 묶음이다. 무엇을 할 수 있는지?Authentication ( 인증 )└ 이메일 / 비밀번호└ Google , Apple, Facebook 로그인└ 익명 로그인└ 회원가입과 로그인 서버 직접 만들지 않아도 된다Database ( 데이터 저장 )└ 실시간 동기화 ( 채팅 , 상태 표시 )└ 구조 : ..
260108 Firebase
·
📖TIL
네트워크 데이터 베이스Json 파일은 절대 public 으로 노출되면 안된다.oom room = PhotonNetwork.CurrentRoom; // 현재 참가한 룸을 확인// 룸 커스텀 프로퍼티 설정ExitGames.Client.Photon.Hashtable roomProperty = new ExitGames.Client.Photon.Hashtabl> ();roomProperty["Map"] = "Select Map";room.SetCustomProperties(roomProperty);// 룸 커스텀 프로퍼티 확인string curMap = (string)room.CustomProperties["Map"];Player player = PhotonNetwork.LocalPlayer; // 자신 플레..
RPC ( Remote Procedure Call )
·
🌍Network
RPC ( Remote Procedure Call )RPC 는 내가 호출한 함수를 다른 플레이어 PC 에서도 똑같이 실행시키는 방식이다.Photon 멀티플레이에서 행동과 이벤트 동기화의 핵심 수단이다.Photon Engine 에서 제공하는 함수 동기화 방식Photon View 가 붙은 오브젝트 기준으로특정 함수를 모든 ( 또는 일부 ) 클라이언트에서 실행값이 아니라 행동을 보내는 방식 다음처럼 한 번 발생하는 이벤트에 RPC 를 사용하는 것이 적합하다공격 실행피격 처리스킬 발동사운드 재생이펙트 생성게임 시작과 종료using Photon.Pun;public class PlayerAttack : MonoBehaviour{ [PunRPC] void Attack() { Debug.L..
IPunObservable
·
🌍Network
IPunObservableIPunObservable은 Photon 에서 변수 값을 자동으로 동기화하기 위한 인터페이스이다.RPC 처럼 이벤트로 호출하는 방식이 아니라, 값 자체를 계속 보내는 방식이다.Photon Engine 에서 제공하는 변수 동기화 인터페이스Photon View 가 붙은 오브젝트에서 사용네트워크 프레임마다 값을 보내고 받는 구조Transform 동기화의 내부 원리와 동일하다 언제 사용하는가?계속 변화는 상태 값에 적합하다.체력점수상태 값 ( Idle / Move / Attack )방향 ( direction )충전 게이지 , 쿨타임 수치한 번만 알려주면 되는 이벤트는 RPC 가 더 적합하다. ▼ 인터페이스 구현using Photon.Pun;public class PlayerStatus..
Photon View
·
🌍Network
Photon View포톤 뷰는 네트워크에서 이 오브젝트를 동기화하겠다고 표시하는 핵심 컴포넌트이다.Photon Engine 기반 멀티플레이에서 네트워크로 공유되는 GameObject 에 반드시 붙는 컴포넌트이다.이 컴포넌트가 있어야 할수 있는 것RPC 호출 가능Transform / Animation 동기화 가능오브젝트 소유권 ( Ownership ) 관리 가능 Photon View 의 핵심 3가지1. 고유 ID ( ViewID )네트워크 상에서 오브젝트를 구분하는 유일한 번호같은 ViewID = 같은 오브젝트자동 할당2. RPC 통신 창구photonView.RPC("Attack", RpcTarget.All);이 오브젝트를 기준으로 모든 클라이언트에 함수 호출Photon View 가 없으면 RPC 사용 불..
Photon Lobby & Room
·
🌍Network
Photon LobbyRoom 에 들어가기 전의 중단 단계현재 생성된 방 목록을 받아오는 공간이다.아직 게임은 시작되지 않았고 서버 ( Photon Engine )와 연결되어 매칭 준비를 하는 곳PhotonNetwork.JoinLobby();public override void OnJoinedLobby(){ Debug.Log("로비 입장 완료");} Lobby 에서 할 수 있는 것방 목록 조회 ( Room List )방 생성 / 방 선택랜덤 매칭 시도유저 대기 상태 관리 Photon Room멀티플레이에서 플레이어들이 함께 접속해 게임 상태를 공유하는 가상 방같은 방에 들어온 사람들끼리만 서로의 행동이 보이는 공간이다.플레이어 그룹 단위 공간같은 Room 에 있는 플레이어끼리만 동기화 ( RPC, ..
260107 네트워크 게임플레이
·
📖TIL
일단 커넥트 되면, 디스커넥트 하지 않는 이상 다른 앱아이디로 접속 불가능public override void OnConnectedToMaster(){ Debug.Log("일단 마스터 서버까지는 잘 연결 되었음"); PhotonNetwork.JoinLobby(); // 로비 입장을 시키는 명령 SceneManager.LoadScene("Lobby"); // 로비 씬을 불러오라는 명령}public override void OnJoinedLobby(){ Debug.Log("로비 입장 완료");}위의 코드의 문제점씬을 넘어가면 해당 서버 연결과 스크립트 유지가 안됨씬 전환후 OnJoinedLobby 콜백이 안올 수도 있음using UnityEngine;using Photon.Pun;usi..