Fusion Crazy Starter WebGL


개요
Flagrant Disregard는 주어진 시간 안에 가능한 한 많은 깃발을 수집해 시작 지점으로 가져오는 레이스 게임입니다.
Photon Fusion 기반 WebGL 샘플로, Crazy Games 플랫폼용으로 제작되었습니다.
여기에서 플레이할 수 있습니다!
이 프로젝트는 WebGL 플랫폼을 타깃으로 하는 Photon Fusion 및 Unity3D 셋업 방법을 보여주며, 장애물 코스와 캡처 더 플래그 스타일 게임 플레이를 제공합니다. 또한 Crazy Games 플랫폼용 CrazySDK
통합 예제도 포함되어 있습니다.





다운로드
버전 | 출시일 | 다운로드 | |
---|---|---|---|
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
버튼을 누르세요.
플레이 방법
- 시작 지점에 서 있으면, 모든 플레이어가 준비 완료 시 게임이 시작됩니다.
- 네 가지 무작위 장애물 경로 중 하나를 달려 깃발을 모은 뒤, 시작 지점으로 돌아가세요.
- 가장 많은 깃발을 가져온 플레이어가 승리합니다!
조작법
키보드/마우스
W/A/S/D
: 이동- 마우스 이동: 카메라 회전
Space
: 점프
컨트롤러
Leftstick/Dpad
: 이동South Button
: 점프Rightstick
: 카메라 회전
Photon Fusion & WebGL
이 샘플은 Fusion의 공유 모드 토폴로지를 사용하여 빠르고 안정적인 연결을 제공합니다.
WebGL 개발 시 주의해야 할 사항은 다음과 같습니다:
- Build Pipeline에서
Run In Background
옵션을 활성화하세요.CrazyGames Web Profile
에 필요한 설정이 기본 적용되어 있습니다. - 가능하다면 개별 텍스처 대신 스프라이트 아틀라스를 사용하세요.
- 유니티의 Addressables 및 Streaming 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.GetInviteLinkParameter
및CrazySDK.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 에셋을 포함합니다:
- Star 01 - The Base Mesh
- Jump Run Duck - Happy Soul Music
- Retro Game Weapons Sound Effects - Happy Soul Music
- Universal Animation Library - Quaternius
- Platformer Game Kit - Quaternius