안녕하세요 빌드시... 용량이 줄지 않습니다.
미해결
유니티 Addressable 을 이용한 패치 시스템 구현
안녕하세요. 어드레시블을 사용하여 빌드를 하였는데요. 빌드용량이 줄어들지 않아 문의드립니다. 참고 : 리소스 폴더는 없습니다.
- C#
- unity
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
유니티 Addressable 을 이용한 패치 시스템 구현
안녕하세요. 어드레시블을 사용하여 빌드를 하였는데요. 빌드용량이 줄어들지 않아 문의드립니다. 참고 : 리소스 폴더는 없습니다.
미해결
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안녕하세요, 강의 너무 감사합니다. 게임을 진행하다보면 게임오버 팝업이 발동 후 종료를 클릭하게 되면 게임오버 팝업이 먼저 사라지고 scene 전환 애니메이션 활성화 후 마지막에 게임 배틀 장면 scene 이 노출되고 로비 scene으로 이동하게 됩니다. 혹시 마지막 게임 배틀 장면 scene을 노출 안되게 하는 방법이 있을까요? 항상 감사합니다.
미해결
Do it! C# 프로그래밍 입문
질문은 유튜브 채널에 해당 동영상에 댓글로 남겨주세요. - 유튜브 채널 링크 : https://youtube.com/toymakers - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 비슷한 질문이 있는 경우 다른 분의 질문과 답변을 참고하실 수 있습니다. - 서로 예의를 지키며 존중하는 문화를 만들어가요.
미해결
C# 처음부터 배우기
써도 되는걸까요? 근데 보여지는 화면 자체가 다른데...강의를 들을 수 없는 건가요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
'콘솔 앱(.NET Core)'가 존재 하지 않아서 '콘솔 애플리케이션'으로 프로젝트를 생성하였습니다. .NET 데스크톱 개발은 설치가 되어있습니다. 개별 구성요소에서 .NET Core 3.1 Runtime(Out of support)를 체크하여 '콘솔 애플리케이션'을 만들었습니다. 프로젝트를 생성하였으나 솔루션에 프로젝트가 0개라고 떠서 더이상 진행 할 수 가 없습니다. 혹시 어떻게 해결하면 될까요??
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
똑같이 따라했는데 템플릿이 변경되지 않습니다 뭐가 문제일까요? 혹시나 해서 관리자 권한 메모장 실행해서 확인해봐도 변경된 걸로 확인되는데 스크립트를 만들어보면 변경되기 전으로 나옵니다
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 게임 서버 개발자가 되고 싶어서 공부중입니다. 카트라이더처럼 유저가 게임 룸을 만들고 원하는 룸에 입장하고, 퇴장하는 게임을 만들 때, 생성되어있는 게임 룸들의 리스트들을 서버에서 받아와야 하는데 이 때 룸 정보들을 요청하는 패킷, 예를들면 C_RoomList 같은 패킷이 필요할까요? 그리고 룸에서 퇴장할 때도 C_LeaveRoom 같은 패킷이 필요한지 궁금합니다. 정확하게는 GameRoom 코드에서 LeaveGame과 ClientSession의 OnDisconnected가 어떻게 작동되는 것인지 궁금합니다. 항상 좋은 강의 감사드립니다!!
해결됨
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안녕하세요 혹시나 저와 같은 오류를 겪고 계신 분이 있을까봐 문제 및 해결 방법 공유드립니다 강사님께서 알려주신 그대로 진행했지만 빌드 옆에 검색창이 없고 제목에 적어둔 것처럼 미싱 빌트인~ 오류가 발생했는데요 유니티 측에서 search가 아닌 seach라는 사소한 오타를 낸 상태로 업그레이드를 진행하여 생긴 오류로 판단했고, 구글링해보니 저와 같은 오류를 겪고 있는 사람이 꽤 많고 상당히 오래된 오류로 보였습니다. (임의로 해결하는 방법이 여럿있었으나 저에게는 모두 먹히지 않았습니다) 최종적인 해결 방법으로는 유니티 에디터 버전을 2021.3.29 -> 2022.2.2로 업그레이드 한 후 해당 프로젝트에서 어드레서블을 검색하여 설치합니다. 이렇게 되면 프로젝트 이름/Library/PackageCache 폴더 안에 com.unity.addressables~ 라는 폴더가 생길텐데, 해당 폴더를 지금 작업하고 있는(강사님과 같은 유니티 버전인 2021 에디터)의 프로젝트 이름/Packages에 붙여넣기 합니다. 제대로 진행했을 경우 아래 사진처럼 어드레서블(커스텀)이라고 바뀌고 아래 사진과 같이 빌드 버튼 옆에 제대로 검색창이 나타나게 되며 콘솔창의 오류 또한 사라집니다. 혹시나 저와 같은 오류를 겪고 당황해하는 분들이 계실까봐 공유합니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
8:00 instance에 자기 자신을 누군가 채워야한다? 라고 하신거 같은데 무슨 뜻인지 잘 모르겠습니다 왜 해야 하는 건가요???
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
대학생이고 제 주변에 해당 업종에 종사하시는 분이 안계셔서 마땅히 여쭤볼 곳이 없어 올려봅니다. 현업 종사자셨던 루키스님께서는 이번 유니티 가격 정책에 어떻게 생각하시는지 여쭤봐도 될까요? 실제로 이번 정책으로 인해 유니티에서 엔진을 변경하는 개발사가 많을까요? 프로젝트를 진행하는 중 엔진을 변경하는 경우가 많나요? 위 주제들에서 벗어나기는 하는데, DirectX와 OpenGL 둘 중 하나를 공부한다면 어떤 걸 추천하시나요? 이유도 알려주시면 감사하겠습니다. (DirectX는 윈도우 환경에서 잘 돌아가지만, OpenGL이 각종 운영체제에 호환이 잘 되는 것으로 알고있습니다. 게임 프로그래밍에 관해 찾아보다보면 DirectX를 공부하는 것이 중요하다고들 하시며, 국내 게임 업계 채용사이트를 참고하더라도 DirectX 지식이 있는 개발자를 우대하는데, OpenGL에 관한 우대사항이 없는 이유가 궁금합니다.) 만약 4번에서 DirectX를 추천하신다면, DirectX9부터 11, 12 순으로 공부하는 것이 좋을까요? 아니면 12로 바로 들어가도 괜찮나요?
해결됨
Backend 멀티쓰레드 이해하고 통찰력 키우기
컨텍스트 스위칭에서 캐시 플러시가 발생한다고 되어 있는데, 이는 프로세스 간의 컨텍스트 스위칭이 아니라 스레드간 컨텍스트 스위칭에서도 발생하는지 궁굼합니다. 왜냐하면 스레드는 주소 공간을 공유하기 때문에 데이터 영역은 플러시해야겠지만, 명령어 영역은 플러시 하지 않아도 되는거 아닌가 생각이 듭니다. 또한 캐시를 플러시 한다는 뜻이 캐시의 데이터를 메모리에 반영하는, 즉 write-back 동작인지도 궁굼합니다. 제가 검색을 통해 찾아봤을 때는 캐시 flush는 캐시를 invalidate 하여 캐시를 메인 메모리에 반영하지 않고 초기화만 하는 것으로만 나왔습니다. 그런데 캐시 플러시가 메인 메모리에 반영하지 않는다면 데이터가 없어져 버리니, 제가 알아본 개념이 잘못된 것이 아닌가 합니다. 제가 자바로 실행했을 때 역시 컨텍스트 스위칭이 발생하면서 캐시 데이터가 메인 메모리로 반영이 되고, 그 값을 가져옴으로써 스레드가 종료될 수 있었습니다.
미해결
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
매니저 강의 중 16:00에 말한 파트3? 는 무엇인가요?
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Util 스크립트에서 만든 FindChild() 함수를 UI 오브젝트가 아닌 다른 오브젝트에서도 사용하고 싶어 사용하던 중 문제가 발생하여 질문이 있습니다. FindChild() 함수의 리턴 값이 null이 되면 이후의 코드들이 실행이 안되던데 이유를 모르겠습니다. void OnEnable() { partToRotate = Util.FindChild(gameObject, "PartToRotate", true).transform; firePoint = Util.FindChild(gameObject, "FirePoint", true).transform; // 이후의 코드들 } 위의 partToRotate와 firePoint 변수는 OnEnable() 함수에서는 사용되는 일이 없고 Update() 함수에서 사용됩니다. Update 함수에서 변수 값이 null로 인해 오류가 나는 거면 이해를 하겠는데, OnEnable() 함수에서 FindChild() 함수의 리턴 값이 null이 되면 왜 이후의 코드들이 실행이 안되는지 모르겠습니다. 널 조건 연산자인 ?로 해결은 했으나, 왜 안되는지 이유가 궁금합니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
우선순위 큐 내용 중 작은 순서대로 출력하는 내용입니다. 강의에서는 return Id > other.Id ? 1 : -1; 요렇게 된 상태에서 컴파일했을 때 작은 순서대로 나왔는데 막상 제가 해보니 큰 숫자대로 나왔습니다. public int CompareTo(Knight other) { if (Id == other.Id ) return 0; return Id > other.Id ? -1 : 1; } 그래서 이렇게 하거나 아니면 return Id < other.Id ? 1 : -1; 이렇게 반대로 해야 작은 숫자부터 출력이되는데 왜 이런 차이가 발생했는지 알고싶습니다
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
안녕하세요 제목에 명시한 강의 내용을 쭉 따라하다가 마지막에 실행을 하니 선생님 영상에서는 한칸한칸 나아가는데 제꺼는 시작점에서 끝점으로 순간이동?을 하더라구요 디버깅을 해보니 모든 좌표값에 null로 표기가 되는데 아무리 봐도 감이 안잡힙니다
미해결
C#과 유니티, 실전 게임으로 제대로 시작하기 (저자 직강)
이 강의 교재인 '처음 배우는 C# 프로그래밍'을 e-book으로 출시하실 계획은 없으신가요? 휴대성 때문에 서적보다는 e-book을 선호하는 편이라 출시가 된다면 구매하고 싶습니다.
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요! 루키스님 강의를 통해 서버를 공부하고 있는 한 대학생입니다. 현재 학교에서 게임 서버와 관련된 전공이 따로 있지 않아 혼자 공부하며 졸업작품을 사전에 준비하려고 하는데요. 게임에 사용되는 서버가 단순히 클라이언트를 연결해주는 서버 뿐만 아니라, 채팅 서버, 동기화 서버, NPC서버 등등.. 기능에 따라 분할하여 관리하는 경우가 많다고 들었습니다. (실제로 현업에서는 어떻게 관리되는지 모르겠지만 구글에서 찾아본 바로는 이렇게 알고 있습니다.) 현재 MMORPG 게임 서버를 만드는 데에 있어서 어떠한 요구사항들이 필요한지 구조를 설계해보고 있는데,사실 현재 질문을 작성한 섹션까지의 강의를 보고 따라하면서도 코드가 잘 와닿지 않습니다. 우선 제 생각은 처음부터 끝까지 우선 정독하며 코드를 따라 작성하며 다시 정주행하며 작성했던 코드들 하나하나 뜯어보고자 했는데, 현재 이해되지 않는 부분들을 이해하고 넘어가는게 좋을까요? 또한 제가 처음부터 이쪽으로 공부했던 것이 아니라, 전과를 하여 전공지식에 있어서 부족한 점들이 있습니다. 특히 데이터 베이스나 웹에 대한 지식이 아직 없는데, 데이터 베이스를 공부한 뒤 서버를 공부하는 것이 좋을까요? 해당 강의에서 알려주시는 서버에 관한 내용들은 위에서 제가 언급한 분할 서버들(채팅, 동기화 등)에서도 모두 활용이 되는 내용들일까요? 아니면 전혀 무관하여 부가적인 공부가 필요할까요? 클라이언트는 기존에 작게 프로젝트를 해본 경험이 있어 어느정도 익숙해졌다고 생각해 서버를 공부하기 시작한건데요. 서버 프로그래밍이 매우 어렵다는 것을 알고 나름 강의를 수강하기 전 이론에 관해서도 어느정도 확립한 뒤 듣고있는데도.... 코드를 봐도 전체적인 흐름조차 잘 파악이 되지 않네요... 정상일까요? 아니면 기본기가 부족하여 이해를 못하고 있는 것일까요? 목표는 클라이언트 프로그래머이지만, 서버를 알고 클라이언트를 개발하는 것과 모르고 개발하는 것에 큰 차이가 있을 것이라고 생각해 작게라도 MMORPG를 한번 만들어보고자 하고 있는데, 어려운만큼 노력하면 되는건데도 시작점이 같지 않다는 핑계가 머리를 떠나지를 못하네요.. 아직 부족한 전공지식도 많은데 이런 내용들을 공부해도 괜찮은 걸까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
커맨드 패턴을 정확히 이해하고 싶은 학생입니다. 강의를 정말 많이 돌려보고 구글링도 해본 결과 저는 다음과 같이 커맨드 패턴을 이해했고 적용해봤습니다. 기존의 방식은 클라이언트에서 요청이 들어오면 서버의 쓰레드들이 일을 처리하기 위해 쓰레드들이 락에 의한 대기를 함으로써 대기 시간이 길어져 메모리 낭비가 됐지만 커맨드 패턴을 활용하여 클라이언트의 요청을 캡슐화하여 서버에 전해줌으로써 기존에 락에 의해 대기만 하던 쓰레드들이 대기하는 시간이 줄어들게 됩니다. 단점으로는 2가지가 있습니다. 플레이어의 죽음과 종료가 거의 동시에 일어났다고 가정해보겠습니다. 종료가 됨으로써 플레이어의 room이 null로 밀렸는데 잡큐에서 실행된 죽음 함수에서 플레이어의 room에 관한 정보로 접근하려 하니 null 크래쉬가 나게됩니다. 따라서 null 체크를 꼼꼼히 해줘야 합니다. 또 다른 문제는 로직 동작 순서의 불명확함입니다.. 코드의 순서가 1번. 잡큐로 밀어넣은 함수 1 2번. 잡큐와 상관 없는 코드 3번. 잡큐로 밀어넣은 함수 2 이런 상태에서 로직이 존재한다고 가정할 때 큐에 넣은 일이 바로 실행되는 것이 아니기 때문에 1번과 3번이 밀려 2번이 먼저 실행되는 일이 발생될 수도 있습니다. 따라서 이런 문제를 해결하기 위해선 잡큐에 넣는 커맨드 패턴 방식이 아닌 기존의 락으로 잡아가던 방식으로 함수를 사용하는 것이 좋습니다. 이 정도로 정리해봤는데 혹시 다른 점 있을까요? 커맨드 패턴 부분의 이해가 정말 안됐어서 질문 드립니다!
해결됨
[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안녕하세요! 장비를 획득하면 OwnedEquipments라는 리스트에 추가되고 장비를 착용하면 EquipedEquippments 라는 딕셔너리에 추가가 되는데요, 이때 해당 리스트와 딕셔너리에서는 같은 객체를 참조하고 있는 것으로 이해했습니다. 그리고 SaveGame 메서드를 실행시킬때 GameData 클래스에 있는 OwnedEquipments 리스트와EquippedEquipments 딕셔너리를 json으로 직렬화 하고 게임을 끄고 재시작 한 이후 LoadGame 하였을때도 여전히 해당 리스트와 딕셔너리에서 참조하는 객체는 동일한 같은 객체인가요? LoadGame 함수를 살펴보니 게임을 불러올 때 EquipedEquipments 딕셔너리를 새로 선언하고 OwnedEquipments 에서 다시 EquipItem 하여 딕셔너리에 추가해주는 부분을 확인했는데요 만약 LoadGame이후에도 여전히 같은 객체를 참조한다면 없어도 되는 부분이 아닐까 하고 먼저 GPT의 도움을 받아봤는데요 이런 답변을 받았어요. 그런데 이 답변이 신뢰가 안가서 선생님께 질문드립니다! 좋은 주말 되세요!
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
중단점이 현재 적중되지 않습니다. 이 문서의 기호가 로드되지 않았습니다. 라고 뜨고 브레이크 포인트와 상관없이 그냥 실행됩니다. 왜 그런걸까요 ㅠ