묻고 답해요
140만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
배운것을 활용하여 프로젝트를 하다가 궁금한것들이 생겼습니다.
현재 강의에서 배운 내용을 활용하여 rpg게임을 개발하고 있는데 궁금한 것들이 생겨 질문하게 되었습니다.맵을 만들면서 맵에 있는 잔디나 나무들 때문에 렌더링 해야 될것들이 많아져 이를 어떻게 해결해야 될지 잘 모르겠습니다. 일반적인 경우에는 오브젝트의 거리별로 해당 오브젝트를 렌더링 할지 말지를 정하는걸로 아는데 이를 구현하는 방법을 잘 모르겠습니다.적들이 쫓아 올때 적들이 겹치거나 서로 밀리는 현상이 있었습니다. 그래서 navmeshagent에서 적들의 이동 우선순위를 결정 해주고 radius를 줄여보았지만 자연스럽게 되는게 아닌 옆으로 조금씩 밀리면서 되거나 몇마리는 앞에 있는 몬스터들에게 끼여 있는 현상이 생기더군요 이를 어떻게 해결해야될지 답변해주시면 감사하겠습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
모바일 2d 캐쥬얼 게임
Rookiss 님을 멘토 삼아 게임 개발을 위해 달리고있는 청년입니다 ! 모바일 2d 캐주얼 게임 제작을 목표로 두고있는데 ,결제와 관련된 중요한 장비나 캐릭터 정보같은건 서버에서 처리할까요? 혹시 서버를 따로 공부 해야한다면 루키스님 강의중 게임서버 , 웹서버 둘중 어떤걸 들어야할까요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
공부 방법에 대해서 질문이 있습니다
안녕하십니까 게임 프로그래머 취업 가이드 영상을 보고 클라이언트쪽만 공부하다가 서버 공부를 시작하려고 하는 대학교 2학년생입니다.유니티와 언리얼강의 전체를 한번씩 보면서 어떤 느낌인지 파악하고 이해 안되는 강의를 계속 돌려보는 식으로 공부하려고 했습니다. 근데 제가 유니티 c#, 알고리즘, 엔진을 들을때는 괜찮았는데 게임서버 강의를 이제 1번 완강했는데 거의 부분적인 이해만 한것같고 전체의5%정도밖에 이해를 못했습니다.. 이게 다음파트로 넘어가는게 맞을까요? 아니면 이해갈때까지 서버강의를 계속 들어야할까요?조금이라도 이해가 더 될까봐 한빛아카데미 데이터 통신과 컴퓨터 네트워크 박기현 지음 이 이론책을 같이 보면서 공부중인데 이 두꺼운 이론책을 봐도 이 강의와의 접점을 못찾겠고 봐도 이해가 잘 안가는데 보는게 맞을까요? 아니면 시간낭비일까요..?강의 듣는 순서도 고민이 됩니다 유니티 강의보다 c++ 강의와 c++ 서버 강의를 듣고 유니티 강의로 넘어오는게 나을까요 아니면 지금 하는대로 유니티먼저듣고 c++강의로 넘어가는게 맞을까요?중구난방하게 글을 적은 느낌이라 죄송합니다 ㅠㅠ
-
미해결유니티(Unity)로 시작하는 게임개발: Part 3. 슈팅게임 개발
강의도중 질문이 있습니다
선생님께서는 struct구조로 생성자를 많이 쓰시던데,class로 생성자를 만드는것과struct로 생성자를 만드는 것이어떤 차이가 있는지 궁금합니다.성능상에 차이만 있는건지제가 알기로는 class로 생성자를 만들면 초기값을 넣을 수 있다고 알고 있습니다.차이는 그정도일까요??
-
미해결유니티 머신러닝 에이전트 완전정복 (기초편)
알고리즘 관련
안녕하세요, 알고리즘 관련해서 질문드리고 싶어 글 남깁니다. 해당 드론 예제를 DDPG가 아닌 PPO로 학습할 경우 대체로 성능이 낮아질까요? 내장된 알고리즘이 아닌 DDPG를 선택해 사용하신 이유가 궁금합니다.또한 드론과 goal 사이에 여러 장애물이 무작위로 배치될 경우에도 해당 알고리즘으로 학습이 무리없이 진행될지 질문드리고 싶습니다. 강화학습에 입문하면서 도움 많이 받고 있습니다. 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
new List 동기화 와 관련하여..
public List<IPacket> PopAll(){ List<IPacket> list = new List<IPacket>(); lock(_lock) { ...어떤 처리.. }} 이 함수가 멀티 스레드로 실행 된다고 했을대 list 이 변수는 안에가 list 형태인데 linkedlist 같은것도 스레드 세이프 한건가요?여러개의 스레드가 linkedlist 를 생성만 한다고 했을때(위의 예시처럼 원소 추가나 조작 없이) 동시에 new 연산이 내부에서 실행 된다 여러개 스레드에서 동시에 힙에 new 연산이 실행될것 같은데(예를 들어 c++ vector<> 같은..) 멀티스레드로 new 연산시 같은 주소에 생성될 일이 발생할 수도 있지 않을까 해서요 질문을 요약하자면-지역변수에서 힙쪽의 new 를 생성하는게 있다면 그것은 스레드 세이프한가? 라는것이 질문입니다답변 부탁드려요!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
질문1. base.Init() 컴파일 에러가 발생합니다
메시지: CS0205 추상 기본 멤버를 호출할 수 없습니다https://learn.microsoft.com/ko-kr/dotnet/csharp/misc/cs0205원인 추정: 2023. 01. 05 이후 abstract 메서드 본문을 호출하는 시도를 문법적으로 중단(abstract 는 메서드 껍데기만 동일하게 가져가는 것을 의도로 할 때만 사용 가능하게끔 하고, base 를 호출하며 사용할 때는 virtual 를 쓰도록 강제로 권장 안 좋은 대안: Start() 실행 순서 관리를 설정에서 직접 관리. '편집 -> 프로젝트 설정 -> 스크립트 실행 순서로 이동하여 스크립트의 실행 순서를 설정'대체 시도: UI_Base 의 Init() 를 abstract 대신 virtual 로 변경 질문 요지: virtual 로 변경해도 문제가 없을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
싱글 코어와 멀티 코어에 대해 질문드립니다.
안녕하세요. 싱글 코어와 멀티 코어에 대해 궁금한 점에 대해 질문드립니다.1.만약 제가 작성한 프로그램에서 멀티 쓰레드를 사용하더라도 사용하는 컴퓨터의 CPU가 싱글 코어 일 경우쓰레드를 사용할 때 컨텍스트 스위칭이 일어나기 떄문에 멀티 쓰레드를 사용하는 건 의미가 없는 게 맞을까요?2.반대로 멀티 코어인 컴퓨터에 단일 스레드 환경의 프로그램을 만들었을 경우 여러 코어를 사용하는 게 아닌 하나의 코어만 사용하게 되어 CPU의 성능을 제대로 활용 못하는 게 맞을까요? 실제 운영체제 환경에서는 제가 만든 프로그램 외 에도 백그라운드로 실행되는 프로그램들이 있어서 코어 하나만 사용하진 않겠지만 개념적으로 봤을 때 멀티 코어일 때 단일 쓰레드 환경의 프로그램이면 CPU 성능을 제대로 활용 못 하는 게 맞는 건지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ReadOnlySpan 버전 문제
ReadOnlySpan<byte> s = new ReadOnlySpan<byte>(segment.Array, segment.Offset, segment.Count); 이 질이 오류가 난다고 강의에는 나오는데유니티 2021.3.4 버전을 쓰고 있는데 오류가 나지않는건 유니티에서 사용하고 있는 C# 버전때문인가요?ReadOnlySpan 은 C# 버전 몇부터 유니티에서 지원하는건지 설명이 잘 안나오는것 같은데 어디서 알수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
강의에서 뜨는 에러가 뜨지 않습니다.
강의에선 GenPackets.cs의 Span계열에 오류가 뜨는데 저는 Span계열에 오류가 뜨지 않습니다. 그럴경우 그냥 진행해도 될까요???
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
ml-agents 관련 질문 있습니다.
안녕하세요, 저는 강화 학습 관련 관심이 생겨 여러 강화 학습 관련 프로젝트를 진행하고 있는 대학교 4학년 학생입니다. 인프런 강의를 기반으로 하여 프로젝트 진행에 도움을 많이 받고 있어 너무 감사합니다.다름이 아니라 ml-agents 관련 질문이 있어 글을 쓰게 되었습니다.강화 학습에서 reward shaping하는 기준 혹은 참고 논문이 있는 건지 궁금합니다.Training을 진행할 때 여러 번 경험한 내용으로 시간이 지나는데도 학습이 진행이 안된 경험이 있습니다. 이럴 때마다 작업 관리자로 CPU나 CUDA의 이용률을 보면 0프로 정도로 거의 움직이지 않는데 이를 병목 현상으로 예상하고 있습니다. 이를 해결하기 위해 아나콘다 프롬폼트에 키보드 interrupt를 하게 되면 멈췄던 학습이 실행 되어 여러 번 interrupt를 걸어 해결했습니다. 여러 다른 컴퓨터를 사용할 때마다 일어나는 공통적인 현상이라 혹시 제가 학습을 잘못 하고 있는 건지 아니면 이러한 현상에 대한 해결 방안이 따로 있는 건지 궁금합니다. 강화 학습 Training 방법을 찾아보면 제가 보기로는 두 가지 방법이 있었습니다. Unity 환경에서 하나의 프리팹 위에서 episode가 끝날 때마다 Agent나 environment의 구성을 랜덤으로 하여 진행하는 방식과 다른 environment를 여러개의 프리팹으로 하여 학습을 진행하는 방법이 있었습니다. 두 방법에 큰 차이가 있는 건지 궁금합니다.항상 이해하기 쉽게 강화 학습 관련 강의를 해주셔서 다시 한번 감사드립니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷 모아보내기 개수와 flushed 개수가 다른데 왜이런걸까요?
상황.1listen register 는 10, backlog 는 100 으로 해놨고connector 에서 Connect 할대도 100 으로 해놨습니다SendBuffer 의 크기는 public static int ChunkSize { get; set; } = 65535 * 100; 이고RecvBuffer _recvBuffer = new RecvBuffer(65535); 인데 어떤 부분이 문제일까요?.. 원본 jobTimer 코드 까지 실행하면 강의와 결과는 거의 같게 나옵니다만.. 상황 2 위 상황에서 서버 클라가 보내고 받는 데이터가Hello Server!Hello Server! I am 1 가 되고 서버 클라 간의 패킷 또한 정상적으로 받아지는건 확인했습니다그런데 리슨서버에서 register = 1, backlog = 1로 해놓고더미 클라이언트 쪽에선 Connector 로 2개의 클라가 접속하게 했을때 결과가 아래 처럼 나오고 있습니다,connector.Connect(endPoint, () => { return SessionManager.Instance.Generate(); } , 2 );코드를 수기로 처서 그런것 같기도 한데 어떤 부분에 문제를 의심해 볼 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
심리스에 관하여..
11:51 분심리스관련해서 아이디어가 생각나서 혹시..아이디어.1(가정 : 몬스터라면 애초에 서버에서만 클라로 뿌려주면 되긴 하겠지만, 클라에서 몬스터 정보를 준다 가정할때..)몬스터, 스킬, 유저, 모든 사물에 잡큐를 하나씩 배치를 해주어서 심리스를 해결한다고 했는데즉 이 말은 동기화 되야 하는 데이터가 있을때 심리스라서 맵 단위로 잡큐가 존재 할수 없으니예를 들자면 플레이어가 있고 플레이어 근방에, A 라는 몬스터가 있는데 이 몬스터의 동작을 그 주변에 있는 몬스터들도 알아야 하는 정보라 할때 몬스터의 정보(어떤 변경사항이 있고 다른 유저가 알아야 하는정보)를 서버에 보내고플레이어 근방에 있는(대략 일정 변경의 반지름 또는 시야에 들어오는 공간분할 처리내에 있는 유저) 정도의 유저들(동기화 대상들)에게만해당 몬스터 정보를 뿌려주어 해서 몬스터,사물 기반으로 데이터를 전송하는 방식일까요?아이디어.2(서버에서 처리 되는 기준)서버기준으로 , 사물, 몬스터 등에 개별 잡큐가 존재1. 몬스터가 왔다갔다 하는 동작이 몬스터 개별 잡큐에 넣기만 하고 실행 하진 않는다2. 플레이어가 몬스터나 사물등 일정 거리 안의 시야뷰에 보인다면 해당 오브젝트 동기화 대상들간의 잡들을 실행 하면서 동기화 처리를 한다용어는 들어 보긴 했는데 설명을 듣다가 갑자기 생각이 떠올라서 적어 봅니다
-
미해결[유니티 레벨 업!] 모듈식으로 개발하는 퀘스트&업적 시스템
퀘스트를 만들다보니 궁금한점이 생겨 질문합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 좋은 강의 감사합니다.퀘스트를 제가 생각한 방식에 맞게 만들다보니 궁금한 점이 생겨서 질문드립니다.만약에 예를 들어 몬스터 5마리를 잡고 해당 몬스터가 드랍하는 아이템을 얻어야한다. 라는 퀘스트가 있다면 해당 몬스터에 두개의 QuestReport를 달아줘야 하는건가요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Awake 함수에 대해서
유니티 강의에서 씬 매니저 부분을 듣다가 질문이 생겨서 드립니다게임 오브젝트 @Scene에 들어있는 스크립트는 GameScene 이고, GameScene은 BaseScene 을 상속받고 있고,BaseScene 은 이러한데,이 상태에서 유니티를 실행하면이렇게 표시 됩니다.GameScene 은 BaseScene 을 상속받고 있기는 하지만,BaseScene은 게임 오브젝트내(Hierachy) 에 존재하지 않은데, BaseScene 에서 Start 함수는 실행되지 않으면서, Awake 함수는 어떻게 실행되는건지 설명해주시면 감사하겠습니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 4:42에 디버깅이 안됩니다
강의 내용 똑같이 따라했고, 다른 질문들 참고해서 디버깅 모드, 다 추가한 상태입니다. visual studio에서 unity에 연결이라고도 되어있는데 디버깅이 안 이루어지고 그냥 끝나요ㅜㅜ. 2019 버전으로 내리는 수밖에 없을까요?
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
Resource Folder에 관한 질문입니다.
유니티에서 Resources Folder를 사용하지 말라는 내용을 어디선가 들은 것 같은데. Resources Folder가 유니티에 상시 메모리를 잡아먹는 걸로 알고 있습니다. 그래서 대부분 게임을 만들 때 Inspector에 할당을 시키거나 에셋 번들을 활용하는 걸로 알고 있습니다. 스크립트를 봤을 때 일부 UI를 Resource.Load로 활용하고 있는데 이러한 이유가 있을까요? 물론 프로젝트가 작으면 사용해도 별문제는 없는 걸로 알고 있습니다만 대규모로 했을 경우 해결 방안이 있을까요? 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
자동화코드 정렬
강사님 안녕하세요!다름이 아니라 주석들이 많아서인지 강의에 나온것처럼 자동화로 GenPackets.cs를 만들면 코드 정렬이 깔끔하게 되지 않아서요.. 이 경우는 제가 막판에 다시 정리해주면 상관없는건지, 아니면 무조건적으로 자동화로 생성되었을 때부터 깔끔하게 정렬되게 해야하는건지 궁금합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의 소스 다운로드
안녕하세요 유니티 에셋이나 기타 강의 자료를 다운 받아서 학습해보고 싶은데 강의 자료가 어디에정리가 되어 있는지를 알수가 없습니다.Rookiss 님 강의 자료가 어딨는지 링크 좀 부탁드립니다.감사합니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
씬 관리 질문이 있습니다.
안녕하세요!로드맵 강의를 수강하고 현재 게임을 직접 만들고 있습니다.캐릭터를 선택창이나 로그인화면 아이템샵 메인로비 등이 있는 로비 화면을 현재 만들고 있는데요현재는 기능별로 Scene을 새로 계속 생성하여 만들고 있습니다.근데 UI 데모파일들을 몇개 보면 모두 한 씬에 레이아웃들을 만들어놓고 SetActive 함수로 UI를 제어하는 경우가 많았습니다.그래서 Scene을 계속 만드는 방식과 하나의 Scene에 레이아웃을 각각 만들어놓고 SetActive함수로 제어하는 방식 두 방식중에 어느 것이 더 효율적인가요? 각각에 장단점이 있을까요?실제로 현업에서는 어떤 방식을 주로 쓰는지도 궁금합니다!바쁘시겠지만 답변 부탁드리겠습니다.