Table of Contents

19. Integration

왜 필요한가

VContainer, UniTask, MessagePipe, MemoryPack, Newtonsoft.Json 같은 외부 라이브러리를 Systems가 직접 호출하면 라이브러리 교체 시 전체 코드를 수정해야 한다. Integration 계층이 완충 지대 역할을 한다.

언제 사용하는가

새로운 외부 라이브러리를 Framework에 연결할 때는 반드시 Integration 계층에 Adapter/Wrapper를 만든다.

프로젝트에서 어떤 역할인가

IJsonSerializer(Newtonsoft.Json 기반), IMemoryPackSerializer(MemoryPack 기반)처럼 외부 라이브러리를 인터페이스로 감싼다. 로컬 저장/네트워크 데이터는 MemoryPack, 설정/외부 JSON 데이터는 Newtonsoft.Json을 사용한다 (JsonUtility 금지).

실제 게임에서는 언제 호출되는가

SaveSystem이 데이터를 직렬화할 때 내부적으로 IMemoryPackSerializer를 사용, Config를 외부 JSON에서 읽을 때 IJsonSerializer를 사용.

코드 예제

[Inject] private IJsonSerializer _json;
string text = _json.Serialize(myConfig);

관련 Sample

Samples/Integration/SerializationSample.cs

Best Practice

Systems는 외부 라이브러리를 직접 호출하지 않는다. 항상 Integration 계층의 인터페이스를 주입받는다.

자주 하는 실수

  • Systems 코드에서 Newtonsoft.Json.JsonConvert를 직접 호출
  • JsonUtility 사용

실습 과제

  1. IJsonSerializer로 임의의 객체를 직렬화/역직렬화해본다.
  2. IMemoryPackSerializer로 동일 객체를 처리해 두 방식의 차이를 비교해본다.

이전 문서 / 다음 문서

이전: 18_Diagnostics.md 다음: 20_Multiplayer.md

관련 API

MCP_Index.md Integration 섹션