묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
벡터 질문 드립니다.
음...벡터라는게 방향과 크기?로 알고 있는데 두 점 사이에서 나의 위치를 기준으로 얼마 만큼의 거리를 이동하려고 할 때 항상 노멀라이즈로 단위벡터로 만들어 주는 이유가 거리만 알고 있기 때문에 매그니튜드로 거리만을 구해준 다음에 단위벡터로 만들어서 방향만을 명시해주고? 시간과 속력을 곱해줘서 가고 싶은 목적지로 가는?? 걸로 이해 해도 괜찮을까요? 벡터 너무 어렵네요 ㅜ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CS의 특성에 관한 ThreadPool의 질문입니다.
ThreadPool의 레퍼런스를 까보니 Static Class 로 정의되어있는 것을 봤습니다.ThreadPool이 메모리에 올라가는 시기는 언제인가요? 해당 타이밍을 조절할 방법이 있나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
질문남깁니다.
DFS를 3으로 호출했을때 3 0 1 2 까지 출력이 되고 2에서는 모든길이 막혀 for의 next가 5가 초과돼 종료가 됩니다. 근데 그 후에 뜬금없이 for문 안에 있는 DFS(next)가 실행이 되는데 이 부분이 이해가 가질않습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요
안녕하세요 너무 좋은 강의 감사합니다.빌드를 자동화해서 자동 실행되게 하는데 혹시 안드로이드로 빌드해서 apk를 자동으로(nox로) 실행되게 할 수 있나요?? BuildOption.None으로 할때는 잘 빌드 되지만 자동 실행이 안되고... 아래처럼 BuildOptions.AutoRunPlayer 하면 Device가 연결 되어 있지 않다는 팝업 창이 뜨네요. 혹시 안드로이드 또한 바로바로 디버깅 하고 자동 실행되서 녹스로 확인할 수 있는 방법이 있을까요?? BuildPipeline.BuildPlayer(GetScenePaths(), "E:/Android_APK/" + GetProjectName() + i.ToString() + "/" + GetProjectName() + i.ToString() + ".apk", BuildTarget.Android, BuildOptions.AutoRunPlayer);
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요. 질문드립니다.
안녕하세요. 객체 할당 시 부모 클래스에 자식 클래스를 할당하는 경우가 있는데 왜 이렇게 하는지 알려주시면 감사하겠습니다. ex) 왜 3, 4 같이 하지 않고 1, 2 같이 하는지 궁금합니다. 1. Player player = new Knight(); 2. Player player = new Mage(); 3. Knight player = new Knight(); 4. Mage player = new Mage();
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
_sendQueue 질문입니다.
강의 마지막에 와서 뒤늦게 질문하는 느낌이 적지 않게 있는데, 재수강하면서도 여전히 긴가민가한 느낌이 있어서 질문드립니다. #_sendQueue에는 버퍼가 언제 쌓이는가. 쓰레드 A가 제일 처음으로 Send 함수를 호출했다. _sendQueue에 버퍼를 집어넣는다. _pendingList.Count ==0 이라 RegisterSend가 호출된다. 이후 RegisterSend 안에 있는 SendAsync 함수로 pendingList를 송신한다. 그런데 SendAsync 함수가 true 떠서, 즉 송신을 실패했다면? 쓰레드 A는 Lock을 풀고 사라지고, 이어서 다른 쓰레드 B가 Send를 호출했을 때 PendingList의 Count는 0이 아니므로, _ sendqueue에 버퍼만 집어넣고 쓰레드 B는 사라진다. 그 이후에 실패로 끝났던 SendAsync 함수가 콜백으로 OnSendCompleted 함수를 호출하면, _sendQueue에 쌓인 버퍼가 한꺼번에 송신된다. 이런 흐름이라고 이해하면 될까요? 만약 이게 맞다면 SendQueue는 SendAsync 가 실패로 끝났을 때를 위한 안전 장치라고 생각해도 될까요? 마침 질문글 답변 중에 이런 부분이 있기는데 한데 확신이 없네요. 멀티쓰레드보다는 비동기 네트워크 쪽과 관련이 있는데,SendAsync를 한다고 무조건 상대방이 받아준다는 보장이 없습니다.로컬 환경에서야 pending이 거~~의 대부분 false로 뜨고 바로 완료 되겠지만저 지구 반대편에 있는 사람이 접속했다면 이런저런 이유로SendAsync가 바로 완료되지 않고 pending = true로 설정될 확률도 높습니다.물론 말씀하신대로 Latency 뿐 아니라 Recv할게 너무 많아서 상대쪽에서 처리를 못해서 그럴 수도 있구요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
동적 배열, 연결리스트 구현 질문있습니다.
동적 배열과 연결리스트 어떻게 동작하는지와 왜그렇게 되는지는 이해하는데 안보고 혼자 구현하기가 어렵습니다.. 중요해서 꼭 이해하고 넘어가라고 하신부분이 동작부분인지 구현부분인지 아니면 둘다인지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
재귀적 락 허용
재귀적 락을 허용 하지 않았을때 ReaderWriterLock은 Write할때 Read가 같이 일어나면 Write하기 전에 있던 데이터와, Write한 후의 데이터가 공존해서 Read해가기 때문에, ReaderWriterLock을 사용 하는거 같은데(Read만 해갈때는 문제 없어서 Read는 공용으로 가능) 어떤 경우에 재귀적 락을 허용하는지 잘 모르겠습니다. 재귀적 락을 허용했을때는 한 쓰레드가 여러개의 데이터를 write,read할때 사용 되는건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
lock 질문입니다
제가 혼자 만들어보면서 느꼈던 점은, "session에서 lock을 걸지 않고 recvbuffer의 writesegment를 가져오거나 DataSegment를 읽어올 때 lock을 걸면 최소한의 범위로 할 수 있을 것 같다" 입니다. 강사님께선 Session의 Send, RegisterRecv, OnRecvCompleted에 하나의 _lock 오브젝트로 전부 잠구셨는데 이렇게 되면 예를 들어 OnRecvCompleted를 호출해서 _lock 범위 내에서 처리하는 동안 Send를 호출하면 Send는 OcRecvCompleted가 끝날 때 까지 대기해야하는 상황이 발생하지않나라는 걱정이 조금 됩니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
이번 강의에서 구현한 LoadJson 함수 문법 질문입니다
Loader LoadJson<Loader,Key,Value>(string path) where Loader : ILoader<Key,Value> { TextAsset textAsset = Managers.Resource.Load<TextAsset>($"Data/{path}"); return JsonUtility.FromJson<Loader>(textAsset.text); } 여기서 Loader << 이 부분이 헷갈려서 몇가지 질문 남깁니다. 1. Loader라는 타입을 따로 정의하지 않았는데, 이게 제네릭메소드 T 와 같은 의미이며, Loader라고 정의한거는 그냥 보기 편하게 T 를 Loader라고사용했다 보면 되는건가요 ? 2. LoadJson<Loader,Key,Value> 에서 Loader가 무슨의미인지 모르겠습니다. Loader에 대한 정보가 없으니, 정보를 얻기 위해 그냥 단순 : ILoader<Key,Value>를 상속받는 클래스를 저기에 입력하라는 의미로 받아드리면 될까요 ?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
참조가 보이지 않는분들 중에
혹시 저처럼 참조(R)이 안 보여서 없는줄 알구 개발자 명령프롬프트 열고 명령어 입력하기 직전이신 분들 비쥬얼 스튜디오 2019 사용을 하고 계신다면 같은 기능합니다.
-
해결됨레트로의 유니티 C# 게임 프로그래밍 에센스
혹시 본 강의에서 Dictionary 나온 파트가 있을까요?
강사님 안녕하세요? 혹시 본 강의에서 Dictionary 나온 파트가 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Extension Method를 통해 사용한 AddUIEvent 함수의 인자 질문
안녕하세요 강의 14분의 GetButton((int)Buttons.PointButton).gameObject.AddUIEvent(OnButtonClicked);와 관련해 문의드립니다. 해당 코드의 AddUIEvent() 함수에 인자로 들어간OnButtionClicked는 public void OnButtonClicked(PointerEventData data) { ++_score; } 형태를 갖고 있습니다. AddUIEvent() 함수는 GameObject, Action<PointerEventData>, Define.UIEvent 자료형을 인자를 받아야 합니다. 여기서 첫번째 인자는 Extension Method 기능으로, 세번째 인자는 default 값으로 처리되었습니다. 두 번째 인자로 사용된OnButtionClicked 함수의 원형을 보면 매개변수로 PointerEventData 자료형의 값을 받아야 하지만 여기서는 단순히 함수명만 적었음에도 오류가 발생하지 않습니다. 이 이유는 AddUIEvent 함수를 통해 OnPonterClick()에서 OnClickHander.Invoke(eventData)로 PointerEventData를 보내주고 있으니 알아서 처리되는 것인가요? 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
사용 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. Resource 매니저를 사용하는게 코드를 관리하는데 용이 하다 하셨는데 관리가 용이해진다라는게 정확히 어떤건지 모르겠습니다. lapping을 함으로써 얻는 이점이 정확히 무엇인가요??
-
미해결[유니티6] 따라하면서 배우는 하이퍼캐주얼게임 시리즈 01
지그재그 타일생성 질문있습니다.
플레이어가 지나가고 타일을 떨구는 부분에서 StartCoroutine으로 호출하는 부분이 동작을 안하는것 같아서 질문드려요. 코드는 똑같이 따라 쓴것 같은데 어떤 부분을 확인 해야 할까요? 타일 설정이나 플레이어 태그도 추가 한 상태입니다 ㅜㅜ private void OnCollisionExit(Collision collision) { Debug.Log(collision.transform.tag.Equals("Player")); if( collision.transform.tag.Equals("Player") ) { StartCoroutine("FallDownAndRespawnTile"); } } private IEnumerable FallDownAndRespawnTile() { yield return new WaitForSeconds(0.1f); rigidbody.isKinematic = false; yield return new WaitForSeconds(falldownTime); rigidbody.isKinematic = true; if(tileSpawner != null){ tileSpawner.SpawnTile(this.transform); } else { gameObject.SetActive(false); } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
x - randomIndex * 2하면 배열 범위 벗어날 줄 알았는데 잘 작동해서 당황스러워요
가로로 한 번도 가지 않았을 경우 = 랜덤으로 뽑을 수 있는 값 = 0 가로로 한 번 이동했을 경우 = 랜덤으로 뽑을 수 있는 값 = 1 x - 1 * 2 = x - 2 가로로 두 번 이동했을 경우 = 랜덤으로 뽑을 수 있는 값 = 2 x - 2 * 2 = x- 4 이렇게 계산해서 인덱스 x가 마이너스를 가질 경우도 있을 거 같은데 잘 작동하는 거 보면 ... 제 생각에 오류가 있나요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
GameObject와 같이 Object를 상속받은 친구들은 new가 가능하고
AudioSource같이 Component를 상속받은 친구들은 new로 생성하는 것이 불가능한 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
6:09 질문 드립니다.
dic.Add(1, new Monster(1)); dic[5] = new Monster(5); 이렇게 두가지 방법으로 값을 넣는 다 하셨는데 dic[5]는 5번째 인덱스에 id값을 5번인 몬스터의 값을 넣는게 아닌가요? 디버깅했을 때 0번재랑 1번째에 값이 들어가있어서 이해가 잘 가지 않습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
31:25초 enum MsgID GenPacket 실행시 cs파일이 안나옴니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 구글 프로토콜 최신 버전으로 받고 강의를 따라하는데 enum MsgID를 코드를 작성하고 실행시키면 cs파일이 생성이 안됩니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3d 맵 일 경우도 서버가 맵 데이터를 가지고 있어야 하나요?
현재 2d로 진행을 하기 때문에 맵 데이터 뽑아 오는게 3d에 비해서 쉬운편인데 3d일 경우는 어떤 방식으로 데이터를 뽑아오나요? 그리고 3d일 경우 제 주관적인 생각으로는 데이터를 정확하게는 받아오질 못할 텐데 서버도 맵 데이터를 가져야 하는지 의문이 듭니다.