본 기사는 2024년 12월 18일에 공개된 Creating Udemy Courses for Photon Fusion & Quantum 을 번역했습니다.
저희 커뮤니티는 지혜를 나누는 것을 좋아하는 재능 있는 개발자들로 가득합니다! 이번 블로그에서는 Photon Fusion과 Photon Quantum에 대한 지식을 Udemy에 제공하고 있는 Oren과 Nikola와 이야기를 나눠보려 합니다. 두 분은 멀티플레이어 개발에 관심 있는 모든 분들을 위한 정말 유익한 코스를 준비해 주셨습니다. 이 코스는 기본부터 고급 기술까지 다양하게 다루어, 더 나은 멀티플레이어 경험을 만드는 데 큰 도움이 될 거예요. 그저 코스를 소개하는 것에 그치지 않고, Oren과 Nikola와 함께 그들이 지식을 나누게 된 이유에 대해 이야기하는 시간을 가져보겠습니다.
이 강의에서 Oren은 Fusion을 중심으로 Unity에서 멀티플레이어 게임을 개발하는 방법을 보여줍니다. 그는 클라이언트-서버 모델, 클라이언트 예측, 서버 동기화, 그리고 오브젝트 풀링 활용 등 여러 중요한 주제를 설명할 예정입니다. 또한, 로비 매칭 시스템을 구축하고, 리스폰 로직을 구현하며, 경기 타이머, 플레이어 채팅 버블, 그리고 플레이어의 시각 효과를 동기화하는 방법도 함께 배워볼 것입니다. 각 레 후에는 프로젝트 파일과 추천 자료 링크도 제공되니 많이 기대해 주세요! 여기에서 확인하실 수 있습니다.
반면, Nikola는 Quantum에 중점을 두고 Photon Quantum 3를 활용해 배틀 로얄 게임을 처음부터 만드는 방법을 가르쳐 줍니다. 매끄러운 캐릭터 움직임, 플레이어 간의 상호작용, 게임 상태 관리 등 필수적인 멀티플레이어 개념을 배우면서, 확장 가능한 게임 개발의 탄탄한 기초를 쌓을 수 있습니다. 마지막에는 작은 프로토타입이든 완전히 개발된 게임이든, 배운 기술을 자신 있게 적용해 멋진 멀티플레이어 경험을 만들어낼 수 있도록 도와드릴 것입니다. 그의 과정을 확인하고 싶다면 여기를 클릭하세요!
이 내용이 흥미롭다면, 계속 읽어보세요! 게임 개발의 즐거움을 직접 경험해 보세요! 이것은 Photon을 통해 멀티플레이어 게임 개발을 시작하고 싶은 모든 분들에게 많은 흥미로운 통찰과 경험을 제공할 것입니다!
안녕하세요 여러분, 시간 내주셔서 감사합니다. Photon에서 Udemy 코스를 만들게 된 계기는 무엇인가요?
Oren: 약 6개월 동안 Photon Fusion과 함께 작업하면서, 대부분의 경쟁형 실시간 게임의 네트워크 프로그래밍에 대한 새로운 시각을 갖게 되었습니다. 업계 표준 네트워크 솔루션이 어떻게 작동하는지, 그리고 복잡한 멀티플레이어 게임의 도전을 어떻게 해결하는지 보는 것은 정말 놀라운 경험이었어요.
Fusion으로 작은 게임을 만든 후, 시장에서 Fusion에 대한 학습 자원이 부족하다는 것을 느꼈습니다. Fusion은 제가 이전에 Unity에서 시도했던 다른 멀티플레이어 네트워크 솔루션들에 비해 많이 발전했기 때문에, 제가 구조화된 학습 자원을 만드는 첫 번째 사람들 중 하나가 되어 다른 개발자들이 이 훌륭한 새로운 기술을 잘 활용할 수 있도록 도와주고 싶었습니다.
Nikola: 저는 직장 생활 동안 여러 Photon 솔루션을 사용해왔지만, Quantum을 보고 멀티플레이어 게임을 만드는 것이 이렇게 간단할 수 있다는 사실에 정말 놀랐어요. 또한 시장에 Photon Quantum 기초에 대한 강의가 없어서, 제가 직접 강의를 만들기로 결정했습니다.
다른 사람들에게 Photon 사용법을 가르칠 때 가장 보람을 느끼는 점은 무엇인가요?
Nikola: 저는 사람들에게 가르치는 것을 정말 좋아해요 (저는 공인 Unity 강사예요 😀). 그래서 제가 열정을 쏟고 있는 기술을 다른 이들에게 가르치는 것은 정말 보람된 일입니다. 제가 Photon(그리고 모든 제품)을 좋아하는 이유는 복잡한 서버 오케스트레이션에 대해 걱정할 필요가 없다는 점이에요. 여러분이 그 일을 대신해주고, Unity 개발자인 우리는 즐거운 부분에만 집중할 수 있는 거죠.
Oren: 리뷰를 확인해봤어요! 모든 리뷰가 5점은 아니지만, 이 과정을 마친 학생들 중 많은 이들이 제가 말씀드린 멀티플레이어 개발에 대한 이해에서 비슷한 변화를 겪었다고 하더라고요. 가끔은 문제에 부딪혀서 질문을 올리기도 하는데, 제가 답변하기도 전에 스스로 해결 방법을 찾아내는 경우도 있더라고요. 적어도 일부 분들에게 넷코드와 Fusion을 이해하는 데 도움이 되었다는 걸 알게 되는 건 항상 기분 좋은 일이에요.
지금까지 저희 제품을 사용하시면서 멀티플레이어 게임 개발의 미래에 대해 Photon이 어떻게 발전할 것이라고 생각하시나요?
Nikola: Photon은 모든 종류의 게임을 만드는 스튜디오를 위한 하이엔드 솔루션으로 자리 잡았다고 생각해요. 개인적으로는 앞으로 Unity의 분산 권한(Distributed Authority)과 비슷한 기능을 볼 수 있다면 정말 멋질 것 같아요.
그 외에도, 기술이 시장에서 빠르게 자리 잡고 인지도가 높아진다면 Photon이 완전한 탈중앙화 멀티플레이어 솔루션을 개발할 수 있을 것이라고 확신합니다. 즉, 모든 것이 블록체인에서 이루어질 수 있죠. 웹3 분야에서 꽤 오랫동안 활동해 온 저로서는 이 일이 앞으로 몇 년 안에 실제로 일어날 수 있다고 생각합니다. 🙂
Oren: 저는 어릴 때부터 지금까지 8년 동안 Photon 제품을 사용해왔습니다. 특히 Unity의 PUN 1과 2로 시작했죠. 제가 보기에는, 개발자인 우리가 이렇게 많은 개발 시간을 절약할 수 있는 최고의 기술을 이용할 수 있다는 게 정말 놀랍습니다. Photon이 멀티플레이어 게임 제작과 그 과정을 더욱 매끄럽게 만드는 데 있어 계속해서 격차를 좁혀 나갈 것이라고 믿어요.
제가 들은 바로는 Photon이 Unreal에서도 Fusion을 출시할 계획이라고 하더군요. 저는 이게 Unreal 개발자에게 완전히 게임 체인저가 될 것이라고 믿어요. 개인적으로도 정말 기대됩니다! 만약 Unreal에서 멀티플레이어 개발을 쉽게 만들어주는 Fusion과 같은 라이브러리가 있다면, 플랫폼의 개발자들에게 큰 이점이 될 것이라고 생각합니다.
(이런 종류의 제품은 실제로 이미 출시되어 있습니다. 저희의 "공유" 토폴로지는 PUN(2012년부터 시작했어요; 저희가 실제로 발명한 거죠)과 Fusion에서 사용되고 있습니다.)
Photon을 사용하고자 하는 초보 게임 개발자들에게 어떤 조언을 해주고 싶으신가요?
Oren: 개인적으로는 자신이 좋아하는 작은 게임 아이디어를 먼저 생각한 다음, Photon의 공식 Discord 채널에 가입할 것을 추천합니다. 어떤 종류의 네트워크 프로그래밍이 여러분의 게임과 기술 수준에 가장 적합한지 물어보고, 그들의 조언을 따라 진행하세요! Fusion이든 Quantum이든 도움이 되는 자료가 많이 있으니 활용하실 수 있습니다.
Photon의 Discord에서 간단하게 대화를 나누면 많은 시간을 절약할 수 있고,원하는 방향을 더 빨리 찾을 수 있습니다. 모든 것을 완벽하게 익히는 데는 시간이 걸릴 수 있지만, 재미있는 도전으로 생각하고 한 걸음씩 나아가면 됩니다. 또한, 커뮤니티에 참여하는 것은 큰 동기 부여가 되며, 진행 상황을 공유하고 질문도 할 수 있어서 계속해서 발전할 수 있는 길잡이가 됩니다!
Nikola: 작은 것부터 시작하세요! Fusion을 사용해 간단한 멀티플레이어 게임을 만들어 보세요. 한두 달이면 완성할 수 있을 거예요(기본적인 Unity 개발 경험이 있는 사람에게는 Fusion이 더 쉽습니다). 그런 다음 같은 게임을 Quantum으로 다시 만들어 보세요! 😀
Nikola, 당신의 강의에서는 Photon Quantum을 사용해 멀티플레이어 게임을 만들면서 넷코드를 작성할 필요가 없다는 점을 강조하고 있습니다. 이 점에 대해 자세히 설명해 주실 수 있나요? 그리고 이것이 개발자들에게 어떤 중요한 의미가 있는지도 알고 싶습니다.
Nikola: 네! 다른 네트워킹 솔루션(예: Fusion)을 사용할 때는 항상 어떤 데이터를 네트워크를 통해 동기화해야 하는지 고민해야 합니다. 게임의 모든 액터(호스트, 사용자, 프록시)에 대해 올바르게 동기화가 되는지 테스트하려면 최소 3개의 인스턴스를 실행해야 하죠. 꽤 어려운(하지만 필요한) 과정인데, Quantum에서는 그런 걱정이 없습니다. 코드를 작성하기만 하면 되고, 실행 로직에 비결정적인 부분이 없다면 다른 사람이 어디에 있든 모든 것이 제대로 작동합니다.
당신의 강의에서는 ECS 디자인 패턴의 중요성이 강조되고 있습니다. ECS를 이해하는 것이 효율적인 멀티플레이어 게임 개발에 어떻게 도움이 될까요?
Nikola: ECS 패턴은 게임 개발에서 필수적인 부분이며, 저는 모든 사람이 어떤 형태로든 익숙해져야 한다고 생각합니다. Unity 자체에도 DOTS 스택이 있어서 기존의 MonoBehaviour 접근 방식보다 훨씬 빠릅니다. 좋은 점은 Unity나 Quantum을 통해 ECS를 배우면 많은 개념(코드를 구성하는 방법이나 어디에 무엇을 배치할 것인지 등)을 서로 공유할 수 있다는 것입니다.
강의 설명에는 학생들이 장기적인 확장성을 위해 프로젝트를 어떻게 구조화하는지를 배운다고 나와 있습니다. 학생들이 이 목표를 달성하기 위해 어떤 핵심적인 접근 방법이 도움이 될까요?
Nikola: 솔직히 말해서, Quantum에서는 ECS 패턴과 Quantum 시뮬레이션이 Unity 뷰와 자연스럽게 연결되기 때문에, 프로젝트를 명확하게 분리할 수 있습니다. 많은 경우 컴포넌트와 시스템이 서로 독립적으로 작동하죠. 이런 방식 덕분에 진정한 "클린" 아키텍처를 사용하는 느낌을 받습니다. 전통적인 Unity 개발에서 자주 발생하는 "신 오브젝트"처럼 여러 가지 일을 동시에 담당하는 객체가 없거든요.
Oren, 당신의 강의는 Photon Fusion을 사용해 2D 온라인 멀티플레이어 게임을 개발하는 데 중점을 두고 있죠. Photon Fusion이 멀티플레이어 게임 개발에 좋은 선택이라고 생각하는 이유는 무엇인가요? 그리고 왜 이 주제를 중심으로 강의를 설계하게 되었는지도 궁금합니다.
Oren: Photon은 멀티플레이어 게임 개발에 대한 수년간의 경험을 가지고 있고, 제 개인적인 사용 경험으로 보면 그들의 제품은 정말 직관적이고 쉽게 접근할 수 있습니다. 저는 누구나 쉽게 배우고 실용적인 강의를 만들고 싶었어요. 제가 접해본 모든 멀티플레이어 솔루션 중에서 Photon Fusion이 가장 강력하고 개발자에게 친화적이어서 선택하게 되었습니다.
이 제품은 업계 표준의 네트워크 기능을 제공하면서도 복잡한 작업들을 뒤에서 처리해 주기 때문에, 개발 과정이 훨씬 원활해집니다. 결과적으로, 개발자들이 게임을 성공적으로 출시할 수 있는 가능성을 높여줍니다.
클라이언트 예측, 서버 재조정, 지연 보상 같은 고급 주제를 다룰 예정이라고 들었어요. 이런 주제들이 멀티플레이어 게임 개발에서 왜 그렇게 중요한지 궁금합니다. 그리고 수강생들이 이 내용을 쉽게 이해할 수 있도록 어떻게 설명할 계획이신가요?
Oren:이것은 제가 강의를 만들면서 마주한 가장 큰 도전 중 하나였습니다. Fusion을 처음 접했을 때, 이러한 개념들이 실시간 네트워크 환경에서 얼마나 중요한지를 깨달았죠. 이론적으로 이러한 개념을 배우는 것조차 쉽지 않았습니다. 그래서 코딩에 들어가기 전에 각 주제를 명확하게 설명하는 데 우선 순위를 두었습니다. 클라이언트 예측, 서버 조정, 지연 보상 뒤에 있는 이론을 이해하는 것이 매우 중요하다고 생각했기 때문에, 각 개념에 대해 짧은 영상을 만들어 화면 예제를 통해 단계적으로 분석했습니다.
또한, 여러 게임이 이러한 기술을 어떻게 적용하는지에 대한 다양한 기사 링크도 제공했습니다. 이를 통해 수강생들이 실제 적용 사례를 보다 폭넓게 이해할 수 있도록 도왔습니다. 저의 목표는 이러한 복잡한 주제를 접근하기 쉽고 시각적으로 쉽게 이해할 수 있도록 만드는 것이며, 이를 통해 실제로 적용할 때 더 수월하게 다룰 수 있도록 하는 것입니다.
당신의 강의에서는 게임 로비 매칭 시스템을 만드는 방법을 가르치고, 특정 방에 들어가거나 랜덤 방을 만드는 방법도 다루고 있습니다. 매칭 시스템을 설계할 때 가장 중요한 고려사항이 무엇인지 공유해 주실 수 있을까요?
Oren: 저는 매칭 시스템의 기본 개념을 설명하고 싶습니다. 이렇게 하면 게임이 특별히 복잡하지 않더라도 생산 단계에 들어갔을 때 준비가 잘 되어 있을 수 있습니다. 그래서 방을 생성하고 랜덤 방이나 특정 방에 들어가는 방법에 초점을 맞췄습니다. 이러한 것들은 모든 멀티플레이어 게임의 기본 요소입니다. 하지만 매칭 시스템의 설계는 게임 유형에 따라 조정해야 합니다.
예를 들어, 경쟁형 게임에서는 데이터베이스를 통합해서 플레이어의 통계(예: ELO나 기술 레벨 등)를 바탕으로 플레이어를 구분하는 것을 강력히 권장합니다. 이렇게 해야 매칭의 균형을 유지할 수 있기 때문이죠. 비록 이러한 고급 주제들은 제 강의의 기본 범위를 넘어가지만, 개발자들이 필요할 때 매칭 시스템을 확장할 수 있도록 탄탄한 기초를 제공하고 싶습니다.
시간을 내어 이렇게 귀중한 통찰을 공유해 주셔서 감사합니다. 마지막 질문으로, 개발자들이 멀티플레이어 게임 개발을 시작할 때 흔히 하는 실수나 도전 과제에 대해 우리 커뮤니티와 공유해 주시고, 그 문제를 극복하기 위한 조언도 해주실 수 있을까요?
Oren:제가 자주 목격하는 큰 실수 중 하나(저도 가끔 저지르곤 하는데요)는 모든 것을 제로 베이스에서 시작하려고 하는 것입니다. 특히 네트워크 프레임워크를 직접 만드는 경우가 많죠. 만약 당신이 바퀴를 다시 발명하는 데 너무 집중한다면, 차라리 컴퓨터와 그 부품, 심지어 원자재를 직접 구하는 게 낫습니다! 시중에는 이미 검증된 솔루션들이 있습니다. 이 솔루션들은 실시간 멀티플레이어 게임의 복잡성을 다루는 전문가들이 수년간 설계한 것인데, 왜 바로 사용하지 않겠습니까?
지금 당신은 이미 컴퓨터와 운영 체제를 사용하고 있고, 이 모든 것은 직접 개발한 것이 아닙니다. 게임 엔진도 마찬가지니까요. 따라서 기존의 멀티플레이어 솔루션을 활용하는 것은 매우 합리적인 다음 단계입니다. 저는 항상 정말 중요한 것에 집중하라고 조언합니다: 게임을 만드세요! 기존의 도구를 사용하고, 그것들이 어떻게 작동하는지 배워보세요. 이렇게 하면 많은 시간을 절약할 수 있고, 이미 다른 사람들이 해결한 문제를 다시 풀 필요가 없습니다. (물론, 만약 자신만의 네트워크 시스템을 구축하는 것이 당신의 열정이라면, 그건 또 다른 이야기입니다! 😆)
Nikola: 제가 WW1 Game Series 팀(즉, Verdun, Tannenberg, Isonzo를 만든 팀)에 합류했을 때, 로컬 환경에서 테스트한 것이 다른 클라이언트에서는 완전히 재현되지 않을 수 있다는 점을 이해하는 것이 큰 도전이었습니다(이것은 멀티플레이어 구조의 특성이죠). 그래서 제가 드리는 가장 좋은 조언은, 기능이 잘 구현되었다고 생각할 때 최소 두 개 이상의 클라이언트를 동시에 사용해 게임을 테스트해보는 것입니다. 저는 Fusion Host를 사용할 때 항상 세 개의 클라이언트에서 테스트합니다.
Quantum에서는 사실 이런 테스트가 그다지 필요하지 않지만(Quantum의 특성 때문이죠), 여전히 이런 테스트를 진행하는 것이 도움이 됩니다. 왜냐하면 개발자로서 시뮬레이션 중에 비결정적인 코드를 작성했을 수 있기 때문에, 이로 인해 동기화 문제를 일으킬 수 있기 때문입니다.
성공적인 멀티플레이어 게임을 직접 만들 준비가 되셨나요? Photon의 Fusion과 Quantum을 사용하면 최첨단 멀티플레이어 기능을 프로젝트에 통합하는 것이 그 어느 때보다 쉬워졌습니다. 업계에서 가장 진보된 도구는 물론, 포괄적인 지원과 다운로드 가능한 샘플, 그리고 자세한 설명서까지, 시작하는 데 필요한 모든 것을 제공합니다.
오늘 첫 발을 내딛어 보세요! Fusion을 다운로드하거나 Quantum 을 다운로드하고 빌드를 시작해 보세요! 더 심층적인 도움이 필요하다면 Gaming Circle에 가입하시면 좋습니다. 여기서 개발자들과 직접 소통하며, 여정 내내 전문가의 안내를 받을 수 있습니다.
지금 여기서 멀티플레이어 성공 스토리가 시작됩니다!
Discord, YouTube, BlueSky, X, LinkedIn에서 저희와 함께하세요. 여러분이 어떤 작품을 만들지 기대하고 있습니다!
댓글
댓글 0개
댓글을 남기려면 로그인하세요.