안녕하세요, 이재현입니다.
1인 게임 개발자를 꿈꾸며 유니티를 독학으로 시작했고, 2009년부터 2012년 까지 1인 개발로 모바일 게임 10여종을 출시했습니다. 개발 도중 우연한 기회에 유니티 서적 집필과 오프라인 강의를 진행했습니다. 강의를 진행하면서, 잘 아는 것과 잘 가르치는 것은 다르다는 사실을 매번 깨닫고 있습니다. 이러한 경험을 바탕으로, 제가 가진 지식을 여러분들께 더 효과적으로 전달하기 위해 늘 노력하고 있습니다.
이번 강의가 여러분께 좋은 출발점이 되어, 즐거운 게임 개발자의 세계로 나아가는 데 작은 보탬이 되기를 기원합니다. ~
강의
수강평
- 절대강좌! 유니티6 - 네트워크 게임 개발 마스터클래스 (Part 1)
- 절대강좌 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
- 절대강좌 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
- 절대강좌 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
- 절대강좌 유니티6 - 네트워크 게임 개발 마스터클래스 (Part3) : Netcode로 개발하는 2D RPG
게시글
질문&답변
Netcode 사용시 운영관점 질문
안녕하세요. DongJu Yoo님,완강후 2회차 실습까지 ... 감사합니다.~추가적으로 실무에서 알아 두시면 도움이 될만한것 중에서 운영 관점에서 몇가지 말씀드리겠습니다.배포 자동화(CI/CD)실시간 멀티플레이 게임은 그 특성상 패치 주기가 짧습니다. 따라서 CI/CD 구축해 자동 빌드 및 배포 환경을 갖추는 것이 중요합니다. 기존의 Github Actions, 젠킨스 같은 경우 유니티의 특성과는 다소 거리가 있기에 유니티에 특화된 Cloud Build기능을 학습하시는 것도 좋습니다.모니터링 및 로깅Netcode 자체만으로는 세션 상태나 네트워크 품질을 추적하기 어렵습니다.패킷 손실, 지연(RTT), 서버 상태를 실시간으로 점검하는 것이 필요합니다. UGS의 Analytis(또는 AWS CloudWatch)의 활용법을 배우시면 좋겠습니다.확장성있는 설계 vs 확고한 설계초기에 룸 기반 구조(Relay)로 시작하고, 유저 수가 늘어나면 전용 서버(Dedicated Server) 구조로 전환한다는 전략을 세울수 있습니다. 하지만 그 구조를 변경하는 것이 쉽지 않습니다. 더군다나 라이브 상태에서는요. 저 개인적으로는 처음부터 Relay방식으로 갈지 아니면 데디 방식으로 할지를 처음 부터 확실하게 결정하고 설계 및 구현하시길 권해드립니다.개발환경 분리물론 깃으로 코드를 관리하시겠지만 운영 전에 반드시 개발 코드를 개발–릴리즈(스테징)–라이브 환경을 철저하게 분리하시고, 트래픽 테스트를 거치는 것을 추천드립니다.그리고 Unity 6 이후에는 UGS와 NGO의 통합성이 좀 더 강화되어 운영 환경 설정이 훨씬 간편하고(?) 단순해졌습니다. 특히 대시보드에서 다양한 모니터링과 기능이 계속 강화되고 있기에 예전보다 편리해졌습니다. 실습 잘 진행하시고 좋은 성과 있으시길 기원합니다.
- 0
- 1
- 7
질문&답변
캐릭터 이동 방식을 A* Pathfinding 에셋으로도 한번 부탁드립니다.
안녕하세요. 크리스팍님,말씀하신 부분은 간단하게나마 적용시키는 예제를 추가 콘텐츠로 올려드리겠습니다. 다만, 지금 준비중인 강좌가 마무리된 후에나 가능할것 같습니다. 추후 추가 영상을 올리게 되면 여기 게시글에 다시 한번 더 글을 남겨두겠습니다.완강하시길 기원합니다. ~
- 1
- 1
- 12
질문&답변
여기에 쓰인 기술이 적합할지 궁금하네요.
안녕하세요. 정인성님,네트워크 게임을 개발 중이시군요. 우선 최대 60 유닛 정도이면 굳이 Netcode for Entities 까지 고려하실 필요는 없을 것 같습니다. 한 유닛 당 매 프레임 송수신 데이터가 상태값, 위치 동기화 정도가 될텐데요. 물론 부하 테스트에서 모니터링을 해봐야 겠지만 충분히 감당할 수 있는 트래픽입니다. 만약 모바일 환경이라고 한다면 타겟 디바이스에 따라서 처리 부하가 발생할 수는 있겠지요. 이 지점에서는 케이스-바이-케이스라 확답은 어렵겠습니다. Netcode for Entities를 사용하더라도 클라이언트의 수많은 객체를 ECS로 관리하는 것일 분 네트워크 데이터 처리하는 부분에 있어서는 접속 기기의 네트워크 상태와 대역폭에 따라 레이턴시가 달라질 수 밖에 없는 구조입니다. 따라서, 자동으로 답변된 내용에 있는 "무거운 환경과 동기화 수가 많다면 성능문제가 생길 수 있다" 라는 의견은 일반론 적인 답변이라고 생각힙니다. NGO를 장점은 중간 규모의 네트워크 게임에는 손쉽게 사용할 수 있도록 설계가되어 있습니다. 유니티 백엔드(UGS)와 완벽한 에코 시스템을 갖추고 있어 다양한 기능을 쉽게 개발하실 수 있습니다.다만 Dedicated Server 작업시에 직접 호스팅(AWS) 또는 유니티 Multiplay Hosting 시 운영비용과 초기 설정 부분에 있어서 비교하신 후 선택하시면 되겠습니다. 저도 답변이 길어졌습니다. 여러가지 고려할 상황이 있지만 주어진 내용만을 단편적으로 놓고 답변드린다면 Netcode For GameObject 로도 충분히 가능합니다. 좋은 성과 있으시길 기원합니다. ~
- 0
- 2
- 17
질문&답변
7강 재생이 안됩니다
안녕하세요. WooRam Jeon 님, 유독 7강만 재생이 잘 안되는것 같습니다. 브라우저를 종료했다 다시 접속 해봐주세요.간혹 맥 환경에서 아이패드로 연결할 경우 재생않되는 경우가 있습니다.혹시라도 계속 재생이 않되시면 연휴 끝난 후 인프런측에 문의부탁드려요.
- 0
- 2
- 15
질문&답변
카메라 문제
카메라가 화면 가운데로 이동한다는 말씀이라면, Tank 클래스의 InitLocalPlayer에서 시네머신 카메라를 찾아와서 PhotonView.IsMine일때 타겟을 설정하는 부분이 있습니다. 다시 한번 확인해주세요.
- 0
- 3
- 26
질문&답변
카메라 문제
조금 구체적으로 말씀해주시면 확인해드리겠습니다. 어떤것이 화면 가운데로 이동한다는 것인지 제가 이해를 못했습니다. 아니면 승근님께서 않되시는 부분의 영상의 시각을 말씀 부탁드려요.
- 0
- 3
- 26
질문&답변
Part2에 대한 질문..
안녕하세요. 꿈양이님, 먼저 기다리셨을텐데 송구합니다.ㅠㅠPart2 준비중 유니티6 초반버전에서 오류가 조금 있었습니다. 그래서 Part3먼저 준비하게 되었습니다. Part3의 Dedicate Server 까지 촬영후 바로 Fusion을 준비할 예정입니다.감사합니다.
- 0
- 1
- 35
질문&답변
Bullet이 방향 문제가 있어요.
답변이 많이 늦었습니다. 해결하셨다니 다행이세요.꼭 완강하시길 응원합니다.
- 0
- 3
- 49
질문&답변
prefab 관련 문의
안녕하세요. 굿데이님, 스크립트는 Parent 또는 Child에 추가하는 방법중 저의 경우는 항상 부모 게임오브젝트에추가하고 하위에 있는 컴포넌트를 참조할 때는 Awake 또는 Start 함수에서GetComponentInChildren 로 추출해서 변수에 저장한 후 사용합니다. Wrapper 게임오브젝트 하위에 모델을 추가하는 경우는 향후에 다른 모델로 변경을 할 경우편리한 장점이 있습니다.
- 0
- 1
- 19
질문&답변
딜레이를 주고 싶을 때 코루틴을 사용하는 이유
안녕하세요. SouthCreate 님, 총구화염 효과에 코루틴을 사용하지 않고 잠시 홀드시킨다면 다른 로직들을 처리할 수 가 없습니다.일시정지한 것처럼 끊어지겠지요. 그래서 멀티쓰레드는 아니지만 쓰레드와 비슷한 처리를 할 수 있는 코루틴을 활용해서 메인 로직(예, Update,...)을 홀드시키지 않고도 지연시킬수 있도록 하기 위해서 코루틴을 활용합니다. 쉽게 말씀드리자면 Unity의 메인 로직(게임 루프) 는 끊임없이 돌아가야 하기 때문에‘딜레이를 주면서도 나머지 게임은 계속 돌아가게’ 해야 함yield return new WaitForSeconds(0.2f); → 0.2초 동안 이 함수(코루틴)는 멈추지만, 게임은 멈추지 않음!정리를 하자면 코루틴은 다음과 같은 용도로 사용합니다.시간지연이 필요한 경우 (예, 10초 뒤에 실행)순차적으로 실행해야 하는 로직 (예, 애니메이션 -> 사운드 -> 다음 동작)비동기적으로 처리 (예, 서버 통신)궁금한 점, 헷갈리는 부분이 있으시다면 다시 질문해주세요.
- 0
- 2
- 49