inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

176만명의 커뮤니티!! 함께 토론해봐요.

카테고리 클래스를 어떻게 해야할지 모르겠어요ㅜㅜ

미해결

[유니티 레벨 업!] 모듈식으로 개발하는 아이템 시스템

1.이 강좌의 아이템 시스템과 전에 만드신 퀘스트 시스템 강좌를 합치려면 어떻게 해야 하나요? 퀘스트 시스템에서는 아이텐티파이드 오브젝트가 없어서 어떻게 해야할지 모르겠습니다. 2.카테고리 클래스에서 Equals함수와 GetHashCode함수를 오버라이드하는 이유를 잘 모르겠습니다. 참조도 0개고 부모의 구현을 그대로 호출하는데 어떤 의미인지 궁금합니다. 아 다이얼로그 시스템 강좌 계획은 없으신지도 궁금합니다.

  • unity
  • modules
  • 유니티6
nasukwang 댓글 2 좋아요 0 조회수 122

선 이동과 히트 판정에 대해 질문 드립니다.

미해결

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

안녕하세요. 루키스님! M2 코드를 분석하면서, 약간 다른 게임을 (브롤스타즈같은 모바일 탑뷰 슈팅게임) 만들고 있습니다. 선 이동으로 구현하고 있는데, 서버 판정 이후 해결되지 않는 부분이 있어 질문 드립니다. 현재까지 구현한건 키보드 기반 간단한 이동 동기화 입니다. 이동 방법은 키보드나 조이스틱 기반의 선 이동으로 구현하려 합니다. 지금 이동 코드는 루키스님 질의응답과 해외 커뮤 글을 토대로 아래 방식으로 구현 했습니다. 0.1초마다 동기화를 시도함 키보드 입력이 있으면 desirePos를 그 방향으로 0.1초동안 갈 수 있는 pos 를 찍음 클라 판단으로 갈 수 있는 곳(벽X, 장애물 X) 이면 destPos를 갱신 서버로 전송 서버에서 정당한 이동 요청인지 판정 맞으면 브로드캐스트 각 클라에서 이동 패킷 수신 후 캐릭터 갱신 여기까지 하면 어느정도 자연스럽게 작동은 합니다. 하지만 이동을 보낸 클라 입장에서 서버로 부터 받은 판정을 적용하는 부분에 어려운 부분이 있습니다. 아무래도 선 이동이 예측 이동 후 보정이라 네트워크 지연으로 예측과 판정이 너무 많이 틀어지는 경우가 있을 것 같습니다. 예를들어, 클라에서 단순 우측으로만 움직인다고 가정하고, x 축으로 10 -> 11 -> 12 -> 13 선 이동을 했다는 가정으로 시작하겠습니다. 네트워크 지연으로 13에 도달했을 때 서버에서 10 이동 동기화가 왔다면, 선 이동 클라는 10으로 튕겨 버립니다. 그 후 방향을 바꿔 왼쪽으로 움직이면 10 -> 9 -> 8 -> 7 로 먼저 움직이겠지만, 이미 서버로 보낸 이동 좌표로 인해 11, 12, 13이 또 오기 때문에 캐릭터는 퉁퉁 튀면서 움직이지 못하는 상태가 될 것 같습니다. 또한, 다른 클라에서 공격을 해도 히트 판정이 다 꼬여 게임이 이상해질 것 같습니다. 이 문제를 해결하기 위해 고민해보니, 클라에서 선 이동 버퍼(기록)을 둔다고 합니다. 이 버퍼는 아래 문제가 생겼을 때 서버 판정을 다시 replay 하고, 서버 판정을 완료하면 다시 저장된 선 이동 버퍼를 replay 해 클라에서 너무 앞서나가지 않도록 하더라구요. 선이동 버퍼의 index와 서버 판정의 index가 n 이상 벌어지면, 서버 판정 index의 pos 로 플레이어 위치를 되돌리고 클라 선 이동 판정을 다시 실행시킴. 서버 판정으로 이동할 수 없는 pos 라면, 해당 pos 로 되돌리고 그 그 이후 선 이동 버퍼를 replay 여기서부터 질문입니다만, 이런 방법이 쓰이는 이유는 게임 전체의 공정성 때문 일까요? 네트워크 문제가 있는 일부 클라는 계속 롤백되는 경험을 하지만, 다른 유저들은 서버에서 허가한 상태만 보니까요. 보통 선 이동 버퍼와 서버 판정은 어느정도로 갭을 두나요? 0.1초마다 동기화 한다고 가정 하고 이동 패킷은 ++1 인 정수형 인덱스로 구분한다고 했을 때, 저는 한 4 정도로 생각했습니다. 선 이동과 서버 판정이 약 0.4초이상 벌어지면 롤백하고 다시 동기화 한다 입니다. 히트 판정의 경우 클라들, 서버가 같은 ticktime을 공유하고 있고 서버에서 내려준 히트 시작 시간을 보내주면, 클라에서 timejob queue에 넣어두었다가 해당 시간이 되면 애니메이션을 시작하면 되지 않을까? 라는 생각 입니다. 고민을 많이 해보았는데, 이 이상 생각이 안되어 질문 드립니다. 바쁘시겠지만 답변 주시면 감사히 학습에 사용하겠습니다.

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
홍지범 댓글 1 좋아요 0 조회수 147

Default Player Prefab 파괴시 재생성

미해결

절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG

이번 강의에서 RPC를 통해 클라이언트의 클라이언트의 캐릭터들이 죽는것을 보았는데 만일 클라이언트의 캐릭터를 리스폰 해야 한다면 Network Manager 컴포넌트에 설정된 Default Player Prefab을 spawn 하는 방법이 있는건가요? 아니면 32강의 고블린 생성 방식처럼 Instantiate()로 워리어나 아처 캐릭터를 생성시킨 뒤 NetworkObject 컴포넌트의 Spawn()를 사용하는건가요?

  • unity
  • 네트워크
  • unity2d
  • 유니티6
건강한 돌고래 댓글 2 좋아요 0 조회수 109

캐릭터 네트워크 애니메이션 질문 (29강의)

미해결

절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG

캐릭터의 네트워크 기능 추가 : NetworkPlayer (29 강의) 영상을 보면서 이해가 되지 않는 부분이 생겼습니다. 1. 애니메이션 서버 권한? 클라이언트 애니메이션 요청 구조..? 영상 13분 50초에서 Network Animation 컴포넌트는 서버 권한을 가지고 있기 때문에 A라는 클라이언트에서 '나(owner)'의 캐릭터 애니메이션 실행 요청을 서버에 전달하고 서버에서 '너'의 캐릭터 애니메이션을 실행시켜 주겠다고 하면 그때 다른 클라이언트 B,C.. 등 에서도 A 클라이언트의 애니메이션이 실행되어 보이는 구조라고 이해하면 될까요? 만약 맞다면 서버권한을 그대로 사용한다면 서버에서 처리해주는 별도의 코드가 있어야 다른 클라이언트들에게 A라는 클라이언트의 애니메이션이 공유되는것일까요? 2. Network Transform : Authority..? 애니메이션과 달리 Transform은 Owner로 설정하게 되면 클라이언트에서 실행한것이 서버로 전송이 된다고 했습니다. 그렇다면 애니메이션은 실행을 해달라고 요청을 하는것이고 Transform의 경우 Authority를 Owner로 설정했기 때문에 A 클라이언트 자체에서 실행되서 좌표의 결과값을 서버에 보내는 것인가요?? 그래서 서버에서 다른 클라이언트(B,C.. 등)들에게 A 클라이언트의 좌표값을 공유하는 형식인가요? 3. 클라이언트 실행과 클라이언트의 실행 요청은 다른 개념인거죠?

  • unity
  • 네트워크
  • unity2d
  • 유니티6
건강한 돌고래 댓글 1 좋아요 0 조회수 134

파이어베이스 관련 질문입니다.

해결됨

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

안녕하세요. 강의 잘 듣고 있습니다. 파이어베이스 로그인 기능중에 구글과 애플 로그인을 구현해주셨었는데요. 파이어베이스에 익명 로그인 기능도 있더라구요. 게임 시작은 익명 로그인을 시킨 후 게임 중간에 구글이나 애플 로그인을 통해 전환하는 방법도 궁금합니다. 전환시키는 코드도 궁금하지만 전환 시킬 경우 익명 로그인 했던 ID 는 그대로 남고 새로운 구글, 애플 로그인 ID가 생성되는 방식인지 아닌지도 궁금합니다. 이상입니다. 감사합니다.

  • C#
  • unity
  • 객체지향
크리스팍 댓글 2 좋아요 0 조회수 150

질문 있습니다

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

강의와 똑같은 코드로 실습을 하고있는데요, 서버와 유니티의 통신이 되지않아 원인을 찾아보았는데요 (3일동안 찾았습니다..) 원인을 보니 void OnSendCompleted(object sender, SocketAsyncEventArgs args) { lock (_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _pendingList.Clear(); _sendArgs.BufferList = null; // Console.WriteLine($"Send TransferredBytes : {_sendArgs.BytesTransferred}"); OnSend(args.BytesTransferred); if (_sendQueue.Count > 0) { RegisterSend(); } } catch (Exception e) { Console.WriteLine($"OnSendCompleted Failed : {e}"); // TEMP } } else { Console.WriteLine($"{args.SocketError}, {args.BytesTransferred}"); DisConnect(); } } } Session클래스의 OnSendCompleted에서 보낸 바이트수가 0, 소켓에러가 InvalidArgument가 나와서 통신이 끊기고 유니티와 연결이 되지 않더라구요. 그런데 전 0바이트를 보낸적이 없는데 왜 0바이트를 보내고 연결이 끊기는 지를 도저히 모르겠습니다.. 질문이 다소 두루뭉실해서 명확한 답변을 받긴 어렵겠지만, 감이 아예 안잡혀서 어디가 문제일지 예측이 너무 힘드네요. 어디가 문제일지 예측하는 방향성이라도 알려주시면 감사 할 것 같습니다 또는 처음부터 다시 하는게 더 빠를까요..

  • C#
  • unity
  • 네트워크
강감찬 댓글 2 좋아요 0 조회수 152

업적/미션 Pt.3에서 OnClickClaimBtn 호출 시 Sort 부분 호출 동작

해결됨

유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

public void OnClickClaimBtn() { if(!m_AchievementItemData.IsAchieved || m_AchievementItemData.IsRewardClaimed) { return; } var userAchievementData = UserDataManager.Instance.GetUserData<UserAchievementData>(); if(userAchievementData == null) { Logger.LogError("UserAchievementData does not exist."); return; } var achievementData = DataTableManager.Instance.GetAchievementData(m_AchievementItemData.AchievementType); if(achievementData == null) { Logger.LogError("AchievementData does not exist."); return; } var userAchievedData = userAchievementData.GetUserAchievementProgressData(m_AchievementItemData.AchievementType); if(userAchievedData != null) { var userGoodsData = UserDataManager.Instance.GetUserData<UserGoodsData>(); if(userGoodsData != null) { userAchievedData.IsRewardClaimed = true; userAchievementData.SaveData(); m_AchievementItemData.IsRewardClaimed = true; switch (achievementData.AchievementRewardType) { case GlobalDefine.RewardType.Gold: userGoodsData.Gold += achievementData.AchievementRewardAmount; var goldUpdateMsg = new GoldUpdateMsg(); goldUpdateMsg.isAdd = true; Messenger.Default.Publish(goldUpdateMsg); userAchievementData.ProgressAchievement(AchievementType.CollectGold, achievementData.AchievementRewardAmount); break; case GlobalDefine.RewardType.Gem: userGoodsData.Gem += achievementData.AchievementRewardAmount; var gemUpdateMsg = new GemUpdateMsg(); gemUpdateMsg.isAdd = true; Messenger.Default.Publish(gemUpdateMsg); break; default: break; } userGoodsData.SaveData(); } } } 이 부분에서 8:17초 부분 보시면 보상 받고 바로 UI Sort가 호출되는게 OnAchievementProgressed가 호출 돼서 그런거 같은데 저 OnClickClaimBtn 함수 내에선 찾아봐도 OnAchievementProgressed가 호출 될 수 있는 부분이 안보여서 질문드립니다. 제 동작 역시 보상을 받고 Sort는 일어나지 않습니다. 저 userGoodsData.SaveData(); 밑에 var achievementProgressMsg = new AchievementProgressMsg(); Messenger.Default.Publish(achievementProgressMsg); 를 호출해야하나요..? 다시 확인해보니 골드업적이 깨지기 전이면 골드 업적 갱신부분에서 Sort가 호출되서 그러는거 같은데 이미 골드 업적을 깬 상태면 Sort가 발생하지 않습니다.

  • C#
  • unity
  • 객체지향
  • game-programming
김상현 댓글 1 좋아요 0 조회수 157

Job Scheduler - Cache locality

해결됨

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

Hello, games are known from deep performance optimizations that going to thinking about getting data alligned in cache lines. Does Job Scheduler isnt killing it? Isnt this days more like One room = one thread and everything is flaten to array of structs / structs of arrays without lambdas, linq and events? Isnt context switching adding pauses even if there is no allocs because of locks?

  • C#
  • unity
  • mysql
  • MMORPG
  • ef-core
  • asp.net-web-api
Frontal Achivment 댓글 2 좋아요 0 조회수 116

사전 등록 관련 재질문

해결됨

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

답글이 등록되지 않아 새로 올립니다. 말씀해주신대로 내부 테스트, 비공개 테스트, 공개 테스트 등 활성되어있는 부분을 모두 비활성 상태로 변경해봤으나 사전등록시작 버튼은 여전히 비활성화 되어있습니다. 사전 체험판도 혹시 몰라서 모두 일시중지 트랙으로 옮겨 놔봤습니다. 사전 등록 국가 선택 부분에서 이미 서비스되고 있는 국가는 선택할 수 없게 되어있더라구요. 특별한 원인을 찾지 못해 새로운 앱으로 등록 테스트를 진행해봐야 할 것 같고요 아래와 같은 질문이 있습니다~ 강사님께서는 내부 테스트를 진행하셨는지 궁금합니다. 현재 프로덕션으로 출시 국가가 있는지 궁금합니다. 사전 예약 버튼 출시 국가가 없는 상태에서 활성화 되어있었는지 궁금합니다. 비공개 테스트를 진행하셨는지 궁금합니다. (앱을 프로덕션으로 버전 승급을 하려면 14일간 이 테스트를 무조건 진행해야 하더라구요) 비공개 테스트를 진행하셨다면 현재는 트랙을 일시 중지 시켜놓은 상태이신지 궁금하니다. 강사님께서 현재 앱 상태를 알려주시면 참고가 많이 될 것 같습니다. 여러모로 도움 주셔서 너무 감사드립니다~!!

  • C#
  • unity
  • 객체지향
크리스팍 댓글 1 좋아요 0 조회수 125

맥에서는 비쥬얼스튜디오 2022 지원을 안하네요;;

해결됨

유니티 기초 챌린지: 2D부터 3D까지 나만의 게임 만들기

강의듣는데는 상관이 없을까요? 비쥬얼 스튜디오 코드만 설치되어있는데요;;

  • C#
  • unity
  • 게임기획
  • 게임-물리
  • 유니티6
musful 댓글 3 좋아요 0 조회수 158

영상관련

해결됨

유니티 기초 챌린지: 2D부터 3D까지 나만의 게임 만들기

안녕하세요. 영상이 아직 안올라온게 맞나요?

  • C#
  • unity
  • 게임기획
  • 게임-물리
  • 유니티6
DongJu Yoo 댓글 1 좋아요 0 조회수 105

구글 플레이 콘솔 사전 예약 등록에 대해.

해결됨

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

안녕하세요. 강의 잘 듣고 있습니다. 🙂 일부 특정 국가에 먼저 서비스를 진행중인 상태(프로덕션)이고요 그외 서비스하지 않은 나머지 국가에는 사전등록을 진행해볼려고 합니다. 구글 플레이 콘솔이 업데이트 되어서 그런지 모르겠지만 사전 등록 트랙을 활성화 시키는 방법을 모르겠습니다. 위 스크린샷에서 사전 등록 트랙을 활성화 시켜볼려고 빌드 파일도 올려보고 나라도 선택하고 다른것들도 해 보았으나 트랙 요약이 계속 비활성화 된 상태입니다. 혹시 사전 등록을 어떤 순서로 진행하는건지 알려주시면 감사하겠습니다~!!

  • C#
  • unity
  • 객체지향
크리스팍 댓글 2 좋아요 0 조회수 305

우편 기능에 대해 궁금합니다.

해결됨

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

안녕하세요. 강의 잘 듣고 있습니다. 모바일 게임에서 흔히 볼 수 있는 우편을 통해 재화를 보상을 주는 우편 시스템에 대해 궁금합니다. 강의 내에는 우편 관련 기능이 없긴 하지만 혹시 강사님께서는 우편 기능을 어떻게 구현해서 사용하시는지 알려주시면 큰 도움이 될 것 같습니다. 국내에서는 뒤끝과 같은 외부 서비스에 도움을 받아 할수있지만 혹시 개인이 다른 방법으로도 사용할 수 있을지 궁금해서 여쭤봅니다~!! 감사합니다~

  • C#
  • unity
  • 객체지향
크리스팍 댓글 2 좋아요 0 조회수 177

Warrior가 Gobin에게 달려가 충돌하면 Gobin이 뒤로 튀겨나가는 현상??

미해결

절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG

Warrior가 Gobin에게 달려가 충돌하면 Gobin이 뒤로 튀겨나가는 현상이 있습니다. ChaseState 상태에서는 뒤로 튀겨나가도 다시 앞으로 가는데 Warrior가 계속 밀다가 사망 상태가 되면 Gobin은 IdleState가 되면서 계속해서 뒤로 밀리는 현상이 있습니다. 아래와 같이 IdleState 상태로 진입하면 enemy.StopMoving(); 를 추가 해서 멈추도록 했는데 public void Enter(Enemy enemy) { Logger.Log("Idle 진입"); enemy.animator.SetBool(Enemy.hashIsRun, false); // Idle 상태 진입 시 물리 엔진으로부터 발생하는 이동/힘을 즉시 차단합니다. // Enemy.StopMoving()을 호출하면 리지드바디 속도를 0으로 만들어 밀림을 방지합니다. enemy.StopMoving(); } 이 것도다 정확한 방법을 알 수 있을까요?

  • unity
  • 네트워크
  • unity2d
  • 유니티6
까만돌 댓글 2 좋아요 0 조회수 113

C# 게임서버 3D MMORPG

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

리니지 라이크처럼 대규모 PK 가능한 3D MMORPG중에 C#으로 게임서버 만든 게임이 실제로 있나요? 없다면 C++에 비해 C# 속도의 한계 때문에 없는걸까요?

  • C#
  • unity
  • 네트워크
파도 댓글 2 좋아요 0 조회수 217

EXTENSIONS

미해결

C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)

제 창에는 블럭모양이 없습니다ㅜㅜ 어떻게해야하나 요

  • C#
  • unity
댓글 1 좋아요 0 조회수 102

자꾸만 번거롭게 해서 죄송합니다.....

미해결

유니티와 C#으로 배우는 카타나제로스타일 게임만들기 (기본편)

안녕하세요, 강사님. 자꾸 번거롭게 질문드려 죄송합니다. 저는 현재 타 부트캠프에서 개인 프로젝트로 카타나 제로 스타일의 게임을 제작하고 있습니다. 관련 에셋을 찾기가 쉽지 않아 우연히 강사님의 영상을 보고 큰 도움을 받게 되었습니다. 강사님께서 제공해주신 자료(이미지)를 활용하여 현재 제 개인 프로젝트와 포트폴리오에 적용하고 있는 상황입니다. 다만, 플레이어가 다음 씬으로 넘어갈 때 사용할 배경 이미지를 추가로 찾고 있는데, 혹시 사용 가능한 다른 배경 이미지가 있다면 공유해주실 수 있을까요? 또한, 강사님께서 제공해주신 자료의 에셋들을 제 개인 포트폴리오에 사용해도 되는지도 허락을 부탁드리고 싶습니다. 항상 좋은 자료와 영상 공유해주셔서 감사드립니다.

  • C#
  • unity
두흠양 댓글 2 좋아요 0 조회수 159

유니티6 버전

미해결

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

제가 강의를 Part4~Part9를 수강하고 있는데요 강의가 2021년도이고 시간이 4년정도 이상 지나서 유니티6 버전하고 많이 다를거 같은데 몇퍼센트정도 활용 할 수 있나요?

  • C#
  • unity
  • 네트워크
파도 댓글 2 좋아요 0 조회수 150

41-원격 리소스 다운로드 강의의 후반에 실습할 텍스쳐가 없습니다.

해결됨

유니티 시스템 프로그래밍 Pt.2 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지

37:25 경의 강의 부분에서 텍스쳐 교체에 따른 어드레서블 적용과 다운로드 구현을 위한 변경될 실습 텍스쳐(보라색)가 첨부파일에 존재 하지 않습니다.

  • C#
  • unity
  • 객체지향
댓글 2 좋아요 0 조회수 144

인기 태그

인프런 TOP Writers

주간 인기글