묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
git, server, client 파일을 어떻게 넣어서 프로젝트를 생성해야하나요?
구름모양을 눌러서 MMO_Game시작.zip파일은 다운로드했는데, 이걸 드래그해서 프로젝트란에 넣으니까 오류가 뜨는데 어떤식으로 유니티에 적용시켜야하는지는 설명에 나와있지 않아서 ..아시는 분 있나요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
instantiate에 대해서 질문입니다.
제가 알기로는 유니티에서 제공하는 instantiate() 함수는 필드 값도 함께 복사되는 걸로 알고 있었습니다. 그런데 Effect의 Clone() 함수도 Instantiate()를 사용하지만 이 경우에는 필드 값이 같이 복사가 되지 않아서 이유가 궁금해서 질문 드립니다.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
13주차 Hero교체 영상 24:20부분에서 퀘스트 완료해도 영웅존재안함 발생에 대해
영상에서 처럼 퀘스트 구현 최종 테스트에서 퀘스트 NPC를 클릭후, 완료를 통해 새로운 영웅을 얻는 과정에서 HeroManager내의 PickHero 함수에서 "영웅존재안함" 로그를 뱉는데테스트 해보니 세이브파일이 존재할 땐, GameManager내의 LoadGame을 통해 HeroManager의 AllHeroInfos에 정보가 담겨 정상 작동하는데세이브파일이 존재 하지 않을 땐, GameManager내의 InitGame을 통해 게임이 시작되는데, 이때는 HeroManager내의 AllHeroInfos에 정보가 하나도 담기지 않습니다.결국 강의 영상과 같이 퀘스트를 완료해도 보상을 통한 영웅 추가가 이루어지지 않고 "영웅존재안함"이 재현됩니다.GameManager의 LoadGame함수처럼 InitGame 함수 마지막 부분에 Managers.HeroManager.AddUnknownHeroes(); 임시 방편으로 추가하여 처리하긴 했는데 올바른 방법인지 잘 모르겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
홀펀칭 질문도 괜찮을까요..?
안녕하세요, 루키스님유익한 강의 제공해주셔서 감사합니다항상 감사한 마음으로 수강하고 열심히 프로젝트를 진행해보고 있습니다.현재 프로젝트에서메인 서버에서는 모든 클라 게임 접속을 받고 로그인 및 방 입장 등을 관리합니다.클라가 게임룸을 생성하면 해당 클라에 Host라는 오브젝트가 생성되고, 해당 오브젝트는 서버 코드를 유니티에 호환되도록 수정을 거친 상황입니다.타 클라(로컬 네트워크 환경에서만 테스트 해보았습니다.)에서 방 목록에서 방을 선택하고 입장하면 중앙 서버에서가 호스트와 클라 사이에서 IP와 포트를 알려주는 중개 역할을 하며 두 클라이언트가 연결됩니다.해당 게임의 사이클이 끝나 게임이 종료되면, 클라이언트들은 로비로 돌아가며 1~3의 단계가 계속해서 반복됩니다.현재 프로젝트의 조건을 위와 같이 설정하였고,3번까지는 테스트를 완료했고, 정상적으로 동작하는 것을 확인했습니다. 하지만 4번에서 문제가 발생하는데,다시 방을 생성하면 클라와 호스트 사이에 패킷 전송이 되지 않는 것 같습니다.디버깅을 통해 확인해볼 때에는 호스트측의 OnConnected 메서드는 호출되는 것으로 보아서는 클라측에서 연결에 문제가 발생하는 것 같은데,구글링과 디버깅을 통해 여러가지 해결책을 시행해봤습니다.연결 종료 시 완전히 소켓이 종료되도록 세션 Disconnect()를 했습니다.소켓이 같은 주소의 포트 번호를 공유할 수 있도록 Connector와 Listener 코드의 소켓 설정 코드에Socket socket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);이렇게 ReuseAddress 설정을 추가했습니다.(중앙 서버 세션과 호스트 세션은 클라에서 개별적으로 다루고 있습니다)호스트 세션의 연결이 종료될 때, 호스트 세션의 _disconnected 변수를 다시 0으로 만들어,다음 연결 시 RegisterRecv등의 코드에서 if(_disconnected == 1) return;의 조건문에 걸리지 않도록 코드를 수정해보았습니다.2번의 방법을 시행해보기 전에는 '같은 주소의 포트를 사용할 수 없습니다?'와 같은 오류가 발생했었는데,2번을 시행한 뒤에는 오류는 발생하지 않지만 연결이 되지 않는 것은 마찬가지인 상태입니다.그 외에도 잡다하게 정말 많은 시도를 해보았는데,전혀 실마리가 보이지 않아 질문합니다..ㅠㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
SkillSystemWindow 스크립트 drawDatabase함수에서 null참조발생
강의자료에 있는 스크립트를 그대로 올려도 오류가 발생합니다.GUI Error: Invalid GUILayout state in SkillSystemWindow view. Verify that all layout Begin/End calls matchUnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)-> DrawDatabase(databaseTypes[toolbarIndex]);부분NullReferenceException: Object reference not set to an instance of an object ->drawdatabase함수의 dataType.BaseType.GetField ~~~ 부분)
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
3.:43 초 때부터 잘 안되는 것 같습니다...
코드도 정확히 다 따라했는데도 결과랑 다르게 나오네요 3:43초 쯔음에 소문자 대문자 구분 말 나오면서 뭔가 잘 안되고 있습니다 ㅠ
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
Quest Cancel() 메소드
Quest.csComplete() 메소드에서 이벤트들을 초기화(해제)시키는데Cancel() 메소드에서는 이벤트들을 초기화를 안 하는 이유가 있을까요?OnRegister()에서task.onSuccessChanged += OnSuccessChanged;이벤트를 사용해서 Quest를 취소했을 때도 이벤트를 초기화해야 될 것 같다고 생각돼서 질문 남겼습니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
복잡한 3D 오브젝트의 움직임은 어떻게 표현해야할까요?
안녕하세요!3d에서 복잡한 오브젝트의 움직임은 어떻게 표현해야 할지 궁금해서 질문드립니다. 예를 들어 자전거체인이 있다고 한다면 페달을 밟을 경우 체인이 움직(체인 돌아가는)이는 모습을 표현하고 싶습니다. 그리고 체인에서 특정 위치에 물체가 닿으면 이벤트를 발생시키려고 합니다. 제가 생각했을 때는 2가지 방법이 있을 거라고 생각됩니다. 이런 방법 말고 어떤 방법이 있을지 너무 궁금합니다.! 보통 이런 복잡한 오브젝트를 자연스럽게 움직이게 할 때 어떻게 해야 할까요?제가생각하는 2가지 방법각각 체인오브젝트를 나누어 포지션과 로케이션을 직접 소스에서 변경하여 움직임을 표현한다.2d의 애니메이션 효과를 주는 것처럼 체인이 변경된 모습을 여러 개의 오브젝트로 만들어 순서대로 visible을 껐다켰다하는 방법으로 애니메이션을 준다.
-
해결됨[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
Task의 IsEqual
Quest System 구현 강의 마지막에 Quest System Test를 실습하던중 제대로 작동하지 않아 문의 드립니다. 디버그를 찍어봤는데 Task Script의 IsTarget() 함수에서 targets.Any(x=>x.IsEqual(target))부분에서 false가 된것이 원인이었습니다. 자세히 보니 QuestSystemTest에서 Target을 TaskTarget형태로 넘겨주고, TaskTarget의 IsEqual에서 TaskTarget형식으로 받아서 문제가 된것이었습니다. 이를 방지하기 위해 아래와 같이 TaskTarget인지를 먼저 검사해야된다고 생각하는데,혹시 제가 놓친부분이 있다면 알려주세요public override bool IsEqual(object target) { if(target.Equals(this))return true; string targetAsString = target as string; if (targetAsString == null) return false; return value == targetAsString; }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
단일 스레드로 처리할 경우 속도 문제점 있나요?
GameRoom을 하나의 스레드로 jobqueue를 사용해서 공유자원을 관리 하면 lock에서는 자유롭지만 하나의 스레드인 만큼 많은 처리를 해야할 경우 딜레이가 생길수도 있을거라고 생각하는데 lock을 타이트하게 거는 방법보다 하나의 스레드에서 처리하는게 속도가 더 빠른가요?하나의 스레드로 룸을 관리하니 결국 작업을 하나씩처리에 따른 속도 이슈가 없는지 궁굼합니다. 예를들어 갑자기 수많은 이용자가 들어와 엔터패킷을 탄다면 디비도 접근해야될때 이에 따른 실시간 처리 성능이 보장되는지 궁굽합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
3D 위치 동기화에 대한 질문
안녕하세요. 지금 파트 9까지 전부 수강하고 3D 게임을 제작하고 있습니다.현재 목표는 마우스로 우클릭를 하면 해당 좌표로 플레이어를 이동하는 것입니다.질문은 크게 두가지입니다. 현재는 클라이언트에서 마우스를 우클릭하면 Unity에서 제공하는 NavMesh를 통해 이동하고 있습니다. 그런데 서버에선Unity에서 제공하는 기능을 사용할 수 없기 때문에 따로 길 찾기 연산을 해야 할 것 같은데 이 부분이 감이 안 잡힙니다...서버에서 길 찾기를 어떤 방식으로 해야할까요?클라에서 추출된 NavMesh를 서버쪽에서는 활용할 수 없을까요?? 가령 SharpNav등을 통해서요!무지한 질문을 많이 하는데 항상 성심껏 대답해주셔서 감사합니다!
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
앞으로 강의 내용이 궁금합니다
안녕하세요 루키스님 강의 잘보고 있습니다게임 출시를 너무 하고 싶은데 좋은 강의 만들어 주셔서 감사합니다1 ui 핵심내용으로 분석 말고도 루키스님은어떻게 제작 하는지 ui강의 부탁드려도 되나요현재 나와있는 강의로 활용해서 적용하기 어려울거 같아서요 혹시 이번 초반에 바닥에 까는 스킬말고 공격이나 여러가지 구현하는건 없나요??이거 또한 스킬은 어떻게 활용할지 궁금합니다2 이번 강의 듣고 아직 많이 부족하지만싱글게임 만들어서 운영 해보고 싶습니다 이번 1~6월까지 강의 듣고 싱글게임 만들고 운영 하는거 지장없는지 걱정됩니다강의를 보고 있으면 지금 1월-6월 까지 강의 보다는7월부터 온라인 강의를 더 중요시 생각하시는거같아서요 이번 강의를 어느 수준까지 마무리 되는지,강의를 다 듣고 싱글게임 만들고 수입창출 수준까지 배울 수 있는지너무 궁금합니다
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
강의대로 따라했는데 NullReferenceException 에러 발생하시는 분들 (section 2 - 스킬 수정)
강의 내용대로 잘 따라했는데 bear가 공격 애니메이션을 실행하지 않고, 다음과 같이 에러 메세지가 뜨는 분들을 위해 해결방법 공유합니다.NullReferenceException: Object reference not set to an instance of an object Creature.UpdateSkill () (at Assets/@Scripts/Controllers/Creature/Creature.cs:199) Monster.UpdateSkill () (at Assets/@Scripts/Controllers/Creature/Monster.cs:126) Creature+<CoUpdateAI>d__85.MoveNext () (at Assets/@Scripts/Controllers/Creature/Creature.cs:161) UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /Users/bokken/build/output/unity/unity/Runtime/Export/Scripting/Coroutines.cs:17)MonsterData.csv에서 '곰'이 있는 마지막 줄에서 10004를 10001로 수정하시고 다시 ParselExcel 실행하신 뒤 실행하면 정상 동작합니다. 나중에 추가될 애니메이션이 이 시점에는 아직 없는 듯 하네요.한참 헤매다가 겨우 해결했습니다 ^^;;
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
실전예제 UI 자료
UI 수업자료 다운받아서 사용하려는데 정확하게 방법을 모르겠네요 ㅠ 압축을 해제하면 폴더만 쭉나와서 수업자료를 어떻게 사용해야 하는건가요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
원자성
안녕하세요.처음 interlocked 없이 for문을 10,000회로 두고number를 ++하거나 --했을 때 0 이 잘 출력됐는데,이 땐 그냥 반복 횟수가 적어서 원자성 문제가 발생되지 않았던 건가요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
Spine animation에서 Sprite Animation으로 변경가능여부
안녕하세요. 루키스님 열심히 강의 따라가며 게임 개발에 매진하고 있습니다.다름아니라 spine animation말고 sprite animation을 적용해보려고 하는데요. creature.cs 스크립트에서 // Spine SkeletonAnim.skeletonDataAsset = Managers.Resource.Load<SkeletonDataAsset>(CreatureData.SkeletonDataID); 이렇게 해서 json에서 데이터를 load하잖아요? spine-unity 라이브러리가 별도로 있는 것 같은데, sprite도 이에 상응하는 라이브러리?나 방법이 있을까요?ㅠㅠ sprite자원들이 있는데 이걸 갖고 본 게임 처럼 반영을 하고 싶은데 걸리는게 많네요 ㅠㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
PacketHandler.cs의 PlayerInfo info 변수 질문
PlayerInfo info 변수를 어떻게 쓰는지 모르겠습니다.밑의 코드에서 쓰이지 않았고 달리 사용하는 부분이 없어보이는데아니면 위의 코드만으로 변화하는 부분이 있는건지 잘모르겠습니다. 밑의 코드 - 두 번째 주석 밑의 코드들위의 코드 - 첫 번째 주석 밑의 코드들
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 스킬 시스템
2강 Database에 리플렉션에 대해 질문입니다.
2강에서 SetID 메소드에서 id필드의 값을 설정하는 부분을 리플렉션을 통해서 구현한 것은 private의 필드의 은닉성을 지키기 위해서의 이유 하나 뿐인가요?
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
스크립터블 오브젝트
안녕하세요 수업 도중에 한 가지 질문이 생겨서 글 올립니다.퀘스트를 모듈식으로 조립하기 위해 스크립터블 오브젝트를 많이 사용하던데, 스크립터블 오브젝트는 빌드에 포함되는 에셋 형태이기에, 빌드 용량이 커지게 되고, 사용자가 접근이 가능한 문제가 있다고 알고 있는데, 혹시 제가 이 부분에 대해서 잘못 알고 있는 것일까요?만약 문제가 맞다면, 스크립터블 오브젝트말고 어떤 식으로 구조를 짜는게 좋을까요?
-
해결됨두고두고 써먹는 유니티 VR
혹시 유니티 빌드 없이 플레이 했을때 오큘러스 퀘스트2로 가능한가요?
방법도 모르고, 오큘러스 넘 복잡해서 자세히 알려주셨으면 합니다 ㅠ