목록게임/게임 엔진 기초 (7)
센로그
◆ Template 어떤 class가 들어와도 한번에 동작할 수 있게 하기 위함 template ◆ STL (Standard Template Library) 다양한 컨테이너들을 제공하는 C++ 표준 라이브러리 굉장히 많은 컨테이너들을 제공함 최적화가 잘 되어있음 다양한 플랫폼에서 잘 돌아감 개조하려고 할 때 힘듦. 헤더 파일이 암호화 되어있고 이해하기 어려움 여러 환경에서 잘 돌아가도록 만들어졌기 때문에, 내 환경에 특화된 것이 아님. generality 를 확보하기 위해 메모리를 많이 사용하고 복잡하게 만들어짐. 동적 할당 많아서 퍼포먼스적으론 뛰어나지 않음 컴파일러마다 작동이 조금씩 달라서 디버깅할 때 환장함 PC에서 쓰기에는 가상 메모리 있어서 나름 괜찮음. 콘솔에선 좀.. 비추 ◆ Boost ST..
◆ Kernel OS가 가지고있는 프로그램 컴퓨터 밑단에서, 좀 core한 애들을 다뤄주는 애들이 존재한다. 컴퓨터 파워를 키면, 가장먼저 실행되는 프로그램이 bootstrap 프로그램(ROM) 그 다음에 올라오는게 os의 kernel 프로그램 커널의 크리티컬한 코드들은 메모리의 분리된 공간에 로드됨. 여기 올라와있는 커널 코드들은 크리티컬 코드가 아닌 곳에서 접근해오거나, Application 단에서 접근해 오는 걸 막는 것임. 이 공간을 kernel space라고 부름. 이게 우리가 그 os의 권한을 얻어서 하기 힘들다 했던 그 접근 권한에 해당하는 거임. 내가 프로세스를 돌리거나, 하드웨어 디바이스, 핸들링.. 이런거를 얘가 관리함 ▶ 구성 kernel space ↔ user space user s..
◆ Subsystem 모든 게임 엔진은 굉장히 많은 subsystem들이 합쳐져서 하나의 엔진으로 구성되어 있음! ◆ Subsystem 초기화 순서 subsystem들이 켜지고 꺼질 때 순서 중요함 sub1이 sub2에 의존하고 있다면, sub2 → sub1로 켜고, sub1 → sub2로 끔. 게임 실행되면 물리엔진, 리소스관리, DB관리, 메모리관리…가 같이 실행되어야함 근데 메모리관리 시스템을 로드하기 위해선 데이터 구조체나 수학 연산 이런애들이 같이 로드되어야 함 그러면 순서가! Dependency가 있는 애들이 먼저 로드가 된 후에, 메모리관리 시스템이 로드되어야 함. 서브시스템끼리 Dependency가 있는거임. 얘의 정보를 이용해 얘를 가져와야하고… 특정한 순서에 따라 얘를 로드해줌. 만약에..
◆ C++ 처리 과정전처리 - 컴파일 - 링크 ▶ Preprocessing (전처리).cpp + .h컴파일러가 코드를 이해하기 쉽게 처리해줌 헤더파일 합쳐주고, #pragma once 처리하고,... 그런 거 함 전처리의 네단계 과정Trigraph replacement (트라이그래프 대체)과거 특수문자 사용이 어려울 때 트라이그래프(3개의 문자 조합)를 통해 특수문자를 표현했었음전처리 과정에서 이를 실제 특수 문자로 바꿔줌 현대에는 거의 사용되지 않으나, C++ 표준으로 남아있으므로 이런게 사용될수도 있구나 정도만 알고있으면 됨Line splicing (줄 이어붙이기)역슬래시(\)를 사용해 물리적으로 줄을 나눈 경우 이들을 하나의 논리적 줄로 합쳐줌Tokenization (토큰화)코드를 토큰과 공백으로 ..
◆ Programming Language for Game왜 게임에서는 객체지향을 쓸까?당연하게도, 절차지향인 경우, 게임으로 가면 문제가 많아짐하나 바꿀려면 그거 관련해서 다른거에 영향주는 거 다 찾아서 바꿔야 함객체지향은 해당 객체 하나만 바꾸면 되니까 굿 ◆ low-level language vs high-level languangelow-level language어셈블리어, 기계어직접 메모리 관리 해줘야 함high-level languagePython, C++, JAVA, ...자동으로 garbage collection 지원해주기도 함. (C#, Python, Java)◆ Nominal Typing vs Structural Typing타입을 비교하는 방식에 따라 명목적 타이핑, 구조적 타이핑으로 나..
▶ Scene Optimization Layer실행중에 적절히 씬을 최적화하기 위한 목적 몇가지 자주쓰이는 씬 최적화 기법이 있음Frustum CullingSpatial subdivisionLOD ▷ Scene Optimizaion Layer - Frustrum cull카메라 뷰에 비치는 부분만 렌더링 정확히는, 카메라의 뷰 frustum 안에 들어가는 부분만 렌더링하고, 나머지는 불필요하므로 컬링하여 렌더링 과정에서 제외 ▷ Scene Optimizaion Layer - Spatial subdivisionvertex들을 공간 단위로 구분해서 각 영역에 포함된 객체들을 관리하는 기법 그러면 뭔가를 찾을 때 이 큐브(구분된 공간) 단위로 순회해서 찾는 것임. (원래는 전체 vertex 다 순회) 이렇게 하..