VRChat 마이너 갤러리 저장소

제 목
강좌/팁 UdonSharp 네트워킹 개요
글쓴이
미찌
추천
11
댓글
5
원본 글 주소
https://gall.dcinside.com/vr/3391658
  • 2023-10-12 04:01:22
							

에셋들만 짜집기해서 월드 만들려면 알 필요 없는 내용인데 직접 코드싸서 월드개발을 하려면 무조건적으로 알아야 되는 내용임


월드 개발과 디버깅의 80%는 이 네트워킹때문에 똥꼬쇼를 하게된다


네트워킹에 기본적으로 깔고 들어가야될 마인드는 "모든 클라이언트는 로컬이고 특정 유저 (특히 월드 마스터)가 지속적으로 월드 상태를 동기화 해줘야 된다"임


즉 각각의 유저마다 각자의 씬을 가지고 있고 게임오브젝트나 변수들에 대한 정보 업데이트를 지속적으로 받으면서 마치 다같이 함께 움직이게 만드는 눈속임이라고 생각하면됨


이 마인드가 굉장히 중요한데 네트워킹을 고려 안하고 짰다가 의도치 않은 결과가 나오는 경우가 매우 많음


제대로 동기화가 안돼서 로컬로만 돌아가거나 중간에 동기화 받지 못한 변수때문에 런타임 예외로 스크립트 자체가 멈춰버리거나 (우동샵은 예외처리 안돼서 개빡침)


그래서 프로젝트 계획 단계부터 항상 네트워킹을 생각해야 똥꼬쇼를 줄일 수 있음


24b0d121e09c28a8699fe8b115ef046c68f02e49


동기화 방식에는 3가지가 있는데 None은 말그대로 동기화 없이 전부 로컬인거고


Continuous는 짧은 간격마다 자동으로 업데이트를 쏴줌 


간단한 스크립트면 쓰기엔 좋은데 예상한대로 작동이 안되는 경우가 종종 있음 (특히 핑차이 때문에) 


Manual은 말그대로 동기화를 직접 실행하는 방식이고 디버깅 하다보면 결국 전부 관리할 수 있는 이쪽으로 넘어오는게 맘편함


우동샵에서 쓰는 동기화 요소들은 여러가지가 있는데 많이 쓰게되는건 [UdonSynced] 어트리뷰트, RequestSerialization, OnDeserialization, SendCustomNetworkEvent, OnPlayerJoined 등등을 자주 쓰게됨


24b0d121e09c28a8699fe8b115ef046f574e90


[UdonSynced] 어트리뷰트는 변수가 로컬변수 (네트워크적으로)가 아니라 클라이언트 모두에게 동기화될 변수라고 컴파일러한테 알려주는거임


동기화 방식이 Continuous라면 일정 시간마다 알아서 동기화가 되고


Manual이면 마스터가 RequestSerialization()을 호출할 때 [UdonSynced] 변수들의 정보가 네트워크에 전파됨


모든 타입에 [UdonSynced]를 붙일 수 있는건 아니고 https://udonsharp.docs.vrchat.com/vrchat-api#synced-variables 여기에 있는 애들만 가능함 


24b0d121e09c28a8699fe8b115ef046eca40cc


RequestSerialization()은 [UdonSynced] 변수들을 동기화 시키고 싶을 때 호출하면 되고 모든 [UdonSynced] 변수들 전부 동기화가 이뤄짐


너무 자주 막쓰면 네트워크 오버헤드가 커지기 때문에 상황에 따라 적절하게 사용하면됨


24b0d121e09c28a8699fe8b115ef04699d39f5

OnDeserialization()은 RequestSerialization()의 콜백함수고 [UdonSynced] 변수값이 동기화를 통해서 바뀔때 자동으로 호출됨


UdonSharpBehaviour클래스 내에 있는 OnDeserialization()을 자기 입맛에 맞게 오버라이드 해서 사용하면 됨


24b0d121e09c28a8699fe8b115ef046c62f32b4f


SendCustomNetworkEvent는 다른 클라이언트한테 특정 함수를 호출하게 할 수 있음


인자가 2개인데 NetworkEventTarget는

24b0d121e09c28a8699fe8b115ef046c62f92a47

이렇게 2가지고 뒤에 붙는 string은 호출하게 하고싶은 함수 이름을 넣으면 됨


마스터만 사용하는게 오버헤드도 줄이고 디버깅도 쉬워져서 쓰기 전에 클라이언트 마스터 검사를 하는게 좋음


그리고 전달하는 인자가 사실상 함수이름 1개밖에 없기 때문에 호출하려는 함수가 추가적으로 인자를 받는 함수면 인터폴레이션하고 함수를 여러개 만드는 등의 개똥꼬쇼 하게되는 원인이기도함


24b0d121e09c28a8699fe8b115ef046c69f52b47

OnPlayerJoined는 뒤늦게 조인한 다른 플레이어를 다룰 때 좋음 이것도 오버라이드해서 쓰면됨


다른 플레이어가 월드에 조인할때마다 인스턴스에 있는 모든 클라이언트에서 자동으로 호출되고


VRCPlayerApi player는 조인한 플레이어를 가리킴


조인한 플레이어 본인한테만 따로 특별하게 구현하고싶은 로직이 있으면 player.isLocal 플래그를 확인해서 구현하면 됨


이 외에도 다른 함수들도 많은데 자주 쓰지는 않음 걔네들은 우동샵 공식 문서를 참고하세요


그리고 중요한 얘기로 VRCObjectSync와 Ownership에 관한 얘기가 있는데 이건 수요있으면 다음에 써봄





무무에용 교수님 진도가 너무 빨라요 - dc App 2023.10.12 04:06:26
조개껍데기 인수 있는 함수 네트워크 전달 하는건 도대체 언제 추가해주지 2023.10.12 04:07:47
행복해꿀벌 코드 찍 2023.10.12 04:07:47
ㅇㅇ 평소처럼 으에에 거리기나 하지 안어울리게 뭐하노 223.38 2023.10.12 04:08:18
ㅇㅇ(142.149) 왤케똑똑함 2023.10.12 04:16:45
번호 분류 제목 글쓴이 날짜 추천
3411569 일반 개추어디짐 15 토호시 2023-10-20 11
3410521 일반 쟤랑 같은디코 있었는데 14 ㅎㅇ 2023-10-19 12
3410448 일반 싸울일도 아닌데 몇마디만함 ㅇㅇ... 15 ㅇㅇ 220.69 2023-10-19 14
3410257 일반 검은감자칩 게이야 23 개졷소고닉 2023-10-19 27
3409773 일반 이걸 차단을 박네 20 보라지도댕이 2023-10-19 12
3409403 일반 [브갤문학] 셋이서 세는 디데이 19 으애애 2023-10-19 10
3408094 일반 게이야 멀리 안간다 3 ㅇㅇ 223.62 2023-10-18 9
3407439 일반 이갤러리는왜정보글모음같은거없는거임?????? 28 ㅇㅇ 223.39 2023-10-18 14
3407154 일반 브수면할때 좋은점 21 소냐 2023-10-18 11
3405999 일반 오늘은 내 생일 20 과자에오 2023-10-17 11
3405995 일반 ♿♿새벽갤러리에♿♿ 유동생일기습투척!!!!! 14 ㅇㅇ 121.179 2023-10-17 11
3404892 일반 뭔아 아바타 실사 느낌으로 꾸미는 애들이 2 ㅇㅇ 223.33 2023-10-17 14
3404822 일반 카프리썬 이새기들 왜 종이빨대로바뀜??? 26 슘칼이 2023-10-17 12
3404261 강좌/팁 존나야매로쉽고간단하게눈화장하기 8 도라지 2023-10-17 10
3404049 일반 개추 참기 테스트 11 보조도고고 2023-10-17 13
3397659 월드 보드게임 '딕싯' 월드 공식 오픈 10 미찌 2023-10-14 11
3396030 일반 초대형 호감 인플루언서 고닉 만났다고 쫄 필요 없는 이유(ㅇㄱㄹㅇ) 10 ㅇㅇ 211.184 2023-10-13 9
3395836 일반 오줌발싸에셋 가져가세요 22 보라지도댕이 2023-10-13 16
3395725 정보 VIVE 개발자 행사 참석하고 줏어먹은 정보들 9 LP 2023-10-13 10
3395652 일반 뚜따 아바타 목 색깔 정확하게 맞추는 방법 / 쉐도우 마스크 9 유저 2023-10-13 10
3395627 강좌/팁 다리길이 늘렸을 때 뷰포인트 정확하게 맞추는 방법 21 유저 2023-10-13 10
3395591 일반 아 제발 조인타고 노무현좀 하지말자... 14 ㅇㅇ 14.52 2023-10-13 15
3395275 일반 님들 진짜 인겜에서 파딱 보면 파딱이다 그럼? 16 조개껍데기 2023-10-13 9
3395053 일반 평생트위터 안할거면 개추ㅋㅋ 7 koper 2023-10-13 10
3393995 강좌/팁 병신들아 제발좀 이런짓좀 하지마라 32 ㅇㅇ 211.235 2023-10-13 42
3392837 일반 주딱개같으면개추 17 빵가루 2023-10-12 16
3391889 일반 이것도 짱법판매인가? 16 빵가루 2023-10-12 10
> 강좌/팁 UdonSharp 네트워킹 개요 5 미찌 2023-10-12 11
3391574 일반 마누카짤 보면서 길가다 넘어졌다.... 8 ㅇㅇ 211.234 2023-10-12 10
3388902 일반 아니 이거 나만 존ㄴ나 웃김?ㅋㅋㅋㅋㅋㅋ 16 쑤쑤 2023-10-11 13
3388268 일반 여기 자신의 아바타로 변할 기회가 있습니다 9 ㅇㅇ 118.42 2023-10-11 19
3387273 정보 퀘스트 3 리뷰 19 설교소녀 2023-10-10 18
3384399 일반 그냥 존나 이해가 안됨쓰ㅋㅋ 13 카데바 2023-10-09 9
3383653 강좌/팁 2023.10.09. 강좌 모음 6 ㅇㅇ 2023-10-09 10
3383245 일반 오늘은 한글 날입니다. 15 조개껍데기 2023-10-08 10
3381651 일반 아까부터병신같은글엔개추를눌러주고있음 14 닝닝즈 2023-10-07 18
3381409 일반 브붕이 이정도면 인생 잘 산 거냐??? 6 ㅇㅇ 2023-10-07 9
3381039 강좌/팁 강좌)4K 텍스쳐 안 쓰기 운동 18 조개껍데기 2023-10-07 14
3380343 일반 과몰입 감쓰플러팅 레전드 10 ㅇㅇ 218.148 2023-10-07 13
3380080 정보 똥찍먹(Vive XR Elite) 8 LP 2023-10-07 13
념글 삭제글 갤러리 랭킹