본 기사는 2025년1월 24일에 공개된 Dev Diaries: Character Customization and Core Gameplay 을 번역했습니다.
Photon Dev Diaries에 다시 오신 것을 환영합니다. 이곳에서는 파트너들이 공동 프로젝트를 진행하는 과정에 대한 직접적인 통찰을 공유하고 있습니다. 마지막 부분에서는 Team Nthusia가 Photon Fusion의 Shared Mode를 활용하여 'Animal Crossing'에서 영감을 받은 샘플을 시작하는 방법에 대한 소개를 했습니다. 이제 2부에서 이 샘플의 핵심 메커니즘을 자세히 살펴보겠습니다.
이번 개발 일지에서 기대할 수 있는 내용:
- 핵심 게임플레이 메커니즘: 공유된 소셜 시뮬레이션 세계에서 플레이어가 경험할 수 있는 다양한 상호작용과 액션을 소개합니다.
- Fusion 공유 모드: 클라이언트 중심 네트워크에서 원활한 플레이어의 협업이 가능하므로, 캐주얼하고 커뮤니티 중심의 게임에 특히 적합합니다.
- 공유 가능한 인벤토리 시스템: 원활한 아이템 교환과 지속적인 소유권을 통해 협력적인 게임 플레이를 위한 게임 내 경제를 구현합니다.
- 캐릭터 커스터마이징: 네트워크 환경에서 플레이어의 모습을 효율적이고 유연하게 동기화할 수 있도록 설계된 간소화된 시스템입니다.
핵심 게임플레이 메커니즘 소개
이 샘플의 기본 아이디어는 플레이어가 공유 세계에 합류하는 재미있는 소셜 시뮬레이션을 만드는 것입니다. 그곳에 도착하면 탐험하고, 환경과 상호작용하며, 맵을 변화시킬 수 있습니다.
플레이어는 도끼, 삽, 그물, 물뿌리개와 같은 도구를 사용하여 나무를 심고 물을 주는 등의 작업을 수행할 수 있습니다. 시간이 지나면 나무가 자라 과일을 생산하여 판매할 수 있게 됩니다. 또한 NPC와 상호작용하여 아이템을 사고 팔 수도 있습니다. 게임 플레이에는 나무를 베고, 구멍을 파고, 아이템을 묻고, 조개를 수집하는 활동이 포함됩니다. 이 모든 활동은 휴식을 취하며 공유되고 상호작용하는 세계를 즐기는 것입니다. Fusion Shared Mode에 적합한 완벽한 놀이터입니다.
Fusion Shared Mode의 특별한 점은 무엇일까요?
Fusion은 서버, 호스트, 그리고 공유의 세 가지 네트워크 토폴로지를 지원합니다. Fusion Shared는 100% 클라이언트 권한 모드로, 각 클라이언트가 전체 권한을 가지고 있습니다. 즉, 중앙 서버나 단일 호스트에 의존하지 않고, 모든 클라이언트가 각각 자체적인 게임 시뮬레이션을 실행하며, 모든 업데이트 메시지가 Photon Cloud를 통해 다른 클라이언트로 전달됩니다. 게임 클라이언트는 객체를 생성하고 관리할 수 있는 완전한 권한을 가지므로, 게임 상태를 소유하고 추적하는 책임이 모든 클라이언트 간에 공유됩니다.
공유 모드는 캐주얼 게임이나 많은 플레이어가 참여하는 게임에 특히 적합합니다. 플레이어가 자주 들어오고 나갈 때에도 게임 플레이에 방해가 되지 않기 때문입니다. 또한, 넷코드 프로그래밍에 대한 깊은 지식이 없는 개발자들도 쉽게 채택할 수 있으며, 운영 비용과 복잡성도 매우 낮습니다.
빠르게 진행되거나 경쟁적인 게임에서는 플레이어 간의 모든 것을 동기화하는 것이 매우 까다로울 수 있으며, 중앙 권한이 없는 공유 모드는 부정 행위에 더 취약할 수 있습니다. 이러한 부정 행위를 방지하기 위해 Fusion은 곧 Enterprise Photon Cloud에서 사용자 지정 서버 코드를 생성하고 업로드할 수 있는 입증된 플러그인 기술을 사용할 예정입니다.
Team Nthusia가 작업 중인 샘플은 'Animal Crossing'에서 영감을 받았으며, 공유 모드에 완벽하게 어울립니다. 플레이어들은 나무를 심고 아이템을 거래하면서 마을을 함께 건설하고 유지할 수 있습니다.
게임 세계는 모든 플레이어의 노력을 통해 성장하며, 단 한 명의 플레이어가 모든 책임을 지는 것은 아닙니다. 창의성, 커뮤니티, 그리고 협업을 통해 모든 플레이어가 함께 즐길 수 있는 경험을 만들어가는 것이 중요합니다.
The Photon Quadrant
공유 가능한 인벤토리 시스템 사용
이 샘플 게임의 공유 가능한 인벤토리 시스템은 플레이어가 떠날 때 떨어진 아이템의 소유권을 쉽게 이전할 수 있어, 아이템이 소실되는 것을 방지하는 장점이 있습니다. 덕분에 플레이어들은 이 시스템을 통해 아이템과 돈을 교환할 수 있습니다. 돈 아이템의 세부 사항은 아직 결정되지 않았지만, 플레이어는 돈 아이템을 포함한 다양한 아이템을 수집하고 버릴 수 있어 게임 내 경제에 참여하고 아이템을 거래할 수 있습니다.
이 시스템은 플레이어가 게임을 떠날 때 떨어진 아이템이 사라지지 않도록 보장하며, 대신 소유권이 원활하게 이전되어 아이템이 없어지는 것을 방지합니다. 이는 Fusion Shared를 활용하여 아이템이 특정 클라이언트나 서버에만 묶이는 것을 방지함으로써 가능합니다. 인벤토리 내의 아이템은 '드롭', '식물', '매장'과 같은 특정 특성을 가지고 있어 플레이어 간의 사용과 공유를 더욱 용이하게 만들어줍니다.
캐릭터를 매력적으로 만드는 방법
Nthusia의 커스터마이징 시스템은 단순성과 효율성을 위해 설계되었습니다. 플레이어는 캐릭터의 피부, 머리카락, 옷 색상, 헤어스타일, 모자, 액세서리를 자유롭게 커스터마이징할 수 있습니다. 플레이어가 스폰되면 이러한 선택 사항이 캐릭터에 적용되며, 다른 모든 플레이어와 공유됩니다. 이 시스템은 네트워크화된 사용자 지정 INetworkStruct 속성을 사용하여 관련 데이터를 함께 묶어 게임의 네트워크 시뮬레이션의 일부로 만듭니다. 이렇게 하면 각 데이터를 개별적으로 동기화하는 것보다 훨씬 효율적입니다.
사용자 정의 시스템은 몇 가지 방법으로 효율성을 우선시합니다. 첫째, 전체 RGB 색상 코드와 같은 큰 데이터 값 대신 바이트 인덱스를 사용하여 선택 항목을 저장합니다. 이렇게 하면 네트워크를 통해 전송해야 하는 데이터 양이 줄어듭니다. 둘째, 모든 사용자 정의 데이터는 단일 속성으로 래핑되어 동기화 프로세스가 간소화됩니다.
INetworkStruct 속성에는 사용자 정의 데이터가 변경될 때마다 시각적 요소를 자동으로 업데이트하는 OnChangedRender 특성이 있습니다. Photon Fusion의 'weaver'가 이 데이터의 공유를 처리하기 때문에 개발자는 이를 수동으로 신경 쓸 필요가 없습니다.
이 특정 샘플에서 사용자 정의 데이터는 한 번 설정된 후 OnChangedRender 콜백을 사용하여 자동으로 업데이트됩니다.
다음은 그 예시입니다.
[Networked(OnChanged = nameof(OnChangedRender))]
public struct CustomizationData : INetworkStruct {
public byte SkinColorIndex;
public byte HairColorIndex;
public byte ClothingColorIndex;
public byte HairstyleIndex;
public byte HatIndex;
public byte AccessoryIndex;
}
private void OnChangedRender(Changed<CustomizationData> changed) {
// Apply visual changes here based on updated properties
}
좋은 시작을 향해
이 모든 구현을 통해 샘플은 훌륭한 기반을 구축할 수 있습니다. Nthusia처럼 Fusion Shared를 활용하여 캐릭터가 돌아다니고 플레이어가 서로 만날 수 있는 작은 세계를 만들 수 있습니다. 이제 이 개발 일지의 다음이자 마지막 부분에서 이 샘플의 마지막 단계를 설정할 준비가 되었습니다. 인벤토리 관리를 개선하고, 사용자 친화적인 방식으로 대화를 구현하며, 컨트롤러 지원을 추가하고, 출시를 위한 샘플을 설정하는 것에 대해 자세히 살펴보겠습니다.
성공적인 멀티플레이어 게임을 직접 만들 준비가 되셨나요? Photon의 Fusion을 사용하면 최첨단 멀티플레이어 기능을 프로젝트에 통합하는 것이 그 어느 때보다 쉬워졌습니다. 업계에서 가장 진보된 도구는 물론, 포괄적인 지원과 다운로드 가능한 샘플, 그리고 자세한 설명서까지, 시작하는 데 필요한 모든 것을 제공합니다.
오늘 첫 발을 내딛어 보세요! Fusion을 다운로드하고 빌드를 시작해 보세요! 더 심층적인 도움이 필요하다면 Gaming Circle에 가입하시면 좋습니다. 여기서 개발자들과 직접 소통하며, 여정 내내 전문가의 안내를 받을 수 있습니다.
지금 여기서 멀티플레이어 성공 스토리가 시작됩니다!
Discord, YouTube, BlueSky, X, LinkedIn에서 저희와 함께하세요. 여러분이 어떤 작품을 만들어낼지 기대됩니다!
댓글
댓글 0개
댓글을 남기려면 로그인하세요.