목록게임/게임 엔진 기초 (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 Line splicing \n을 로지컬 라인으로 바꾸고 .. Tokenization Macro expansion and directive handling ▶ Compilation (컴파일) .cpp → 어셈블리 코드 Semantic analysis 문법 오류 분석 - Syntex error : 세미콜론 빼먹은 거처럼, 문법 틀린 것 - Semantic error : a + b = c 처럼, 저런 문법이 존재하지만 저렇게 쓰면 안되는 것(의미없는 것) Code ..
◆ Programming Language for Game 절차지향인 경우, 게임으로 가면 문제가 많아짐 하나 바꿀려면 그거 관련해서 다른거에 영향주는 거 다 찾아서 바꿔야 함 객체지향은 그거 하나만 바꾸면 되니까 굿 ◆ low-level language vs high-level languange low-level language 어셈블리어, 기계어 직접 메모리 관리 해줘야 함 high-level language Python, C++, JAVA, ... 자동으로 garbage collection 지원 ◆ 왜 하필 C++이 게임에서 젤 많이 쓰일까? Deterministic 이 프로그램이 어떻게 실행될 지 "정해져 있다" C++는 스테이지 1 보스 나중에 더 안쓸거면, 명시적으로 메모리를 해제함 얘 다 썼으..
▶ Scene Optimization Layer실행중에 적절히 씬을 최적화 ▷ Scene Optimizaion Layer - Frustrum cull씬 최적화 기법 - Frustrum culling카메라에 비치는 부분만 렌더링 ▷ Scene Optimizaion Layer - Spatial subdivision씬 최적화 기법 - Spatial subdivisionvertex들을 공간 단위로 구분해서, 얘는 어느 공간에 있는 애야! 라는걸 저장 ▷ Scene Optimizaion Layer - LOD (Level of Detail)씬 최적화 기법 - LOD (Level of Detail) 가까이 있으면 작고 많은 vertex 렌더링 멀리 있으면 크고 적은 vertex 렌더링 Popping 현상 : LOD ..