월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[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".
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
파일 생성이 안됩니다
15:12 에 GenPackets.bat 파일 실행하면 .cs 파일이 생성이 안됩니다... 내용을 몇번이고 다시 확인하면서 대소문자까지 구별해서 재시도 해봤는데 아무 변화가 없네요 관리자 권한으로 해보고 별걸 다해봐도 아무 변화가 없습니다 Blazor 강의부터 제대로 되는게 없어서 좌절하게되네요...
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의를 듣다보니..
어느 컨텐츠까지 서버한테 확인작업을 받아야하는지 기준을 모르겠습니다 예를들어 길드를 만들때도 서버에게 패킷을 주고받으며 확인을 받아야하는지.. 모든컨텐츠가 서버에 일일이 확인을 받으면 과부화가 안걸리나요?(유저가 많다고가정할시)
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
맥북 솔루션로드실패
저는 맥북을 이용하는 수강생인데요. 파트7 마지막 강의의 소스코드를 열려고하면 솔루션로드가 실패되었다고 아에 파일이 visual studio에 열리지가 않네요... .sin을 눌러 소스코드를 열려고하면 load operation failed 라고뜨고 창이 닫혀요 ㅠㅠ 파트7 Protobuf 이식 (코드 리뷰) 강의의 소스파일은 열면 이렇게됩니다.. 구글을 검색해도 안나오는것같고 정확한 이유를 모르겠어서... 주변에 개발자분들이 없기두하고 수업이 진행이 안되네여 ㅠㅠ 인터넷에 소스파일을 올려서 확인해달라고 할수도없는상황이구.. 맥에 대한 이슈는 잘 모르신다고 하셨는데 혹시라도 알고계실까봐 질문드려봐요... 주변 맥을쓰시는 개발자분들에게 답변을 구해주시면 안될가요 ㅠㅠ 부탁드립니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
에러
첨부파일 다운받아서 따라가려했으나 오류가 해결이 안되네요. 10:00ResourceManager 의 29번째 줄 내용 Debug.Log가 찍히는걸로 봐서는 UI/EventSystem도 없는것 같고요 첨부파일에있는 것들 중 스크립트만 추가했는데도 여전히 마찬가지네요. BaseScene.cs의 Init()에서 obj에 암것도 못받아와서 null이라 Managers.Resource.Instantiate("UI/EventSystem").name = "@EventSystem"; 가 실행되서 따라가보니 받아와야 할 것들에 다 null인걸로 봐서 못받아오는 것같네요...
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
강의가 몇개 사라졌나요?
MapTool 강의 다음에 Player 이동 강의인데 내용이 이어지질 않네요...
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
존단위, 심리스??
바람의나라와, 리니지같은 두개의 맵으로 크게 나눌수있다고 말씀하셨는데 왜 전자가 더 구현하기가 더쉬운건가요? 그냥 단순히 바람의나라에서 맵을 좀더 넓히면 리니지같은 방식이 되는거 아닌가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
유니티 빌드
안드로이드로 빌드를 하면 gradle build failed에러가 뜨는데 어떻게 하나요?? 그리고 유니티 최신버전을 써도 상관없나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3D MMORPG에서 충돌체크 구현에 대하여 궁금합니다.
안녕하세요? Rookiss님 2D로 만드는 경우는 MAP 데이터를 COMMON폴더의 MAPDATA를 통해 서버가 게임룸속의 세상을 인지하고 처리하게 되는 걸 알게 되었습니다. ex) text파일을 읽어서 _collision[y,x]을 만들고 새로운 플레이어가 들어오면 _player[y,x] 배열에 담기.. 그런데 만일 3D게임인 경우 구글검색을 해보니 cube나 box를 통해 collision을 만들어 놓은 3차원 좌표 데이터를 서버에 가지고 있게 된다고 하던데 그렇다면 큰 데이터를 실제로 어떤 방식으로 가지고 있고 구현하게 되나요? 리니지2m 예를 드시면서 설명해주셨는데 cell방식이라고.. 결국 3차원 구조체를 구현하고 데이터 역시 이런 방식이 필요한건가요? 배그같지만 디자인고 간단하지만 높이값이 있는 FPS 3D MMORPG를 만들어 보고 싶어서 드리는 질문입니다.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Arrow스킬 공격에서 함수 흐름에 대한 질문 드립니다.
스페이스를 누르면 코루틴 함수로 Arrow프리팹을 생성하는데 이때 제가 생각하는 코드의 흐름 순서는 Managers.Resource.Inistatiate("Creature/Arrow"); ArrowController의 Init함수 ArrowController ac = go.GetComponent<ArrowController>(); ac.Dir = _lastDir; ac.CellPos = CellPos; 이런 식으로 돼야할 거 같은데, 디버그를 해보니 Init 함수가 나중에 실행되더라고요. Arrow프리팹이 Instantiate되면 그에 딸려있는 컴포넌트인 ArrowController의 Init함수가 다음으로 호출될거 같은데, Instantiate의 호출과 실제 Gameobject가 생성되는 시점이 약간 다른건가요??
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
TickRoom 함수
안녕하세요 TickRoom 함수에 람다 함수를 room.Update(); 로 넣어주셨는데 room.Push(room.Update); 를 넣어야 lock이 실행되는게 아닌지 궁금합니다~! static void TickRoom(GameRoom room, int tick = 100) { var timer = new System.Timers.Timer(); timer.Interval = tick; timer.Elapsed += ((s, e) => { room.Update(); }); timer.AutoReset = true; timer.Enabled = true; _timers.Add(timer); }
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Push 함수
안녕하세요 항상 좋은강의 감사합니다. Push 함수에서 Flush를 제거하시면서 해당 방식은 반응속도에 손해를 본다고 해주셨는데, 그럼 이때의 장점은 코드의 이해를 쉽게 한다는 것말고는 장점이 없는지 궁금합니다 만약 그렇다면 반응속도 향상을 위해 이전 코드를 사용하고자 합니다~!
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Arrow 함수 에서의 Push 사용
안녕하세요 Arrow의 Update에서 궁금한점이 있어서 문의드립니다. Arrow.cs에서 LeaveGame을 처리할 때 Push함수를 사용하도록 변경을 했는데 Arrow의 부모클래스인 Projectile의 Update 실행을 GameRoom의 Update 함수내에서 projectile.Update(); 의 호출로 실행해주고 있기 때문에 이미 Push가 Job으로 관리되고 있을것 같습니다. 그렇다면 혹시 Room.Push(Room.LeaveGame, Id); 부분도 Room.LeaveGame(Id); 로 사용해도 되는건지 궁금합니다~! public override void Update() { if (Data == null || Data.projectile == null || Owner == null || Room == null) return; if (_nextMoveTick >= Environment.TickCount64) return; long tick = (long)(1000/Data.projectile.speed); _nextMoveTick = Environment.TickCount64 + tick; Vector2Int destPos = GetFrontCellPos(); if (Room.Map.CanGo(destPos)) { CellPos = destPos; S_Move movePacket = new S_Move(); movePacket.ObjectId = Id; movePacket.PosInfo = PosInfo; Room.Broadcast(movePacket); Console.WriteLine("Move Arrow"); } else { GameObject target = Room.Map.Find(destPos); if (target != null) { target.OnDamaged(this, Data.damage + Owner.Stat.Attack); } //소멸 Room.Push(Room.LeaveGame, Id); }
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
HandleSkill 내 Push(EnterGame, arrow) 함수 사용
안녕하세요 HandleSkill함수는 PacketHandler.cs에서 room.Push(room.HandleSkill, player, skillPacket);에 의해서 호출되고 있는것 같습니다. 그렇다면 HandleSkill함수에 포함된 Push(EnterGame, arrow); 는 이미 Job으로 관리되고 있기 떄문에, (기존의 방식대로) EnterGame(arrow); 로 호출해도 되는건지 궁금합니다~ public void HandleSkill(Player player, C_Skill skillPacket) { if (player == null) return; ObjectInfo info = player.Info; if (info.PosInfo.State != CreatureState.Idle) return; // TODO : 스킬 사용 가능 여부 체크 info.PosInfo.State = CreatureState.Skill; S_Skill skill = new S_Skill() { Info = new SkillInfo() }; skill.ObjectId = info.ObjectId; skill.Info.SkillId = skillPacket.Info.SkillId; Broadcast(skill); Data.Skill skillData = null; if (DataManager.SkillDict.TryGetValue(skillPacket.Info.SkillId, out skillData) == false) return; switch (skillData.skillType) { case SkillType.SkillAuto: { Vector2Int skillPos = player.GetFrontCellPos(info.PosInfo.MoveDir); GameObject target = Map.Find(skillPos); if (target != null) { Console.WriteLine("Hit GameObject !"); } } break; case SkillType.SkillProjectile: { Arrow arrow = ObjectManager.Instance.Add<Arrow>(); if (arrow == null) return; arrow.Owner = player; arrow.Data = skillData; arrow.PosInfo.State = CreatureState.Moving; arrow.PosInfo.MoveDir = player.PosInfo.MoveDir; arrow.PosInfo.PosX = player.PosInfo.PosX; arrow.PosInfo.PosY = player.PosInfo.PosY; arrow.Speed = skillData.projectile.speed; Push(EnterGame, arrow); } break; } }
- 해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
Remove함수의 _lock 설정
안녕하세요 다음과 같은 Remove함수에서 GetObjectTypeById에 대한 결과값을 받아올때 lock을 걸지 않으신 이유가 궁금합니다. public bool Remove(int objectId) { GameObjectType objectType = GetObjectTypeById(objectId); lock (_lock) { if(objectType == GameObjectType.Player) return _players.Remove(objectId); } return false; } 예를들어 멀티쓰레드 환경에서 Remove 함수가 두번 호출된다면 나중에 입력된 objectId에 대해서만 Remove만 실행되지 않을지 궁금합니다~
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
몬스터가 플레이어 바로 앞에 있는 상황에서도 CoPatrol로 인해 State가 Moving으로 설정됩니다.
따라서 애니메이션이 실행됩니다. 그런데 선생님의 실행 화면에서는 해당 현상이 나타나고 있지 않은 것 같습니다. 어떻게 해결해야 하나요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
A* 알고리즘에서, 벽을 마주보고 있는 경우에 대해서
Monster와 Player가 벽을 마주보고 있는 상태에서 가끔 Monster가 Player에게 제대로 오지 못하고 있는 것 같습니다
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
A* 코드 관련 질문입니다.
저는 2강 자료구조를 듣지 않아서 A* 코드를 처음 보는데요, 만약 도착점까지 도달할 수 있는 경로가 존재하지 않는다면 어떻게 동작하게 되는지 궁금합니다. 그리고 휴리스틱을 사용하지 않는 것으로 보이는데요 그러면 다익스트라와 비슷하게 구현이 되는 건가요?
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
서버 구조
지금 가르쳐주시는 서버 구조 활용해서 컨텐츠 계속 추가하면 실제 서비스까지 할 수 있나요 ? 모바일 게임 서버는 C# 으로도 많이 만드는 것 같던데 , 동접 2천명? 정도 찍을 수 있는 서버는 가능한 지 궁금하네요.
- 미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
tilemap_collision이 tilemap_base보다 큰 경우가 있을 수 있을 것 같은데 어떻게 하면 되나요?
tmBase와 tm의 cellBounds를 비교하여 더 큰 값을 취하면 되나요?