Skip to main content

개요

  • Roblox Server Authority(베타)는 향후 서버 기반 상태 확정 기능을 제공한다. 본 설계는 기존 서버 스크립트 중심 구조를 사용하되, Server Authority 베타가 활성화된 경우 CharacterService 를 확장해 물리/상태 확정을 수행하도록 여지를 남긴다. 해당 기능은 ServerScriptService·ServerStorage 구성과 직접 연결되지 않는다.
  • Instance Streaming(StreamingEnabled) 환경에서 플레이어가 근처의 캐릭터만 받아도 핵심 정보가 유지되도록 CharacterInfo 폴더를 통해 필요한 데이터만 스트리밍한다.
  • 플레이어 캐릭터뿐 아니라 Workspace 에 위치한 가상 캐릭터(NPC, 연출용 모델)에도 동일한 조합형 구조를 적용해 관리 로직을 재사용한다.

캐릭터 구조

DataModel
├─ Workspace
│ └─ CharacterModel[tag=Character]
│ └─ CharacterInfo (Folder)
│ ├─ InventoryInfos (Folder)
│ ├─ StatInfos (Folder)
│ └─ ... 확장 컴포넌트

캐릭터는 이렇게 workspace 아래서 모델을 만들어서 tag 로 "Character" 를 붙이고 CharacterInfo 란 폴더를 만들고 -Infos 란 컴포넌트를 만들어서 추가적인 정보를 가지게 한다 조합으로 향후 설계도 더 간단하게

  • CharacterModelCollectionServiceCharacter 태그가 붙은 Model 로 정의한다. 플레이어 캐릭터는 입장 시 매핑되고, 가상 캐릭터는 Workspace 아래에서 독립적으로 운용된다.
  • CharacterInfo 는 PascalCase 하위 폴더/ValueObject로 구성되며, Instance Streaming 시 필요한 서브트리만 전송되도록 범위를 제어한다.
  • CharacterModules/CharacterInfoCharacterInfoWrapper, CharacterInfoManager, CharacterInfoBuilder 모듈을 제공해 CharacterInfo 서브트리에 대한 접근, 검증, 생성 로직을 서버/클라이언트 양쪽에서 일관되게 사용하도록 한다.

설계 원칙

  • 조합 우선: CharacterInfo 하위 폴더는 독립된 도메인 컴포넌트이며, CharacterInfoWrapper 를 통해 안전하게 접근한다.
  • 명명 규칙 준수: 모든 폴더·모듈·필드는 docs/guides/frameworks/scripting/code-style.mdnaming-style.md 가이드를 따른다.
  • 스트리밍 최적화: StreamingEnabled 를 활용해 근접 플레이어에게만 세부 정보를 배포한다.

모듈 구조

GameModules/CharacterModules/CharacterInfo

  • 적용 범위: 플레이어 캐릭터, NPC, 연출용 가상 캐릭터 등 CollectionServiceCharacter 태그가 부여된 모든 Model.
  • 선행 조건: CharacterInfo 폴더가 존재하거나 CharacterInfoBuilder 를 통해 생성할 수 있으며, 폴더/ValueObject/Attribute 명명은 PascalCase, naming-style를 따른다.

2. 모듈 책임 요약

CharacterInfo.Wrapper.lua CharacterInfo 폴더를 Luau 테이블로 감싸 타입 안전 접근, Attribute/Value 검증, 스트리밍 스냅샷 제공, 자동 완성과 오류 메시지 통합 | | CharacterInfo.Manager.lua | CharacterInfoWrapper 캐싱, DataStore 직렬화/복구 orchestration | 주로 서버 | Server Authority 베타 시 확정 단계 연계 | | CharacterInfo.Builder.lua | CharacterInfo 폴더 인스턴스 생성, 템플릿 적용 | 서버 | 테스트에서 모의 캐릭터 생성 시에도 사용 |