1 분 소요

[참고 - 스크립터블 오브젝트] (https://unity.com/kr/how-to/architect-game-code-scriptable-objects)

게임 엔지니어링의 3대 요소 — 모듈형 디자인 사용:
서로 직접적인 종속 관계가 있는 시스템을 만들지 마세요. 예를 들어 인벤토리 시스템은 게임 내 다른 시스템과 커뮤니케이션할 수 있어야 하지만, 시스템을 다른 설정 및 관계로 다시 구성하기가 어려워지기 때문에 시스템 간에 하드 레퍼런스를 생성하지 않는 것이 좋습니다.
씬을 클린 슬레이트로 생성: 씬 간에 임시 데이터가 존재하지 않도록 하세요. 씬을 히트할 때마다 씬이 완전히 브레이크된 후 새로 로드되어야 합니다. 그러면 해킹을 하지 않고도 다른 씬에 없는 고유한 동작이 포함된 씬을 생성할 수 있습니다.
프리팹이 자체적으로 작동하도록 설정하세요. 가능하면 씬으로 드래그하는 모든 프리팹이 각각의 기능을 포함하도록 해야 합니다. 그러면 팀의 규모가 상대적으로 커서 씬이 여러 프리팹으로 구성되며 각 프리팹이 개별적인 기능을 포함하는 경우에 소스를 컨트롤하기가 매우 수월해집니다. 이렇게 하면 대부분의 체크인이 프리팹 수준에서 이루어져 씬에서 충돌이 감소합니다.
각 컴포넌트를 한 가지 문제 해결에 집중적으로 사용하세요. 그러면 여러 컴포넌트를 조합하여 새로운 것을 더 쉽게 빌드할 수 있습니다.



변경과 수정이 쉽도록 제작하기:

게임을 최대한 데이터 중심적으로 제작하세요. 명령어를 통해 데이터를 처리하는 컴퓨터처럼 게임 시스템을 설계하면, 게임이 실행 중인 경우에도 변경 사항을 게임에 효율적으로 적용할 수 있습니다.
시스템을 최대한 모듈 및 컴포넌트 기반으로 설정하면 아티스트와 디자이너를 비롯한 사용자가 시스템을 더 쉽게 수정할 수 있습니다. 디자이너가 각각 한 가지 작업만 수행하는 작은 컴포넌트를 구현할 수 있으므로 별도의 기능을 요청할 필요 없이 게임 내 요소를 만들 수 있습니다. 이렇게 되면 디자이너가 구현한 컴포넌트를 다양한 방식으로 조합하여 새로운 게임플레이/메카닉스를 직접 개발할 수도 있습니다. 라이언은 팀의 게임에 포함된 많은 멋진 기능들이 이러한 프로세스를 거쳐 탄생했다고 말하며 이 프로세스를 “신생 디자인(emergent design)”이라고 부릅니다.
런타임 시 팀에서 변경 사항을 게임에 적용할 수 있는 것이 중요합니다. 런타임 시 게임을 변경할 수 있는 자유도가 높을수록 안정성과 가치도 높아지며, 스크립터블 오브젝트처럼 런타임 상태를 외부에 다시 저장할 수 있으면 더 좋습니다.



디버깅이 쉽도록 제작하기:

이 요소는 앞 두 요소의 하위 요소입니다. 게임의 모듈화 수준이 높을수록 일부만 따로 테스트하기가 쉬워집니다. 게임을 수정할 수 있는 자유도가 높을수록, 즉 자체 인스펙터 뷰가 있는 기능이 많을수록 디버그하기가 더 쉽습니다. 인스펙터에서 디버그 상태를 볼 수 있도록 하고, 디버그 방식에 대한 계획을 수립하기 전까지는 기능이 완성됐다고 간주하지 마세요.

스크립터블 오브젝트는 메모리 최적화적으로 많이 사용이 된다. 그러나 보안상 이슈가 많기에 멀티 플레이보다는 싱글 플레이에 추천을 한다고 한다.

[참고 - 유튜브] (https://www.youtube.com/watch?v=7Qt4QNhM4nY)

자주 사용하니까 해당 사이트를 올려두고 참고해야겠다.

태그:

카테고리:

업데이트: