Init()을 static으로 선언해 주신 이유가 있을까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Init()을 static으로 선언해 주신 이유가 있을까요?
- C#
- unity
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
Init()을 static으로 선언해 주신 이유가 있을까요?
미해결
레트로의 유니티 C# 게임 프로그래밍 에센스
TPS에서 캐릭터가 이동할 때 0.07정도의 높이로 캐릭터가 띄어지게 되게 됩니다. 수정을 어떻게 해야하나요??
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part2: 자료구조와 알고리즘
안녕하세요 강사님! 강의 잘 듣고 있습니다. 질문 게시판 글도 간단히 보면서 강의를 보고 있는데요. int currentTick = Environment.TickCount & Int32.MaxValue; 위의 코드를 답변으로 주신 내용이 있던데 c#강의에 다시 가서 &비트 연산을 봐도 코드 이해를 못해서요. 부호가 제거된다는 것 같은데 왜 부호가 없어지고 코드가 정상으로 돌아가는지 잘 모르겠습니다. 답변 부탁드립니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요 선생님! 현재 꿈을위해 1인개발을 준비하고 있는 게임업계 아트출신 학생입니다. 선생님의 강의와 c#문법책, 여러가지 자료들을 복합적으로 보면서 공부를 진행하고 있는데요. 아무래도 여러가지를 동시에보다보니 의문점이 생겼습니다. 아무래도 개발을 하다보면 문법적으로 자주쓰이거나, 필수적으로 느껴지는것들이 있고, 선호도나 사용성이 떨어져서 드물게 사용되거나, 다른문법으로 대체가능한것도 있으리라 판단됩니다. 선생님의 강의를 보면서 도움이 아주 많이되어서 감사하면서도, 그 와중에 책에서만(아무래도 두껍고 많은양을 다루다보니...) 다루는 내용이 있는데, 선생님께서 강의로 만들어주신 문법적인 부분위주로 공부를 끝내고, 개발도중 필요한 부분이 생기면 그때 추가적으로 더 공부해도 개발에 무리가 없을까 하는 의문이 생겨서 질문드립니다. 솔직히 책을 다 공부하면 좋겠지만, 워낙 양이많고 공부만 하면서 하기보단, 개발을 진척시키면서 자연스럽게 문법을 익히며 개발과 공부를 동시에 진행하는게 효율적일것 같아서 필수적이거나, 조금더 유용한부분 위주로 공부를 끝내고 진행을 하는게 좋을것 같다는 판단에 질문 드려봅니다! 긴글 읽어주셔서 감사합니다!
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
선생님 언제나 좋은 강의 잘 보고 있습니다. 싱글톤패턴 복습과정 중 이것저거 테스트하다 s_instance에 값을 넣어 줄 때 저렇게 그냥 바로 GetComponent<>(); 해버려도 작동이 되더라구요 GetComponent 함수가 특정 게임오브젝트에 있는 Component 를 가져오는것인 줄 알고 사용했는데 위 코드는 왜 동작하는지 이유를 알려주실 수 있을까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
선생님 안녕하세요 강의 너무 잘듣고있습니다. 수업과 관련없는 질문이지만, 저는 현재 플레이팹 데이터 + Azure 클라우드 스크립트 기반의 간단한 싱글 모바일 게임을 제작하려고 합니다. 선생님의 유니티 수업 이후, 게임 서버와 DB, 웹서버 강의를 수강하게 되면 제가 이용하는 서버 기반 API는 수업과 달라도 지금 수업처럼 프레임워크를 짜는데 참고할 수 있을지 궁금해서 이렇게 질문을 드리게 되었습니다!
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요, string serialize를 하여 read, write 코드를 추가한 이후 확인해보려 코드를 실행해보았는데, 처음엔 name이 잘 나오지만 client에서 5번 연속으로 보냈을 때 name이 null인건지 나오질 않아 확인해보니, 아래와같이 처음 이후에는 name이 null이 되는 것 같습니다. 해당 이유를 찾기가 힘들어서 왜이러는지 이해가 되질 않습니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요, string serialization을 할 때 Array.Copy를 한 이유에 대해서 다른 long, ushort등과같은 데이터들은 TryWriteBytes()메서드를 사용하여 바로 dest인 buffer에 바이트를 써 주는 메서드가 구현되어있지만, string을 인자로 받는 메서드와 byte배열을 받는 메서드는 없어서 GetBytes한 이후에 Array.Copy로 buffer배열에 직접 복사한것같은데, 맞을까요? 그럼 더 궁금한건, TryWriteBytes는 ValueType만 바이트로변환해서 dest에 쓸 수 있도록하는 메서드인거라고 이해하면 될까요? string, byte[]등과같은 reference type을 인자로 받는 메서드는 구현이 안되어있는 이유를 혹시 아시는지요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요, Serialization#2 강의를 따라 치는 도중 실행을 하면 recv할 때 playerid가 0으로 나와 디버깅을 하려고 했지만, 디버깅시에 OnConnected : [fe80::c104:b687:d2b9:82d8%14]:7777 OnDisconnected : [fe80::c104:b687:d2b9:82d8%14]:7777 Unhandled exception. System.ObjectDisposedException: Cannot access a disposed object. Object name: ' System.Net .Sockets.Socket'. at System.Net .Sockets.Socket.SendAsync(SocketAsyncEventArgs e, CancellationToken cancellationToken) at System.Net .Sockets.Socket.SendAsync(SocketAsyncEventArgs e) at ServerCore.Session.RegisterSend() in C:\Users\jiw72\CsharpServer\MMORPG\Server\ServerCore\Session.cs:line 124 at ServerCore.Session.Send(ArraySegment`1 sendBuff) in C:\Users\jiw72\CsharpServer\MMORPG\Server\ServerCore\Session.cs:line 97 at DummyClient.ServerSession.OnConnected(EndPoint endPoint) in C:\Users\jiw72\CsharpServer\MMORPG\Server\DummyClient\ServerSession.cs:line 98 at ServerCore.Connector.OnConnenctCompleted(Object sender, SocketAsyncEventArgs args) in C:\Users\jiw72\CsharpServer\MMORPG\Server\ServerCore\Connector.cs:line 42 at System.Net .Sockets.SocketAsyncEventArgs.OnCompleted(SocketAsyncEventArgs e) at System.Net .Sockets.SocketAsyncEventArgs.ExecutionCallback(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location where exception was thrown --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.ExecutionContext.Run (ExecutionContext executionContext, ContextCallback callback, Object state) at System.Net .Sockets.SocketAsyncEventArgs.<>c.<.cctor>b__177_0(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading.ThreadPoolBoundHandleOverlapped.CompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped) at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pNativeOverlapped) C:\Users\jiw72\CsharpServer\MMORPG\Server\DummyClient\bin\Debug\netcoreapp3.1\DummyClient.exe(프로세스 25828개)이(가) 종 이렇게 중간에 예외처리가되어 종료가됩니다. 뭔가 프로세스 단계별 실행을 해보았을 때, dummyclient를 클릭하고 디버깅하면 dummyclient만 디버깅되고 server를 클릭하고 디버깅하면 server만 디버깅되더라구요. 그래서 여러 시작 프로젝트를 한것처럼 디버깅도 여러 프로젝트를 동시에 할 수 있도록 하는 방법은 없는건가요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하세요 .NET Core를 사용하려면 저렇게 인스톨러에서 설치해서 하는것이 맞는건가요? 맞다면 .NET Core가 지원되지 않는거 같은데 어떻게 해야할까요?
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
public static ArraySegment<byte> Open(int reserveSize) { if (CurrentBuffer.Value == null) { CurrentBuffer.Value = new SendBuffer(ChunkSize); } if (CurrentBuffer.Value.FreeSize < reserveSize) { CurrentBuffer.Value = new SendBuffer(ChunkSize); } return CurrentBuffer.Value.Open(reserveSize); } Sendbuffer에서 남은버퍼를 반환해주는 open함수에서 필요한 사이즈가 현재 남아있는 free사이즈보다 큰 경우(CurrentBuffer.Value.FreeSize < reserveSize) 새로 sendbuffer를 CurrentBuffer.Value에 넣는데, 아직 CurrentBuffer.Value 에 보내지 못한 데이터가 있는 경우에 open을 해버리면 새 sendbuffer가 CurrentBuffer.Value로 치환되어버려서 데이터가 날라가버리는 것 아닌가요? 즉, 예를들어 아직 100명한테 다 안보냈는데 새로 할당해버리면 안되지않나요? _usedSize를 recvbuffer에서처럼 땡겨서 쓰지 않는 이유가 누군가가 계속 이전에 있던 부분(현재 사용 중인 부분)을 참조하고 있을 수도 있기 때문에 그냥 증가시키는 방법으로 한 것 처럼.. CurrentBuffer.Value 도 저렇게 그냥 새로 할당해버리면 안될 것 같다고 생각이 계속 듭니다 ㅜㅜ
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
안녕하세요 루키스님! 항상 좋은 강의를 만들어 주셔서 정말 감사합니다. 오랜만에 복습하러 들어왔는데, 강의 리뉴얼을 진행중이시군요! 혹시 리뉴얼이 파트1만 해당인가요? 아니면 점차 모든 파트를 리뉴얼 하실 예정이신가요? 선수지식 하나도 없는 상태에서 2파트 4파트 강의를 들었을 때, 너무 어려워서 울면서 나간 기억이 나네요ㅋㅋㅋㅎㅋㅋㅎㅋㅠㅠ
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
inspector 창에 다른 파라미터들?이 뜨게 하려면 어떻게 해야 하는지 알고싶습니다... 어떻게 이벤트를 생성해도 창이 뜨지 않아서 ㅠㅠ 넘어가질 못하고 있습니다
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
안녕하십니까 선생님 귀한 강의 항상 감사한 마음으로 듣고 있습니다. 아래 질문과 관련해 릴리즈 모드로 해서 실행을 하면 먹통이 되어야 하는데, 저는 먹통이 안 되고 "종료성공"까지 다 나옵니다. 혹시 이유를 알 수 있을까요? 참고로 아래 질문의 증상과 저도 동일하게 나타났고 닷넷 프레임워크로 프로젝트를 만들었습니다. 혹시나 해서 닷넷코어로 프로젝트를 만들어서 해보면 수업처럼 먹통이 되긴 하는데, 닷넷프레임워크로 프로젝트 만들면 릴리즈로 실행 시 먹통이 안 되고 잘 실행이 됩니다. 감사합니다~! --아래 질문---------------- 안녕하세요, 선생님 c# 게임 서버 강의를 수강하다가 선생님과 다르게 작동하는 부분이 있어서 질문드립니다 6번째 강의인 컴파일러 최적화 강의에서 코드를 실행하면 4:25초경에 쓰레드 시작! 쓰레드 종료! Stop 호출 종료 대기중 종료 성공 이 순서대로 선생님은 실행이 되는데요, 저는 쓰레드 시작! Stop 호출 종료 대기중 쓰레드 종료! 종료 성공 순서로 쓰레드 종료!가 더 늦게 뜨네요 강의에서처럼 _stop에 volatile을 붙이면 선생님이랑 같은 값이 나오긴 하는데 컴퓨터 성능 차이 때문일 수 있나요? 코드가 다른 부분은 없습니다. 몇 번이고 확인했어요 감사합니다!
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
힙과 스택을 공부해보면 new 연산자를 통해서 각기 다른 객체를 만들수 있는데 왜 굳이 clone 함수를 만들어서 하는건가요? 기존의 hp attack 값을 그대로 복사한체 새로운 객체를 만들수있어서 그런가요??
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
안녕하세요 수업을 듣다가 16분쯤에 질문이 생겨 남깁니다. 재귀라 하면 자식의 자식, 자식의 자식의 자식까지 쭉 돌면서 계속 찾아야하는 거라고 생각했는데 현재 코드대로라면 자식의 자식까지만 탐색하고 종료한다고 생각합니다. else - foreach에서 FindChild<T>(component, name, true)로 함수를 다시 호출해야하는 건 아닌지 궁금합니다. 감사합니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
C_Chat chatPakcet = packet as C_Chat 여기에서 as로 형 변환을 하는것과 안하는 것의 차이점을 알고 싶습니다
해결됨
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문
구조체 타입을 new로 생성해 값을 복사할 경우, 얕은 복사가 일어날까 싶어 확인해보니 깊은 복사가 일어나는 것을 확인했습니다. 구조체는 기본적으로 복사 타입으로 생성되지만, new를 통해 생성된 변수는 힙영역에 참조 타입으로 생성되는걸로 알고 있습니다. 구조체에 new로 동적할당을 할경우 특별하게 작용하는 것인지, 혹은 제가 잘못 이해한 것인지 질문드립니다.
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
강의에서 stat 클레스 생성후 start Start()문이 PlayerController Start() 보다 느리게 만들어져 speed값이 0이 되는 문제가 발견 됬습니다 이럴때는 어떻게 하면 좋을까요
미해결
[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문 1. TLS로 SendBuffer를 스레드별 전역변수로 지정했으면, SendBuffer 멤버필드인 buffer도 스레드별 전역변수가 아닌가요? 그런데 왜 _buffer는 공유자원처럼 다수의 스레드가 참조하는 건가요?(28:39 부분) 질문 2. 만약 _buffer는 TLS 여도 다수의 스레드가 볼 수 있다고 쳐도, 어차피 Send하는 부분은 그 스레드가 넣은 부분만(handler에서 close로 보내준 segment영역) 보내주기때문에 상관없는 것 아닌가요? (하지만 애초에 질문 1이 이해가 안됩니다.) 질문 3. 이전에 Session#2 강의 시작부분에 설명해주신 내용에서, SEssion의 receive는 OnRecvCompleted()메서드에 여러 스레드가 동시다발적으로 들어가는 경우는 없다. 라고 하셨는데, 해당 강의에서는 어떤 이유로 멀티스레드를 생각해야 하는 상황이 된건지 궁금합니다. 질문 4. Session 객체는 connect되는 client당 하나씩이니까 client와 연결 될 때 마다 새로운 session객체가 생성되어 다 따로 만들어지는 것이기 때문에 애초에 _sendQueue도 스레드별로 따로 아닌가요? 질문 5. _buffer는에서 읽기만 하는거니까..(30:03) 라고 하셨는데 읽는 부분이 어느부분인지, deq하는것을 읽는것이라고 표현하신건가요? 어떤 경우들을 말슴하시는건지 이해가 안되어 헷갈리는게 많습니다. 일단 질문은 더 있지만, 대표적인 질문들로 올려봅니다