쾌락없는 책임 (공부)/Unity
-
[Unity] Unity lobby private 일때 강퇴당하면 생기는 오류 해결쾌락없는 책임 (공부)/Unity 2023. 2. 11. 12:13
개요 private 한 Lobby를 만들고 강퇴를 하는 순간 아래처럼 이상하게 긴 오류가 나왔다. [Lobby]: Forbidden, (16403). Message: lobby is private UnityEngine.Logger:LogError (string,object) Unity.Services.Lobbies.Logger:LogError (object) (at Library/PackageCache/com.unity.services.lobby@1.0.3/Runtime/Utils/Logger.cs:17) Unity.Services.Lobbies.Internal.WrappedLobbyService:ResolveErrorWrapping (Unity.Services.Lobbies.LobbyExceptionR..
-
[Unity] Behaviour Tree에 관한 간단한 이야기쾌락없는 책임 (공부)/Unity 2023. 2. 9. 17:37
개요 지금까지는 FSM를 통해서 간단한 AI들만 만들어 왔습니다. 다만 FSM은 확실히 한계가 있고 유지보수에 있어서 코드를 보는 게 많이 힘들었습니다. 그래서 BT라는 게 있다! 는 걸 알고는 있었는데... 뭔가 알 수 없는 벽을 느껴 일단 외면하고 있었습니다. 최근에 와서 더 많은걸 알아봐야 된다는 필요성을 느끼고 있었고 이에 따라서 BT와 관련한 것들을 알아보고 정리하게 되었습니다. 일단 유니티의 경우에는 Behaviour Tree를 직접 구현하거나 에셋을 활용해야 하는데 일단 직접 구현으로 시작하게 되었습니다. Behaviour Tree 에 관한 간단한 개요 일단 FSM을 간단하게 알아보고 가겠습니다. 전에 만든 간단한 FSM 입니다. 객체는 한 개의 State만 가질 수 있고 각 State는 다..
-
[Unity] Unity Relay 를 통해서 P2P 연결 만들어보기쾌락없는 책임 (공부)/Unity 2023. 2. 1. 13:29
개요 이전 소켓 프로그래밍으로 네트워크를 제작할 때 한가지 문제점을 보게 되었습니다. 일단 포트 포워딩 없이 다른 IP를 연결하기가 힘들었고 다른 방법이 있다 했지만 네트워크 관련 지식이 없어서 다음으로 미루기만 했습니다. 다만 유니티의 최신 버전들 부터는 퍼스트 파티 네트워크 SDK 들이 생겼고 이후 Lobby와 함께 Relay를 활용해 게임 제작해 사용을 했습니다. 그래서 이번 글에서 Lobby에 이어 Relay를 간단하게 설명하려고 합니다. Lobby 유니티 공식에서도 Lobby와의 조합이 좋다고 합니다. 물론 대규모를 처리하기 위한 데디케이트 서버가 아니지만 소규모 정도는 Lobby + Relay로 충분히 가능할겁니다. Lobby는 이름처럼 매치메이킹을 위한 SDK 입니다. 이와 관련한 내용을 이..
-
[Unity] 유니티 멀티플레이를 위한 Lobby, 플레이어 매치메이킹쾌락없는 책임 (공부)/Unity 2023. 1. 30. 18:48
개요 친구와 함께 플젝을 시작하기 전, 최근 유니티에서 퍼스트파티로 네트워크 서비스를 제공하는 걸 접했습니다. Unity NetCode, Lobby, Relay들이 그 주인공들인데 최신 버전들은 이 혜택을 받을 수 있습니다. 그래서 이번에 Lobby를 통해서 플레이어 매치메이킹을 만든 과정에 대해서 한번 적어보려고 합니다. Lobby는 매치메이킹 용이지 멀티플레이 기능은 아닙니다. 일단 여러 플레이어가 CO-OP을 하거나 VS를 하는 기능과 Lobby는 다른 기능입니다. Lobby는 이름대로 매치메이킹을 위한 도구로 이후 Relay와 더불어서 플레이어 연결에 사용되는 기능입니다. 때문에 '멀티플레이' 자체를 보고 싶다면 NetCode 부분을 알아보시면 됩니다. (추후 글을 작성할 예정입니다) NetCod..
-
[Unity] GPGS Android Setup Invalid classname: Object reference not set to an instance of an object 오류 날 시쾌락없는 책임 (공부)/Unity 2023. 1. 30. 16:50
결론 : GPGS 버전을 바꿔보자 Unity 20213.10f1 버전을 사용하면서 GPGS는 이전 v0.10.12와 23년 1월 기준 가장 최신인 v11.01 을 사용했을 때 위와 같은 오류가 잡히게 되었습니다. 또한 Asset 메뉴에서 Extern Dependency Manager 메뉴도 찾을 수 없는 증상이 있었습니다. 이와 같은 오류들을 해결하기 위해서 단서를 찾아 봤는데 일단 v.11 이후부터는 GPGS SDK 버전이 달라져서 그런 것 같았고 이전 버전은 현재 유니티 버전과 잘 맞지 않아서 그런 것 같습니다. 그래서 결론은 GPGS 버전을 v10.14 로 변경하는 것입니다. 아마 유니티 버전과 GPGS 버전이 맞지 않아서 생기는 문제 같습니다. 2020년도 버전들의 유니티를 사용한다면 v10.12..
-
[Unity] 유니티 fake null과 관련한 이야기들쾌락없는 책임 (공부)/Unity 2023. 1. 16. 11:56
개요 이전부터 문서들을 참고할 때 많이 보이는 내용이지만 이제 와서야 정리를 하게 된 내용입니다. 유니티가 오브젝트를 어떻게 가지고 있는지, GC, operator == 등과 관련한 이야기들을 확인할 수 있습니다. Destroy()를 하면 어떤 일이 벌어지는가 일단 현상을 먼저 보고 설명을 드리겠습니다. IEnumerator Start() { CapsuleCollider2D col = gameObject.AddComponent(); yield return null; Destroy(col); yield return null; IsUnityNull(col); IsSystemNull(col); } private void IsUnityNull(Object obj) { if (obj == null) Debug.L..
-
[Unity] NewtonSoft 사용중 빌드시 json 파일이 보이지 않는다면쾌락없는 책임 (공부)/Unity 2022. 10. 25. 17:01
개요 친구와 유니티 게임 데모를 빌드하는데 각종 말풍선에 들어가는 이름들을 Json으로 저장해두고 사용하고 있었습니다. 그런데! 빌드를 하니 이 Json 파일들이 다 보이지 않고 빌드 파일에 수작업으로 넣어줘도 경로를 제대로 읽지 못하는 문제가 있었습니다. 해결법 File -> Build Settings -> player -> 상단에 Api Compatibility Level 검색 -> .NET 4.x 로 선택 후 빌드하면 해결됩니다. 참고 사이트 Unity에서 .NET 4.x 사용 Unity에서 .NET 4.x를 사용하는 방법을 이해합니다. .NET 4.x 스크립팅 런타임을 사용하도록 설정합니다. .NET 호환성을 활용합니다. 새 구문 및 언어 기능을 검토합니다. learn.microsoft.com
-
[Unity/C#] C# 에서 리스트 셔플하기 - C# list shuffle쾌락없는 책임 (공부)/Unity 2022. 9. 30. 16:52
개요 최근 덱 빌딩 카드 게임을 개발하다가 일단 덱 빌딩 게임은 각 게임이 시작될 때 카드를 셔플해 두는 게 중요합니다. 그런데 안타깝게도 C#에서 리스트를 바로 셔플 할만한 함수가 없었습니다. C++은 random_shuffle(물론 C++11까지) 같은 함수들이 있어 이를 사용할 수 있는데 C#은 이상하리만큼 이런 쪽 함수들이 적은 느낌이라 직접 구현을 해야 했습니다. 그래서 발견한 알고리즘이 피셔-예이츠 셔플(Fisher-Yates Shuffle)인데 이번 글에서 이를 정리해 보려고 합니다. 코드 급한 분들을 위해서 사용한 코드 먼저. // GameAlgorithm.cs private static Random rng = new Random(); public static void Shuffle(thi..