전략게시판

전략게시판 [스튜디오]
[정보글] GoldSrc의 엔진 처리방식
2022.04.13 13:50 조회 : 2143
Lv. 86PlanPlan 가입된 패밀리가 없습니다. 작성자 게시물 더보기
1. 키 입력을 인식하여 어떤 명령어가 어떤 상태인가를 인식한다. (키보드, 마우스 입력을 감지한다고 보면 된다.)





2. 1에서 인식한 명령을 바탕으로 이상속력과 방향에 대한 단위 벡터를 받아옵니다. (골드 소스 엔진은 움직임을 단위 벡터와 속력으로 계산합니다.) 이상속력은 [cl_upspeed] / [cl_forwardspeed] / [cl_backspeed] / [cl_sidespeed] 로 정의된 Cvar (Console Variation; 사용자 지정 설정값)의 값을 참조합니다. 이때, 만약 플레이어의 속도가 maxspeed 보다 크다면 사용자의 속도는 maxspeed로 스케일됩니다.





3. 2에서 불러온 벡터값은 PCS(Player Coordinate System; 플레이어 정의 좌표계) 인데, 이는 왼손 좌표계로 OpenGL 렌더러를 사용하는 GoldSrc엔진에서는 이를 ICS(Inertial Coordinate System; 관성 좌표계)로 변환하는 작업을 거칩니다.변환은 회전행렬의 좌표계 변환에 의해 이루어집니다.
PCS의 Z축 각을 α, Y축의 각을 β, X축의 각을 γ라 한다면 위의 공식을 통하여 왼손 좌표계에서 오른손 좌표계로의 변환이 가능합니다. 하지만, 이를 OpenGL 렌더러의 좌표계로 만드려면 Y축 대칭을 시켜야하므로 
가 됩니다.

+좌표계와 관련한 흥미로운 사실
카스온라인은 과거 D3D 렌더러를 지원한 적이 있습니다. 이는 왼손좌표계를 사용하는 렌더러로, 일부 사람들은 D3D를 사용하면 위의 변환 과정을 거치지 않아도 되는것 아닌가? 하는 의문을 품을 수 있습니다. 하지만, D3D를 통하여 렌더링을 하게 될 경우 위의 좌표계 변환 과정을 거친 OpenGL의 좌표계를 한 번 더 D3D로 렌더링하기때문에 추가적인 메모리 소모가 발생하고, 카스온라인 특유의 싱글코어를 갈구는 문제 등으로 인하여 지금은 D3D렌더링을 지원하지 않고 있습니다만,
현재 Cvar상에 D3D렌더러를 지원했던 흔적이 아직 남아있습니다.
D3D렌더링 방식에서 자주 발생했던 마우스 지연문제를 해결하는 데 쓰였던 역방향 렌더링 명령어입니다.
CS 1.6 시절부터 지원했던 명령어로, 지금의 카스온라인은 D3D를 지원하지 않으므로 사용할 일이 없는 명령어입니다.



4. PM_PlayerMove함수가 호출이 됩니다. 땅에 있을 경우, PM_Friction 함수가 호출이되어 프레임 당 4%의 감속을 계산합니다. 감속량은 [sv_friction] CVar로 결정이 됩니다. (서버 콘솔이므로 카스온라인에서는 수정 불가)
다만, 속력이 [sv_stopspeed]로 정의된 값보다 (기본값 75) 작을경우에는 멈추게 됩니다.



5.PM_WalkMove와 PM_AirMove함수를 통하여 엔진을 처리합니다. 이 부분은 설명할 것이 많아서 다음 글에서 따로 떼어서 작성하도록 하겠습니다.
추천 : 4
댓글을 남기시려면 로그인 해주세요
댓글 : 0