Eleven Table Tennis이란? VR에서 즐길 수 있는 탁구게임입니다! "VR에서 탁구를 한다"라는 설명말고는 딱히 더 말할게 없어서 넘어가겠습니다! 별점 (8.5/10) 현실에서 치는 탁구와는 아무래도 이런 저런 차이들이 존재해서 아쉬웠습니다 예를 들면, 라켓 정면으로 공을 칠 때 슝~날라간다? 느낌과 서브를 넣을 때 괴리감(?) 등... 그래도 게임 자체는 나쁘지 않았으며 현실적이라는 느낌을 많이 받았습니다! 게임하는 방법 멀티가 가능하며 싱글도 가능합니다! 싱글로 할 경우 AI와 플레이하게 되는데 AI가 매우 잘합니다.... AI의 레벨을 선택할 수 있으며 다양한 옵션이 주어집니다! 아래는 게임플레이 영상입니다! 느낀점 나도 스포츠 게임을 현실감 나게끔 만들어 보고 싶다는 욕구가 들었습니다..
본 내용은 정확하지 않을 수 있으며 문제가 생길시 수정하도록 하겠습니다. 스터디를 복습하기 위해 적어둔 글임을 강조합니다. LobbyManager 로비를 만드는 중추 역할을 합니다. CreateInitialPlayerData Dictionary CreateInitialPlayerData(LocalPlayer user) { Dictionary data = new Dictionary(); var displayNameObject = new PlayerDataObject(PlayerDataObject.VisibilityOptions.Member, user.DisplayName.Value); data.Add("DisplayName", displayNameObject); return data; } Player의 V..
LobbyEventCallbacks 오류 Lobby Sample을 공부하다보면 위 코드 밑줄친 부분이 에러가 뜨는 경우가 있다! 이럴 때는 Project Settings에 들어가서 Player탭을 누른 후 Other Setting를 클릭 후 내리다 보면 Script Compilation영역이 있는데 여기에 UGS_BETA_LOBBY_EVENTS UGS_LOBBY_EVENTS 두 개를 추가한 후 Apply를 눌러주면 된다!!
[Flag] 속성이란 enum 열거형에서 사용할 수 있으며 enum이 여러 속성을 선택할 수 있게 해주는 기능입니다! [참고 사이트] https://dallcom-forever2620.tistory.com/15 [C#] enum 에서 Flags 속성달기 12345678910[Flags]public enum MonsterType{ None = 0, Human = 1 dallcom-forever2620.tistory.com
NGO 에서는 INetworkSerializable 인터페이스를 network serialization를 위한 유저가 정의한 type을 실행시킬 수 있습니다! 유저가 정의한 type외에도 기본적으로 C#과 Unity Primitive을 지원합니다! C# Primitives bool, char, sbyte, byte, short, ushort, int, uint, long, ulong, float, double, string타입을 지원합니다. Unity Primitives Color, Color32, Vector2, Vector3, Vector4, Quaternion, Ray, Ray2D을 지원합니다! 유저가 정의한 Type Enum Types Arrays int[] 같은 배열 형태를 처리하기 위해서는 U..
별점 (8.5/10) 후한 점수를 준 이유는 완성도있는 스토리와 아름다운 배경, UX, 그리고 게임 난이도 입니다! 기승전결이 잘 짜여져 있으며 플레이어가 막히는 스테이지 없이 잘 해결해나갈 수 있게 친화적인 UX설계와 도중에 사망해도 사망한 지점에서 부활하여 스토리를 이어나갈 수 있게 해주는 난이도 덕분에 스트레스 없이 재밌게 플레이하였습니다! 무엇보다 화면이 2개로 분할돼서 다른 플레이어가 무엇을 하는지 바라볼 수 있어서 색다로웠습니다! 스토리 부모가 부부싸움을 하는 장면으로 시작합니다 부부싸움하는 장면을 멀리서 자식이 지켜보고 있고요... 그 후, 가족 다같이 식사를 하는데 이게 웬걸... 밥먹다말고 부모는 자식에게 이혼소식을 발표합니다..! 자식은 엄마아빠의 이혼소식을 듣고 슬픈 나머지 창고에 가..
Introduction NGO는 게임 상태를 동기화해주는 옵션들이 있습니다! RPC(Remote Procedure Calls) Custom Messages NetworkVariables RPC ServerRpc는 주로 플레이어가 world object를 사용하기 위해 서버에게 알릴 때 사용됩니다! ClientRpc는 서버가 플레이어의 동기화될 때 필요하지 않은 정보나 특별한 reconnection key값을 클라이언트들에게 알릴 때 사용됩니다 [RPC] 속성을 사용하기 위해서는 함수 접미사에 Rpc를 붙여야합니다! Custom Messages Custom Messages는 특별한 시나리오를 처리하기 위해 자신만의 특별한 "netcode message type"을 만들 수 있습니다 NetworkVariab..
Object Pooling NGO에는 Object Pooling기능을 제공하고 있습니다! 2022.09.04 - [나만의 꿀팁] - Unity Pooling System (최적화 구웃!) Unity Pooling System (최적화 구웃!) 서론 없이 바로 코드부터 투척!! 먼저 TestPooling을 싱글톤으로 만들어버리자! 그리고 무수히 많이 생성될 녀석 -> poolPrefab을 만들자! 그리고 이녀석들은 Queue로 관리된다! 선입선출? 맞나? FIFO이건 wlsdn629.tistory.com 기존 Object Pooling을 참고하시면 좋을 듯합니다! 다음은 BossRoom에서 사용되는 NetworkObject Pooling 방식입니다! using System; using System.Coll..
별점 The Room VR을 한 이유는 XREAL - 마스터피스라는 프로젝트 팀에서 방탈출 기획할 때 영감을 얻기 위해 해보았다 일단 The Room VR의 총점은 (7/10)이였다 3점이 깎인 이유는 퍼즐을 못푸는 사람으로써 굉장히 스트레스 받았기 때문이다 ㅠㅠㅠ 퍼즐푸는 것을 좋아하는 사람이라면 9점정도 받지 않을까 싶은데 그 이유는 The Room VR을 하면서 "VR"에서만 가능할 것 같다는 퍼즐 기믹들을 보았기 때문이다 게임 방식 The Room VR을 처음하는 사람을 위해 게임 시작시 위와 같이 컨트롤러 예시가 나오고 어떤 버튼을 눌러야하는지 UX로 설명해준다 게임을 하다보면 편지를 찾게 된다 편지는 인벤토리에 있는 아이피스를 이용하여 도움을 받을 수 있다 아이피스를 이용하면 위와 같이 흔적들..
Object Spawning 유니티에서는 일반적으로 Instantiate 함수를 통해 게임오브젝트를 만들곤 합니다 Instantiate함수를 이용하여 만든 게임오브젝트를 동기화 하기 위해서는 Spawn()이라는 함수를 이용하면 됩니다! Network Prefab에는 게임오브젝트에 NetworkObject 컴포넌트가 붙어 있어야 합니다. 주의할 점은, 둘 이상의 NetworkObject 컴포넌트가 붙어 있는 프리팹은 추가할 수 없습니다! NetworkObject컴포넌트를 가지면 NetworkObject.NetworkObjectId를 이용할 수 있습니다! 사용법은 아래와 같습니다! Spawning a Network Prefab (Overview) Netcode는 서버권위적이므로 Network 프리팹을 소환하..
NetworkTransform 게임이 실행되는 동안 position, rotation, scale을 동기화 하고 싶으면 NetworkTransform컴포넌트를 사용하면 됩니다 Network Object의 자식들에 NetworkTransform컴포넌트를 하나 이상 가지게 되면 각 자식 Objects들은 개별적인 독립체로 따로 따로 동기화 됩니다! 각 오브젝트는 독립적으로 움직입니다! Client Network Transform 컴포넌트가 각 오브젝트마다 별개로 부착되어 있습니다! 모든 Transform을 동기화할 필요는 없습니다! 필요에 따라 체크를 하시면 됩니다! Scale이 필요 없으면 Scale 체크를 다 해제하면 됩니다! 또한 너무 잦은 Transform Update를 막기 위해 Thresholds..
NetworkManager은 NGO에 관련한 모든 세팅에 대한 것을 가지고 있는 컴포넌트입니다! 즉, "Central Netcode Hub"라고 부를 수 있겠네요!! NetworkManager인스펙터엔 다양한 프로퍼티가 존재합니다! https://docs-multiplayer.unity3d.com/netcode/current/components/networkmanager#networkmanager-inspector-properties NetworkManager | Unity Multiplayer Networking The NetworkManager is a required Netcode for GameObjects (Netcode) component that has all of your project's..
요약 Player Data는 플레이어가 연결할 때, 그리고 재접속할 때 필요합니다! ClientID는 연결될 때 생기지만 연결 해제될 때 사라지므로, ClientID를 Player Data로 쓰지 못합니다 따라서, 플레이어만의 고유한 ID를 이용하여 Player Data로 사용해야 합니다! 고유한 ID를 만들어 내기 위해선, 다음 옵션을 포함해야합니다! 고유한 유저 계정을 이용한 로그인 시스템 글로벌한 고유한 id, 예를 들어, System.Guid.NewGuid를 통해 생성된 GUID나 클라이언트 측에서 PlayerPrefs로 저장한 데이터들이 있습니다! 고유한 ID를 가지고, 각 플레이어의 Data(플레이어의 현재 상태)를 매핑시킬 수 있습니다 플레이어가 다시 연결할 때를 위해 호스트 측에서 데이터를..