- Definitions
- Objects
- Player
- Gravity/Spacetime curvature
Definitions
- 월드(World) : (2+1) 시공간.
- 세계선(Worldline) : 월드를 통해 지나가는 어떠한 궤적/선.
- 오브젝트(Object) : 월드에 존재하는 어떠한 연속적 세계선을 가지고 있다 할수 있는 객체.
- 오브젝트 단면(Object Slice): 어떤 Object의 세계선에서 CoM을 관측자로 두고 자른 2차원 공간 단면.
- 플레이어(Player) : 아주 특수한 성질 몇개를 가지고 있는 오브젝트. 말그대로 플레이어/주인공이다.
Objects
- 모든 Object들은 점과 선으로 구성되있는 Weighted Graph와 그 Weighted Graph가 그리는 세계선이다.
- 이 Weighted Graph를 Object Graph라 하자.
Object Graph
Points in an Object Graph
- 모든 오브젝트의 Object Graph에는 질량 중심(Center of Mass, CoM)에 해당하는 점이 있다.
- 모든 Object의 Object Graph의 CoM의 세계선은 연속적이다.
- 모든 Object Graph의 점의 세계선은 특수한 경우를 제외하고 연속적이다(Rigid Object - Instantaneous Velocity Transition 참고)
- 어떤 Object의 Object Graph의 CoM의 세계선을 그 "Object의 세계선" 이라 한다.
- 모든 Object의 Object Graph의 CoM의 좌표는 해당 Object Slice의 좌표계에서 항상 (0,0)의 2차원 공간좌표를 가진다. 즉, "어떤 Object Slice의 좌표계"는 "해당 Object Slice와 CoM의 세계선과의 교점인 CoM을 관측자로 하는 좌표계" 이다.
- Object를 구성하는 나머지 점들은 전부 Object Slice의 좌표계에서 CoM을 기준으로 특정한 2차원 공간좌표 (x,y)를 가진다. 이는 회전이나 이동을 하며 바뀔 수 있다.
- 모든 Object Graph의 점들은 또한 기본 좌표 (x,y)를 가진다. 이는 해당 Object Slice의 CoM이 관성계에 있을때, 즉 가속하지 않고 있을때 그 점의해당 Object Slice의 좌표계에서 정상적으로 측정되는 CoM으로부터의 상대적 위치를 의미한다.
- 이 기본 좌표는 특정한 값이 아니라 해당 Object Graph의 CoM의 proper time에 따라 변하는 함수일 수도 있다.
- 단, 특수한 경우에는 CoM의 세계선이 등속운동 중 일 때에도 기본좌표와 Object Slice에서 각 점들의 좌표가 일치하지 않을 수도 있다.
- 모든 Object Graph의 모든 점들은 모든 좌표계에서 특정한 (2+1) 시공간 좌표 (t,x,y)를 가진다.
- 모든 Object Slice에는 그 Object의 Object Graph에 있는 모든 점들이 무조건 유일하게 존재해야 한다.
Lines in an Object Graph
- 모든 Object Graph의 선들은 해당 Object Graph를 구성하는 특정한 두 점을 있는다.
- 모든 Object Graph의 선들은 직선이거나 원의 현이다.
- 만약 직선일 경우, 선의 주어진 Weight는 해당 Object Graph의 CoM이 관성계에 있을때, 즉 가속하지 않고 있을때 해당 Object의 좌표계에서 측정되는 길이를 의미한다.
- 만약 원의 현일 경우, Weight가 두개 있으며 이는 각각 (현의 길이, 현을 이루는 원의 반지름)을 의미한다.
- 모든 Object Slice에는 그 Object의 Object Graph에 있는 모든 선들이 무조건 존재해야 한다.
Movement of an Object
Constant Velocity Translational Motion(등속 병진 운동)
- 어떤 Object의 세계선이 어떤 좌표계에서 선형으로 기울어져있을때(즉 등속 병진 운동시) 그 Object의 좌표계와 다른 좌표계 사이 변환은 로렌츠 변환을 통해 정해진다.
- 이때 해당 Object의 모든 Object Slice에서 각 점들은 CoM에 대해 기본 좌표를 유지하며, 앞서 말한 다른 (Object Slice에 대해 등속 병진운동을 하고 있는) 관측자의 좌표계에서 보기에 각 점들의 세계선의 방정식은 CoM의 세계선의 방정식을 통해 정해진다.
- 웬만한 경우에는 Object Graph의 기본 좌표/Weight들에 따라 Object Slice의 모양이 정해진다.
Accelerating Translational Motion(가속 병진 운동)
- 어떤 Object의 세계선이 어떤 좌표계에서 임의로 기울어져있을때(즉 가속 병진 운동시) 그 Object의 좌표계와 다른 좌표계 사이 변환은 가속중인 세계선에서 어느 시공간 좌표를 기준으로 하냐에 따라 다르며, 이때 가속중인 Object의 세계선 위 어떤 특정한 점 (t,x,y)를 기준으로 한다 할때, 그 점에서 접선을 그려 그때 순간 속도를 기준으로 로렌츠 변환을 통해 정해진다.
- 가속시 Object Slice의 모양은 Object마다 다르며 특수하게 정해진다.
Contant Velocity Rotational Motion(등각속 회전 운동)
Coming Soon
Accelerating Rotational Motion(가각속 회전 운동)
Coming Soon
Types of Objects
Normal Objects
Coming Soon
(Born) Rigid Object
- 만약 어떤 Object가 Rigid하다면, 그 Object의 모든 Object Slice의 좌표계에서 그 Object Slice의 모든 점의 좌표는 항상 기본 좌표와 동일하다.
- 즉, 가속/비가속 여부와 무관하게 항상 "모양"이 일정하다.
(Proto-Only) Instantaneous Velocity Transition
- 프로토타입에선 속도 변환이 즉각적으로 일어나며, 이에 따라 오직 등속 병진 운동만 존재하는 대신 모든 Object들의 세계선이 Globally 미분 불가능이다.
- 또한 프로토타입에선 모든 Object들이 Rigid 하다.
- 이에 따라 속도 전환이 일어날때, 공간면의 갑작스런 기울기 변화로 같은 점들이 동시에 두곳에서 관측이 되는 관성계가 존재하거나 비연속적인 세계선이 있을수 있다.
- 이럴 경우에는 CoM의 세계선만 연속적이면 되고, Object Graph의 나머지 점들은 연속적일 필요가 없다.
Interaction between Objects
Collisions
Coming Soon
Special Interactions
- 이건 설정상으로 화학적 반응이고, 아마 실제 구현상은 개별 하드 코딩해야 하는 특수한 상호작용들이다(ex. 레이저가 플레이어를 죽이거나, 플레이어가 대화를 할 수 있는 Object라던지, 조작할수 있는 기기, etc.). 여기엔 Player Interactions들에서 서술되는 Meta Interaction들도 포함된다.
Player
- 플레이어가 할 수 있는 행동은 크게 이동과 상호작용으로 나뉜다.
- 플레이어도 Object이다!
Player Movement
- Object Movement와 똑같은 규칙을 적용받는다.
- 단, 플레이어는 미리 정해진 세계선 방정식이 없다
- 따라서 그때 그때 마다 다른 Object들과의 상대속도를 고려해 카메라 렌더링을 해주어야 하며, 만약 현재 플레이어의 세계선이 완성되지 않아 어떤 Object의 세계선위 한 좌표계에서 관측되지 않거나 관측할 수 없는 경우 플레이어와 상호작용을 하지 못한다.
- 또한 플레이어는 에너지 보존과 운동량 보존에 규약을 받지 않는 것처럼 행동할 수 있다(아마 실제 구현 시에는 우주 어딘가에 매우 큰 질량체가 있어서 거기로 운동량이 간다 가정해야 할것이다).
- 즉, 빛 이하 임의의 속도로 거의 Instantaneous Velocity Transition(Proto에선 실제로 그렇고, 최종에선 매우 빠른 가속으로 구현한다)가 모든 방향으로 가능하다.
- Player가 명령 내릴수 있는 이동에는 크게 3종류가 있다.
WASD이동
- 이는 WASD키를 사용한 이동으로 해당 키들을 누르면 실행된다. W키는 현재 플레이어가 바라보고 있는 방향으로, A는 왼쪽, S는 오른쪽, D는 뒷쪽으로 미리 설정해둔 가속도로 가속한다.
우클릭 경로이동.
- 이는 어떤 지점으로 우클릭을 통해 경로를 생성한후 실행을 했을시 실행된다.
- 경로를 따라 설정된 속도로 매우 빨리 가속을 한뒤 등속 운동을 한후, 도착지점에 도착하기 직전 역으로 매우 빨리 감속하여 출발했던 관성계로 돌아온다.
- 이때 모든 경로들의 설정 속도는 처음 출발한 관성계를 기준으로 설정되며, 한 경로에서 다른 경로로 전환시 경로 1 관성계 -> 출발 관성계 -> 경로 2 관성계가 아니라 경로 1 관성계 -> 경로 2 관성계 로 바로 가속한다.
좌클릭 등속이동.
- 이는 플레이어가 어느 지점을 더블클릭했을시 발생하며, 출발 관성계 기준에서 미리 지정된 속도로 재빨리 가속해 등속 운동을 시작한다.
Player Interactions
Physical Interactions
- 여기엔 Collision 말고도 실제 어떤 Object Slice와 상호작용하여 그 세계선을 플레이어가 바꾸거나 기타 상태에 영향을 끼치는 모든 행위를 일컫는다(ex. 불을 껏다 킨다)
- 기본적으로 플레이어는 가까이 위치해 있는 어떤 오브젝트 한개를 "들" 수 있다. 이럴 경우 그 오브젝트의 좌표계는 플레이어와 동일하도록 고정이된다.
- 퍼즐을 생각해 내면서 추후 추가 예정.
Meta Interactions
- 이는 실제 월드에서 일어나는 물리적이 상호작용이 아닌 주로 관념적인 상호작용을 말한다(ex. 대화)
- 특정한 트리거가 보통있다(ex. 레벨 시작시, 아니면 특정한 Object와 특정한 상호작용을 했을시)
- 주로 화면 맨 밑에 텍스트를 출력하는 식으로 처리된다.