월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
GameRoom.cs , S_Despawn 패킷 질문
안녕하세요 좋은 강의 제공 주셔셔 감사합니다.강의를 따라가면서 궁금한 사항이 생겼습니다. GameRoom.cs 의 함수 구현 중 S_Despawn의 메시지 구조는 왜 List로 되어야 되는지 알 수 있을까요?결국은 서버 입장에서는 Player 한명이 나갈 때 마다 lock이 걸리므로 즉 한번에 한명씩 플레이어가 나갈 것 같아 보이는데 S_Despawn의 메시지를 List항목으로 만든 이유는 어떤 의도이신지 알 수 있을까요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3D MMORPG 같은 경우 맵 관리를 어떻게 해야하나요?
안녕하세요 현재 2D 관련 피격 판정 강의를 보다가 3D 지형같은 경우 어떻게 처리해야 할지에 대해 궁금해서 글을 남깁니다. 제가 현재 진행중인 프로젝트는 3D 기반의 5x5km ~ 8x8km의 오픈월드 인데요. 3D 지형이라서 언덕과 산과 같은 것들로 인해 굴곡이 져있고 게다가 오픈월드라서 많은 오브젝트들이 배치되어 있는데 이 부분에 대해 어떻게 해야할지 고민스럽습니다. 피격 판정 및 장애물을 지날수 있느냐 없느냐도 결국엔 맵 정보가 서버에 있어야 가능할 텐데 이 부분을 어느정도는 클라이언트 딴에서 처리하는 방식으로 해도 괜찮나요?.. 학부 수준에서 소수의 인원이 모여서 하는 프로젝트라 모든 것을 엄격하게 서버에서 처리할 필요는 없기는 한데 그래도 서버에서 처리를 하는 것이 당연히 맞다고는 생각하지만 방법이 떠오르지가 않습니다 ㅠ 모든 것을 1,0으로 처리하기에는 3D라 z축 기준에서는 또 이게 적용이 되는지 잘 모르겠구 맵도 넓고 오브젝트도 너무 많아서 그렇게 했다가는 엄청난 용량이 발생할 거 같다는 생각도 듭니다. 3D 지형에서는 어떤식으로 맵에 관한 정보를 뽑아오는지 그리고 넓은 오픈월드 안에 있는 모든 오브젝트들 또한 정보를 어떤식으로 뽑아오고 서버에서 이것을 어떻게 관리해야하는지 조언 해주시면 정말 감사하겠습니다!!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
후속 강의 ef core에 대한 질문
삭제된 글입니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
완성된 MMORPG 게임 서버 안에 들어가는 폴더 구조
삭제된 글입니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
MyPlayer를 Prefab으로 해야하는 이유가 궁금합니다.
나 말고 다른 플레이어는 Prefab으로 하는 것은 이유가 이해가 가지만 나의 플레이어 또한 prefab으로 관리해야하는지에 대해서는 잘 모르겠습니다. 혹시 나의 플레이어도 반드시 Prefab으로 관리해야 하는 이유가 있을까요?!
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의 내용에서 빗나간내용이라 질문드리기 죄송스럽지만..
윈도우 빌드가 아닌 안드로이드도 서버 접속이 가능하게 할 수 있을까요?? 가능여부만 알려주시면 방법은 구글링으로 찾아볼게요! 감사합니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
안되는 부분이 있어서 질문드립니다.
코드중 mc.CellPos = pos; 이 부분에서 NullReferenceException: Object reference not set to an instance of an object GameScene.Init () (at Assets/Scripts/Scenes/GameScene.cs:31) BaseScene.Awake () (at Assets/Scripts/Scenes/BaseScene.cs:12) 이런 에러가 나서 진행이 안됩니다. 찾아보니 널값을 가질수 없는 오브젝트에 널값을 할당해서 나는 오류라고 하여서, 명시적으로 mc.CellPos = new Vector3Int(10,10,0); mc.CellPos.set() 등으로 해보아도 같은 오류 메세지가 뜹니다.
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
질문드립니다.
강의 내용을 약간 벗어난 내용 같기는 하지만 궁금해서 질문드려봅니다. Map의 콜리젼 데이터를 txt파일로 만들어서 클라와 서버에서 사용하고, 스탯 데이터와 같은 것들을 json 형태로 관리하고 있는데 이런 파일들은 얼마든지 악의적인 변경이 가능할 것 같은 생각이 들었습니다. AES 암호화 알고리즘을 C#에서 기본적으로 제공해주는 것으로 알고 있는데 파일을 암호화해서 저장하고 복호화해서 불러오는게 필요할까요? 키는 서버에서 받아서 진행하면 어떨까하는 생각이 들었습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강사님 힌트 좀 부탁드릴게요 ㅠㅠ
안녕하세요 맵이동 관련해서 질문드립니다. _collision[y, x] = (line[x] == '2' ? true : false); 와 같이 사용해서 Map_002로 이동해보려고 하는데 어떤식으로 하면 좋을까요 힌트만이라도 부탁드릴게요 ㅠ 만약에 정 구현이 힘들면 tilemap collider를 사용해서 구현해도 상관은없겠지요?ㅠㅠ
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
모바일 게임 용으로 개발 중입니다.
안녕하세요 강사님 1. 저는 모바일 게임용으로 게임을 개발 중입니다. 그래서 키보드가 아닌 조이스틱으로 움직여 구현 해보려고 하는데요.. 조이스틱으로 이동까지는 가능하게 했는데 그리드로 이동하게 해보려고하니 방향_dir를 뽑아내는게 힘듭니다 ㅠ 머리속으로는 h, v 중 큰 값으로 방향을 뽑아 낼 수 있을까 했습니다. 그런데 생각보다 잘안되네요.. public Vector3 poolInput() { float h = joystick.GetHorizontalValue(); float v = joystick.GetVerticalValue(); Vector2 moveDir = new Vector3(h, v, 0).normalized; return moveDir; } 2. 그리고 조이스틱으로 게임 구현했을 때 서버 연동시 문제가 없을까요? 메일 확인 부탁드립니다! 항상 감사드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
public 을 지워서 찾으신 후 Push()를 하신 부분에 대하여
jobQueue의 09분 20초 부분 EnterGame() 을 Push()로 변화하는 과정에서 질문이 있습니다. EnterGame() 의 경우 public 을 없애셔서 찾으시다보니 발견을 못하신것 같은데.. EnterGame()를 사용 하는 부분이 2군데 더 있더라구요. GameRoom.cs 부분에서 EnterGame(monster); EnterGame(arrow); 가 있습니다. 확인해보니 이 두개는 결국 GameRoom 안의 함수들안에 있는 것이라 Push가 될테니 문제는 없을 것같은데.. 본래는 이 GameRoom 안에 있는 함수의 안에 있는 EnterGame()이더라도 Push를 하는게 맞는 것인지 궁금합니다. 애초에 같은 스크립트 안에 있는거면 처리를 안해줘도 되서 일부러 public을 찾으신건지 궁금하네요... 두서없이 그냥 쓴것 같아 죄송하지만... 답변 부탁드립니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Vector3Int_cellpos에 질문이 있습니다
3d게임만드는 연습중입니다. 3d에서도 Vector3_cellPos = VectorInt.Zero;를 사용해도 괜찮은가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
액션게임의 초당 패킷전송 횟수와 유닛간 충돌에 대해 궁금합니다.
안녕하세요. 올려주신 강의로 즐겁게 공부하고 있는 수강생입니다. 강의를 보던중 궁금한사항이.. 셀단위로 움직이는 RPG의 경우 움직임 동기화시 초당 4회로 패킷을 보낸다고 하셨는데 FPS 같은 액션 게임에서는 초당 4회면 좀 느리지 않을까 하는 생각을 하게 되었습니다.. 보통 FPS게임을 제작할때에는.. 정확한 수치는 모두 다르겠지만 평균 어느정도의 호출간격을 갖고 제작하는지 궁금합니다. 또한 다른 질문 글, 답변 글들을 보니 셀단위로 움직이지않고 자유롭게 움직이는 게임일 경우 대부분이 유닛간에 충돌을 주지 않도록 만든다고 하셨는데요. 이럴 경우에는 유저들간의 공격, 피격을 충돌로 처리하지 않는다는 뜻이신가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
서버가 매끄럽게 작동하지 않는거 같습니다.
서버를 키고 바로 클라를 띄웠을 경우에는 잘 실행이 되는데 서버를 켜둔 상태에서 시간이 좀 흐른이후에 클라를 실행하면 제대로 connect가 되지 않는 경우가 빈번이 발생합니다.또 disconnect하는 부분에서도 disconnect로그가 뜨지 않고 정상적이지 않게 종료되는 경우도 마찬가지로 빈번하게 발생합니다.이 이유가 뭔지 잘 모르겠습니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
만약에 FPS관련 이동 동기화에 경우
강의를 듣다가 의문이 생겨서 질문을 남깁니다, FPS이동 동기화 또한 클라이언트에서 먼저 이동후 서버에다가 패킷을 전송한후 자신이 움직였음을 알리는 방식이 대부분이라고 하셨습니다. 하지만 1초다 4번 패킷을 보내는 경우에는 캐릭터가 목표 좌표를 받아와서 이동하는 방식으로 하게 될경우 오차가 발생하는 경우가 있을거 같고 그 오차로인해서 플레이어 이동 동기화가 마치 한템포 늦을거 같은 느낌이 듭니다. 만약에 진짜 FPS게임으로 동기화를 한다면 1초에 4번이 아닌 서버가 플레이어의 응답을 대기하는 형식으로 하는게 더 좋은 방식인가요?
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
셀단위 이동이 아닐때의 구현 질문
안녕하세요! 강의를 보던 중 궁금한 점이 생겨 글을 남기게 되었습니다. 이번 강의에서 만드신 게임의 동작방식을 보면 플레이어가 셀단위로 이동을 하는걸 알 수 있는데요. 이렇게 셀단위로 이동할 경우 서버에서의 충돌체크나 AI의 길찾기를 모두 셀단위를 기준으로 하게 되어 간편하게 할 수 있는것 같습니다! 그런데 이런 방식이 아니라 Part#4에서 만드셨던것처럼 자유롭게 케릭터가 이동 가능한 경우, 서버에서의 충돌처리나 이동가능 체크, 길찾기는 어떤방식으로 하게 되나요? 가장 단순하게 생각하면 셀을 아주 미세하게 쪼개서 대량으로 만들고 케릭터의 크기만 키우는 방법이 있을것 같은데요. (셀 간의 간격이 좁으므로 셀단위 이동이라는 느낌이 안들게 되겠죠) 이렇게 할 경우 너무 많은 셀을 만들게 되어 메모리는 그렇다 쳐도 AI의 길찾기 속도 저하등 퍼포먼스 문제가 발생하여 일반적으로는 사용되지 않을것 같습니다. 그렇다면 Part#4와 같은 게임에서는 어떤 방식을 사용하여 처리하는 지가 궁금합니다. (충돌처리 방법, 서버 맵데이터를 뽑는 방법 등등..) 내용이 광범위 하다면 검색 키워드나 관련 정보의 URL이라도 부탁드리겠습니다. 감사합니다!
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
System.ArrayTypeMismatchException:
Map.cs -> ApplyMove 및 ApplyLeave 함수 부분에서 오류가 간헐적으로 발생합니다. public bool ApplyMove(GameObject gameObject, Vector2Int dest) { ApplyLeave(gameObject); PositionInfo posInfo = gameObject.PosInfo; if (CanGo(dest, true) == false) return false; { int x = dest.x - MinX; int y = MaxY - dest.y; _objects[y, x] = gameObject; // 이 부분에서 오류 발생 함 } // 실제 좌표 이동 posInfo.PosX = dest.x; posInfo.PosY = dest.y; return true; } System.ArrayTypeMismatchException: 'Attempted to access an element as a type incompatible with the array.' 이라는 오류가 발생합니다.... 첨부파일에 있는 프로젝트 실행해도 마찬가지입니다 .NET Core 3.1 Protobuf( 3.12.3) Newtonsoft.Json (12.0.) 입니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
맵 이동 시 궁금한 부분이 있습니다.
예를 들어서 캐릭터가 집에 들어간다고 했을 때에 집 문에 collision 을 두어서 캐릭터가 진입했을 때에 장소를 변경하려고 합니다. 이 때에 강의를 이용하여 Map 을 만든 후 Map Prefab 을 바꿔주면 될 것 같다는 생각이 들었습니다. 그러나 Map 이 바뀔 때에 Scene 의 특징이 바뀌어서 생성되는 Object 들이 많이 바뀐다던지 할 경우 (나중에 추가가 되겠지만 리젠되는 몬스터가 바뀐다던지, NPC 들이 다양하게 생긴다던지) Map Prefab 의 변경보다 Scene 을 변경하는게 더 낫지 않을까 하는 생각이 들었습니다. 혹시 언제 Scene 을 변경하면 좋을지, 언제 Map Prefab 을 변경하면 좋을지에 대한 법칙이나 강사님만의 기준이 있는지 궁금합니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
함수 시그니쳐부분에 대한 이해가 어렵습니다
static Loader LoadJson<Loader, Key, Value>(string path) where Loader : ILoader<Key, Value> { string text = File.ReadAllText($"{ConfigManager.Config.dataPath}/{path}.json"); return Newtonsoft.Json.JsonConvert.DeserializeObject<Loader>(text); } DataManager.cs 파일에 있는 위 함수에서 Loder는 어디에 정의 되어있는 것이고LoadJson 뒤 부분인 <Loader, Key, Value> 는 왜 있는건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
31:49초 에서도 GenPacket.bat 실행 시 오류 발생합니다
오류내용 : Protocol.proto:8:3: "C_CHAT" is already defined in "Protocol". Protocol.proto:8:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "C_CHAT" must be unique within "Protocol", not just within "MsgId". Protocol.proto:9:3: "S_CHAT" is already defined in "Protocol". Protocol.proto:9:3: Note that enum values use C++ scoping rules, meaning that enum values are siblings of their type, not children of it. Therefore, "S_CHAT" must be unique within "Protocol", not just within "MsgId".