월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
게임룸에 관한 질문입니다.
안녕하세요.강의를 보면서 fps를 주제로 포트폴리오 준비를 하고있는 도중에 궁금한 것이 있어서 질문드립니다. 유니티 데디케이트 서버? 로제작할 예정입니다.fps게임에서 여러개의 그룹, 방을 가지고 있는데 서버에서는 이 방마다 각각의 맵을 생성한뒤 가지고 있나요?다른 필요한 정보들은 검색으로 방향을 찾았는데 이러한것은 어떻게 검색해야하는지 감이 안잡히네요.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
몬스터 데미지 처리 방식 질문입니다.
이번 프로젝트에서는 화살에 대한 충돌 정보를 콜라이더를 통해서 하는게 아닌 매니저에서 List에 담긴 적 오브젝트에 위치 정보와 화살에 대한 위치 정보를 비교해서 해당 위치에 적 오브젝트가 존재할 경우 데미지를 처리하는 방식으로 로직을 구현하신 이유가 궁금해서 질문 남깁니다.현재 프로젝트에서 충돌 판정을 위해 List에 등록된 모든 object들의 위치 정보를 대조하는 방식으로 구현이 되어있는데, 대부분에 2D 온라인 게임들은 이런 방식으로 로직을 구성하는 건가요? 진행중인 프로젝트와 유사한 게임으로 예시를 들어주신 바람의나라, 리니지와 같은 게임 한정으로 이렇게 로직을 구성하는 건가요?개인적인 생각인데, List로 적 오브젝트를 관리하게 될 경우 적 오브젝트 수가 늘어나 생성,파괴,충돌, 이동이 수시로 일어날 경우 각 정보를 클라이언트들에게 뿌려주기 위해서 서버에 과부화가 있을 거 같은데, 이를 보완하는 방식이 있는지 혹은 List 말고 다른 방식이 존재하는지 궁금합니다 항상 좋은 강의 감사합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
protobuf를 쓰지않고 패킷을 만들경우
한번은 직접 패킷을 다루는걸 해보려고 하는데repeated PlayerInfo players부분은 리스트처럼 가변크기 데이터로는 못보내고고정크기 배열로 패킷을 만들어야 하는게 맞을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
json파일 관련 질문
안녕하세요!이번 강의를 다 듣고 npc대화 기능을 추가하려고json파일에 npc의 대사를 넣고client에서 보관하려고 json파일을 파싱하고 있었는데요,textAsset은 잘 가져 오는데, makeDict()의 결과는 항상 null입니다ㅜㅜ(Dictionary<int,Chat> <-- Chat이 Google.Protobuf.Protocol에서 정의되서 안되는 걸까요?)대소문자 때문인가 해서 이리저리 바꿔봐도 안됩니다,,왜 그런지 알 수 있을까요? 감사합니다:)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
두번째 세션부터 entergame 패킷이 보내지지않습니다.
Part4를 베이스로 삼아 간단한 동기화만 구현을 해보려고 해보는 중입니다. 문제가 되는 것은 처음으로 들어온 세션은 EnterGame 패킷과 Spawn 패킷을 모두 받는 반면에 두 번째로 들어온 세션은 Enter패킷이 들어오지않습니다... 상황을 정리하자면첫번째 세션: MyPlayer생성 O, other Player 생성 O두번째 세션: MyPlayer생성 X, other Player 생성 X로그를 찍어보니 두번째 세션에 EnterGame Handler가 작동을 하지 않더군요... 혹시하는 마음에 질문해봅니다.EnterGamepublic override void EnterGame(GameObject gameObject) { if (gameObject == null) return; if (gameObject.ObjectType == GameObjectType.Player) { Player player = gameObject as Player; _players.Add(gameObject.Id, player); player.Room = this; // 본인한테 정보 전송 { S_EnterGame enterPacket = new S_EnterGame(); enterPacket.Player = player.Info; player.Session.Send(enterPacket); S_Spawn spawnPacket = new S_Spawn(); foreach (Player p in _players.Values) { if (player != p) spawnPacket.Objects.Add(p.Info); } player.Session.Send(spawnPacket); } } // 타인한테 정보 전송 { S_Spawn spawnPacket = new S_Spawn(); spawnPacket.Objects.Add(gameObject.Info); foreach (Player p in _players.Values) { if (p.Id != gameObject.Id) p.Session.Send(spawnPacket); } } }
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
멀티플레이어 모드에서 카메라가 다른 플레이어를 중심으로 움직입니다
안녕하세요! 강의 열심히 듣고 있습니다!!제가 멀티 플레이어 모드에서 버그가 발생했는데요, camera 위치도 myPlayerController 에서만 lateUpdate 했는데멀티플레이어 모드에서 키보드 입력도 다른 캐릭터가 받고카메라도 다른 플레이어를 따라서 움직이는데 왜 그런지 알수 있을까요..?참고로 혼자 플레이 할때는 전부 정상적으로 작동 합니다!!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
빌드 질문
안녕하세요 지금 Update 함수 안에서 GetMouseButtonDown(0)을 입력하면 캐릭터가 펀치를 날리도록 코딩을 했는데요. 유니티 에디터에서 Play시 아주 잘 됩니다만 2/3/4 players로 게임 실행을 하니 동작을 안합니다... 그러니까 마우스 클릭을 해도 펀치를 날리지 않는데요왜 그런지 도대체 이유를 모르겠습니다...코드는 강의에서 쓰는 것과 동일합니다. 이 때는 어떻게 문제를 해결하면 좋을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동 동기화 관련
안녕하세요. 항상 좋은 강의 감사합니다.이 강의를 통해서 포트폴리오를 제작하려고 하고 있습니다.그런데 이동 관련에서 문제가 생겼습니다.2D 횡스크롤 처럼만들어서 캐릭터를 이동시키려고 합니다.캐릭터가 이동할 때마다 패킷을 보내고 있고상대방에게는 방향과 애니메이션은 잘 전송이 되는데posX와 posY는 적용이 되지 않습니다.movePacket에는 State, Dir, posX, posY 값이 잘 들어가 있습니다.서버와 클라간의 패킷값들도 정상적으로 잘 전달이 되어 있습니다.혹시 유니티 선생님 강의와 다르게 박스콜라이더와, 리지드바디를 적용을 했는데이것이 이동패킷에 영향을 주기도 하나요..?breakpoint를 계속 찍어가면서 오류발생구간을 찾고 있는데도값이 매우 잘 들어가 있어서 더 혼란입니다.어떻게 해결을 해야 하는지 여쭙고 싶습니다..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
두 가지 궁금한게 있습니다
안녕하세요.따로 3D 프로젝트를 만들고 서버를 돌려보고 있는데요디버그 모드로 브레이크 포인트를 잡아서 디버깅하고 싶은데 2 Players 이상으로 실행하게 되면 디버깅을 못하는지 궁금합니다..또 질문하는 김에 하나 더 질문하자면 2 Players로 실행을 하게 되면 첫번째로 생성된 창에서는 조명이 있지만 두 번째 실행 창에서는 뭔가 조명이 꺼져 어두워 보이는데 해결방법이 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
foreach 질문
안녕하세요 헷갈리는게 있어서 질문드립니다!!아래 코드 보시면 몬스터나 projectTile를 상속 하는 오브젝트들을 메인 쓰레드로 무한반복을 하고 있습니다. 여기서 의문인점이 제가 배우기로는 foreach문을에서 collection를 사용할때 foreach가 돌고 있는 중간에 해당 컬렉션을 add나 remove를 해주면 오류가 발생하는걸로 알고 있는데... 화살 같은 경우에는 중간에 쏘면 인스턴스가 생성되고 그리고 사라지면 다시 remove해주고 하는데..혹시 제가 놓치고 있는 부분이 있을까요??
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동 패킷 동기화
안녕하세요 이동패킷 동기화 관련해서 여쭤볼려고 합니다. 다른 사람들 질문에 답하신것 처럼 이동패킷은 보통 1초에 4번 보낸다 라고 되어 있더라구요.여기서 4번 보낸다 라는 뜻은 4강 서버 강의 후반에서 배운것처럼 Server에서 JobTimer에 pendingList에 250ms 만큼 모아놓고 그리고 보낸다라는 뜻인가요??즉 Client에서는 키 입력을 받게 되면 실시간으로 Server에 보내지만 반면에 Server쪽에서는 같은 방 안에 있는 다른 플레이어한테 BroadCast를 실시간으로 해주는게 아닌 0.250초 만큼 쌓아 놓은 패킷을 모아서 보낸다는 뜻인가요?? 또는 클라이언트에서 아예 0.250초마다 보낸다는 뜻인지 잘 모르겠어요...
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
이동 동기화 부분 질문있습니다
며칠째 여러방법으로 시도를 해보아도 안되는 부분이 많습니다..ㅠㅠㅠ 혼자 간단한 3D게임을 만들면서 공부중입니다. 접속하는 부분까지는 잘 됩니다. Protocol 에서는 Pox. Poy, Poz를 float로 변경한 후 조이스틱 입력을 받을 boolean을 추가해줬습니다. 이후 클라 프로젝트 쪽에서 UI_button이라는 스크립트 파일을 만들어서 UI_Base의 BindEvent를 통하여 조이스틱을 조작하여 조이스틱의 Vector2의 값을 MyPlayercontroller의 SetMyPlayerMoveDir이라는 프로퍼티로 set안에서 설정후 get부분에서는 Vector3의 값을 내벝어 주게 하였습니다. 그리고 나서 isInputJoyStick이 true일 경우 이렇게 State를 변경해 주었고 UpdateMoving일 경우에는 IsInputJoyStick이 false일 경우 State를 변경하도록 하였습니다. Move함수의 인자로는 아까 MyPlayerController의 프로퍼티인 SetMyPlayerMove을 받아서 transform.forward랑 포지션을 움지기게 한뒤, movePacket을 만들어서 PosInfo를 Send 해주는데 동기화가 안됩니다. 현재 서버의 로그를 보면 서버를 킨 후 클라에서 조이스틱을 클릭하고 이리저리 움직이면 최초의 드래그 한 값만이 이런식으로 계속 보내 지는거같습니다. 가령 같은 값으로 패킷을 보낸다고해도 다른클라에서는 제 플레이어를 봤을 때 뚝뚝 끊기는것 처럼 보여야 하는데 접속만 되고 동기화가 통 되질 않습니다..
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
서버 구조 싱글쓰레드 인가요?
안녕하세요. 아직 강의는 다 보지 못하고 소스코드만 봤는데 서버 구조 싱글쓰레드 인가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
TileMap Collision 강의 중 질문있습니다.
Palette_Evn타일 팔레트 크기가 이전 강의랑 다른데 변경된 걸까요?타일 팔레트에서 오브젝트가 한칸에 표시되도록 변경되었는데 어떻게 설정하는 걸까요?TileMap Collision 강의입니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
에러 질문
유니티 에디터에서 소스코드를 더블클릭해서 열었더니 어느날 갑자기 뭔 듣도보도 못한 에디터 프로젝트들이 열려 있을 뿐만 아니라 디버그 실행도 안되고 뭔 Unity.Rider.Editor.dll은 왜 찾는건지 모르겠습니다. 소스코드 다운받고 해도 안되고, 얼마전까지 멀쩡하던 2020버전도 갑자기 안되더군요.. 구글링해도 해결되는 정보도 없고, attach to unity 버튼까지 사라져서 미치겠습니다.
- 미해결[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와 같은 키워드)를 안 붙여주어도 계속 늘어나게 되는 것인가요?