커스텀 직렬화기 만들어서 원하는 모든것을 직렬화, 동기화하기
- 데이터 직렬화는 데이터를 읽고 쓸 수 있게 하여 저장 및 전송을 가능하게 하는 기본 과정입니다. 💾
- 기본 직렬화는 대부분의 기본 타입과 클래스를 지원하지만, 스프라이트나 대용량 이미지 같은 특정 타입은 직접 직렬화하기 어렵거나 비효율적입니다. 🚫
- 커스텀 직렬화기를 사용하면 GUID, 데이터베이스 인덱스 등 참조를 통해 대용량 또는 직렬화 불가능한 데이터를 효율적으로 처리할 수 있습니다. 🔗
- FishNet에서 커스텀 직렬화기를 만들 때는
static 클래스 내 static 메소드로 Read와 Write 규칙을 따르며, 쓰기와 읽기 순서가 일치해야 합니다. 🛠️
- 데이터 양을 최적화하기 위해 조건부 직렬화(예: 키네마틱이 아닐 때만 속도 전송)를 구현하여 네트워크 트래픽을 줄일 수 있습니다. 📉
- 상속 관계의 객체를 직렬화할 때는 타입 식별자를 먼저 보내고 그에 맞는 데이터를 직렬화하여 올바른 파생 타입을 재구성할 수 있습니다. 🧬
- 개발자는
ScriptableObject에 GUID를 부여하고 데이터베이스와 연동하여 아이템, 스킬 등 복잡한 게임 데이터를 효율적으로 관리하고 동기화할 수 있습니다. 🎮
- FishNet의 내부 직렬화 구현을 분석하면 문자열, 리스트, 딕셔너리, 게임 오브젝트 등 다양한 데이터 타입이 어떻게 효율적으로 직렬화되는지 이해할 수 있습니다. 🔬
- 커스텀 직렬화는 단순 참조를 넘어 추가 데이터를 포함하거나 전체 데이터를 전송하는 등 유연한 데이터 동기화 방식을 제공하여 개발 편의성을 크게 향상시킵니다. ✨
- 복잡하게 느껴졌던 멀티플레이어 게임의 데이터 동기화 문제를 커스텀 직렬화기를 통해 쉽고 효율적으로 해결하여 개발자의 QOL을 높일 수 있습니다. ✅