Please enable JavaScript.
Coggle requires JavaScript to display documents.
World System (Field (블록들의 네트워크 통신 포트 역할 (블록을 NetworkBehavior로 정의할 수 없다,…
World System
Field
공간적 단위
플레이어는 동시에 하나의 필드 위에만 존재할 수 있다.
따라서 클라이언트는 항상 하나의 필드만 존재
청크들을 관리
Replicated
블록들의 네트워크 통신 포트 역할
블록을 NetworkBehavior로 정의할 수 없다
불필요하게 많은 오브젝트들이 Replicate 되는걸 방지하여 최적화
필드간의 상대적 위치는 월드맵과 동일하게 하면 간단히 무한성 확보 가능
FieldGenerator
각 필드를 정의
Generate()
필드를 생성하는 로직을 정의
Branch()
필드를 생성할 때 함께 호출
이 필드로부터 뻗어 나오는 다음 필드들을 월드맵에 추가
FieldGenerator의 인스턴스를 생성하는 방식으로 구현될 것으로 예상
다음 필드들은 생성자에서 정의하는 식으로 구현될 것으로 예상
'다음 필드가 3개인데 남은 이웃공간이 2개' 이런 경우 방지 필요
따라서 월드맵도 필드가 생성될 때 함께 확장되어 간다
필드 정의와 생성
목표와 가정
미리 정의된 Permanent Fields들이 월드맵의 골격을 이룬다
Permanent Fields 중 일부는 Dungeon이 Branch될 수 있다.
Permanent Field간의 연결관계는 정의하지 않는다
Branch Stuck 이슈의 발생 가능성이 너무 많음
어려운 이슈를 극복하면서까지 반드시 도입해야할 필요가 없음
외부 파일 형식으로 정의하고 불러온다
개념
FieldConfig(.json)
해당 Field의 속성
데이터
바이옴
몹
기본 블록
지형 관련 파라미터
식물, 광물
스카이박스
BGM
정의된 FieldConfig 개수만큼 노드가 생성된다.
생성
(0, 0)으로부터 정의된 필드의 개수만큼 Branch
필드 위치 결정
a. 필드를 level기준으로 오름차순 정렬
b. depth가 낮은 노드 순으로 필드 배치
고렙 필드는 시작 필드로부터 먼 곳에 생성되도록 하기 위함
World
주로 플레이어들의 필드간 이동 로직 처리
호스트의 경우 여러 필드가 공존하므로 상위에서 필드들을 관리해야 함
Chunk
16x16x16
최대 버텍스 수를 넘는 일이 발생하지 않게 하기 위해
던전 Branching
기존 필드 생성 로직과 동일
다만 모든 플레이어가 해당 던전을 퇴장하면 모든 필드가 사라짐