묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
함수에 대한 질문
제가 확실히 이해한 것이 맞는지 체크하고 싶어 질문 드려요. NetworkObject는 생성시 Instantiate함수만으로도 양쪽에 동기화 되어 생성된다. (생성만 되는 것인지 이동시 위치까지 동기화 되는건이지 궁금합니다.) ServerRpc함수 : 이 함수는 client의 작업은 client에서 하는 것이 아니라 host가 대리처리해 주어야 하기 때문에 client만 주로 호출할 일이 많다. ClientRpc함수 : host가 작동시킨 것들을 clinet에게 전달하거나 ServerRpc함수에 작업한 것을 다시 양쪽에 동기화해서 전송해주는 역할을 한다. 이 함수는 host와 client컴퓨터 양쪽에서 모두 실행된다. 위에 두 함
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
클라이언트 에러 및 버그들
안녕하세요! 강의를 보며 멀티플레이 게임 제작을 공부 중인 학생입니다.현재까지 나온 강의를 모두 듣고 클론 코딩을 하였는데 종종 클라이언트에서 에러가 발생합니다.깃허브 코드와 강의를 다시 봐도 해결이 힘들어 질문을 작성하게 되었습니다. client 화면에서 hero 들이 모두 화면 중앙에 배치되는 현상host는 문제 없이 host와 client영역으로 나뉘어져 있습니다.이 경우client에서 host보다 먼저 herospawn을 하면 null에러가 뜹니다.NullReferenceException: Object reference not set to an instance of an objectSpawner.HeroSpawn (System.UInt64 clientId, System.String rarity)Spawner 스크립트의 HeroSpawn(ulong clientId, string rarity) 함수의 var existingHolder = GetExistingHolder(temp, data.Name); 이 부분이 문제라고 뜹니다.host에서 herospawn을 먼저 하고 client에서 herospawn을 하면 null 에러 없이 랜덤하게 두 가지 경우가 나옵니다..위 사진처럼 client 화면의 중앙에 모든 hero가 배치되는 경우host, client모두 정상적으로 배치되는 경우그러나 위 두 가지 경우 모두 client는 host가 마지막으로 생성한 영웅만 생성됩니다.ex) host가 warrior 소환 시 client는 warrior 만 소환, host가 summon 버튼을 눌러 archer 소환 시, client는 그 후로 archer만 소환client 에서 영웅 클릭 시, NullReferenceException 발생CameraRay 스크립트의MouseButtonDown() 함수의 else if (value == 1) Canget = holder.Holder_Part_Name.Contains("CLIENT"); 부분에서 발생합니다. 위 두 문제의 해결법을 알고 싶습니다 ㅠㅠ게임을 실행하며 찾은 버그들 입니다.내 진영에서 상대 진영으로 hero 이동 가능hero 없는 빈 홀더 클릭 및 이동 가능 (ui도 뜸)빈 홀더 클릭 후, sell 버튼 클릭 시 Sell() 함수 내의 UI_Main.instance.GetNavigation 부분 인덱스 범위 에러 발생몬스터 클릭 시 CameraRay 스크립트 MouseButtonDown()가 호출되어 heroholder가 null이 되어 에러 발생 버그들은 각 관련된 처리를 하지 않아 발생한 것 같지만, 위의 클라이언트 문제는 해결법을 모르겠습니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
매니저관리에대해 질문이있습니다.
강의를 듣고 제가 느낀 매니저들을 관리하는 방식은 최상위 Managers를 통해 각각의 매니저를 접근하도록 만든 방식인거 같더라고요(저의 해석이 틀렸다면 지적부탁드립니다.)제가 여기서 궁금한 점은 다른 방식으로 각각의 매니저들을 싱글톤으로 만들어서 하는 방식이 존재하는데, 강의가 만약 게임의 규모가 커진다면을 생각해서 코드를 확장하기시기때문에 저도 좀 더 생각해보아서 후자의 방식이 더 좋은방식이지않을까?라는 생각이 들었습니다.이 주장의 근거는1.매니저들이 점점커지면 Managers에게 초기화 부담도 커질것이다. 2.Managers에 문제가생기면 모든 개별 Manager가 작동하지 않는다. 3.각 매니저는 전부 Managers에서 초기화 되기때문에 한 매니저에 의존성이 있는 매니저가 있을때 초기화 순서를 잘 해놓지않으면 오류가 발생한다.다시 강조하자면 "게임의 규모가 커진다면 개별적으로 매니저들을 관리하는게 더 관리하기 좋은 방식이지 않을까?"에 대한 루키스님에 의견을 듣고싶어 질문을 올립니다.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
섹션6 InGame 맵(스테이지) 로드 (InGameManager) 프리팹 질문
안녕하세요.강의 자료 중 리소스 관련 질문 드립니다.아래와 같이 강의 공지를 인지하고 있으나, 이제 막 게임 개발을 공부중이기에 참고용 리소스 제공이 가능하실지 문의 드립니다.특정 장르의 게임 플레이 구현을 다루지 않습니다. 즉 RPG, 플랫포머, 퍼즐 등 특정 게임 자체의 구현을 다루는 강의가 아닙니다.현재 문의중인 강의 마지막 부분 중 Stages/ 부분 구현에 막혀있습니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
해당 강의 자료를 유니티6로 마이그레이션이 가능할까요?
질문1) 유니티6로 해당 강의를 진행해도 문제가 되지 않는 지 궁금합니다.질문2) 혹시 기존 학습을 진행했던 대상이, 유니티6로 마이그레이션이 가능하다면 방법적인 부분도 추가 안내해주실 계획이 있는 지 문의 드립니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
Ui 팝업 생성 clone문제, 강의 내용 문의
안녕하세요!영웅소환 부 강의를 듣고 Ui 팝업 생성을 구현했습니다.하지만 버튼을 누를 때마다, 팝업 clone이 계속 생성됩니다.요부분 싱글턴 처리라던지, 이미 해당 팝업이 열려있는지 여부를 확인하는 부분과 같은 방어 로직 내용이 있는 강의가 있나요? 있다면 강의가 꽤 길어 제가 못찾고 있는 것 같아요 ㅠㅠ 강의 너무 잘 듣고 있습니다~그리고 제가 게임개발 인강에 기대했던 부분이로딩시에 서버에서 리소스 다운받는 것, 저녁 이벤트 보상 같은 앱 푸시 어떻게 구현했나 궁금했는데요. 뒷 강의에 있는지 또는 추후에 강의하실 예정인지 문의드려요!
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
아이템 및 시너지 효과 스킬 적용
롤토체스같은 게임에서 아이템과 증강체 및 시너지 효과 등을 어떻게 구현하면 좋을지 고민하는데 궁금한게 생겨 질문드립니다.예를 들어, 아이템을 장착하면 8초마다 주변 아군에게 보호막 부여와 같은 것을 구현할 때, 아이템을 장착하면 8초마다 주변 아군에게 보호막을 부여하는 패시브 스킬을 등록하고, 아이템을 해제하면 해당 패시브 스킬을 빼는 방식으로 만들면 될 것 같습니다.시너지 효과로 3타마다 추가 투사체를 발사하는 효과는 시너지가 발동되면 3타인지 체크하는 UseCondition을 가진 패시브 스킬을 통해 추가 투사체를 발사하게 하면 될 것 같습니다.그런데, 아이템을 장착하면 해당 캐릭터의 기본 공격 및 스킬이 체력 10% 이하인 적을 처형시키는 효과는 스킬로 구현이 어떻게 될지, 아니면 다른 좋은 방법이 있을지 떠오르지가 않아서 어떻게 구현할 수 있을지 질문드립니다.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
인터페이스 클래스 사용이유
오브젝트 풀링에서 IPool이라는 인터페이스 클래스를 만든 이유가 궁금합니다.
-
해결됨[Unity6] 유니티6로 배우는 실전 멀티플레이 디펜스
multiplay부분 에러
Library\PackageCache\com.unity.multiplayer.tools\NetVis\Configuration\OwnershipSettings.cs(41,24): error CS0103: The name 'CustomColorSettings' does not exist in the current contextmultiplay 열심히 보고 있는데요. 시작부터 이런 에러가 나와서 앞으로 나가지를 못 하고 있네요.
-
미해결C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
4.10 델리게이트 예문이 이해되지 않습니다.
아래 한줄의 강의 예제문에서public void GetSonToStudy(Son son) {(Son son) <---- 이 문구가 이해되지 않습니다.Son son(Son son) 이렇게 3개로 나눠 따로 따로 그 의미를 설명해 주시면 감사하겠습니다!
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
ui 생성 질문 있습니다.
ui 생성할 때 메모리 관련 질문 있습니다. 강의를 쭉 듣는 중입니다. UI 생성시에는프리팹 제작, Instantiate(Resources.Load<>("UI/xxxx"))로 ui 생성하고팝업 안에 아이템이 있는 경우에는 전부 생성 사용 종료 후 destroy 하는 방식 으로 이해했습니다. gameObject 생성 때 Object Pool 방식 구현 강의에서 메모리 관련해서 얘기 주셨는데요, 이런 ui 생성,destroy사용방식이 메모리 부하는 따로 없을까요?방치형 게임에서 유아이도 많이 눌러서 많이 일어날거라 생각이 들어서요. SetActive로 관리하면 어떤지.. 다른 방법이 없나?? 궁금하여 문의드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Create의 GetOrAddComponent
Poolable Create(){ GameObject go = Object.Instantiate<GameObject>(Original); go.name = Original.name; return go.GetOrAddComponent<Poolable>();}유틸에서 만들었던 GetOrAddComponent가 아닌 비쥬얼 스크립팅의 GetOrAddComponent로 연결이 되더라구요. UI 실습때는 Util.GetOrAddComponent<T>(go) 이런식으로 사용했었는데 괜찮을지 모르겠네요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
빈 게임 오브젝트에서 바인드가 실패하는 케이스
Text나 Button같은 실체가 있는 오브젝트들은 바인드가 성공이 되는데 빈 게임 오브젝트를 바인드할 경우 바인드 실패가 계속 뜹니다.
-
미해결Unity 기초 & 실습 통합 강의: 게임 따라 만들기
영상이 안보입니다.
영상이 보이는 강의도 있지만 대부분 강의의 영상이 안보입니다. 소리만 출력되고 영상이 안나오는 강의가 거의 대부분입니다. 크롬, 브레이브 브라우저 모두 마찬가지인데요, 확인부탁드립니다!
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
소환위치질문있습니다
안녕하세요 선생님 왜 이렇게 한칸씩 밀리는 걸까요..혹시 캐릭터 피벗? 때문에 그런가요?? .. 어디를 수정해야 할지 아무리 찾아도 헷갈려서 질문합니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
퀘스트 클리어해도 동일 퀘스트가 노출됩니다
퀘스트 완료해도 목표에 동일 텍스트가 반복 노출됩니다.만약 저걸 무시하고 바로 열쇠를 습득하면 2번째 동일문장이 바로 삭제되고 키를 습득하라는 문장이 완료처리 됩니다. 코드는 완전 동일하고 유니티에서 구성도 동일하게 한거 같은데 혹시 어떤 부분이 문제일까요..
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
C++ 버전을 조금 접목해서 Send 관련해서 lock 잡는 부분을 수정해봤습니다!
안녕하세요.지금 단계에서는 완벽한 테스트가 어려워서 강사님이 보시기에 어떨지 의견 듣고 싶습니다. Send 과정에서 락을 최소화하고 싶어서 C++ 버전을 조금 차용했습니다.ProcessSend()에서 RegisterSend()를 호출하는 식으로, 한 번에 하나의 송신만 담당하면 락을 줄일 수 있을 것 같아서요.public void Send(byte[] sendBuffer) { lock (_lock) { _sendQueue.Enqueue(sendBuffer); } if (0 == Interlocked.Exchange(ref _sendRegistered, 1)) RegisterSend(); }이렇게 해서 한 번에 하나의 스레드만 접근하게 하구요. void RegisterSend() { lock (_lock) { while (0 < _sendQueue.Count) { byte[] buffer = _sendQueue.Dequeue(); _pendingList.Add(new ArraySegment<byte>(buffer, 0, buffer.Length)); } _sendEvent.BufferList = _pendingList; } bool pending = _socket.SendAsync(_sendEvent); if (false == pending) { OnSendCompleted(null, _sendEvent); } } 큐에서 데이터를 가져와 _sendEvent.BufferList에 세팅할 때만 락을 잡습니다.OnSendCompleted는 전체에 락을 안 잡고 중간에만 락을 잡았습니다.void OnSendCompleted(object sender, SocketAsyncEventArgs sendEvent) { if (0 < sendEvent.BytesTransferred && SocketError.Success == sendEvent.SocketError) { try { Console.WriteLine($"Transferred bytes {sendEvent.BytesTransferred}"); lock(_lock) { _sendEvent.BufferList = null; _pendingList.Clear(); if (0 == _sendQueue.Count) { Interlocked.Exchange(ref _sendRegistered, 0); return; } } RegisterSend(); } catch (Exception e) { Console.WriteLine($"OnSendCompleted Error {e.Message}"); } } else { Disconnect(); } } 답변 부탁드립니다. 감사합니다!
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
Part2는 계획이 없으신가요?
11월에 나온다고 들었었는데 소식이 없네요..
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
싱글톤 매니저와 씬
만약에 로딩씬에서온갖 싱글턴 매니저를 초기화한 후메인씬으로 넘어가는 로직을 만든 경우,매니저 오브젝트들이 전부 로딩씬에 배치해서 메인씬에서 개발할때는 Hierarchy 창에 아무것도 안보이고, 개발 모드에 들어가도 로딩씬을 거치지 않으니 아무 매니저도 안생길것 같은데, 이럴때는 어떻게 해결할수 있나요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
안녕하세요. 저도 4장을 공부 중인데 Cavas가 그려지지 않는 문제가 생겨 문의드립니다.
Title 씬에 UIManager를 추가한 뒤에 생긴 문제인데요, 이전 질문을 참고하여 URP인 경우 Camera의 Environment의 BackgroundType값을 Uninitialized로 해줬지만, 여전히 다른 색으로 덮혀 있네요.UIManager의 카메라를 비활성화하면 이렇게 잘 나옵니다. 제 환경이 유니티 6이라서 그런 걸까요?