묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
13주차 Hero교체 영상 24:20부분에서 퀘스트 완료해도 영웅존재안함 발생에 대해
영상에서 처럼 퀘스트 구현 최종 테스트에서 퀘스트 NPC를 클릭후, 완료를 통해 새로운 영웅을 얻는 과정에서 HeroManager내의 PickHero 함수에서 "영웅존재안함" 로그를 뱉는데테스트 해보니 세이브파일이 존재할 땐, GameManager내의 LoadGame을 통해 HeroManager의 AllHeroInfos에 정보가 담겨 정상 작동하는데세이브파일이 존재 하지 않을 땐, GameManager내의 InitGame을 통해 게임이 시작되는데, 이때는 HeroManager내의 AllHeroInfos에 정보가 하나도 담기지 않습니다.결국 강의 영상과 같이 퀘스트를 완료해도 보상을 통한 영웅 추가가 이루어지지 않고 "영웅존재안함"이 재현됩니다.GameManager의 LoadGame함수처럼 InitGame 함수 마지막 부분에 Managers.HeroManager.AddUnknownHeroes(); 임시 방편으로 추가하여 처리하긴 했는데 올바른 방법인지 잘 모르겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
WSAEventSelectModel 질문 있습니다.
안녕하세요, Client Socket과 이벤트를 select 하실때 FD_READ | FD_WRITE | FD_CLOSE 3가지를 동시에 바인딩하시는 이유가 궁금합니다강의중 언급하신 'TCP 논 블로킹 소켓에서, 데이터를가 분할되서 송신될 수 있다. 하지만 웬만하면 일어나지 않는다.'의 상황에 대응하기 위하여 send 함수 호출 시 각 인자를 수정하셨는데, FD_WRITE는, 만약 위와 같은 상황이 발생했을때, 다음 프레임에서 이벤트를 감지하기 위함이신지, 만약, 위와 같은 데이터 분할 송신이 절대 일어나지 않는경우라고 가정하면 FD_READ | FD_CLOSE 2개의 플래그만으로도 목표하신 에코서버 구현이 가능할것인지이 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
LNK2001 링크에러
릴리즈로 할 때만 이런 링크에러가 납니다.이런식으로 무시를 해봐도 안 되고런타임 라이브러리를 다중스레드(DLL/MD)로 변경도 해보았는데 해결이 안 되네요.. C++버전은 17로 했습니다.혹시 이에대한 해결방안이 있을까요? 구글링을 해봐도 해결방안이 나오지 않아서 질문을 드립니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
IocpEvent에서 OVERLAPPED 상속받고 가상 함수를 선언했을 때
IocpEvent에서 OVERLAPPED 상속 받고 가상 함수를 선언했을 때 OVERLAPPED가 주소의 맨 처음으로 가고 그다음이 가상 함수 테이블이 오지 않나요?만약 OVERLAPPED를 상속받지 않고 최상단에 선언한 경우라면 가상 함수가 맨 처음 주소이지만, 상속받은 경우에는 제가 테스트해 본 바로는 OVERLAPPED가 맨 처음 주소로 오는 것 같아서 질문드립니다!만약 위처럼 OVERLAPPED를 상속받았을 때 맨 처음 주소에 오더라도 가상 함수 테이블 때문에 문제가 생길 수 있는 것일까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CorePch.h 파일에서 헤더파일 선언 질문
CorePch.h에 CoreMacro.h를 선언하면 왜 그 아래에 있는 모든 라이브러리가 다 무시 되는건가요? 강사님께서는 안 쓰셨고 제가 궁금해서 써봤는데 오류가 나서 질문드립니다.
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
앞으로 강의 내용이 궁금합니다
안녕하세요 루키스님 강의 잘보고 있습니다게임 출시를 너무 하고 싶은데 좋은 강의 만들어 주셔서 감사합니다1 ui 핵심내용으로 분석 말고도 루키스님은어떻게 제작 하는지 ui강의 부탁드려도 되나요현재 나와있는 강의로 활용해서 적용하기 어려울거 같아서요 혹시 이번 초반에 바닥에 까는 스킬말고 공격이나 여러가지 구현하는건 없나요??이거 또한 스킬은 어떻게 활용할지 궁금합니다2 이번 강의 듣고 아직 많이 부족하지만싱글게임 만들어서 운영 해보고 싶습니다 이번 1~6월까지 강의 듣고 싱글게임 만들고 운영 하는거 지장없는지 걱정됩니다강의를 보고 있으면 지금 1월-6월 까지 강의 보다는7월부터 온라인 강의를 더 중요시 생각하시는거같아서요 이번 강의를 어느 수준까지 마무리 되는지,강의를 다 듣고 싱글게임 만들고 수입창출 수준까지 배울 수 있는지너무 궁금합니다
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
강의대로 따라했는데 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 실행하신 뒤 실행하면 정상 동작합니다. 나중에 추가될 애니메이션이 이 시점에는 아직 없는 듯 하네요.한참 헤매다가 겨우 해결했습니다 ^^;;
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
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 게임 개발 시리즈] Part4: 게임 서버
수신 스레드 분산 질문이 있습니다.
안녕하세요 강사님. 수신 스레드 분산 관련 질문이 있습니다.제가 배운 바에 의하면 송수신 속도 차이의 원인으로 다양한 걸 뽑을 수 있지만 의심해봐야 할 것은 '수신이 송신 속도를 따라잡지 못할 경우' 라고 알고있는데요. 저는 클라 입장에서 서버로부터 받는 recv가 쌓일 경우를 생각해보았습니다. 클라는 서버이외에도 렌더링이라던가 여러가지 상호작용의 일감을 처리해야 하니까 일 자체가 많아서 서버로부터의 recv가 쌓일수도 있지 않을까? 라는 의문점때문에요! 그래서 클라에서는 완료된 recv를 메인스레드에서 바로 받고 처리하는게 아닌 공용 메모리 큐에다가 일감을 넣어주고.해당 공용 메모리 큐를 무한루프로 감시하는 스레드를 별도로 두었습니다. 다만, 해당 스레드는 그 일감 자체를 스레드 내부에서 처리하지는 않고 다시 메인스레드의 해당 일감처리 함수를 호출해주는 방식입니다. 제가 의도했던건 IOCP모델에서 CP큐에 담겨져있는걸 최대한 빨리 빼오자 의도이지만, 사실 메인스레드에서 일처리 자체의 타이밍을 나중으로 미루는것이라서 조삼모사인 구조인가 의문이 들어 질문드립니다!
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
인벤토리 저장전에 클리어
안녕하세요세이브 하기전에 데이터 클리어 하면 저장 가능한건가요?...헷갈리네요
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
LoadAllAsync에서 result.PrimaryKey.Contains(".sprite")) 부분을 안타는데 왜그럴까요?
public void LoadAllAsync<T>(string label, Action<string, int, int> callback) where T : Object { var opHandle = Addressables.LoadResourceLocationsAsync(label, typeof(T)); opHandle.Completed += (op) => { int loadCount = 0; int totalCount = op.Result.Count; foreach (var result in op.Result) { if (result.PrimaryKey.Contains(".sprite")) { LoadAsync<Sprite>(result.PrimaryKey, (obj) => { loadCount++; callback?.Invoke(result.PrimaryKey, loadCount, totalCount); }); } else { LoadAsync<T>(result.PrimaryKey, (obj) => { loadCount++; callback?.Invoke(result.PrimaryKey, loadCount, totalCount); }); } } }; }해당 함수는 이렇게 작성되어있고 .sprite 로 보아 확장자를 .sprite 를 찾는것같은데 어드레서블 그룹에는 .png 로 되어있습니다 혹시 이것때문에 그러는걸까요?
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
픽셀아트 적용 하는방법
안녕하세요나중에 출시 할때 리소스는 사용 금지 라고하셨는데만약 픽셀이나 다른거 적용할때애니메이션은 변경하거나 뼈대같은거 사용못하면 어떻게 해야할지 ㅠㅠ 이미지 변경하면 호환하는방법 알수있나요...?? 어떻게 내 게임을 만들어야할지 막막해서질문해봤습니다 ㅠ
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
CoSendWebRequest 관련 문의
WebManager의 아래 코루틴 CoSendWebRequest에서yield return uwr.SendWebRequest(); 부분을 통해서 request를 보내는 것까지는 이해를 했는데,제가 알고있기로 코루틴에서 yield return 을 호출할 경우, 다음 프레임에서 코드가 이어서 실행되는 것으로 알고있는데요.response를 언제 받을 지 모르는 상황이니까 별도로 response를 받았을때의 콜백을 입력해서 처리하는 것이 아닌가 생각했었는데, 실제 코드에서는 아래와 같이 바로 이어서 response를 받았을 때 처리되는 부분을 입력하고 있고, 또 이게 제대로 작동을 하니 잘 이해가 안됩니다.아래와 같은 경우라면.. 다음 프레임 이전에 무조건 response가 온다는 확신이 있다는 것으로 이해가 되는데, 어떻게 이 부분을 확신할 수 있는건가요? using (UnityWebRequest uwr = new UnityWebRequest(sendUrl, method)) { uwr.uploadHandler = new UploadHandlerRaw(jsonBytes); uwr.downloadHandler = new DownloadHandlerBuffer(); uwr.certificateHandler = new CertificateWhore(); uwr.SetRequestHeader("Content-Type", "application/json"); yield return uwr.SendWebRequest(); if (uwr.result == UnityWebRequest.Result.ConnectionError) { Debug.Log($"CoSendWebRequest Failed : {uwr.error}"); } else { T resObj = JsonUtility.FromJson<T>(uwr.downloadHandler.text); res.Invoke(resObj); } }
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
과정 중에 사운드 리소스 추가는 없나요?
과정 중에 사운드 리소스 추가는 없나요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
node 안에 있는 data 타입을 shared_ptr 로 하는 이유?
제 생각에는 락프리 스택 만들 때도 그렇고 이번 강의 큐도 그렇고 노드 안에 있는 data 타입을 그냥 T data 라고 해도 될 것 같은데 굳이 shared_ptr로 하는 이유가 있을 까요?shared_ptr 로 하면 메모리 비용과 시간 비용이 더 드는것으로 알고있는데요! 별 이유는 없을까요
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part9: MMO 컨텐츠 구현 (DB연동 + 대형 구조 + 라이브 준비)
3D 게임 이동 동기화
안녕하세요 파트 3부터 9까지 전부 완강을 하고 지금은 3D MMO를 제작하고 있는데 이동 동기화에 관련해서 질문이 있어 글 남깁니다. 현재 제가 구상한 것이 올바른지 확신이 서지 않습니다. 흐름은 다음과 같습니다.플레이어는 A,B가 있다고 했을 때(클라이언트) 1. A가 만약 지정한 좌표(마우스 우클릭 등의 입력으로 이동을 원하는 좌표)로 가고 싶다면 그 좌표가 이동 할 수 있는 위치인지 클라이언트에서 선 판별하고 갈 수 있다면 서버로 지정한 좌표 값을 패킷으로 보냄2. 서버에 도착한 좌표 패킷이 이동 할 수 있는 위치인지 한번 더 판별한 뒤 정상적인 좌표라면 같은 공간에 있는 클라이언트 A,B에게 A의 이동 허가 패캣을 보냄3. 이동 허가 패킷을 받으면 A는 본인을 B는 A객체를 Navigation mesh를 통해 길을 찾아 목적지로 이동.4. A가 목적지에 도착하면 서버에게 도착 좌표를 건네주고 서버에서 그 값이 초기 목적지랑 같은 좌표인지 확인해서 검증함.현재는 이렇게 구상하고 있는데 서버쪽에서 길찾기 연산을 하지 않고 클라쪽 Naviagtion Mesh에 의존해도 되는지 궁금합니다.만약 서버쪽에서도 길찾기 연산이 필요하다면 클라에서 Navagation mesh로 bake한 값을 서버쪽에서 파싱해서 같이 연산을 해줘야할까요?3D에서 이동 동기화(롤이나 스타처럼) 하는 부분을 어떻게 구현해야할지 감이 잘 안잡히네요.항상 좋은 강의 감사합니다.!!
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
Skill 관련 클래스가 빠져 있는 것 같습니다.
8주차 소스에 스킬 관련 클래스 들이 빠져 있는 것 같습니다.ColdSpread, AreaAirbone, LionShout,FireSword,MultiFireSword 등... 프리팹도 같이요.혹시 추가해 주실 수 있으실까요?
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
보충강의 해주시면 안될까요 ㅠㅠ
강의보다가 어렵고 헷갈린거 있으면 파트 3 보시라고해서 보면서 공부하고있습니다 그럼에도 ..복잡하고 이해하기어렵습니다 혹시 보충강의 만들어 주시면 안될까요 어렵고 흡수가 잘안될때 어떻게 하면 효율적으로 공부할수있나요 저만 못따라가는거 같고 속상합니다 게임 너무 만들고싶습니다 도와주시면 감사하겠습니다
-
미해결[Rookiss 켠김에 출시까지] MMO Lab 1기 <유니티 방치형 키우기 게임>
Addressable 스프라이트 파일 가져오기
현재 프로젝트에서는 스프라이트 single 타입으로 하나씩 가져오면서 사용중인데만약 스프라이트들이 하나의 파일로 묶여있을땐 어떻게 가져오고 사용법은 어떻게 해야하나요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문있습니다
안녕하세요! 강의 내용 복기중에 몇가지 의문점이 생겨 질문드립니다! 서비스에서 MaxSessionCount, SessionCount의미 -> 제가 이해한거로는 클라가 한명 연동 될 때마다 SessionCount가 1씩 증가하고 MaxSessionCount는 최대 허용 접속 수라고 이해하고 있는데 맞는지 궁금합니다.-> 이게 맞다면 한계치는 어느정도로 정하고 기준은 무엇인지 궁합니다. 리스너에서 AcceptEvent N개 사용의 의미-> StartAccept 부분에서 5개 만들고서 그거를 각각 Register에 등록했다는 말은... 동접 5명을 받을 수 있다는 의미인가요? -> 만약 동접 의미로의 N개 사용이라면 포폴 수준에서는 1개만 사용해도 무방한가요? 테스트해보니까 패킷 전송 속도에는 별 차이가 없어보여서요! C++ 서버 & 유니티 클라 연동 ? -> 패킷 정보가 Proto가 중간 역할 해주고 있고 직렬화 하면서 결국 정수로 데이터 핑퐁이라고 이해되고있는데 이게 맞다면 저런 관계의 연동에도 문제가 없나요? 이제 강의 막바지가 되어가고 복기를 쭉 해나가면서 질문들이 계속 나올것 같은데 지금처럼 커뮤니티 게시판에 질문드리면 될까요? 아니면 따로 질문 올리는 곳이 있을까요??