묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
강의 제공 에셋 import
제일 마지막 공유 에셋 파일 import 하면지금까지 올려주신 모든 에셋 파일을 한번에 import 할 수 있는건가요?총 9개의 다운로드 파일이 있던데 이거를 전부 다운받아서 import 해야하는지 궁금합니다
-
해결됨[유니티6] 따라하면서 배우는 고박사의 2D 플랫포머 게임 제작
jumpBuffer에서 if(IsGrounded) 설정이 있어야 될 것 같아서 질문드립니다.
void JumpAdditive(){ if(jumpBufferCounter >0) jumpBufferCounter -=Time.deltaTime; if(jumpBufferCounter >0){ if(IsGrounded) { rb.velocity = new Vector2(rb.velocity.x, jumpForce); jumpBufferCounter =0; } } }강의에서는 그것이 빠진 것 같아요.==============앗 제가 조금 성급했던 것 같습니다.... hangTime 이 적용되기 전에 저렇게 생각했는데...hangTime이 같이 어우러져서 조건이 만들어 지면...강사님의 방식이 맞는 것 같아요.
-
해결됨[Unity] 함께 만들어가는 방치형 게임 개발
코드 다운로드에 관해서
다른 질문글도 있지만개발 진행하며, 관련 코드가 없어 화면을 일일이 찾아야되는 부분이 있어 그런데,혹시 지금까지 하셨던 내용선에서라도 한번 전체 소스코드를 올려주시는건 가능하신지 문의드립니다.
-
해결됨[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)
protobuf 자동화 관련되서 질문 드립니다
protocol.proto를 수정한 후 패킷 자동화를 돌렸는데 Protocol.cs가 수정되지 않았습니다.혹시 GameServerPacketManager.cs 가 먼저 수정되고 Protocol.cs가 이후에 수정되면서 에러가 발생하여 문제가 생기는 걸까요?
-
미해결C# 입문부터 Xamarin Forms(자마린 폼즈) + Maui(마우이) 안드로이드, 윈도우 앱(UWP) 동시에 만들기
자마린 개발환경 프로젝트 생성 문의
Ch_1_비주얼스튜디오에 자마린 개발환경 추가하기 - 2강의를 듣다가 프로젝트 개수가 달라 문의드립니다.(해당 강의에서는 iOS 미체크)제가 실습하고 있는 환경에는 2개밖에 뜨지않습니다ㅠㅠ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
[팁] 2024년 기준 버전 이슈?
VS2022 사용자분들 중, 강의 내용을 제대로 따라 갔음에도 클라에서 로그가 안 찍히는 경우가 있을 거에요.삽질해본 결과 유니티에서 최대로 지원하는 .Netcore 버전보다 높은 버전으로 프로젝트를 생성하여 뽑혀나오는 dll 이 유니티 프로젝트와 호환되지 않기 때문인 것 같았어요.따로 신경 쓰지 않으면 VS2022 로 프로젝트를 만들 때, .NetCore 버전이 6.0 이상으로 생성하실텐데, 강의와 동일한 버전으로 맞추면 다소 찝찝하긴 해도 문제가 해결되긴 합니다. ( 현 시점기준 3.1 은 유지보수가 중단됐어요... )ServerCore.dll 도 3.1 로 뽑히고, nuget 으로 받아온 dll 도 프로젝트 버전에 맞게 바이너리에 잘 복사되더라구요.추가) 혹시나 NetCore 6.0 에서 3.1로 변경 후 자동 생성된 static using 코드들로 인해 컴파일 에러가 자꾸 발생한다면, 해당 프로젝트의 proj 파일을 열어서<ImplicitUsings>disable</ImplicitUsings>로 바꿔주고, namespace 때문에 컴파일 에러 나는 부분들을 하나씩 수정해주면 해결됩니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
SendBuffer.cs 삭제 후 대체 되는 부분의 장단점?
루키스님 안녕하세요?기존 SendBuffer.cs는 메모리 누수 이슈 등으로 삭제하고새로운 기법을 알려준다고 말씀해주셨는데 그게 최종적으로 ClientSession.cs의 Send()함수가 되는게 맞을까요? (아래 코드블록)맞다면 Send()가 호출 될 때 마다 버퍼를 새로 생성하기 때문에SendBuffer.cs의 강점이었던 하나의 거대한 메모리를 사용하면서 버퍼 생성 및 Copy가 줄어드는 이점이 없어진 걸로 이해가 됐는데,기존의 SendBuffer.cs와 새로운 대체된 Send()의 장단점이 각각 궁금합니다. ClientSession.cspublic void Send(IMessage packet) { string msgName = packet.Descriptor.Name.Replace("_", string.Empty); MsgId msgId = (MsgId)Enum.Parse(typeof(MsgId), msgName); ushort size = (ushort)packet.CalculateSize(); byte[] sendBuffer = new byte[size + 4]; Array.Copy(BitConverter.GetBytes((ushort)(size + 4)), 0, sendBuffer, 0, sizeof(ushort)); Array.Copy(BitConverter.GetBytes((ushort)msgId), 0, sendBuffer, 2, sizeof(ushort)); Array.Copy(packet.ToByteArray(), 0, sendBuffer, 4, size); Send(new ArraySegment<byte>(sendBuffer)); }
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment<byte>.Offset의 정의와 사용법이 궁금합니다.
안녕하세요?AraaySegment 관련해서 코드리뷰하다 궁금한게 생겨서 질문 드립니다. ArraySegment<byte>.Offset이 잘 이해가 안가서요. 제가 알아 본게 맞다면?Offset은 항상 0이 아니고 데이터가 시작하는 위치를 가르킴그렇다면 _buffer는 항상 0부터 데이터를 사용하고 있으므로 항상 Offset은 0임그렇다면 RecvBuffer.cs의 이 코드는 이렇게 바꿔도 되지 않을까? 원래 코드public void Clean() { int dataSize = DataSize; if (dataSize == 0) { // 남은 데이터가 없으면 복사하지 않고 커서 위치만 리셋 _readPos = _writePos = 0; } else { // 남은 찌끄레기가 있으면 시작 위치로 복사 Array.Copy(_buffer.Array, _buffer.Offset + _readPos, _buffer.Array, _buffer.Offset, dataSize); _readPos = 0; _writePos = dataSize; } } 수정 후 Array.Copy(_buffer.Array, readPos, buffer.Array, 0, dataSize); _readPos = 0; _writePos = dataSize; 마찬가지로 Session.cs 에서 _buffer정보를 리턴해 주는 이 코드는 이렇게도 되지 않을까?수정 전void RegisterRecv() { if (_disconnected == 1) return; _recvBuffer.Clean(); ArraySegment<byte> segment = _recvBuffer.WriteSegment; _recvArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); 수정 후_recvBuffer.Clean(); ArraySegment<byte> segment = _recvBuffer.WriteSegment; _recvArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); 제가 계속 곱씹어봤는데 Offset에 대한 이해가 안되서 ㅜㅜ 답변해주시면 감사하겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코드 구현한 부분에서 Disconnect()함수가 동시 실행되는 경우가 있나요?
여러 스레드에 의해 동시에 Disconnect()가 여러번 실행되는 걸 막으려고 Interlocked를 사용하여 처리한다고 하셨는데 현재 Session#1 강의 코드까지는 위와 같은 상황이 발생할 부분이 보이지 않는다고 생각하는데 맞을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
상태패턴과 브랜드 트리가 필요한 프로젝트의 경우
결국 상태 패턴을 적용해서 그걸 그대로 애니메이터의 스테이트로 연동하면서정리하셨는데 만약 상태패턴을 그대로 쓰면서 브랜트 트리를 꼭 써야하는 프로젝트면어떤식으로 정리하시는지 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Extension 에서 구현한 함수의 이름이 해당 클래스에 이미 구현된 함수와 이름이 겹치는 경우
안녕하세요, Extension 관련 구현에 대해 연습해보다가 궁금증이 생겨 질문드립니다. 예를들어 우리가 구현한 Extension 클래스 안에 AddUIEvent 와 같은 메소드를 추가해주면서 this GameObject go 라는 문법을 써줌으로서, 마치 GameObject 의 함수인 것처럼 쓸수 있게되었는데요,만약 Extension 클래스안에 ToString 이라는 함수를 만들어주면, 실제로는 최상위 클래스인 Object 클래스 내에 구현된 ToString 이 호출되는 것을 확인했습니다. 이럴 경우, 이름을 적절히 잘 회피해서 쓰는 방법 이외에 내가 구현한 함수를 쓰도록 하는 다른 방법이 있을까요?
-
해결됨새싹부터 시작하는 Unity 게임 개발
섹션2. 메서드와 접근자에서 잘못된 설명이 있어요.
안녕하세요. public 접근자를 붙인 변수를 전역 변수,private 접근자를 붙인 변수를 지역 변수라고 설명하셨는데 이는 잘못된 설명 같습니다. 확인 후 수정 부탁드립니다.수고하세요.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
pending과 listen의 backlog와는 어떤 관계가 있는건가요?
Session #1강의 1분대에서 backlog라고 최대 대기 수를 두었기 때문에 동시다발적으로 pending이 false가 뜨는 경우가 현실적으로 없다라고 하셨는데 잘 이해가 안됩니다... ㅠㅠ
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
유저 인벤토리 Pt.2
InventoryItemDataList에 유저가 보유한 아이템 목록이 저장하고 해당 리스트 객체를 PlayerPrefs로 저장할 때 JSON을 쓰는 이유는 PlayerPrefs에서 int, float, string만 저장할 수 있기 때문에로 이해했는데 맞나요? 그리고 굳이 JSON 이여 할 이유가 있나요? 또 PlayerPrefs에 유저가 접근이 가능하다고 하는데그러면 악의적으로 변형이 가능하지 않나요?이 경우는 어떻게 대비하나요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
3:16초에 근데 이렇게 해가지고 부분에 "{}"를 만들어서 자식 node들을 생성하던데 왜 중괄호로 감싸게 만드는 건가요?
static TreeNode<string> MakeTree() { TreeNode<string> root = new TreeNode<string>() { Data = "R1 개발실" }; { { TreeNode<string> node = new TreeNode<string>() { Data = "디자인팀" }; node.Children.Add(new TreeNode<string>() { Data = "전투" }); node.Children.Add(new TreeNode<string>() { Data = "경제" }); node.Children.Add(new TreeNode<string>() { Data = "스토리" }); root.Children.Add(node); } { TreeNode<string> node = new TreeNode<string>() { Data = "프로그래밍팀" }; node.Children.Add(new TreeNode<string>() { Data = "서버" }); node.Children.Add(new TreeNode<string>() { Data = "클라" }); node.Children.Add(new TreeNode<string>() { Data = "엔지" }); root.Children.Add(node); } { TreeNode<string> node = new TreeNode<string>() { Data = "아트팀" }; node.Children.Add(new TreeNode<string>() { Data = "배경" }); node.Children.Add(new TreeNode<string>() { Data = "캐릭터" }); root.Children.Add(node); } } root노드를 만들고 그 아래에 {}를 열어서 내용을 작성하는 이유가 궁금해요.
-
미해결[켠김에 출시까지] 유니티 방치형 키우기 게임 (M1 + C1)
다운 받은 맵 프리팹을 오픈해보니 핑크색으로 보이네요
구글링을 해보니 shader 문제라고 하는데 세팅하는 방법이 있을까요?2022.3.45f1 lts 버전입니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
비쥬얼 스튜디오 업데이트가 된건가요..? 매개변수 오류 관련 질문
강의에서는 out을 사용했을때 매개변수 할당 안해도 오류 없이 잘 되던데 제가 했을때는 out을 쓰면 할당을 해줘야하고 ref를 써보니까 할당 안해줘도 그냥 되네요..?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
쓰레드 질문
선생님 강의 잘 듣고 있습니다. 혹시 쓰레드 시작쓰레드 종료stop호출종료 대기중종료 성공 순으로 로그가 떠야 하는데다른 온라인 게임 실행 도중에 디버깅을 하면로그 순서가 조금 바뀌더라구요 이 현상은 왜 일어나는건가요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
개발 도서 질문
혹시 게임개발이나 개발관련 추천하시는 책이 있으실까요?최근 남는시간에 책을 읽고있는데 지식공유자님이 추천하시는 책을 읽어보고 싶어서 질문드립니다!책을 많이 읽었던편이 아니라 유명한거라도 괜찮습니다 있으시다면 2-3가지 정도 부탁드립니다 (_ _)감사합니다 추가로 섹션6에 업적/미션 Pt.2에 Resources/Textures 폴더를 누락하신 듯 합니다.때문에 IconGolds와 IconGems 텍스쳐를 불러오지 못하네요통합강의자료에는 있어서 그걸로 임포트 했습니다!
-
미해결밑바닥부터 시작하는 왕초보 유니티 2D 게임제작
이수증 관려 문의 드립니다.
강의 추가 예정 때문에 이수증을 발급 받을 수 없습니다.제가 이수증이 필요해서 그런데 강의 추가는 언제 쯤 가능한가요?아니면 현재까지 내용을 이수증을 받을 수 있을까요?