- 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(등각속 회전 운동)
http://inspirehep.net/record/927038/files/arXiv%3A1109.2488.pdf
Accelerating Rotational Motion(가각속 회전 운동)
http://inspirehep.net/record/927038/files/arXiv%3A1109.2488.pdf
Types of Objects
Elastic Objects
- 만약 어떤 Object가 Elastic하다면, 그 Object의 모든 Object Slice의 좌푝에서 그 Object Slice의 모든 점의 좌표가 항상 기본 좌표와 동일하지 않을 수도 있다는 것을 의미한다.
- 즉 가속을 할 경우 모양이 바뀔수도 있다.
- 이때 모양이 바뀌는 것은 훅의 법칙(Hooke's Law)를 따르게 된다. 원래 길이에서 Δx만큼 바꿨을 경우 물체마다 특정한 어떤 상수 kΔx만큼의 힘을 가한다. 이는 압축과 연장(compression/tension)에 대해 공통적으로 해당된다.
- 이때 압축과 연장에 대해 모든 Elastic Object들은 최소 압축/최대 연장 길이가 있어서 이 길이 이상으로 압축/연장 될 경우 파괴 된다. 이러한 Object가 파괴된후 어떤일이 일어나는지는 Object마다 다르다.
(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
- 충돌은 Four-momentum(=m*Four-velocity)를 모든 관성계에서 보존한다.
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와 특정한 상호작용을 했을시)
- 주로 화면 맨 밑에 텍스트를 출력하는 식으로 처리된다.
Gravity/Spacetime curvature
Coming Soon