묻고 답해요
145만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
싱글 코어와 멀티 코어에 대해 질문드립니다.
안녕하세요. 싱글 코어와 멀티 코어에 대해 궁금한 점에 대해 질문드립니다.1.만약 제가 작성한 프로그램에서 멀티 쓰레드를 사용하더라도 사용하는 컴퓨터의 CPU가 싱글 코어 일 경우쓰레드를 사용할 때 컨텍스트 스위칭이 일어나기 떄문에 멀티 쓰레드를 사용하는 건 의미가 없는 게 맞을까요?2.반대로 멀티 코어인 컴퓨터에 단일 스레드 환경의 프로그램을 만들었을 경우 여러 코어를 사용하는 게 아닌 하나의 코어만 사용하게 되어 CPU의 성능을 제대로 활용 못하는 게 맞을까요? 실제 운영체제 환경에서는 제가 만든 프로그램 외 에도 백그라운드로 실행되는 프로그램들이 있어서 코어 하나만 사용하진 않겠지만 개념적으로 봤을 때 멀티 코어일 때 단일 쓰레드 환경의 프로그램이면 CPU 성능을 제대로 활용 못 하는 게 맞는 건지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReadOnlySpan 버전 문제
ReadOnlySpan<byte> s = new ReadOnlySpan<byte>(segment.Array, segment.Offset, segment.Count); 이 질이 오류가 난다고 강의에는 나오는데유니티 2021.3.4 버전을 쓰고 있는데 오류가 나지않는건 유니티에서 사용하고 있는 C# 버전때문인가요?ReadOnlySpan 은 C# 버전 몇부터 유니티에서 지원하는건지 설명이 잘 안나오는것 같은데 어디서 알수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의에서 뜨는 에러가 뜨지 않습니다.
강의에선 GenPackets.cs의 Span계열에 오류가 뜨는데 저는 Span계열에 오류가 뜨지 않습니다. 그럴경우 그냥 진행해도 될까요???
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
ml-agents 관련 질문 있습니다.
안녕하세요, 저는 강화 학습 관련 관심이 생겨 여러 강화 학습 관련 프로젝트를 진행하고 있는 대학교 4학년 학생입니다. 인프런 강의를 기반으로 하여 프로젝트 진행에 도움을 많이 받고 있어 너무 감사합니다.다름이 아니라 ml-agents 관련 질문이 있어 글을 쓰게 되었습니다.강화 학습에서 reward shaping하는 기준 혹은 참고 논문이 있는 건지 궁금합니다.Training을 진행할 때 여러 번 경험한 내용으로 시간이 지나는데도 학습이 진행이 안된 경험이 있습니다. 이럴 때마다 작업 관리자로 CPU나 CUDA의 이용률을 보면 0프로 정도로 거의 움직이지 않는데 이를 병목 현상으로 예상하고 있습니다. 이를 해결하기 위해 아나콘다 프롬폼트에 키보드 interrupt를 하게 되면 멈췄던 학습이 실행 되어 여러 번 interrupt를 걸어 해결했습니다. 여러 다른 컴퓨터를 사용할 때마다 일어나는 공통적인 현상이라 혹시 제가 학습을 잘못 하고 있는 건지 아니면 이러한 현상에 대한 해결 방안이 따로 있는 건지 궁금합니다. 강화 학습 Training 방법을 찾아보면 제가 보기로는 두 가지 방법이 있었습니다. Unity 환경에서 하나의 프리팹 위에서 episode가 끝날 때마다 Agent나 environment의 구성을 랜덤으로 하여 진행하는 방식과 다른 environment를 여러개의 프리팹으로 하여 학습을 진행하는 방법이 있었습니다. 두 방법에 큰 차이가 있는 건지 궁금합니다.항상 이해하기 쉽게 강화 학습 관련 강의를 해주셔서 다시 한번 감사드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷 모아보내기 개수와 flushed 개수가 다른데 왜이런걸까요?
상황.1listen register 는 10, backlog 는 100 으로 해놨고connector 에서 Connect 할대도 100 으로 해놨습니다SendBuffer 의 크기는 public static int ChunkSize { get; set; } = 65535 * 100; 이고RecvBuffer _recvBuffer = new RecvBuffer(65535); 인데 어떤 부분이 문제일까요?.. 원본 jobTimer 코드 까지 실행하면 강의와 결과는 거의 같게 나옵니다만.. 상황 2 위 상황에서 서버 클라가 보내고 받는 데이터가Hello Server!Hello Server! I am 1 가 되고 서버 클라 간의 패킷 또한 정상적으로 받아지는건 확인했습니다그런데 리슨서버에서 register = 1, backlog = 1로 해놓고더미 클라이언트 쪽에선 Connector 로 2개의 클라가 접속하게 했을때 결과가 아래 처럼 나오고 있습니다,connector.Connect(endPoint, () => { return SessionManager.Instance.Generate(); } , 2 );코드를 수기로 처서 그런것 같기도 한데 어떤 부분에 문제를 의심해 볼 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
(오류정정요청) Awake 설명
강의 타임라인 중 13:55 부터 Awake를 설명하는 부분에서 " 꺼놓은 상태에서 적용되는 애가 더 있어요""게임 신 현재 들고 있는 컴포넌트를 끈 상태에서도 잘 작동하길 원한다면 Awake로 만드는 것도 하나의 방법이 되겠구요"라고 언급하고 있습니다. 그런데, Unity Documentation에 따르면 active(켜놓은 상태) 할 때 Awake가 작동된다고 나와있습니다. 실제로 제가 @Scene을 끄고 Awake가 동작하는 지 디버깅을 했을 때 Awake가 호출되지 않았으며 EventSystem Null Reference Error가 로그로 찍혔습니다. 강의에서는 @Scene을 킨 상태에서(체크 박스를 체크한 상태) 테스트를 하고 있기도 합니다. Awake는 active한 상태 + 컴포넌트가 disabled 된 경우일 때 Start와 달리 호출된다고 정정해야 할 것으로 보입니다. https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
심리스에 관하여..
11:51 분심리스관련해서 아이디어가 생각나서 혹시..아이디어.1(가정 : 몬스터라면 애초에 서버에서만 클라로 뿌려주면 되긴 하겠지만, 클라에서 몬스터 정보를 준다 가정할때..)몬스터, 스킬, 유저, 모든 사물에 잡큐를 하나씩 배치를 해주어서 심리스를 해결한다고 했는데즉 이 말은 동기화 되야 하는 데이터가 있을때 심리스라서 맵 단위로 잡큐가 존재 할수 없으니예를 들자면 플레이어가 있고 플레이어 근방에, A 라는 몬스터가 있는데 이 몬스터의 동작을 그 주변에 있는 몬스터들도 알아야 하는 정보라 할때 몬스터의 정보(어떤 변경사항이 있고 다른 유저가 알아야 하는정보)를 서버에 보내고플레이어 근방에 있는(대략 일정 변경의 반지름 또는 시야에 들어오는 공간분할 처리내에 있는 유저) 정도의 유저들(동기화 대상들)에게만해당 몬스터 정보를 뿌려주어 해서 몬스터,사물 기반으로 데이터를 전송하는 방식일까요?아이디어.2(서버에서 처리 되는 기준)서버기준으로 , 사물, 몬스터 등에 개별 잡큐가 존재1. 몬스터가 왔다갔다 하는 동작이 몬스터 개별 잡큐에 넣기만 하고 실행 하진 않는다2. 플레이어가 몬스터나 사물등 일정 거리 안의 시야뷰에 보인다면 해당 오브젝트 동기화 대상들간의 잡들을 실행 하면서 동기화 처리를 한다용어는 들어 보긴 했는데 설명을 듣다가 갑자기 생각이 떠올라서 적어 봅니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
퀘스트를 만들다보니 궁금한점이 생겨 질문합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 좋은 강의 감사합니다.퀘스트를 제가 생각한 방식에 맞게 만들다보니 궁금한 점이 생겨서 질문드립니다.만약에 예를 들어 몬스터 5마리를 잡고 해당 몬스터가 드랍하는 아이템을 얻어야한다. 라는 퀘스트가 있다면 해당 몬스터에 두개의 QuestReport를 달아줘야 하는건가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Awake 함수에 대해서
유니티 강의에서 씬 매니저 부분을 듣다가 질문이 생겨서 드립니다게임 오브젝트 @Scene에 들어있는 스크립트는 GameScene 이고, GameScene은 BaseScene 을 상속받고 있고,BaseScene 은 이러한데,이 상태에서 유니티를 실행하면이렇게 표시 됩니다.GameScene 은 BaseScene 을 상속받고 있기는 하지만,BaseScene은 게임 오브젝트내(Hierachy) 에 존재하지 않은데, BaseScene 에서 Start 함수는 실행되지 않으면서, Awake 함수는 어떻게 실행되는건지 설명해주시면 감사하겠습니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 4:42에 디버깅이 안됩니다
강의 내용 똑같이 따라했고, 다른 질문들 참고해서 디버깅 모드, 다 추가한 상태입니다. visual studio에서 unity에 연결이라고도 되어있는데 디버깅이 안 이루어지고 그냥 끝나요ㅜㅜ. 2019 버전으로 내리는 수밖에 없을까요?
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
Resource Folder에 관한 질문입니다.
유니티에서 Resources Folder를 사용하지 말라는 내용을 어디선가 들은 것 같은데. Resources Folder가 유니티에 상시 메모리를 잡아먹는 걸로 알고 있습니다. 그래서 대부분 게임을 만들 때 Inspector에 할당을 시키거나 에셋 번들을 활용하는 걸로 알고 있습니다. 스크립트를 봤을 때 일부 UI를 Resource.Load로 활용하고 있는데 이러한 이유가 있을까요? 물론 프로젝트가 작으면 사용해도 별문제는 없는 걸로 알고 있습니다만 대규모로 했을 경우 해결 방안이 있을까요? 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
자동화코드 정렬
강사님 안녕하세요!다름이 아니라 주석들이 많아서인지 강의에 나온것처럼 자동화로 GenPackets.cs를 만들면 코드 정렬이 깔끔하게 되지 않아서요.. 이 경우는 제가 막판에 다시 정리해주면 상관없는건지, 아니면 무조건적으로 자동화로 생성되었을 때부터 깔끔하게 정렬되게 해야하는건지 궁금합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 소스 다운로드
안녕하세요 유니티 에셋이나 기타 강의 자료를 다운 받아서 학습해보고 싶은데 강의 자료가 어디에정리가 되어 있는지를 알수가 없습니다.Rookiss 님 강의 자료가 어딨는지 링크 좀 부탁드립니다.감사합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
씬 관리 질문이 있습니다.
안녕하세요!로드맵 강의를 수강하고 현재 게임을 직접 만들고 있습니다.캐릭터를 선택창이나 로그인화면 아이템샵 메인로비 등이 있는 로비 화면을 현재 만들고 있는데요현재는 기능별로 Scene을 새로 계속 생성하여 만들고 있습니다.근데 UI 데모파일들을 몇개 보면 모두 한 씬에 레이아웃들을 만들어놓고 SetActive 함수로 UI를 제어하는 경우가 많았습니다.그래서 Scene을 계속 만드는 방식과 하나의 Scene에 레이아웃을 각각 만들어놓고 SetActive함수로 제어하는 방식 두 방식중에 어느 것이 더 효율적인가요? 각각에 장단점이 있을까요?실제로 현업에서는 어떤 방식을 주로 쓰는지도 궁금합니다!바쁘시겠지만 답변 부탁드리겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Action 중복으로 등록되는 문제
안녕하세요. 지금까지 강의를 통해 배운 내용을 바탕으로 간단한 게임을 제작하고 있는 학생입니다. 어떤 파트에 질문을 달아야 할까 고민하다 마무리 부분에 올립니다.GameManagerEx에 SkillLevelUp이라는 Action을 만들어놓고 UI_SkillPopup을 열면 아래의 코드를 통해 LevelUp 함수를 취소/등록합니다. 그런데 ClosePopupUI를 통해 UI_SkillPopup을 닫고 해당 팝업을 다시 켜게 되면 기존에 등록해놓았던 LevelUp 함수가 취소되지 않아 버그가 발생합니다. 제 생각으로는 처음 등록한 LevelUp 함수와 두번째로 등록한 함수의 이름은 같지만 다른 함수로 인식하여 중복으로 등록이 되는 것 같았습니다.일단은 아래의 코드와 같이 Init 에서는 LevelUp 함수를 추가만 하고 UI_SkillPopup을 닫을 때 LevelUp 함수를 제거하는 방식을 사용하여 해결을 하긴 했습니다만 썩 우아한 방법이 아닌 것 같아 질문드리게 되었습니다.먼저 제가 인식한 버그가 Action이 중복으로 등록되는 문제가 맞는지, 만약 그렇다고 한다면 이와 같은 상황에서는 Init에서 Managers.Game.SkillLevelUp에 LevelUp 함수를 취소/등록하는 과정을 통해 초기화를 할 수 없는지 궁금합니다.부족한 질문 봐주셔서 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
마지막 익스텐션 오류 + 에니메이션 오류
마지막 저 코드만 주석처리해서 실행하면 정상적으로 실행이되는데, 주석처리만 해제하면 NullReferenceException: Object reference not set to an instance of an objectUI_Base.AddUIEvent (UnityEngine.GameObject go, System.Action`1[T] action, Define+UIEvent type) (at Assets/Scripts/UI/UI_Base.cs:48)Extension.AddUIEvent (UnityEngine.GameObject go, System.Action`1[T] action, Define+UIEvent type) (at Assets/Scripts/Utils/Extension.cs:11)UI_Button.Start () (at Assets/Scripts/UI/UI_Button.cs:39)같은 오류가 발생합니다. 우선 코드 첨부합니다추가적으로 RUN00_F외에 다른 에니메이션(RUN))_L 등)을 사용하면 정상적으로 에니메이션이 이동에따라 속도증가 -> run, 멈춤 -> wait가 되는데, RUN))_F 에니메이션을 사용하면 저런 메시지와 함께 멈춥니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
사용프로그램 관련해서 질문드립니다.
서버 개발을 할 때 VSCode를 사용해도 괜찮을까요?VS가 아니라 VSCode를 사용하면 생기는 장단점이 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
13분20초즘 TEXT가 UI_BUTTON에 안놓아져요
코드를 따라서 작성하고 있고,UI_Button에 이제 TEXT만 넣으면 되는데 마우스 포인터 대신에 O에 /가 그어진 모양만 뜨고 연결이 안되네요. 코드를 계속 확인해봐도 동일한테 왜그럴까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
플레이어 몬스터 접근시 넘어지면서 걷는 버그
플레이어 컴포넌트에는 박스 콜라이더, 내브 메쉬에이전트가 적용되어 있고 몬스터에는 박스콜라이더가 접근 되어있습니다. is kinematic체크를 해서 충돌해제를 하더라도 기울어지면서 결국 넘어지고 걷는 행동을 하는데요 혹시 이런 경우 해결하신 분 계신가요? 마우스를 계속 클릭하고 있을 때에는 몬스터를 뚫고 넘어갑니다.몬스터에 마우스를 클릭했을 때 매우 근접해졌을 때 몬스터 콜라이더에 의해서 넘어지는 것 같습니다. 콜라이더 제거시 넘어지지 않습니다. (클릭한 자리로 이동하려고 애씀.)
-
미해결
유니티 urp 보라색 오브젝트
유니티에 에셋을 가져와 신을 펼쳤는데 보라색이 있어 urp로 바꾸는데 오류가 뜨면서일부가 바뀌질 않습니다추가로 경고표시로 이런게 콘솔 창에 떠요Could not create a custom UI for the shader 'Burning'. The shader has the following: 'CustomEditor = ASEMaterialInspector'. Does the custom editor specified include its namespace? And does the class either derive from ShaderGUI or MaterialEditor?UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)