묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결이득우의 꼭 배워야하는 게임 알고리즘
A* 알고리즘에 대해 질문있습니다!
이 강의를 보고, 직접 게임에 적용해보고 싶어서 다시 강의를 수강하며 공부 중인 학생입니다.맵을 만들다보면, 강의처럼 한개의 plane이 아닌 여러개의 plane 또는 오브젝트들이 바닥에 놓여질 텐데 grid를 어떻게 나눠야하는지에 대한 질문입니다!처음에는 2차원 배열로 두고, 그리드를 xOffset,yOffest에 의해 row와 col을 증가시키는 방식을 사용했습니다. 하지만, 코드를 수정하고 생각하는 과정에서 머리가 꼬여버렸습니다ㅜㅜ..두번째로는 하나의 큰 plane을 아래에 두고, 다양한 사이즈와 모양의 plane을 두는 방식을 생각하는 중입니다. 제 주변에 게임 개발자가 없어 이렇게 질문 글을 올립니다. 혹시, 실제 게임 개발시에 a* 알고리즘을 사용한다면 어떤 방식으로 그리드를 나누는지 알 수 있을까요? 알려주신다면 정말 감사합니다!
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
다운로드 후 InGame에서 스프라이트 이미지 반영이 바로 되지않는 현상
앱 실행 > 첫 다운로드 시작 > 다운로드 완료 > InGame 신으로 넘어가면 이미지가 반영되지 않네요.앱을 재 실행 > 다운로드 없이 바로 게임시작 > InGame 신으로 넘어오면 이미지가 반영되는 현상이 있습니다. 어떤 문제인지 모르겠네요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
유니티 reload script
유니티 버전 : 2021.3.14f1유니티 허브 : 2.4.4 어느날 갑자기 스크립트 저장하고 에디터로 돌아오면 위와 같이 창이 하나 뜨고 무한로딩이 발생합니다. 작업관리자를 열어보면 '응답없음'인 상태로 나오며 강제종료 밖에 할 수 없습니다.컴퓨터 재부팅과 Library, Log, obj, UserSetting 폴더 삭제도 해보았으며 유니티 경로에 한글도 일절 들어가있지 않습니다.Preferences->General에서 Stop Playing And Recompile과 Recompile and continue playing 옵션도 테스트 해 보았고 Enter play mode options도 체크했으나 여전히 같은 문제가 발생합니다.ㅜㅜ 어떻게 하면 좋을까요?
-
미해결[유니티 3D] 실전! 생존게임 만들기 - Advanced
유니티 3d 터레인 브러쉬 문제
유니티 3d 터레인 사용을 하는데 브러쉬가 read-only 라고 하면서 사용이 안됩니다 혹시 푸는 법 아시나요
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
클라이언트에서 데이터 변조 할 경우
패킷 id가 변조될 경우의 대응은 없는 상태인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
언리얼엔진과의 비교
안녕하세요 강사님.흥미롭게 강의를 듣는 중인데 언리얼 엔진과 가끔 비교해주실 때가 있더라구요.듣다보면 유니티보다 더 복잡하다는 느낌을 지울수가 없는데 그럼에도 불구하고 언리얼 엔진이 유니티보다 조금 더 주목을 받는 이유가 무엇인지 궁금합니다. 게임 시장에서도 언리얼 엔진에 좀 더 주목하는 분위기라고 하시는 분들도 있어서요.이미 검색은 해보았지만 실무를 해보신 입장에서의 답이 궁금해 고민하다가 질문합니다. 언리얼 엔진이 유니티에 비해 엔진이 좀 무겁고 구현 폭이 넓은 그런 느낌이라서 많이들 사용하는 건가요? 좋은 강의 감사드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
args.BytesTransferred가 0인 이유가 뭘까요
강의 잘 보고 있습니다. 하나하나 다 따라해봤는데 전 강의 까지는 문제가 없었지만이상하게 이번강의 따라해보니 유니티와 서버의 연결은 잘된듯 한데 유저가 2명 이상이면 Disconnect를 호출하더군요 이유를 찾아보니까 OnRecvCompleted에서 첫 if문에 있는 args.BytesTransferred 가 계속 0인데 이는 서버측이든 클라측이든 0으로 되어있었습니다. 혹시 코드가 잘못된지 확인해봐도 모르겠어서 강사님께서 올려주신 코드로 서버와 클라를 연결 시켜봐도 똑같이 BytesTransferred가 0이어서 문제가 생기는데 왜 이러는지 알 수 있을까요?? 기기에 따라 다른가요
-
해결됨유니티 머신러닝 에이전트 완전정복 (응용편)
PPO 알고리즘을 ml-agents learn 명령어로 학습 및 추론할때 메소드 호출 순서 질문
안녕하세요!먼저 기초편에 이어서 응용편 강의를 공개해주셔서 정말 감사합니다!! 해당 강의를 들으면서 PPO 알고리즘을 ml-agents learn 명령어로 학습 할 때와 추론할 때 메소드 호출 순서에 대해서 궁금합니다.이 내용이 궁금한 이유는 각 학습 또는 추론 과정에서 각 메소드별로 연산 시간을 측정하기 위해서 입니다. 관련 자료를 어디서 확인할 수 있을까요? 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓과 세션에 대해 질문 드립니다.
안녕하세요 루키스님!강의 잘 듣고 있습니다. 세션과 소켓의 관계에 대해 궁금한게 생겼습니다.비유로 인해 오해가 생길까 지웠습니다.Connector를 쓰기 전 까지는 더미 클라이언트에 세션을 쓰지 않아 서버와 클라이언트가 서버에서 발급한 세션을 통해 정보를 공유한다고 생각했습니다.마치 실 전화기 처럼 말이죠.클라 (소켓) ---------------세션--------------(소켓) 서버 근데, 커넥터라는 개념이 들어오고 다시 흐름을 살펴보니 서버도 서버의 세션을 사용하고, 클라도 클라의 세션을 사용하니 위의 비유와는 잘 맞지 않아 다시 생각해봤는데 이해한 바가 맞는지 봐주셨으면 합니다.소켓 : 유심칩세션 : 스마트폰(abstract 를 구현해서 어떻게 행동할지 정의했기 때문에 클라는 클라 전용 스마트폰, 서버는 서버 전용 스마트 폰을 가지고 있다.) 클라 (소켓 + 세션) ------------------- 서버(소켓 + 세션)
-
해결됨[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
5월 부터는 서버를 구현한다고 되어있는데!
안녕하세요 5월부터 시작하는 수업에서BM (광고, 결제) 시스템과 서버 기본기 구현을 배우게 되는것으로 알고있는데요!이과정에서 c#과 AWS를 사용하여 직접 서버를 구축하는 방법을 배우는것인지아니면 파이어베이스나 뒤끝같은 관리형 서비스를 사용하는 방법을 배우는건지 궁금합니다 !
-
미해결이득우의 꼭 배워야하는 게임 알고리즘
움직이는 물체에 대한 쿼드, KD트리 효율 질문
강의 잘들었습니다 😊😊 강의를 들으면서 한가지 의문이 생겼는데요 쿼드트리나 KD트리를 이용하면 다수의 물체에 대한충돌체크에 쓰이면 좋을거 같다는 생각을 했습니다. 강의에서는 고정된 물체에 대해서 트리를 구축하고 질의(Query)를 실행하는데요 만약 물체가 움직이게 된다면 위치값이 계속바뀌닌까 이 알고리즘을 사용할수 없을수도 있을거 같았습니다. 움직일때마다 트리를 재구축 해줘야하닌까 더 비효율적이지 않을까요?? 움직이는 다수의 물체에 대해 충돌체크를 하려면쿼드트리를 사용하고 물체가 이동할때마다트리 노드가 들고있는 물체 목록을 옮겨 다니는 로직을 만들어야 할까요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
하반기 MMO 서버 개발
하반기 MMO 서버 개발은 c# or c++ 뭐로 개발할 예정이신가요?
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
UIManager의 SetCanvers() 부분에서
안녕하세요..UIManager 의 SetCanvas 에서public void SetCanvas(GameObject go, bool sort = true, int sortOrder = 0) { Canvas canvas = Util.GetOrAddComponent<Canvas>(go); if (canvas == null) { canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvas.overrideSorting = true; }"if (canvas == null)" 부분이 "canvas != null" 이 되어야 될 것 같은데 설명 부탁드립니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
MakePacket<T> 함수 질문있습니다.
PacketManager에서 MakePacket<T>가 호출되면 T 객체를 생성해서 처리하는데, 혹시 해당 함수가 호출될때마다 객체를 생성하는게 아니라 Dictionary에 Register함수로 등록할 때 객체를 생성해서 Dictionary에 등록해주고 그 객체 하나로만 버퍼를 받아서 처리하면 문제가 발생하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
재대로 작동하는지 확인 후 공부하려고합니다
마지막 프로젝트를 설치후 서버를 실행하고 유니티에서 실행하면 맵만 나타나고 그외 플레이어나 몬스터는 나타나지 않고있어요 따로 더 설정해야되는부분이있나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
풀링부분에서 푸쉬가 잘 안됩니다
2024/1/18오브젝트를 풀링을 만들어 보았는데풀링은 되는데 자식 오브젝트들이 모두 사라집니다아래 사진은 1번 씬에 배치한 유닛사진이고그 아래는 1번씬의 유닛을 푸쉬하고 2번씬에 팝한 모습입니다.같은 씬에서 팝한 다음 푸쉬를 진행했을 때6마리를 팝하고 푸쉬했는데 6마리 모두 자식오브젝트가 사라진 모습입니다. 바닥 타일도 모두 풀링을 사용하고 있는데 타일은 풀링이 잘됩니다 타일안에 자식오브젝트를 넣어놔도 같이 풀링되는데유닛 오브젝트만 풀링이 이상하게 되는 이유를 모르겠어요. 디버그 해볼려고 노력해본 내용도 추가합니다팝후 디버그화면에서 마우스로 하위오브젝트를 모두 비활성화 시키고 삭제하면 하위 오브젝트는 삭제되지않는다하지만 코드로 할 경우 삭제된다.팝하고 위치나 로테이션을 변환하지 않아도 하위 오브젝트가 사라진다.씬 clear를 거치지 않고 수동으로 푸쉬시에도 하위 오브젝트가 사라진다.푸쉬할때 활성화된 하위 오브젝트만 사라진다. 2024.1.19해결은 했는데 원인은 모르겠습니다.제가 사용하는 건 씬에 오브젝트 하나를 만들고 풀링된 오브젝트들을 한 오브젝트의 자식으로 모두 보내고삭제시 상위 오브젝트에서 자식 오브젝트를 모두 삭제하는 방법을 사용 했었고 강의 내용을 보면서 이 부분을리스트를 통한 저장 삭제 방식을 하였더니 해결 되었습니다.해결은 했는데 왜 해결되었는지 궁금하네요
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + T2)
UI_TitleScene에서 bindevent
GetObject((int)GameObjects.StartImage).BindEvent((evt) => { Debug.Log("ChangeScene"); Managers.Scene.LoadScene(EScene.GameScene); });에서 bindevent()로 extention의public static void BindEvent(this GameObject go, Action<PointerEventData> action = null, Define.EUIEvent type = Define.EUIEvent.Click) { UI_Base.BindEvent(go, action, type); }로 오고 여기서 UI_Base에 있는 public static void BindEvent(GameObject go, Action<PointerEventData> action = null, Define.EUIEvent type = Define.EUIEvent.Click) { UI_EventHandler evt = Util.GetOrAddComponent<UI_EventHandler>(go); switch (type) { case Define.EUIEvent.Click: evt.OnClickHandler -= action; evt.OnClickHandler += action; break; case Define.EUIEvent.PointerDown: evt.OnPointerDownHandler -= action; evt.OnPointerDownHandler += action; break; case Define.EUIEvent.PointerUp: evt.OnPointerUpHandler -= action; evt.OnPointerUpHandler += action; break; case Define.EUIEvent.Drag: evt.OnDragHandler -= action; evt.OnDragHandler += action; break; } }로 참조해서 가져오는것 맞나요? 궁금한것은 지금 define에 4가지 evt상태를 만들어놨는데 pointdown-누를때pointup-땔때drag-드래그Click-클릭 지금은 제일위에 object.bindevent(evt)=> 여기에 evt로 4가지 전부 받아지는것아닌가요? 강의를 다시보니 loadAysync로 전부 로드완료한뒤에 클릭하면 된다고 되어있는데 그냥 4가지 전부 evt로 가져와지고 제일먼저 입력된 click이 받아와지는건가요? pointdown은 누를때 이벤트가 전송되면 pointdown으로 evt가 받아와져야 되는것 아닌가요?
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
유니티 에디터 버전
유니티 버전을 2019.1이 아닌 다른 최신버전인 2022.3 버전으로 사용해도 되나요?
-
미해결유니티 Addressable 을 이용한 패치 시스템 구현
윈도우 빌드 파일에 업데이트가 반영되지 않습니다
안녕하세요 선생님, 강의 잘들었습니다!윈도우 빌드로 진행했고, 업데이트가 잘 되는지 확인하려고 아래 과정을 거쳤습니다.AddressableAsset을 추가해 Update a Previous Build로 에셋 빌드하고, play mode > use existing build로 이상 없이 파일 업데이트 하고 잘 진행됨.하지만 빌드 파일에서는 이 업데이트 내용이 전혀 반영되지 않아 질문 드립니다.hash값도 제대로 바뀐걸 확인했고, 서버에도 파일도 잘 업로드가 되었는데, 빌드 파일에서는 다운받을 데이터를 전혀 찾지 못합니다. 이름을 덮어쓴 파일은 반영이 잘되는데, 새로 에셋을 추가한 부분에 대해서는 전혀 읽어오질 못합니다.use existing build로 플레이한 경우랑 어떤점이 달라서 작동하지 않는지 궁금합니다! (+그리고 Build > Update a Previous Build 선택했을때 팝업창이 뜨는게 아니라 바로 아래의 사진으로 넘어가는데, 이부분은 상관없을까요?)
-
미해결이득우의 꼭 배워야하는 게임 알고리즘
BSP트리를 활용한 렌더링 순서 관련 질문
안녕하세요, 강사님. BSP트리를 활용한 렌더링 순서에 대해서 설명해주시는 부분에 있어서 궁금한 점이 있어 여쭈어보고자 합니다. 다음 예시에서 플레이어가 평면 F로 분할된 공간의 양의 공간에 있을 때, 음의 공간의 폴리곤부터 먼저 렌더링을 해야한다고 설명해주셨습니다(10:13~). 그런데 단순하게 생각하면 플레이어 입장에서 보여지는 부분부터 순서대로 렌더링 되어야 하는 것이 아닌가 하는 생각이 들었습니다. 예를 들어 F앞면 - A1 - B - C1 / G앞면 - A2 - D1 / H앞면 - D4 - C2 / D3 와 같은 순서처럼 말입니다. 렌더링 순서는 사실 크게 중요하지 않은 것인지, 그게 아니라면 해당 예시와 같이 플레이어 입장에서는 보이지 않는 영역인 음의 공간의 폴리곤부터 먼저 렌더링하는 이유(성능적인 부분)가 특별히 있는 것인지 궁금합니다.