This document is about: FUSION 2
SWITCH TO

Fusion Crazy Starter WebGL

Level 4
Crazy Games

개요

Flagrant Disregard는 주어진 시간 안에 가능한 한 많은 깃발을 수집해 시작 지점으로 가져오는 레이스 게임입니다.
Photon Fusion 기반 WebGL 샘플로, Crazy Games 플랫폼용으로 제작되었습니다.
여기에서 플레이할 수 있습니다!

이 프로젝트는 WebGL 플랫폼을 타깃으로 하는 Photon Fusion 및 Unity3D 셋업 방법을 보여주며, 장애물 코스와 캡처 더 플래그 스타일 게임 플레이를 제공합니다. 또한 Crazy Games 플랫폼용 CrazySDK 통합 예제도 포함되어 있습니다.

Flagrant Disregard
Flagrant Disregard
Flagrant Disregard
Flagrant Disregard
Flagrant Disregard

다운로드

버전 출시일 다운로드
2.0.5 2025년 4월 24일 Fusion WebGL Sample 2.0.5 빌드 859

기술 정보

  • 유니티 버전: 6000.0.27f1
  • 플랫폼: WebGL

온라인 멀티플레이어 모드로 실행하려면, PhotonEngine 관리 화면에서 Fusion AppId를 생성한 후, 유니티 프로젝트 내 PhotonAppSettings 에셋의 AppId 필드에 입력해야 합니다.
그다음, Scenes 메뉴에서 MainMenu 씬을 로드하고 Play 버튼을 누르세요.

플레이 방법

  1. 시작 지점에 서 있으면, 모든 플레이어가 준비 완료 시 게임이 시작됩니다.
  2. 네 가지 무작위 장애물 경로 중 하나를 달려 깃발을 모은 뒤, 시작 지점으로 돌아가세요.
  3. 가장 많은 깃발을 가져온 플레이어가 승리합니다!

조작법

키보드/마우스

  • W/A/S/D : 이동
  • 마우스 이동: 카메라 회전
  • Space: 점프

컨트롤러

  • Leftstick/Dpad: 이동
  • South Button: 점프
  • Rightstick: 카메라 회전

Photon Fusion & WebGL

이 샘플은 Fusion의 공유 모드 토폴로지를 사용하여 빠르고 안정적인 연결을 제공합니다.
WebGL 개발 시 주의해야 할 사항은 다음과 같습니다:

  • Build Pipeline에서 Run In Background 옵션을 활성화하세요. CrazyGames Web Profile에 필요한 설정이 기본 적용되어 있습니다.
  • 가능하다면 개별 텍스처 대신 스프라이트 아틀라스를 사용하세요.
  • 유니티의 AddressablesStreaming Assets 시스템을 이용해 초기 다운로드 크기를 줄이세요.

WebGL 최적화에 대한 더 많은 정보는 유니티 공식 문서를 참고하세요.
Shared Mode가 WebGL에 적합한 이유는 Photon Fusion의 네트워크 토폴로지 문서를 참고하세요.

기술 설계

주요 클래스는 다음과 같습니다:

PlayerNetworkBehaviour

플레이어가 참가하면 Player Character 프리팹이 스폰 되고,
이 프리팹에는 PlayerNetworkBehaviour, NetworkCharacterController, NetworkMecanimAnimator 컴포넌트가 포함되어 있습니다.
플레이어는 자신의 아바타에 대해 상태 권한을 가지며, 입력 반응, 이동, 충돌 처리가 로컬에서 실행되고 네트워크로 동기화됩니다.

단, 깃발 같은 오브젝트는 플레이어가 아닌 SharedModeMasterClient가 State Authority를 가집니다.
플레이어가 깃발과 충돌하면, 로컬에서 반응하지만, 최종 충돌 확인은 SharedModeMasterClient가 RPC를 통해 수행합니다.

InGameManager

InGameManager는 게임 상태, 다양한 TickTimers, 플레이어 준비 여부 등을 관리합니다.
Network Object 컴포넌트의 IsMasterClientObject 설정을 통해,
SharedModeMasterClient가 끊겨도 자동으로 다른 플레이어에게 권한이 이전됩니다.

ObstacleCourseBehaviour

총 4개의 트랙(3개 세그먼트로 구성)이 존재하며,
깃발을 수거하면 트랙이 하강한 후 다른 세그먼트를 무작위로 선택해 다시 상승합니다.
이 트랙도 SharedModeMasterClient가 State Authority를 가집니다.

CrazySDK 통합

CrazySDK를 사용해 CrazyGames 플랫폼의 필수 요구사항을 충족합니다.

  • 멀티플레이어 요구사항CrazyManager.cs가 관리합니다.
  • CrazySDK.Init을 호출해 SDK를 초기화합니다.
  • 플레이어 이름은 CrazySDK.User.GetUser를 통해 받아옵니다.
  • 초대 링크 기능은 CrazySDK.Game.GetInviteLinkParameterCrazySDK.Game.InviteLink를 통해 구현됩니다.

CrazySDK 초대 기능

방에 참여할 때 초대 버튼을 표시합니다. (CrazyManager.ShowInviteButton 호출)
제공하는 정보는 다음과 같습니다:

  • "session": 세션 이름
  • "region": 지역
  • "appVersion": 앱 버전

게임이 시작되면 초대 버튼은 숨겨야 합니다 (CrazySDK.Game.HideInviteButton).

게임 시작 및 종료 알림

  • CrazySDK.Game.GameplayStart: 게임 시작 알림
  • CrazySDK.Game.GameplayStop: 게임 종료 알림
  • CrazySDK.Game.HappyTime: 승리 또는 주요 성과 알림

게임 진행 상황에 따라 InGameManager에서 호출됩니다.

제한 사항

현재 CrazyGames 플랫폼에서는 멀티스레딩 모드를 지원하지 않습니다.
(Itch.io 등 다른 플랫폼에서는 사용 가능하지만 CrazySDK를 제거해야 합니다.)

멀티스레딩 비활성화 설정

서드파티 에셋

이 샘플은 다음 무료 및 CC0 에셋을 포함합니다:

Back to top