포스트

VRChat 월드 제작 (U# / UdonSharp)

VRChat 월드 제작 (U# / UdonSharp)

2024-04-09. 02:28: 글 계승
2022-01-28-USharp-Fog: 🌔 VRChat 안개 (Fog),
2022-06-28-USharp-ContextMenu: 🌔 VRChat 월드 에디터 테스트 시, ContextMenu Attribute

라이브 스트리밍 용 VRChat 컨텐츠 제작 시 신경 쓸 점


VRChat

  • 스트리머와 참가자의 PC/VR 플레이 유무
  • 월드 인스턴스 최대 인원 제한

기획, 버그 가능성

  • 수동 VS 자동화
    • 돌발 상황에 대비하여 수동으로 만들거나, 제한을 여유롭게 두기
    • ‘뭐 잘못 눌렀어요’, 제한, 방지, 대책
  • 테스트와 리허설 자주
    • 기능 자체의 버그와, 기획의 의도 확인
  • 조작키
    • 예를 들어 스태프 전용 키를 자주 누르는 키로 설정하지 말기
    • 혹은 좀 더 복잡하게 만들던지

라이팅, 렌더링

  • 아바타가 조명을 제대로 받는지
    • LocalPlayer, Player Layer만 잡는 RealTime 라이트
    • 라이트 프로브
  • 리플렉션 프로브
  • 포스트 프로세싱

영상, UI

  • 채팅창 위치 고려를 고려하여 UI 제작
  • (버추얼 한정) 화면에 띄워지는 아바타 위치를 고려하여 UI 제작

  • 대기 화면 유무
  • 로고를 UI로 띄울지 여부

  • 글꼴
    • 글꼴 저작권
    • 한자 필요할 경우 한자 지원하는 글꼴로

비디오 플레이어

  • 딜레이가 많이 길다
  • 카메라로 비디오 플레이어 스크린을 찍으면, 가끔 프레임이 끊겨보인다 (검은 화면)
  • 비디오 플레이어 소리 잘 나오는지
  • URL 전부 제대로 입력했는지

사운드

  • 플레이어 보이스 잘 들리는지 (기본 보이스 세팅, 증폭 필요한지)
  • SFX, BGM, 비디오 플레이어 소리 잘 나오는지

카메라

  • 포스트 프로세싱
  • 들고다니는 유동 카메라
    • SmartSync (LightSync)
    • 렌더 텍스쳐
    • 카메라를 들고 텔레포트를 하면, 싱크 오브젝트 특성 상 이동하는 위치 사이를 Lerp하게 보게 된다.
  • 고정 카메라
    • 아바타가 해당 위치에서 의도한 대로 적절히 보이는지

그 외

  • 프로젝트 후기는 바로바로 작성

� 팁


오류 로그는 안뜨는데, 원하는 대로 작동안할 때

코드 잘못짜서 생긴 논리 오류를 제외하고,

  1. 호출하고자하는 CustomEvent가 Public 접근 제한자인지 확인한다
  2. 똑같은 UdonBehaiviour가 여러 개 들어가있는지 확인한다 (프리팹에 Udon 추가하는 과정에서 주로 발생)

Udon 싱크 크기

UI 인터렉션 가능하게 하는 조건 3가지

  1. 오브젝트 Layer Default
  2. VRC UI Sharp 컴포넌트
  3. Box Collider

VRChat World에서 VideoPlayer로 데이터 불러오기

Fog

Fog 안켜둔 채로 빌드하면, 런타임에서 Fog를 켜도 적용이 안됌.
켜둔 채로 빌드하고, 월드 들어오자마자 꺼주기.

220128 기준.

ContextMenu

ContextMenu 사용 시,
오브젝트를 껐다키는 등의 단순 명령들은 잘 실행되지만,
변수 값을 변경하는 등의 명령은 제대로 실행되지 않음.

1
2
3
4
5
6
int temp = 0;

void Update() { Debug.Log(temp); }

[ContextMenu("Add")]
void Add() { temp++; Debug.Log(temp); }

예를 들어, 위 같은 코드에서 Add
SendCustomEvent로 호출하면 Add에서 1, Update에서 1이 찍히는데,
ContextMenu로 호출하면 Add에서 1, Update에서 0이 찍힌다.

테스트 시 주의

220628 기준.

오버레이 UI

Overlay 캔버스로 만들어도 되지만, VRChat에서 메뉴(R키)를 조작할 때 Overlay 캔버스가 전부 꺼지는 문제가 종종 있음
-> 대신 DepthOnly 카메라로 WorldSpace 캔버스를 찍어서 위에 띄우기

?

SyncMode(None)오브젝트 토글 우동 A
우동 B가 포함된 오브젝트를 자식으로 가지는 부모 오브젝트 C를 활성화 시킬 때,

우동 BSyncMode(Continue or Manual)이면 우동 B 동작안함
우동 BSyncMode(None)이면 우동 B 동작함

다시말해,
ASyncMode(Continue or Manual)이면 BSyncMode가 뭐든간에 B가 정상적으로 동작
ASyncMode(None)일 때, BSyncMove(Continue or Manual)라면 B가 동작안함

메모

  • VRC, 영화 자막
  • Light Probes Volme Settings
  • Light Probe Group
  • Occlusion Area
  • Editor Only 태그 활용
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.