묻고 답해요
145만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
EC2 서버 패킷 이슈
안녕하세요 루키스님!저는 강의에서와 달리 움직임 방식을 int 단위가 아닌 float 단위로 움직일 때마다 C_Move 패킷을 보내게 설계했습니다(아마 이러면 패킷을 쏘는 양이 더 많을 것 같아요!)해당 로직을 로컬 서버에서 작동을 시키고 클라이언트를 저의 로컬 ip에 접속하게 하면 패킷이 밀림 없이 잘 동작하지만 ec2에 서버를 올리고 클라를 ec2 IP에 접속 시키고 동작시키면 패킷이 밀려서 그런진 몰라도 플레이어가 이동하다가 트레이서 현상이 발생합니다. 총알을 쏘면 트레이서를 하지는 않지만 버벅거리면서 나가구요.기본적으로 Move 로직이 강의와 마찬가지로 클라에서 움직이고 서버에 위치를 통보하는 방식입니다. 이 방식이 패킷이 밀림으로써 클라는 나가 있지만 서버에서의 반영으로 인해 위치가 다시 트레이서 되는 건가 보다 싶어서움직임 로직을 바꿨습니다. 클라에서 움직인다고 인풋을 주면 패킷을 서버로 보내고 서버에서 움직임을 바꾼 후에 클라에 반영이 되게 바꿔봤습니다! 하지만 이 방식도 로컬에선 잘 동작하지만 ec2 서버에서는 버벅거리더라구요...ec2 인스턴스의 유형을 높은 걸로 해도 똑같고 최적화를 많이 했다고 생각했는데도 계속 버벅거리네요... 혹시 방법이 있을까요... 차이는 로컬 서버냐 ec2 서버냐의 차이인거 같은데, 애초에 물리적인 거리가 있기 때문에 이런걸까요...
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 나가게하려면 따로 설정이 필요한가요?
안녕하세요 고박사님!활용예제 마지막예제인 총알 발사하는 부분 질문입니다!위의 사진을 보시면 player위로 총알이 나오게되는데 고박사님 영상으로 보면 player 뒤로 총알이 생성되더라구요.. 하이라키창도 고박사님과 같은데 혹시 어떤 부분을 확인해보면 될까요?
-
미해결따라하면서 배우는 고박사의 유니티 기초
총알이 player 뒤로 생성되게 따로 설정이 필요한가요?
강의해주신 내용대로 작성한 것 같은데.. 계속 돌려봐도 어떤게 다른지 모르겠어서 질문드립니다..!고박사님과 하이라키창이 같게 총알이 생성이 되는데, 저는 총알이 player 위에 생성이되어서... 혹시 어떤부분을 확인하면 될까요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
안녕하세요! 마지막에 올라와있는 프로젝트는 현재 최종 완료된 버젼인가요?
안녕하세요! 마지막에 올라와있는 프로젝트는 현재 최종 완료된 버젼인가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] 번외편: ASP.NET Core 심화편
Rookiss 님 수업 커리큘럼에 관한 질문이 있습니다!
안녕하세요 Rookiss님!저도 Rookiss님처럼 보안을 공부하다 현재는 모의해킹 업무를 하고있고게임개발은 너무 어려운거 아닌가 하는 걱정만 하다가 이것저것 코딩하다보니 이제는 겁먹을 필요가 없다고 생각해서 게임개발을 시작해보려고 합니다! 지금 고민중인 부분은 강의 커리를 어떻게 탈지에 대한 고민인데요.[게임 프로그래머 입문 올인원] 강의를 수강할지MMORPG 게임 개발(유니티 + C#) 로드맵을 수강할지 고민중 입니다 ㅠㅠ어떤걸 수강하는게 좋을 지 추천 해주실 수 있을까요?
-
해결됨[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
캐릭터가 여러명이라면...
루키스님 유니티 3강을 완료하고 게임을 만들어 보려고 하다가 막막하던 참에 신규 강의가 나와서 기쁜맘으로 학습중입니다! 이번 강의에서 강조하신 객체들끼리 참조하는 부분이 너무 어려워요. 유저가 관리하는 캐릭터가 여러명일때는 어케 구조를 만들어야 하는지 감이 안잡힙니다. 예를 들어 탕탕 특공대 "용병단" 이라서 유저가 여러 캐릭터를 조작한다면 어떤 캐릭터를 유저가 사용할지 모르니 드래그 앤 드롭 방식도 맞지 않는것 같고 Find를 사용하는 방식도 캐릭터가 많이 질수록 비효율적인것 같고 이럴땐 어떻게 구조를 만들어야하나요? 데이터 매니저 클래스에 리스트나 딕셔너리를 만들어서 객체들을 통째로 들고있다가 필요할때마다 불러서 참조하는게 맞는 접근방식일까요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
Utils에 있는 GetOrAddComponent 질문이 있습니다.
강의 34분 10초에서 PlayerController를 가져올 때GameObject go = Managers.Resource.Instantiate("Slime_01.prefab"); go.name = "Player"; PlayerController controller = go.GetOrAddComponent<PlayerController>();그냥 자연스럽게 go 뒤에 GetOrAddComponent 함수를 사용하시던데 이렇게 되는 이유가 뭔가요...?PlayerController controller = Utils.GetOrAddComponent<PlayerController>(go);저는 위에 코드처럼 호출해서 사용해야 한다고 생각했습니다.
-
미해결레트로의 유니티 C# 게임 프로그래밍 에센스
text가 아닌 TextMeshPro를 사용해도 괜찮나요?
2021.3.20f1 버전 사용중입니다.기존 Text가 UI의 Legacy 폴더 안에 있고 원래 Text가 있던 자리에 TextMeshPro가 있네요.인터넷을 좀 찾아봐도 TextMeshPro를 권장하는 사람들이 많더라구요시간이 지나면서 새로운 버전이 나온것 같던데 사용법이 비슷하면 TextMeshPro를 사용하는게 더 좋겠죠?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
센드 리시브 버퍼를 살리고 싶어서 몇가지 물어봅니다.
강사님 께서는:SendBufferHelper(버퍼)가 세션 외부에 있는 상황은 바람직 하지만플레이어 세션중(PacketSession)하나가 send() 처리를 못하고 이런 일회용 버퍼를 계속 물고 있을 수 있다.(ex 사용자가 엘리베이터를 타서 통신이 안되는 경우)그럼 참조정리를 못하니 GC가 수거를 안해간다. 이 버퍼 릭킹 문제를 처리하기 위해 레퍼런스 카운트를 적용할수도 있다 라고 말씀하셨는데. C#에서 이를 구현하는데 난관이 있어서요(그점도 이미 말씀하셨었죠), 아래와 같습니다. 레퍼런스 카운트 사용 방식 (예상)만약 100명의 사용자에게 브로드 캐스팅 할경우 이 버퍼에 대한 레퍼런스 카운트를 100으로 세팅한다.각 세션에서(100개) 각각 send에 성공해서 버퍼에 대한 참조가 끝날 때마다 1씩 감소시킨다.이 카운트 감소 처리를 할때 쓰레드 동기화에 신경써야 한다.문제 1 ) 이런 동기화 처리도 성능에 영향을 준다. 레퍼런스 카운트 처리 때문에 샌드함수는 결국 지연되는 것.문제 2) 매번 다 쓰인 버퍼의 레퍼런스 카운트가 0이 되었다 한들, 그것을 GC가 "항상" "확실히" 수거해가는지 테스트할 방법을 모른다.문제 3) 레퍼런스 카운트가 0이 안되고 1이 유지되어서 어딘가에서 send가 막혀있는걸 확인 했을때 그 세션을 Disconnect()한다고 해도 GC가 이 버퍼를 "항상", "확실히"수거해 갈지 알 수 없다 (테스트 방법의 부재) 그래서 아래와 같은 질문을 드립니다.!! 질문 0 !!) 강사님께서 메모리 릭에 대한 우려가 있다고 말씀하셨는데, 그게 순전히 우려인지, 혹시 테스트를 해보신건지 궁금합니다.다시 말해서 C#에서 샌드 리시브 버퍼를 그냥 쓰기로 강행하면 나중에 낭패 볼까요? 질문 1 ) 위의 2,3번 문제를 체크할 수 있는 방법이 있을까요? 질문 2 ) 요즘 C#서버가 많이 보입니다. 모두 이런 문제를 고려했을텐데요, 그냥 매 순간 지금처럼 조각조각 패킷을 만들어 보내는게 대세인가요? 아니면 다른 방법이 있나요? 질문 3) 위의 1번 문제의 성능 감소가 클까요? 질문 4) 혹시 버퍼 크기를 4096 * 100 이 아니라 250, 300 등 작게 잡으면 이문제를 무시해도 될까요? P.S 이 강의 시리즈가 매우 큰 도움이 되고 있습니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
경합조건과 임계영역의 차이
안녕하세요. Interlocked 과목 중 경합 조건Race Condition에 대한 수업 잘 들었습니다.과거 네트워크와 운영체제 시간에 배웠던 임계 영역과 경합 조건에 대한 개념이 헷갈려서 질문 드리고 싶습니다.말씀해주셨던 다수의 쓰레드들이 하나의 데이터 혹은 그러한 영역에 접근하고자 할 때 생기는 문제를 저는 경합 조건이라고 이해했는데요.이 개념이 혹시 임계 영역을 제가 잘 못 이해하고 있는지, 혹은 경합 조건에 대해 제대로 이해하고 있는지 궁금합니다.또 선생님께서 생각하시는 임계영역과 경합조건의 차이는 어떠한 것인지도 궁금합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
펙토리 함수가 꼭 필요한건가요? 그냥 세션으로 받으면 안되요?
public void Connect(IPEndPoint endPoint, Session session) // 사용하는 부분//connector.Connect(serverEndPoint, () => { return new GameSession(); }); GameSession gameSession = new GameSession(); connector.Connect(serverEndPoint, gameSession);Func 형 말고 그냥 Session을 참조로 받아서 하면 안되나요? 코드가 돌긴 하던데..
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
curriculum learning
안녕하세요, 강의 잘 보고 있습니다.다름이 아니라, 현재 교재 개정 이전판에는 커리큘럼 러닝에 대한 부분이 함께 소개되어있었는데 현재 교재나 강의에는 이 부분이 다뤄지지 않는 것 같아 질문 드립니다. 혹시 지금은 커리큘럼 러닝이 유니티 상에서 불가능한가요? 지금도 활용할 수 있는 방법이 있는지 궁금합니다. 감사합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진
인벤토리 실습 #2 질문 AddUIEvent활용
인벤토리 실습을 보다 가 이해가 안가는 부분이 생겨서 질문을 남깁니다.보시면(안보일 수도 있겠지만), Get<GameObject>((int)GameObjects.ItemIcon).AddUIEvent((PonterEventData) => {Debug.Log)})를 했는데.. 여기서 Action 대리자로 람다식이 들어 가서 실행 이 되는건 알겠는데, ㅇ파라미터에 게임오브젝트는 안들어갔는데 이게 왜 바인드가 되는거죠?
-
해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
error->하이퍼파라미터들이 안떠요
C:\mlagents_start\ml-agents-release_17>mlagents-learn config\ppo\3DBall.yaml --run-id=tutorial_5_20_16 ▄▄▄▓▓▓▓ ╓▓▓▓▓▓▓█▓▓▓▓▓ ,▄▄▄m▀▀▀' ,▓▓▓▀▓▓▄ ▓▓▓ ▓▓▌ ▄▓▓▓▀' ▄▓▓▀ ▓▓▓ ▄▄ ▄▄ ,▄▄ ▄▄▄▄ ,▄▄ ▄▓▓▌▄ ▄▄▄ ,▄▄ ▄▓▓▓▀ ▄▓▓▀ ▐▓▓▌ ▓▓▌ ▐▓▓ ▐▓▓▓▀▀▀▓▓▌ ▓▓▓ ▀▓▓▌▀ ^▓▓▌ ╒▓▓▌ ▄▓▓▓▓▓▄▄▄▄▄▄▄▄▓▓▓ ▓▀ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▄ ▓▓▌ ▀▓▓▓▓▀▀▀▀▀▀▀▀▀▀▓▓▄ ▓▓ ▓▓▌ ▐▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▌ ▐▓▓▐▓▓ ^█▓▓▓ ▀▓▓▄ ▐▓▓▌ ▓▓▓▓▄▓▓▓▓ ▐▓▓ ▓▓▓ ▓▓▓ ▓▓▓▄ ▓▓▓▓` '▀▓▓▓▄ ^▓▓▓ ▓▓▓ └▀▀▀▀ ▀▀ ^▀▀ ▀▀ ▀▀ '▀▀ ▐▓▓▌ ▀▀▀▀▓▄▄▄ ▓▓▓▓▓▓, ▓▓▓▓▀ `▀█▓▓▓▓▓▓▓▓▓▌ ¬`▀▀▀█▓ Version information: ml-agents: 0.26.0, ml-agents-envs: 0.26.0, Communicator API: 1.5.0, PyTorch: 1.7.1+cu101Traceback (most recent call last): File "c:\users\owner\appdata\local\programs\python\python37\lib\runpy.py", line 193, in runmodule_as_main "__main__", mod_spec) File "c:\users\owner\appdata\local\programs\python\python37\lib\runpy.py", line 85, in runcode exec(code, run_globals) File "C:\Users\owner\AppData\Local\Programs\Python\Python37\Scripts\mlagents-learn.exe\__main__.py", line 7, in <module> File "c:\users\owner\appdata\local\programs\python\python37\lib\site-packages\mlagents\trainers\learn.py", line 250, in main run_cli(parse_command_line()) File "c:\users\owner\appdata\local\programs\python\python37\lib\site-packages\mlagents\trainers\learn.py", line 246, in run_cli run_training(run_seed, options) File "c:\users\owner\appdata\local\programs\python\python37\lib\site-packages\mlagents\trainers\learn.py", line 83, in run_training stats_writers = register_stats_writer_plugins(options) File "c:\users\owner\appdata\local\programs\python\python37\lib\site-packages\mlagents\plugins\stats_writer.py", line 47, in register_stats_writer_plugins if ML_AGENTS_STATS_WRITER not in importlib_metadata.entry_points(): File "c:\users\owner\appdata\local\programs\python\python37\lib\site-packages\importlib_metadata\__init__.py", line 266, in eq return self._key() == other._key()AttributeError: 'str' object has no attribute '_key'뭔가 실행은 되는 것 같은데 하이퍼파라미터는 안뜨고 오류만 떠요.python은 3.7.9이고, unity editor는 2021.1.18f로 했었어요. 어떻게 하면 오류를 제거하고 하이퍼파라미터들을 불러올 수 있을까요?(ml-agents-release_17 이용했어요)
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)
위치 동기화 기능구현 질문이 있습니다
선생님 안녕하세요 서버강의를 듣고 이를 응용하여 3축 좌표계에서 플레이어가 접속하면 프리팹을 생성하고, 트랜스폼 정보와 애니메이션 정보를 동기화하는 서버를 구현하였습니다.플레이어가 접속하면 생성되는 프리팹은 언리얼의 HasAuthority와 같이 로컬 클라이언트의 소유가 되어 클라이언트만 자신의 위치를 브로드캐스트하면 다른 플레어들은 위치를 수신하여 손쉽게 구현이 가능했습니다!하지만 월드에 미리 배치되어있는 무버블 오브젝트들은 어떻게 동기화를 해야하는지 궁금합니다. 누구의 소유도 아닌 공공(?)의 오브젝트들은 누가 동기화 패킷을 보내줘야하는지 어렵습니다 ㅜㅜ조금 더 설명을 하면, 특정 조건에 함수가 호출되어 움직이는 기능을 수행하는경우는 RPC로 원격지 클라이언트에서 함수를 호출할 수 있게 구현하였습니다.하지만 미리 씬에 배치되어있는 Sphere 오브젝트를 플레이어가 움직이면서 밀어RigidBody 연산으로 자연스러운 움직임을 어떻게 동기화해야하는지 잘 모르겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Disconnect 순서 문제질문드리고싶습니다!
가끔 결과가 위처럼 나오는데 이 문제는 서버단에서 RegisterRecv를 해주는 도중에 클라에서 send를 다해주고 Disconnect 해버려서 발생하는 문제인가요??위에 Seesion.cs : lin116은 OnRecvCompleted함수에서 OnRecv를 해주고 다시 RegisterRecv()<< 이 함수를 호출하는 줄입니다.
-
미해결[실전 게임 코드 리뷰] 유니티 캐주얼 게임 (엘리스팡)
멘토링 관련 질문이 있어요!
7월 멘토링 일정중에 웹서버는 어떤 것을 사용하는지 궁금합니다.
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
[Adaptive Performance] Adaptive Performance is disabled via Settings.
[Adaptive Performance] Adaptive Performance is disabled via Settings. 테스트 플레이중에 자꾸 이 메세지가 나와서 거슬리는데요 에디트 - adaptive Performance에 들어가서 해결하려고했느데 Android Provider 체크박스는 체크가 되지않고 Adaptive Performance Provider Management error. Failure reason: Error Message: Unable to add package [com.unity.adaptiveperformance.google.android]: Cannot find a version of package [com.unity.adaptiveperformance.google.android] compatible with this Unity version (2021.3.16f1)..Error installing package 이런 오류만 발생합니다 삼성 안드로이드 프로바이더는 체크가 되서 체크를 하는데 그래도 같은 메세지가 출력됩니다. 이유가 무엇인가요??
-
미해결[실전 게임 코드 리뷰] 유니티 클리커 게임
Visual studio 스타일
안녕하세요 루키스님 강의 잘 듣고 있습니다.루키스님이 사용중인 비주얼 스튜디오의 코드 색상? 테마? 를 사용하고 싶은데 어떻게 설정하면 되는지 알려주실 수 있을까요?
-
미해결[라이브 멘토링] 유니티 뱀파이어 서바이벌 장르 모작
스프라이트 강의 자료는 어디있나요
강의 목록 최하단부에 있는 소스코드 자료는 너무 양이 방대해서 거기서 스프라이트만 임포트하기가 좀 부담스럽더군요. 분명히 스프라이트만 따로있는 강의 자료 다운로드가 있을것같은데 찾기 어렵습니다.