25%
66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
몬스터 위치 싱크
안녕하세요! 강의 내용과는 별개로 실무에서 몬스터 위치 싱크는 어떻게 이뤄지는지 궁금합니다. 플레이어의 위치는 클라에서 key/mouse input을 받아 서버로 패킷을 보낸 뒤 서버에서 다른 클라이언트들에게 보내서 위치를 싱킹한다고 한다면 몬스터 같은 경우에 아직 공격대상이 없어서 어슬렁 거리는 경우라면 서버에서 tick을 돌면서 좌표(position)를 변경해주나요?? 이 경우 맵이 평면이 아닌 울퉁불퉁한 맵이라면 몬스터의 좌표 계산이 서버사이드 물리엔진 없이는 구현이 힘들 것 같은데 어떻게 구현하는지 궁금하네요ㅠㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
도저히 안됩니다....ㅠ
이번강의 프로젝트 파일 다운 받아서 클라 부분만 다른 파일로 바꿔치기 했는데 일단 이 에러메세지가 뜨는 상태이며, 서버는 구동이 됩니다. 서버를 끄고 유니티를 실행하면 연결 실패했다는 에러메세지도 안나오고 뭐가 어디서부터 안되는 건지 감이 잡히지가 않습니다. breakPoint도 잡히질 않습니다...(구글링을 하여 여러방법 시도 하며 해결하려 해봤는데 안됩니다..ㅠㅠ)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
다른 프로젝트에서 여니까 안됩니다..
강의에서 가르켜준 대로 학습하려고 3d 프로젝트를 따로 만들어서 파일올려주신것을 내려받아 server, common만 복붙해서 테스트하는데 서버는 실행이 되지만 유니티를 실행하였을 때 아무런 에러 메세지도 뱉지 않습니다. 젠페킷 파일 실행하면 이런메세지가 뜨고 현재 젠 페킷 파일에 경로가 이런데 지금 3d프로젝트의 경로는 에서 이제 Client, Server, Common으로 나누어지는데 .bat파일에 적어놓은 경로와는 상관이 없나요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Search로직의 unity navmesh 와 A*알고리즘 사용에 대한 궁금증
안녕하세요. 선생님 강의에 많은 도움을 얻고 있는 학생입니다. 다름이 아니라 제가 이전에 3D로 적 캐릭터 구현을 할때 unity navmesh로 target을 찾았던 경험이 있습니다. 이번 강의도 A*알고리즘을 기반으로 만들어진 unity navmesh를 활용할 줄 알았습니다. 하지만 직접 구현한 A*알고리즘을 사용하는것을 보고 현업에서는 unity navmesh를 사용을 안하는지에 대한 궁금증이 생겨서 이렇게 질문을 남깁니다. 또 현업에서 어떠한 경우에 navmesh를 사용하고, 직접 길찾기 알고리즘을 사용하는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
26분 질문
객체 문법관련입니다... 싱글톤으로 RoomManager에 접근을 하니까 (프로그램내의 고정된 유일한 주소) 힙메모리에 RoomManager의 주소가 올라가 있을 것이고, RoomManager라는 객체는 프로그램내에서 유일한 객체이기 때문에 Add함수를 호출해서 roomId를 증가시켜도 해당 객체에 있는 메소드나 필드는 RoomManager가 유일해서 roomId의 같은 경우에도 static (C++로 치면 const와 같은 키워드)를 안 붙여주어도 계속 늘어나게 되는 것인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3D 멀티게임 조언
안녕하세요. 파트7을 다 끝내고 복습겸해서 파트4의 코드를 베이스로 삼아 간단한 3D 멀티플레이 게임을 만들어 보려고 하는데요 2D에서는 타일맵을 텍스트파일로 뽑아와서 플레이어 등이 갈 수 있는지 없는지를 0과 1의 구분으로 판단할 수 있었지만, 3D로 충돌처리를 해보려고 하니 맵을 어떻게 뽑아오고, 3D끼리는 어떻게 해야할지 모르겠습니다 ㅠ 구현해보고 싶은건 1. 플레이어를 원기둥으로 만들고 플레이어들끼리 서로 충돌해서 겹치지 못하도록 구현 2. 맵에 존재하는 건물(Box) 등 장애물 정보를 서버가 참조할 수 있도록 가지고 있게 하여 이동 패킷을 받고 해당 좌표에 갈 수 있는지 여부를 판단 일단 3D 맵은 어떻게 뽑아올 것이며, 서버 코드에서 3D 물체끼리 충돌 처리를 어떻게 해야할 것인지가 문제인데 이 부분은 어떻게 구현을 해야할지 조언 부탁드립니다 ㅠ
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
15분 질문
지금 Player클래스에서 GameRoom의 클래스를 Room이라는 객체로 받아와서 1. 프로퍼티로 생성자를 만들어주는 작업을 하는 것인가요?? 2. 생성자가 프로퍼티로 구현이 가능한가요? 3. A라는 클래스에서 B라는 클래스의 생성자를 정의 해줄 수 있나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
FindPlayer
안녕하세요 루키스님. 제가 이해한게 맞는지 궁금합니다. 원래는 lock을 함수마다 걸어서 _players 딕셔너리에 동시에 여러 쓰레드에서 접근하는 것을 막았는데, JobQueue라는 개념을 도입하여 단일 쓰레드에서 순차적으로 처리하도록 하여 동시접근을 차단했습니다. 그런데 외부 쓰레드에서 갑자기 _players에 접근한다면 결국 두 쓰레드에서 접근하여 read/write 해버리는 문제가 발생할 수 있다고 이해하면 될까요? (물론 코드 상에서 FindPlayer 부분을 실행하는 것은 Main에서 room.Push(room.Update); 이 부분으로 호출하고 있기 때문에 jobQueue로 순차적으로 실행)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안녕하세요. 질문드립니다.
안녕하세요. 강의 내용 중 몬스터 ai 처리 중 update에 tickcount 사용하여 시간 체크를 하는 로직을 jobtimer로 변경하였는데요. 개인적인 생각으로는 jobtimer로 변경하여도 결과적으로는 호출 주기가 길어졌을 뿐 시간을 체크해서 처리하는 방식은 그대로라고 생각됩니다. jobtimer로 update하는 이유는 실행횟수를 줄이기 위함이라고 이해해도 될까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
스킬을 코루틴으로 구현하는 이유
스킬을 코루틴으로 구현하는 이유가 무엇인가요?? 거리가 되어서(특정 조건을 만족할 때) 그냥 스킬함수를 쓰는것과 스킬함수를 코루틴으로 구현한것의 성능적인 차이점을 잘 이해를 못하겠습니다.
- 미해결[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 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
비트 연산자 질문
강의와는 별로 관려이 없지만 이해가 잘 가지 않습니다 ㅠ CPP에서 char 형 8비트 1바이트 a에 255라는 값을 집어넣고 반전을 시키면 0이 들어가는데 왜 C#에서는 같은 8비트 의 0~255까지의 byte타입인데 테스트 디버그로 테스트를 해보고 싶은데 왜 테스트 조차 안되는 것인가요?? 질문1. CLS 단계의 컴파일부분에서 이것을 잡아 내는 것인가요? 아니면 최종? 컴파일 단계에서 이런 부분들을 잡아 내는 것인가요?? (C#은 CLS 컴파일 단계와 최종??(이름은 까먹었었습니다)컴파일 단계 두단계로 나뉜다는 것은 인지하고있습니다) 질문 2. CPP은 똑같은 코드를 수행을 했을 때 char형에 0이 들어가고 컴파일 에러도 없이 디버그 모드가 되는데 C#은 왜 디버깅을 하였을 떄 안되는 이유와 차이점이 있나요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Job 관련 문의
안녕하세요. JobTimer 와 JobSerialize 보면서 궁금한점이 있어서 문의 드립니다. 구현된 JobTimer 와 JobSerialize 를 보면, Push(), Pop() 부분에만 lock 이 잡혀있고, Execute() 부분에는 lock 이 없습니다. 이런경우 Execute 가 여러 쓰레드에서 실행될수있는 경우는 없을까요? 만약 여러쓰레드에서 execute 가 실행된다면, 결과적으로 내부에서 foreach 등을 사용하는경우 문제가 될것같아서 문의 드립니다. 예를 들면, Timer 에서 처리중인 작업이 오래걸리는경우 다음 Timer Tick 이 돌아왔을때에 아직 이전에 실행중인 Timer 작업이 실행중이고 다음 Timer 작업이 돌아오는경우 문제가 없는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
UpdatePosition질문
기초적인 부분이긴 하지만 아직도 정확히 이해가 안가서 질문드립니다... 사용자의 입력을 받고 UpdatePoposition이 매 프레임마다 호출되는 과정에서 dist가 if와 else의 조건을 둘다 만족하게 되어 Idle인 상태와 Moving인 상태를 왔다라 갔다리 하는것 까지는 느낌적인 느낌으로 알겠습니다. 그런데 dist < _speed * Time.deltaTime 에서 1) _speed (= 5) * Time.deltaTime 이 무엇을 의미를 하는지 모르겠습니다. ( 사용자의 컴퓨터 사양이 다르기 때문에 이것을 해준다 라고는 들었는데 어떻게 동작을 하는것인지...ㅠㅠ) 2) TIme.deltaTime의 값이 얼마 인지를 잘 모르겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
State 사용과 _state 사용
강의를 보면 if(_state == CreatureState.Idle) {의 방식으로 조건을 확인하기도, if(State == CreatureState.Idle){ 의 방식으로 조건을 확인하기도 합니다. 결국 둘 다 하나의 코드 내에서 _state를 사용하는 것인데 기왕이면 하나로 통일하는 것이 좋은지, 아니면 크게 상관 없이 그냥 작성해도 되는 것인지 궁금합니다. _state만 사용해도 상관이 없다면 굳이 property를 사용할 필요가 없을 것 같아서요. 연장되는 질문일 수도 아닐 수도 있겠습니다만 강의를 보다보면 변수를 사용하실 일이 있으실 때 대개 property를 사용하십니다. protected로 접근지정자 선언을 하시는 경우처럼 모든 변수에 사용하시지는 않는대요. 코드를 짜실 때 이 변수가 상속에서만 사용될 것 같은지, 다른 코드에서도 사용할 것 같은지 바로바로 판단되시기 때문에 protected로 선언한 변수와 property 선언을 구분해주시는 것인지, 아니면 나름의 기준이 있으신 것인지 궁금합니다. 좋은 하루 되세요! :)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의의 코드를 github에 올려도 되나요?
https://github.com/mun9769/UnityMultiGame 입사 포트폴리오용은 아니고 단순히 개인공부를 정리하고 싶어서 github에 올렸습니다. 문제가 될 시 private으로 바꾸겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 13분 질문입니다.
42번째 줄에서 이중 for문을 돌면서 타일에 GetTile로 타일이 있는지 없는지 체크를 해주고있는데 컴퓨터 화면으로 기준 왼쪽 제일위가 (0, 0) 이고 y좌표는 밑으로 내려가면 내려 갈 수록 y의 값이 커지지 않나요? for (int y = tm.cellBounds.yMax; y >= tm.cellBounds.yMin; y--) 강의에서는 이부분이 위에서 부터 밑으로 내려간다고 하셧는데 y = cellBounds.yMax부터 시작을 하니까 10부터 시작해서 tm.CellBdouns.yMax가 (10 * 10 타일 기준일 때) 10, 9, 8, 7... 1 이렇게 진행되는 것아닌가요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
IL2CPP 로 빌드시에 간헐적으로 발생하는 에러가 있는데요
안녕하세요 mono -> IL2CPP 로 바꿔서 빌드 후 실행하는데 간헐적으로 crash가 발생하더라구요 로그를 찾아보니 EnterGame 전에 crash가 나는데 아래와 같습니다. UnloadTime: 0.493300 ms OnConnected : [fe80::410a:f910:e4e9:d9ae]:7777 UnityEngine.Logger:Log(LogType, Object) UnityEngine.Debug:Log(Object) ServerSession:OnConnected(EndPoint) ServerCore.Connector:OnConnectCompleted(Object, SocketAsyncEventArgs) System.EventHandler`1:Invoke(Object, TEventArgs) System.Net.Sockets.<>c:<.cctor>b__310_3(IAsyncResult) System.AsyncCallback:Invoke(IAsyncResult) UnityEngine.Windows.WebCam.OnVideoCaptureResourceCreatedCallback:Invoke(VideoCapture) System.Threading.ThreadPoolWorkQueue:Dispatch() Crash!!! SymInit: Symbol-SearchPath: 주소들... 서버를 잠시 일시정지 후 빌드된 exe 를 실행하고, 서버를 동작시키면 문제 없이 동작합니다. 혹시 원인이 뭔지 알 수 있을까요?
- 미해결[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일 경우 제 주관적인 생각으로는 데이터를 정확하게는 받아오질 못할 텐데 서버도 맵 데이터를 가져야 하는지 의문이 듭니다.