매니저 구현 부분 질문이 있습니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인풋 매니저나 리소스 매니저 등등 여러 매니저를 구현하실 때 도통 이해가 잘 되지 않습니다... 개념 이해하지 못하고 무작정 클론 코딩만 하고 있는데, 일단은 넘어가도 괜찮을까요?
- unity
- C#
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인풋 매니저나 리소스 매니저 등등 여러 매니저를 구현하실 때 도통 이해가 잘 되지 않습니다... 개념 이해하지 못하고 무작정 클론 코딩만 하고 있는데, 일단은 넘어가도 괜찮을까요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
UI_Inven에서 Bind<GameObject>(typeof(GameObjects));를 할 때 오류가 떠서 breakpoint를 잡아보니 이 부분의 foreach문 에서 오류가 발생합니다 ArgumentException: GetComponent requires that the requested component 'GameObject' derives from MonoBehaviour or Component or is an interface. UnityEngine.GameObject.GetComponentsInChildren[T] (System.Boolean includeInactive) (at <4a31731933e0419ca5a995305014ad37>:0) UnityEngine.GameObject.GetComponentsInChildren[T] () (at <4a31731933e0419ca5a995305014ad37>:0) Util.FindChild[T] (UnityEngine.GameObject go, System.String name, System.Boolean recursive) (at Assets/Scripts/Utils/Util.cs:43) UI_Base.Bind[T] (System.Type type) (at Assets/Scripts/UI/UI_Base.cs:23) UI_Inven.Init () (at Assets/Scripts/UI/PopUp/UI_Inven.cs:21) UI_Inven.Start () (at Assets/Scripts/UI/PopUp/UI_Inven.cs:14) Bind할 때 GameObject가 아닌 Transform으로 Bind를 해보니 오류 없이 정상적으로 작동했습니다 해결은 했지만 강의에서는 GameObject를 받아서 잘 되었는데 저는 안 되는 건지 궁금해서 질문을 남겨봤습니다.. 강의랑 버젼이 달라서 그런 것인가요??
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요! 이제 막 파트3을 입문하려고 하는데 이전 파트2가 너무 어려워서 질문드립니다... 파트2를 수강하며 거의 무슨 내용인지도 모르고 클론 코딩만 한 거 같습니다ㅠㅠ 혹시 파트2를 완전히 숙지하지 못한 상태에서 파트3을 듣기에는 무리가 있는지 싶어 여쭈어봅니다!
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Func가 리턴값이 하나인 함수를 캡슐화한다고 공식문서에서 찾아봤는데요 함수를 캡슐화한다는게 함수에서 매개변수로써 사용한다고 생각하면 될까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요! 강의 내용과는 별개로 실무에서 몬스터 위치 싱크는 어떻게 이뤄지는지 궁금합니다. 플레이어의 위치는 클라에서 key/mouse input을 받아 서버로 패킷을 보낸 뒤 서버에서 다른 클라이언트들에게 보내서 위치를 싱킹한다고 한다면 몬스터 같은 경우에 아직 공격대상이 없어서 어슬렁 거리는 경우라면 서버에서 tick을 돌면서 좌표(position)를 변경해주나요?? 이 경우 맵이 평면이 아닌 울퉁불퉁한 맵이라면 몬스터의 좌표 계산이 서버사이드 물리엔진 없이는 구현이 힘들 것 같은데 어떻게 구현하는지 궁금하네요ㅠㅠ
해결됨
따라하면서 배우는 고박사의 유니티 하이퍼캐주얼게임 시리즈 02
강사님께서 하신대로 Constraint를 flexible로 했는데 일렬로 정렬이 되어버렸습니다. 전부 똑같이 한 것 같은데 왜 이렇게 될까요? flixble 대신에 컬럼을 지정하면 똑같은 모양으로 만들 수 있다는 것은 알고 있지만 이유를 알고 싶습니다. => 찾았습니다. 전체확대를 안해서 그런거였네요
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
혹시 방향 순서 같은 건 일반적인 경우에 '위-왼-아래-오'를 사용하나요? 오른손 법칙이고 로직 내에도 오른쪽으로 도는 걸 먼저 하는 방식인데 enum의 순서은 왼쪽으로 도는 것 처럼 되어 있어서요
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
만약에 Kngiht knight2 = new Knight();를 생성하고 knight2.hp=0 을 안적고 그대로 knight2.hp 값을 출력하면 질문1 왜 65번째줄 knight.hp=100값을가져오는지 이해가 안됩니다 질문2 knight.hp = 100을한다고 해서 class Knight의 hp변수가 public int hp=100으로 바뀌는건 아니지 않나요? 질문3 Kngiht knight2 = new Knight();경우말고 Knight knight2 = DeepCopy();일때 질문1의 경우와 같이 knight.hp=100 값을 가져오는 과정이 같은건가요? 힙에 new로 생성한 Knight가 두개가 생성되고 kngiht와 knight2는 각각 다른 힙영역을 참조하고 있다고 생각했는데 혼란스러운 상황입니다
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 선생님 강의에 많은 도움을 얻고 있는 학생입니다. 다름이 아니라 제가 이전에 3D로 적 캐릭터 구현을 할때 unity navmesh로 target을 찾았던 경험이 있습니다. 이번 강의도 A*알고리즘을 기반으로 만들어진 unity navmesh를 활용할 줄 알았습니다. 하지만 직접 구현한 A*알고리즘을 사용하는것을 보고 현업에서는 unity navmesh를 사용을 안하는지에 대한 궁금증이 생겨서 이렇게 질문을 남깁니다. 또 현업에서 어떠한 경우에 navmesh를 사용하고, 직접 길찾기 알고리즘을 사용하는지 궁금합니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 파트7을 다 끝내고 복습겸해서 파트4의 코드를 베이스로 삼아 간단한 3D 멀티플레이 게임을 만들어 보려고 하는데요 2D에서는 타일맵을 텍스트파일로 뽑아와서 플레이어 등이 갈 수 있는지 없는지를 0과 1의 구분으로 판단할 수 있었지만, 3D로 충돌처리를 해보려고 하니 맵을 어떻게 뽑아오고, 3D끼리는 어떻게 해야할지 모르겠습니다 ㅠ 구현해보고 싶은건 1. 플레이어를 원기둥으로 만들고 플레이어들끼리 서로 충돌해서 겹치지 못하도록 구현 2. 맵에 존재하는 건물(Box) 등 장애물 정보를 서버가 참조할 수 있도록 가지고 있게 하여 이동 패킷을 받고 해당 좌표에 갈 수 있는지 여부를 판단 일단 3D 맵은 어떻게 뽑아올 것이며, 서버 코드에서 3D 물체끼리 충돌 처리를 어떻게 해야할 것인지가 문제인데 이 부분은 어떻게 구현을 해야할지 조언 부탁드립니다 ㅠ
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 강의 내용 중 몬스터 ai 처리 중 update에 tickcount 사용하여 시간 체크를 하는 로직을 jobtimer로 변경하였는데요. 개인적인 생각으로는 jobtimer로 변경하여도 결과적으로는 호출 주기가 길어졌을 뿐 시간을 체크해서 처리하는 방식은 그대로라고 생각됩니다. jobtimer로 update하는 이유는 실행횟수를 줄이기 위함이라고 이해해도 될까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
1. 이동 등등 까지 해서 너무 좋은거같아요 이 이후에는 패킷 추가 하고 하는 방식으로 무기 선택 공격 피격 같은건서버에서 players list 에서 좌표 가지고 와서 피격 처리후 클라로 보내주는건가요? 아니면 클라에서 나 맞았어 라고 서버로 보내서 서버에선 Broadcast만 해주는건가요 ? 2. 또 강의 중에 들었던 프로토콜 버퍼 나 플랫 버퍼 같은 라이브러리를 이용해서 만들수도 있다고 하셧는데 지금 코드에서 수정 해서 만들어 봐도 될까요? 3. 지금은 서버 이긴한데 자체 컴퓨터 안에서만 돌아가는거 같아요. 노트북이나 쓰고있는 pc ip를 그냥 넣어서 다른 pc에서 접속으로 해도 될까요 수정이 많이 필요한가요?? 따로 강의는 없는거같아서 혼자 해보려고 해요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
음...벡터라는게 방향과 크기?로 알고 있는데 두 점 사이에서 나의 위치를 기준으로 얼마 만큼의 거리를 이동하려고 할 때 항상 노멀라이즈로 단위벡터로 만들어 주는 이유가 거리만 알고 있기 때문에 매그니튜드로 거리만을 구해준 다음에 단위벡터로 만들어서 방향만을 명시해주고? 시간과 속력을 곱해줘서 가고 싶은 목적지로 가는?? 걸로 이해 해도 괜찮을까요? 벡터 너무 어렵네요 ㅜ
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
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에는 버퍼가 언제 쌓이는가. 쓰레드 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할때 사용 되는건가요?