게임 엔진 아키텍쳐
Chapter 1
소개
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 1
게임팀의 구성
• 많은 팀원들, 많은 직업들
o Engineers (= Programmers)
o Artists
o Game Designers
o Producers
o Publisher
o Other Staff
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 2
Engineers (Programmers)
• 게임 프로그램과 작업용 툴을 개발한다.
• TD(Technical Director)가 리드한다.
• 컨텐츠 프로그래머 (=런타임 프로그래머)
• 툴 프로그래머
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 3
Artists
• 게임 업계에서는 “콘텐츠가 왕"이란 말이 있다.
• AD(Art Director)가 리드한다.
• 다양한 직군으로 구성된다.
o Concept Artists
o 3D modelers
o Texture artists
o Lighting artists
o Animators
o Motion Capture
o Sound Design
o Voice Actors
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 4
Game designers(기획자)
• 게임 플레이, 사용자 경험을 설계한다.
o 스토리
o 게임 퍼즐
o 레벨 디자인
o 무기 및 아이템들
• 코드(하이레벨 스크립트 언어)를 작성하는 기획자도 있다
• 게임 디렉터
o 전반전인 게임 설계를 총괄
o 일정 관리, 기획 작업의 일관성을 책임진다
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 5
Producers
• 일정 관리와 인력 관리를 맡는다
• 상급 기획 업무를 맡는 경우도 있다.
• 개발팀과 다른 부서(인사, 회계, 법률, 마케팅등)간의
매개자 역할을 맡기도 한다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 6
Publisher
• 일반적으로 개발 스튜디오와는 다른 회사
• 게임의 판매와 마케팅을 담당한다.
• 소니와 같은 대형 퍼블리셔들은
자회사 스튜디오(퍼스트 파티)를 가지고 있거나,
장기 독점 계약(세컨드 파티)을 하기도 한다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 7
Others
• 경영진
• 마케팅
• IT 개발 및 지원 부서
• 관리 스탭
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 8
What is a Game?
• 게임이란 사용자에게 점진적으로 난이도가 증가하는
도전 과제를 제시하고, 사용자가 궁극적으로 그 과정을
학습하고 숙달하는 상호적인 경험을 제공하는 행위다
(라프 코스터의 재미이론)
• 이 책의 주된 관심사는 FPS, TPS, 레이싱 게임, 액션
게임등을 만드는 게임 엔진이다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 9
What is a game engine
• 게임 엔진이라는 용어는 1990년대에 등장
• Doom (Id soft)가 그 중심에 있었다.
o 코어 컴퍼넌트들이 게임 콘텐츠로부터 분리 되었음.
• 퀘이크3와 언리얼은 분리를 염두에 두고
설계됨.
o 엔진 및 툴에 대한 라이선스 판매
• 게임 엔진은 재사용이 가능한 데이터 기반
아키텍쳐이므로 게임 콘텐츠를 포함하지 않는
것이 대부분
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 10
First-Person Shooters
• 언리얼, 오버워치, 콜 오브
듀티, 배틀필드
• Focus on
o 대규모 3D 월드의
효율적인 렌더링
o 반응형 카메라 조작과
조준
o 고퀄리티 애니메이션
o 멋진 무기
o 관용적인 물리 모델
• 렌더링 기술은
배경에 최적화 되고
조정된다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 11
Third-person games
• 언챠티드, 기어스오브워,
엘든링
• Focus on
o 퍼즐 요소들
o 환경 오브젝트 디오
o 3인칭 팔로우 카메라
o 복잡한 카메라 충돌
시스템
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 12
Fighting games
• 철권, 소울칼리버, 스트리트
파이터
• Technology focus on
o 격투 애니메이션
o Hit 판정
o 유저 입력 시스템
o 군중과 대체로 정적인
배경
o 고품질의 격투
애니메이션과 셰이더
o 물리 기반 옷(Cloth)과
헤어
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 13
Racing games
• 그란투리스모,
마리오카트,니드 포 스피드
• Technology tricks include
o 먼 배경의 눈속임을 위한
빌보드
o 렌더링과 AI, 길찾기를
위한 트랙을 단순화한
자료 구조
o 3차원, 1차원 카메라
시점
o 카메라 충돌
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 14
Real-time strategy
• 워크래프트,
스타크래프트, 커맨드 앤
컨커
• Technology involves
o 저해상도 캐릭터들
o Hight Map 기반의
지형
o 병력을 조종하는 기능,
새로운 건물을 지을 수
있는 기능
o 다양하고 복잡한 유저
입력 및 UI 처리
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 15
MMOG
• 월드 오브 워크래프트,
에버퀘스트
• Extra technology over 3rd
person include
o 서버 사이드 기술
• 로그인 / 로그아웃
• 캐릭터 상태 관리
• 결제 시스템
o 클라이언트 측 렌더링 및
상태 관리
o 상태 일관성 및 부정 행위
감지를 위한 네트워크
계층
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 16
Player-authored content
• 플레이어가 게임 일부로서
컨텐츠를 제작할 수 있도록
허용하기
o Mod와 다른 점
• 좋은 예
o 리틀빅 플래닛 시리즈
o 마인크래프트
o 슈퍼 마리오 메이커
• 다른 유저와 공유하면서
느끼는 재미
• 플레이어가 상상할 수 있는
모든것을 만들어 내는 재미
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 17
VR/AR/MR
• 가상현실(Virtual Reality)
• 증강 현실(AR) / 혼합
현실(MR)
• 스테레오 스코픽 렌더링
o 화면을 2개를 그려서 양쪽눈에
보여줘야 한다.
• 높은 프레임 레이트
o 90FPS 보다 낮은 VR게임은 멀미를
유발한다.
• 움직임 문제
o 플레이어의 물리적인 이동 공간 문제
o 플레이어와 게임의 이동 불일치로 인해
생기는 멀미 유발
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 18
현존하는 게임 엔진
• Quake 계열
o 퀘이크 시리즈, 메달 오브 아너 : 퍼시픽 어설트
o 하프라이프의 밸브의 소스엔진도 퀘이크 엔진 기반
o 퀘이크, 퀘이크2 엔진 소스는 공개되어 있다.
• 언리얼 엔진
o 최신 엔진은 언리얼 엔진5 (2025년 현재 UE 5.5)
o 다양한 기능과 일관되고 사용하기 쉬운 도구들
o 커다란 개발자 네트워크 (UDN)
o 작은팀에도 좋은 라이선스 모델 (게임 수익 분배)
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 19
• Unity
o 매우 풍부하고 다양한 기능들
o C# 스크립팅을 사용하여 배우기 쉬움
o 수많은 커뮤니티 서포트
o 크로스플랫폼 지원이 훌륭함
• Source Engine
o 하프라이프, 포탈등을 개발에 사용된 밸브의 엔진
o 언리얼 엔진에 견줄 정도로 그래픽 성능과 개발 제작 도구가 뛰어남
• DICE’s Frostbite
o 배틀필드 및 수많은 EA 게임들의 개발에 사용된 EA 전용 내부 엔진
o FrostEd라는 강력한 통합 자원 제작 도구와 백엔드 서비스, 런타임 게임
엔진을 제공
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 20
• CryEngine
o 원래는 엔비디아의 테크데모용으로 개발
o 파 크라이 및 다양한 게임 개발에 사용됨
o 막강한 자원 제작 도구들과 고성능 리얼타임 그래픽을 지원
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 21
Runtime Engine
Architecture
• 게임 엔진은 툴과 런타임 구성 요소로 나뉜다.
• 게임 엔진은 그 자체로 거대한 소프트웨어 시스템
• 게임 엔진도 다른 시스템처럼 계층적(Layer)로 구성
된다.
o 상위 계층은 하위 계층에 의존하지만 그 반대는 아니다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 22
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 23
Runtime Engine
• Low level components
• 3rd Party SDKs
• Platform independence layer
• Core systems
• Resources manager
• Rendering engine
• Profiling/Debugging
• Collisions and Physics
• Animation
• Human Interface Devices
• Audio
• Gameplay foundation system
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 24
Low level components
• Hardware
o 게임이 동작할 컴퓨터나 콘솔 시스템. (Windows, Mac, PlayStation, Android…)
• Device Drivers
o 하드웨어를 관리하고 OS나 상위 레이어에서 불필요한 하드웨어 요소들을
고려하지 않게 해준다.
• Operating System
o 운영체제는 게임과 같은 애플리케이션을 조율하는 역할을 한다.
o 멀티스레드, 멀티태스킹등을 관리한다.
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 25
3rd Party SDKs
• 자료 구조 및 알고리즘
o STL – C++ standard template library 자료
구조, 문자열, 스트림 기반 IO
o Boost – 뛰어난 자료 구조 및 알고리즘
• 그래픽스
o OpenGL, DirectX, Vulkan
• 충돌과 물리
o Chaos, PhysX, Havok
• 캐릭터 애니메이션
• 생체 역학적 캐릭터 모델
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 26
플랫폼 독립적 계층
• 엔진을 사용한 개발이 특정 플랫폼에
종속되지 않고, 여러 플랫폼을 지원하게
만든다
• 플랫폼의 세부 내용을 몰라도 래핑 함수로
제어할 수 있게 해준다
• 프리미티브 타입, 네트워크, 파일시스템등을
포함한다
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 27
Core systems
• Assertions – 에러 체킹 코드
• 메모리 관리
• 수학 라이브러리
o 벡터, 행렬, 사원수등의 기하연산등
• 독자적 자료 구조와 알고리즘
o 독자적 자료 구조 – 메모리 사용과 최적의 성능, 멀티 플랫폼
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 28
Resource manager
• 일관된 인터페이스 제공
o 게임 엔진의 모든 자원과 기타 엔진 데이터 접근에 사용
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 29
Rendering engine
• 로우레벨 렌더러
• 씬 그래프와 컬링 최적화
• 비주얼 이펙트
• 전단부(Front end)
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 30
Low-level Renderer
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 31
•렌더링 엔진의 가장 기초적인 부분
•기하학적 기본 단위(geometric primitive)를 빠르게 그리는 역할
•깊이 중첩, 화면 가시성 등 고차원적 문제는 다루지 않음
Low-level Renderer
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 32
2. 로우레벨 렌더러의 구성 요소
그래픽 디바이스 인터페이스 (Graphics Device Interface)
•다이렉트X, OpenGL 등의 그래픽 SDK 활용
•하드웨어 초기화 및 설정
•렌더 표면(후면 버퍼, 스텐실 버퍼 등) 구성
•PC 게임에서는 렌더러를 윈도우 메시지 루프와 연결해야 함
(입력 및 업데이트 의존성 문제)
기타 렌더러 구성 요소
•메시 (Mesh) , 선 리스트 (Line List) , 점 리스트 (Point List)
•입자 (Particles) , 지형 (Terrain) , 문자열 (Strings)
•기하학적 기본 단위를 화면에 그리기 위한 다양한 구조 지원
Low-level Renderer
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 33
3. 렌더링 추가 개념
•뷰포트(Viewport) 및 카메라 시스템
• 카메라 월드 행렬 , 3D 투영 매개 변수 (원근 투영 , 직교 투영 ) 지원
•머티리얼 시스템 (Material System)
• 동적 라이팅(Dynamic Lighting) 시스템을 통해 머티리얼 상태 및 그래픽 하드웨어
제어
• 머티리얼별로 기하학적 기본 단위를 렌더링하며, 조명 설정과 세이딩(Shading) 적용
4. 조명 및 세이딩
•조명 방식에 따라 머티리얼 및 세이딩 방법 결정
•텍스처화 및 확산 조명, 점멸 쉐이더, 픽셀 쉐이더 등의 상태를 정의
•조명 기법은 컴퓨터 그래픽스의 핵심 요소로, 복잡한 주제
씬그래프와 컬링 최적화
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 34
1. 개요
•로우레벨 렌더러는 보이지 않는 개체까지 렌더링해 성능 저하
•시야 결정(Visibility Determination) 기법을 활용해 최적화
2. 주요 최적화 기법
공간 분할 (Spatial Subdivision) – BSP 트리, 옥트리, KD 트리 등
PVS (Potentially Visible Set) – 보일 가능성이 있는 집합만 렌더링
LOD (Level of Detail) – 먼 개체는 저해상도 모델 사용
3. 기타 최적화 기법
•프러스텀 컬링 – 카메라 밖 개체 제거
•포털 & 차폐 기법 – 벽/문 뒤의 개체 숨기기
4. 실용적인 활용
•공간 분할과 무관하게 렌더링 가능
•오거 엔진(Ogre 3D) 등 플러그앤플레이 엔진 활용 가능
Visual effects
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 35
1. 주요 시각 효과
파티클 시스템 – 연기, 불, 물 튀는 효과
데칼 시스템 – 총알 자국, 발자국 등
조명 매핑 & 환경 매핑 – 빛과 반사 표현
동적 그림자 – 실시간 그림자 생성
2. 풀 스크린 후처리 효과
•HDR 조명 & 블룸 – 밝기 강조
•안티에일리어싱(FSAA) – 계단 현상 제거
•색 보정 & 채도 조절 – 색감 변화
3. 시스템 구현 방식
•이펙트 시스템 – 입자 & 데칼을 별도 처리
•렌더링 엔진 통합 – 조명 & 환경 매핑 직접 연산
Front end
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 36
1. 개요
•게임의 3D 그래픽 외에 2D 그래픽이 추가로 사용됨
•대표적인 예:
HUD – 게임의 헤드업 디스플레이
게임 메뉴 & 툴 – UI, 설정 화면
캐릭터 인벤토리 & 그래픽 인터페이스 (GUI)
2. 추가적인 전단부 요소
•풀 모션 비디오 (FMV) – 미리 녹화된 영상 재생
•인게임 시네마틱 (IGC) – 게임 내 실시간 연출
• FMV: 완전히 녹화된 영상 재생
• IGC: 게임 엔진을 활용한 실시간 장면 구현
Profiling/Debugging
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 37
1. 개요
•게임 성능 최적화를 위해 프로파일링 필수
•메모리 부족 문제 해결을 위한 메모리 분석 툴 활용
2. 대표적인 디버깅 툴
VTune (Intel)
Quantify & Purify (IBM)
Insure++ (Parasoft)
Valgrind (Julian Seward & Valgrind 팀)
3. 주요 기능
•실시간 성능 분석 – FPS, 메모리 사용량 확인
•코드 인스트루멘테이션 – 특정 코드 실행 시간 측정
•디버그 메시지 출력 – 오류 원인 추적
•게임플레이 녹화 & 재현 – 버그 재현 및 분석
4. 콘솔 프로파일링 예시 (PS4 Core Dump)
•크래시 분석 – 크래시 전후 15초 기록 저장
•서버 업로드 – 출시 후에도 버그 수정 가능
Collisions and Physics
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 38
1. 개요
•게임에서 충돌 감지는 필수 요소
•강체(Rigid Body) 물리 – 힘, 운동량, 회전력 계산
2. 충돌 & 물리 시스템
제약 조건 해결 (Constraint Satisfaction)
충돌 감지 후 물리적 반응 처리
형상/충돌체 시스템
물체 간 충돌을 정확히 계산
3. 대표적인 물리 엔진
•Havok – 가장 널리 사용되는 물리 엔진, 멀티 플랫폼 지원
•PhysX (엔비디아) – GPU 가속 지원, PC용 무료
•ODE (Open Dynamic Engine) – 오픈소스 물리 엔진
Animation
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 39
1. 주요 애니메이션 방식
스프라이트 애니메이션 – 2D 텍스처 변경
강체 계층 애니메이션 – 강체 객체의 계층적 이동
뼈대(Skeletal) 애니메이션 – 본을 이용한 3D 캐릭터 움직임
정점(Vertex) 애니메이션 – 정점별 변형
모프 타겟 애니메이션 – 특정 형태 간 변형
2. 뼈대 애니메이션 시스템
•본 트리 & 스키닝(Skinning) – 본의 위치에 따라 캐릭터 형태 조정
•애니메이션 압축 & 보간 – 용량 최적화, 부드러운 모션 구현
•물리 시스템 연동 (랙 돌) – 옷, 머리카락 등의 자연스러운 움직임
HID
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 40
1. 주요 HID 장치
키보드 & 마우스 – 기본 입력 장치
조이패드 – 콘솔 게임에서 사용
특수 컨트롤러 – 운전대, 낚싯대, 댄싱 패드, WiiMote 등
2. 입력 & 출력 기능
•입력: 버튼, 스틱, 센서 등의 신호 해석
•출력: 포스 피드백(진동), 사운드 출력
3. HID 데이터 처리
•플랫폼별 컨트롤러 설정 최적화
•입력 필터링 – 너무 민감한 조이패드 스틱 조정
•입력 해석 기능 – 키 매핑, 연타 감지, 속도 기반 입력 조정
Audio
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 41
1. 개요
•오디오는 렌더링, 물리, 애니메이션, AI 등과 밀접한 연관
•게임 경험을 향상시키지만, 개발 리소스가 많이 소모됨
2. 오디오 시스템 구성
DSP/효과 – 리버브, 필터 등 음향 효과
3D 오디오 모델 – 공간 기반 음향 처리
오디오 재생/관리 – 사운드 출력 & 리소스 관리
3. 주요 오디오 엔진
•XAudio2 – 마이크로소프트의 다이렉트X 오디오 엔진
•WWise – AAA급 콘솔, PC 게임들에서 가장 많이 사용하는 오디오 엔진
•Scream – 소니 & 너티독 개발, 언차티드, 라스트 오브 어스 등 사용
Multiplayer/networking
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 42
1. 멀티플레이 유형
단일 스크린 멀티플레이어 – 같은 화면 공유
분할 화면 멀티플레이어 – 각 플레이어별 화면 분할
네트워크 멀티플레이어 – 여러 대의 컴퓨터 연결
대규모 온라인 게임 (MMOG) – 수천 명이 동시에 플레이
2. 멀티플레이 시스템 구성
•매치메이킹 & 게임 관리 – 서버 기반 매칭
•객체 관할 정책 – 각 플레이어가 제어할 객체 결정
•게임 상태 복제 – 동기화 유지
3. 개발 시 고려 사항
•싱글플레이 → 멀티플레이 변환은 어렵고 미리 설계하는 것이 유리
•일부 엔진은 싱글 & 멀티 전환이 쉬운 구조 사용 (클라이언트-온-톱-오브-서버)
게임 플레이 기반 시스템
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 43
1. 개요
•게임 월드는 정적인 배경 & 동적인 객체로 구성
•객체는 실시간 시뮬레이션을 통해 동작
2. 주요 객체 유형
정적인 배경 – 건물, 길, 지형
동적 오브젝트 – 바위, 음료수 캔, 의자
플레이어 & NPC – 게임 캐릭터
무기 & 발사체 – 총, 화살, 폭탄
탈것 & 카메라 – 자동차, 1인칭 시점
빛 – 실시간 조명 & 오프라인 조명 계산
3. 객체 모델링 고려 사항
•객체지향적 설계 여부
•사용할 개발 언어 – C, C++, Java, OCaml?
•클래스 구조 – 수직적 계층 vs. 수평적 구조
•객체 접근 방식 – 포인터, 스마트 포인터, 핸들?
•객체 고유 식별 방식 – 물리적 주소, 이름, GUID?
•객체 수 관리 & 상태 시뮬레이션
Event system
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 44
•게임 내 객체 간 통신 방식
•이벤트 기반 방식 – 작은 구조체(이벤트 메시지)를 전달하여 객체 간 상호작용
•핸들러 호출 – 이벤트를 받은 객체가 해당 핸들러를 실행
•큐(Queue) 사용 – 이벤트를 저장 후 나중에 처리 가능
Scripting system
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 45
•게임 규칙과 콘텐츠를 쉽고 빠르게 개발하기 위한 시스템
•스크립트 언어 사용 – 코드 변경 시 컴파일 & 링크 없이 바로 반영
•일부 엔진은 실행 중에도 스크립트 변경 가능, 다른 엔진은 재시작 필요
•속도 vs. 유연성 – 스크립트는 빠르지만 네이티브 코드보다 성능은 낮음
이벤트 & 스크립트 시스템은 게임 개발 생산성을 높이는 핵심 요소!
인공지능 기반 시스템
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 46
•AI는 초기에는 게임 규칙 일부였지만, 점점 엔진과 통합되는 추세
•현대 AI 시스템은 공통적인 패턴을 가지며 다양한 게임 엔진과 연결됨
•AI는 게임 세계의 현실감을 높이고, 더 나은 플레이 경험을 제공하는 중요한 요소!
2. 대표적인 AI 미들웨어
카이나곤(Kynogon) 키냅스(Kynapse) – 고급 AI 기능 지원
오토데스크 게임웨어 내비게이션(Gameware Navigation) – AI 네비게이션 시스템
3. 주요 AI 기능
•네비 메시(mesh) 생성 – AI가 이동할 수 있는 공간 정의
•길 찾기(Pathfinding) – 최적의 이동 경로 계산
•장애물 회피 – 정적/동적 장애물 피하기
•취약 구분 – AI가 문을 열거나 특정 지역 접근 가능 여부 판단
•시야 & 애니메이션 연동 – 캐릭터 행동과 애니메이션 자연스럽게 연결
게임 특화 하부 시스템
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 47
•게임플레이 기능을 구현하는 전용 시스템
•게임 특화 하부 시스템은 게임의 장르와 스타일에 따라 맞춤 설계됨!
2. 대표적인 게임 특화 시스템
플레이어 메카닉 – 이동, 점프, 상호작용 등
카메라 시스템 – 1인칭, 3인칭, 시네마틱 카메라
NPC AI – 적 행동, 동료 AI
무기 시스템 – 총기, 근접 무기, 투척 무기
탈것 시스템 – 자동차, 비행기, 말
3. 게임 엔진과의 관계
•게임플레이와 엔진의 중간 계층 역할
•일부 시스템은 게임 엔진의 핵심 요소까지 확장될 수도 있음
Tools and the asset pipeline
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 48
DCC 툴
(Digital content creation)
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 49
1. 게임 엔진과의 관계
•효율적인 워크플로우를 위해 DCC 툴과 엔진의 원활한 연동 필수
•일부 엔진은 자체적인 콘텐츠 제작 도구 제공
•게임 월드 제작은 일반적으로 DCC 툴 + 게임 엔진의 조합으로 진행
•툴은 사용하기 쉬울수록 좋지만, 반드시 안정적으로 동작해야 함
2. 대표적인 DCC 도구
3D 모델링 & 애니메이션 – Maya, 3ds Max
텍스처 제작 – Photoshop, Substance Painter
오디오 편집 – SoundForge
애셋 다듬기 파이프라인
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 50
•게임 성능 최적화의 핵심 요소로, DCC와 게임 엔진을 연결하는 과정
•이 흐름을 자원 다듬기 파이프라인(ACP) 이라고 함
1. 자원이 바로 사용되지 않는 이유
•DCC 데이터는 게임 엔진에서 쓰기에 너무 복잡
•장면 노드 간 관계, 파일 변경 이력, 모든 물체의 변환 계층까지 저장됨
•게임 엔진은 필요한 정보만 활용하므로, 일부 데이터는 생략됨
2. 최적화 과정 (가공 & 내보내기)
•DCC 데이터는 표준 포맷(예: XML, JSON) 또는 바이너리 형식으로 변환
•메시 가공 – 머티리얼 정보 최적화, 메시 정리, 용량 축소
•플랫폼 맞춤 최적화 – 다양한 기기에 맞게 변환
Assets – 3D Models/Mesh
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 51
•게임에서 기하 형상은 삼각형 메시 기반으로 렌더링되며, 최적화를 위해 삼각형 처리 방식이 일반적
•게임 엔진에서 직접 활용할 수 있도록 DCC 툴에서 내보내기(export tool) 필요
1. 메시 (Mesh)
렌더링 단위 – 하나의 메시 = 여러 개의 삼각형
머티리얼 적용 – 색상, 반사도, 텍스처 정보 포함
DCC 툴 사용 – Maya, 3ds Max, ZBrush 등
2. 브러시 기하 형상 (Brush Geometry)
•빠르게 제작 가능, 게임 에디터에서 직접 조작 가능
•프로토타입 제작, 충돌 볼륨 역할로 활용됨
장점
•빠르게 제작 가능
•게임 디자이너가 쉽게 사용 가능
•충돌 볼륨 역할 수행 가능
단점
•복잡한 구조 표현 어려움
•애니메이션/활동하는 물체 표현 제한
Assets – Skeletal Mesh
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 52
•**뼈대 메시(Skeletal Mesh)**는 애니메이션을 위해 뼈 구조에 연결된 특수한 메시
•각 정점은 어떤 뼈에 연결되는지, 뼈의 영향을 얼마나 받는지 등의 정보 포함
1. 스켈레탈 메시를 그리기 위한 3가지 데이터
메시 (Mesh) – 기본적인 3D 형상
뼈대(Skeleton) – 관절 이름, 부모-자식 관계, 기본 포즈
애니메이션 (Animation) – 뼈가 어떻게 움직이는지 정의
2. 데이터 관리 & 최적화
•보통 메시 & 뼈대는 같은 파일, 애니메이션은 분리된 파일로 저장
•애니메이션 데이터를 묶을 수도 있지만, 메모리 부담 증가
•뼈대 애니메이션은 보통 100개 이상의 관절 & 초당 30번 이상 갱신되므로 압축 필수
게임마다 애니메이션 압축 방식이 다르며, 표준화된 형식은 없음!
Assets – Audio, Particle
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 53
오디오 데이터 (Audio Data)
•오디오 클립은 Sound Forge 같은 툴에서 제작되며, 다양한 형식과 샘플링 주기를 가짐
•파일 형식: 모노, 스테레오, 5.1, 7.1 멀티채널 등
•일반적으로.wav형식을 사용하지만,플레이스테이션 ADPCM(vag) 같은 특수 포맷도 존재
•오디오 클립은 뱅크(bank) 단위로 묶어 관리 & 스트리밍 로딩 최적화
파티클 시스템 데이터 (Particle System Data)
•게임 엔진에서 복잡한 파티클 효과(연기, 불꽃 등) 활용
•Houdini 같은 시뮬레이션 툴을 사용하면 영화 수준의 효과 가능
•그러나 게임 엔진의 실시간 렌더링 한계로 인해 최적화된 기능만 제공
•대부분 전용 파티클 툴을 사용하여, 게임 내에서의 시각적 효과를 미리 확인하고 제작
Game world editor
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 54
•게임 엔진의 핵심 요소 중 하나로, 모든 게임 요소가 모이는 공간
•대부분의 상용 엔진이 자체 월드 에디터 제공
대표적인 월드 에디터
Radiant – 퀘이크 기반 엔진에서 사용
Hammer – 하프라이프 2 소스 엔진용
Unreal Editor – 언리얼 엔진 전용, 리소스 관리 기능 포함
Sandbox – 크라이엔진의 월드 에디터
좋은 월드 에디터를 만들기는 어렵지만, 게임 엔진에서 필수적인 요소!
Resource database
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 55
•게임 엔진은 모든 자원과 관련된 메타데이터를 관리하는 시스템이 필요
•보통 MySQL, Oracle 같은 관계형 DB 또는 Git, Perforce 같은 버전 관리
시스템을 사용
1. 포함되는 메타데이터
애니메이션 구분 ID – 특정 애니메이션 식별
파일 경로 & 원본 소스 정보 – 데이터 위치 추적
프레임 범위 – 애니메이션 시작 & 종료 프레임
압축 방식 & 레벨 – 품질 vs. 용량 최적화
2. 자원 DB 관리 & 편집 도구
•자원 관리에는 GUI 기반 툴 (예: Builder-너티독) 사용 가능
•개발팀의 필요에 따라 맞춤형 데이터베이스 설계
게임 자원 데이터베이스는 효율적인 자원 관리 & 최적화의 핵심 요소!
툴 구조에 대한 접근 방식
Stand alone Integrated
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 56
언리얼 엔진의 툴 구조
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 57
언리얼 엔진의 월드 에디터 (UnrealEd)
•언리얼 엔진의 월드 에디터는 자원 관리자와 통합된 형태로 동작
•게임 실행 시 커맨드 옵션에 'editor' 추가하면 에디터 모드로 실행
가능
1. 장점
데이터 접근 자유로움 – 엔진과 동일한 구조로 자원을 관리
빠른 실행 속도 – 에디터에서 곧바로 게임 실행 가능
게임 중 에디팅 지원 – 실시간 수정 & 반영
2. 단점
엔진 문제 발생 시 에디터도 중단될 위험
자원 생성 툴과의 밀접한 연결이 생산성 저하 가능성
언리얼 에디터는 강력한 기능을 제공하지만, 엔진과 밀접하게
연결된 만큼 리스크도 존재!
웹 기반 툴
초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 58
•게임 개발 도구는 웹 기반 UI가 빠르게 보편화되는 추세
•웹 UI는 설치 필요 없음, 유지보수 용이, 클라이언트-서버 구조 활용 가능
1. 웹 UI의 주요 활용 예시
현지화 도구 – 데이터베이스에 접근하는 전달부 역할
작업 관리 시스템 (Tasker) – 작업 생성, 일정 조정, 커뮤니케이션 관리
게임 엔진 디버깅 (Connector) – 렌더링, 애니메이션, AI 관련 정보 실시간 조회
2. 웹 UI vs. 독립 실행형 GUI
•웹 UI: 별도 설치 필요 없음, 브라우저에서 즉시 사용 가능
•독립형 GUI: 복잡한 3D 시각화에는 더 적합
웹 기반 UI는 배포와 유지보수에 강점, 반면 복잡한 3D 작업에는 독립형 GUI가 더 유리!

게임 엔진 아키텍쳐_1장 요약 by 알콜코더(초중급 게임 개발자 스터디 데브루키)

  • 1.
    게임 엔진 아키텍쳐 Chapter1 소개 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 1
  • 2.
    게임팀의 구성 • 많은팀원들, 많은 직업들 o Engineers (= Programmers) o Artists o Game Designers o Producers o Publisher o Other Staff 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 2
  • 3.
    Engineers (Programmers) • 게임프로그램과 작업용 툴을 개발한다. • TD(Technical Director)가 리드한다. • 컨텐츠 프로그래머 (=런타임 프로그래머) • 툴 프로그래머 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 3
  • 4.
    Artists • 게임 업계에서는“콘텐츠가 왕"이란 말이 있다. • AD(Art Director)가 리드한다. • 다양한 직군으로 구성된다. o Concept Artists o 3D modelers o Texture artists o Lighting artists o Animators o Motion Capture o Sound Design o Voice Actors 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 4
  • 5.
    Game designers(기획자) • 게임플레이, 사용자 경험을 설계한다. o 스토리 o 게임 퍼즐 o 레벨 디자인 o 무기 및 아이템들 • 코드(하이레벨 스크립트 언어)를 작성하는 기획자도 있다 • 게임 디렉터 o 전반전인 게임 설계를 총괄 o 일정 관리, 기획 작업의 일관성을 책임진다 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 5
  • 6.
    Producers • 일정 관리와인력 관리를 맡는다 • 상급 기획 업무를 맡는 경우도 있다. • 개발팀과 다른 부서(인사, 회계, 법률, 마케팅등)간의 매개자 역할을 맡기도 한다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 6
  • 7.
    Publisher • 일반적으로 개발스튜디오와는 다른 회사 • 게임의 판매와 마케팅을 담당한다. • 소니와 같은 대형 퍼블리셔들은 자회사 스튜디오(퍼스트 파티)를 가지고 있거나, 장기 독점 계약(세컨드 파티)을 하기도 한다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 7
  • 8.
    Others • 경영진 • 마케팅 •IT 개발 및 지원 부서 • 관리 스탭 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 8
  • 9.
    What is aGame? • 게임이란 사용자에게 점진적으로 난이도가 증가하는 도전 과제를 제시하고, 사용자가 궁극적으로 그 과정을 학습하고 숙달하는 상호적인 경험을 제공하는 행위다 (라프 코스터의 재미이론) • 이 책의 주된 관심사는 FPS, TPS, 레이싱 게임, 액션 게임등을 만드는 게임 엔진이다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 9
  • 10.
    What is agame engine • 게임 엔진이라는 용어는 1990년대에 등장 • Doom (Id soft)가 그 중심에 있었다. o 코어 컴퍼넌트들이 게임 콘텐츠로부터 분리 되었음. • 퀘이크3와 언리얼은 분리를 염두에 두고 설계됨. o 엔진 및 툴에 대한 라이선스 판매 • 게임 엔진은 재사용이 가능한 데이터 기반 아키텍쳐이므로 게임 콘텐츠를 포함하지 않는 것이 대부분 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 10
  • 11.
    First-Person Shooters • 언리얼,오버워치, 콜 오브 듀티, 배틀필드 • Focus on o 대규모 3D 월드의 효율적인 렌더링 o 반응형 카메라 조작과 조준 o 고퀄리티 애니메이션 o 멋진 무기 o 관용적인 물리 모델 • 렌더링 기술은 배경에 최적화 되고 조정된다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 11
  • 12.
    Third-person games • 언챠티드,기어스오브워, 엘든링 • Focus on o 퍼즐 요소들 o 환경 오브젝트 디오 o 3인칭 팔로우 카메라 o 복잡한 카메라 충돌 시스템 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 12
  • 13.
    Fighting games • 철권,소울칼리버, 스트리트 파이터 • Technology focus on o 격투 애니메이션 o Hit 판정 o 유저 입력 시스템 o 군중과 대체로 정적인 배경 o 고품질의 격투 애니메이션과 셰이더 o 물리 기반 옷(Cloth)과 헤어 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 13
  • 14.
    Racing games • 그란투리스모, 마리오카트,니드포 스피드 • Technology tricks include o 먼 배경의 눈속임을 위한 빌보드 o 렌더링과 AI, 길찾기를 위한 트랙을 단순화한 자료 구조 o 3차원, 1차원 카메라 시점 o 카메라 충돌 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 14
  • 15.
    Real-time strategy • 워크래프트, 스타크래프트,커맨드 앤 컨커 • Technology involves o 저해상도 캐릭터들 o Hight Map 기반의 지형 o 병력을 조종하는 기능, 새로운 건물을 지을 수 있는 기능 o 다양하고 복잡한 유저 입력 및 UI 처리 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 15
  • 16.
    MMOG • 월드 오브워크래프트, 에버퀘스트 • Extra technology over 3rd person include o 서버 사이드 기술 • 로그인 / 로그아웃 • 캐릭터 상태 관리 • 결제 시스템 o 클라이언트 측 렌더링 및 상태 관리 o 상태 일관성 및 부정 행위 감지를 위한 네트워크 계층 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 16
  • 17.
    Player-authored content • 플레이어가게임 일부로서 컨텐츠를 제작할 수 있도록 허용하기 o Mod와 다른 점 • 좋은 예 o 리틀빅 플래닛 시리즈 o 마인크래프트 o 슈퍼 마리오 메이커 • 다른 유저와 공유하면서 느끼는 재미 • 플레이어가 상상할 수 있는 모든것을 만들어 내는 재미 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 17
  • 18.
    VR/AR/MR • 가상현실(Virtual Reality) •증강 현실(AR) / 혼합 현실(MR) • 스테레오 스코픽 렌더링 o 화면을 2개를 그려서 양쪽눈에 보여줘야 한다. • 높은 프레임 레이트 o 90FPS 보다 낮은 VR게임은 멀미를 유발한다. • 움직임 문제 o 플레이어의 물리적인 이동 공간 문제 o 플레이어와 게임의 이동 불일치로 인해 생기는 멀미 유발 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 18
  • 19.
    현존하는 게임 엔진 •Quake 계열 o 퀘이크 시리즈, 메달 오브 아너 : 퍼시픽 어설트 o 하프라이프의 밸브의 소스엔진도 퀘이크 엔진 기반 o 퀘이크, 퀘이크2 엔진 소스는 공개되어 있다. • 언리얼 엔진 o 최신 엔진은 언리얼 엔진5 (2025년 현재 UE 5.5) o 다양한 기능과 일관되고 사용하기 쉬운 도구들 o 커다란 개발자 네트워크 (UDN) o 작은팀에도 좋은 라이선스 모델 (게임 수익 분배) 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 19
  • 20.
    • Unity o 매우풍부하고 다양한 기능들 o C# 스크립팅을 사용하여 배우기 쉬움 o 수많은 커뮤니티 서포트 o 크로스플랫폼 지원이 훌륭함 • Source Engine o 하프라이프, 포탈등을 개발에 사용된 밸브의 엔진 o 언리얼 엔진에 견줄 정도로 그래픽 성능과 개발 제작 도구가 뛰어남 • DICE’s Frostbite o 배틀필드 및 수많은 EA 게임들의 개발에 사용된 EA 전용 내부 엔진 o FrostEd라는 강력한 통합 자원 제작 도구와 백엔드 서비스, 런타임 게임 엔진을 제공 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 20
  • 21.
    • CryEngine o 원래는엔비디아의 테크데모용으로 개발 o 파 크라이 및 다양한 게임 개발에 사용됨 o 막강한 자원 제작 도구들과 고성능 리얼타임 그래픽을 지원 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 21
  • 22.
    Runtime Engine Architecture • 게임엔진은 툴과 런타임 구성 요소로 나뉜다. • 게임 엔진은 그 자체로 거대한 소프트웨어 시스템 • 게임 엔진도 다른 시스템처럼 계층적(Layer)로 구성 된다. o 상위 계층은 하위 계층에 의존하지만 그 반대는 아니다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 22
  • 23.
    초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 23
  • 24.
    Runtime Engine • Lowlevel components • 3rd Party SDKs • Platform independence layer • Core systems • Resources manager • Rendering engine • Profiling/Debugging • Collisions and Physics • Animation • Human Interface Devices • Audio • Gameplay foundation system 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 24
  • 25.
    Low level components •Hardware o 게임이 동작할 컴퓨터나 콘솔 시스템. (Windows, Mac, PlayStation, Android…) • Device Drivers o 하드웨어를 관리하고 OS나 상위 레이어에서 불필요한 하드웨어 요소들을 고려하지 않게 해준다. • Operating System o 운영체제는 게임과 같은 애플리케이션을 조율하는 역할을 한다. o 멀티스레드, 멀티태스킹등을 관리한다. 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 25
  • 26.
    3rd Party SDKs •자료 구조 및 알고리즘 o STL – C++ standard template library 자료 구조, 문자열, 스트림 기반 IO o Boost – 뛰어난 자료 구조 및 알고리즘 • 그래픽스 o OpenGL, DirectX, Vulkan • 충돌과 물리 o Chaos, PhysX, Havok • 캐릭터 애니메이션 • 생체 역학적 캐릭터 모델 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 26
  • 27.
    플랫폼 독립적 계층 •엔진을 사용한 개발이 특정 플랫폼에 종속되지 않고, 여러 플랫폼을 지원하게 만든다 • 플랫폼의 세부 내용을 몰라도 래핑 함수로 제어할 수 있게 해준다 • 프리미티브 타입, 네트워크, 파일시스템등을 포함한다 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 27
  • 28.
    Core systems • Assertions– 에러 체킹 코드 • 메모리 관리 • 수학 라이브러리 o 벡터, 행렬, 사원수등의 기하연산등 • 독자적 자료 구조와 알고리즘 o 독자적 자료 구조 – 메모리 사용과 최적의 성능, 멀티 플랫폼 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 28
  • 29.
    Resource manager • 일관된인터페이스 제공 o 게임 엔진의 모든 자원과 기타 엔진 데이터 접근에 사용 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 29
  • 30.
    Rendering engine • 로우레벨렌더러 • 씬 그래프와 컬링 최적화 • 비주얼 이펙트 • 전단부(Front end) 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 30
  • 31.
    Low-level Renderer 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 31 •렌더링 엔진의 가장 기초적인 부분 •기하학적 기본 단위(geometric primitive)를 빠르게 그리는 역할 •깊이 중첩, 화면 가시성 등 고차원적 문제는 다루지 않음
  • 32.
    Low-level Renderer 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 32 2. 로우레벨 렌더러의 구성 요소 그래픽 디바이스 인터페이스 (Graphics Device Interface) •다이렉트X, OpenGL 등의 그래픽 SDK 활용 •하드웨어 초기화 및 설정 •렌더 표면(후면 버퍼, 스텐실 버퍼 등) 구성 •PC 게임에서는 렌더러를 윈도우 메시지 루프와 연결해야 함 (입력 및 업데이트 의존성 문제) 기타 렌더러 구성 요소 •메시 (Mesh) , 선 리스트 (Line List) , 점 리스트 (Point List) •입자 (Particles) , 지형 (Terrain) , 문자열 (Strings) •기하학적 기본 단위를 화면에 그리기 위한 다양한 구조 지원
  • 33.
    Low-level Renderer 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 33 3. 렌더링 추가 개념 •뷰포트(Viewport) 및 카메라 시스템 • 카메라 월드 행렬 , 3D 투영 매개 변수 (원근 투영 , 직교 투영 ) 지원 •머티리얼 시스템 (Material System) • 동적 라이팅(Dynamic Lighting) 시스템을 통해 머티리얼 상태 및 그래픽 하드웨어 제어 • 머티리얼별로 기하학적 기본 단위를 렌더링하며, 조명 설정과 세이딩(Shading) 적용 4. 조명 및 세이딩 •조명 방식에 따라 머티리얼 및 세이딩 방법 결정 •텍스처화 및 확산 조명, 점멸 쉐이더, 픽셀 쉐이더 등의 상태를 정의 •조명 기법은 컴퓨터 그래픽스의 핵심 요소로, 복잡한 주제
  • 34.
    씬그래프와 컬링 최적화 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 34 1. 개요 •로우레벨 렌더러는 보이지 않는 개체까지 렌더링해 성능 저하 •시야 결정(Visibility Determination) 기법을 활용해 최적화 2. 주요 최적화 기법 공간 분할 (Spatial Subdivision) – BSP 트리, 옥트리, KD 트리 등 PVS (Potentially Visible Set) – 보일 가능성이 있는 집합만 렌더링 LOD (Level of Detail) – 먼 개체는 저해상도 모델 사용 3. 기타 최적화 기법 •프러스텀 컬링 – 카메라 밖 개체 제거 •포털 & 차폐 기법 – 벽/문 뒤의 개체 숨기기 4. 실용적인 활용 •공간 분할과 무관하게 렌더링 가능 •오거 엔진(Ogre 3D) 등 플러그앤플레이 엔진 활용 가능
  • 35.
    Visual effects 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 35 1. 주요 시각 효과 파티클 시스템 – 연기, 불, 물 튀는 효과 데칼 시스템 – 총알 자국, 발자국 등 조명 매핑 & 환경 매핑 – 빛과 반사 표현 동적 그림자 – 실시간 그림자 생성 2. 풀 스크린 후처리 효과 •HDR 조명 & 블룸 – 밝기 강조 •안티에일리어싱(FSAA) – 계단 현상 제거 •색 보정 & 채도 조절 – 색감 변화 3. 시스템 구현 방식 •이펙트 시스템 – 입자 & 데칼을 별도 처리 •렌더링 엔진 통합 – 조명 & 환경 매핑 직접 연산
  • 36.
    Front end 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 36 1. 개요 •게임의 3D 그래픽 외에 2D 그래픽이 추가로 사용됨 •대표적인 예: HUD – 게임의 헤드업 디스플레이 게임 메뉴 & 툴 – UI, 설정 화면 캐릭터 인벤토리 & 그래픽 인터페이스 (GUI) 2. 추가적인 전단부 요소 •풀 모션 비디오 (FMV) – 미리 녹화된 영상 재생 •인게임 시네마틱 (IGC) – 게임 내 실시간 연출 • FMV: 완전히 녹화된 영상 재생 • IGC: 게임 엔진을 활용한 실시간 장면 구현
  • 37.
    Profiling/Debugging 초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 37 1. 개요 •게임 성능 최적화를 위해 프로파일링 필수 •메모리 부족 문제 해결을 위한 메모리 분석 툴 활용 2. 대표적인 디버깅 툴 VTune (Intel) Quantify & Purify (IBM) Insure++ (Parasoft) Valgrind (Julian Seward & Valgrind 팀) 3. 주요 기능 •실시간 성능 분석 – FPS, 메모리 사용량 확인 •코드 인스트루멘테이션 – 특정 코드 실행 시간 측정 •디버그 메시지 출력 – 오류 원인 추적 •게임플레이 녹화 & 재현 – 버그 재현 및 분석 4. 콘솔 프로파일링 예시 (PS4 Core Dump) •크래시 분석 – 크래시 전후 15초 기록 저장 •서버 업로드 – 출시 후에도 버그 수정 가능
  • 38.
    Collisions and Physics 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 38 1. 개요 •게임에서 충돌 감지는 필수 요소 •강체(Rigid Body) 물리 – 힘, 운동량, 회전력 계산 2. 충돌 & 물리 시스템 제약 조건 해결 (Constraint Satisfaction) 충돌 감지 후 물리적 반응 처리 형상/충돌체 시스템 물체 간 충돌을 정확히 계산 3. 대표적인 물리 엔진 •Havok – 가장 널리 사용되는 물리 엔진, 멀티 플랫폼 지원 •PhysX (엔비디아) – GPU 가속 지원, PC용 무료 •ODE (Open Dynamic Engine) – 오픈소스 물리 엔진
  • 39.
    Animation 초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 39 1. 주요 애니메이션 방식 스프라이트 애니메이션 – 2D 텍스처 변경 강체 계층 애니메이션 – 강체 객체의 계층적 이동 뼈대(Skeletal) 애니메이션 – 본을 이용한 3D 캐릭터 움직임 정점(Vertex) 애니메이션 – 정점별 변형 모프 타겟 애니메이션 – 특정 형태 간 변형 2. 뼈대 애니메이션 시스템 •본 트리 & 스키닝(Skinning) – 본의 위치에 따라 캐릭터 형태 조정 •애니메이션 압축 & 보간 – 용량 최적화, 부드러운 모션 구현 •물리 시스템 연동 (랙 돌) – 옷, 머리카락 등의 자연스러운 움직임
  • 40.
    HID 초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 40 1. 주요 HID 장치 키보드 & 마우스 – 기본 입력 장치 조이패드 – 콘솔 게임에서 사용 특수 컨트롤러 – 운전대, 낚싯대, 댄싱 패드, WiiMote 등 2. 입력 & 출력 기능 •입력: 버튼, 스틱, 센서 등의 신호 해석 •출력: 포스 피드백(진동), 사운드 출력 3. HID 데이터 처리 •플랫폼별 컨트롤러 설정 최적화 •입력 필터링 – 너무 민감한 조이패드 스틱 조정 •입력 해석 기능 – 키 매핑, 연타 감지, 속도 기반 입력 조정
  • 41.
    Audio 초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 41 1. 개요 •오디오는 렌더링, 물리, 애니메이션, AI 등과 밀접한 연관 •게임 경험을 향상시키지만, 개발 리소스가 많이 소모됨 2. 오디오 시스템 구성 DSP/효과 – 리버브, 필터 등 음향 효과 3D 오디오 모델 – 공간 기반 음향 처리 오디오 재생/관리 – 사운드 출력 & 리소스 관리 3. 주요 오디오 엔진 •XAudio2 – 마이크로소프트의 다이렉트X 오디오 엔진 •WWise – AAA급 콘솔, PC 게임들에서 가장 많이 사용하는 오디오 엔진 •Scream – 소니 & 너티독 개발, 언차티드, 라스트 오브 어스 등 사용
  • 42.
    Multiplayer/networking 초중급 게임 개발자스터디 <데브루키> 알콜코더(박민근/크래프톤) 42 1. 멀티플레이 유형 단일 스크린 멀티플레이어 – 같은 화면 공유 분할 화면 멀티플레이어 – 각 플레이어별 화면 분할 네트워크 멀티플레이어 – 여러 대의 컴퓨터 연결 대규모 온라인 게임 (MMOG) – 수천 명이 동시에 플레이 2. 멀티플레이 시스템 구성 •매치메이킹 & 게임 관리 – 서버 기반 매칭 •객체 관할 정책 – 각 플레이어가 제어할 객체 결정 •게임 상태 복제 – 동기화 유지 3. 개발 시 고려 사항 •싱글플레이 → 멀티플레이 변환은 어렵고 미리 설계하는 것이 유리 •일부 엔진은 싱글 & 멀티 전환이 쉬운 구조 사용 (클라이언트-온-톱-오브-서버)
  • 43.
    게임 플레이 기반시스템 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 43 1. 개요 •게임 월드는 정적인 배경 & 동적인 객체로 구성 •객체는 실시간 시뮬레이션을 통해 동작 2. 주요 객체 유형 정적인 배경 – 건물, 길, 지형 동적 오브젝트 – 바위, 음료수 캔, 의자 플레이어 & NPC – 게임 캐릭터 무기 & 발사체 – 총, 화살, 폭탄 탈것 & 카메라 – 자동차, 1인칭 시점 빛 – 실시간 조명 & 오프라인 조명 계산 3. 객체 모델링 고려 사항 •객체지향적 설계 여부 •사용할 개발 언어 – C, C++, Java, OCaml? •클래스 구조 – 수직적 계층 vs. 수평적 구조 •객체 접근 방식 – 포인터, 스마트 포인터, 핸들? •객체 고유 식별 방식 – 물리적 주소, 이름, GUID? •객체 수 관리 & 상태 시뮬레이션
  • 44.
    Event system 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 44 •게임 내 객체 간 통신 방식 •이벤트 기반 방식 – 작은 구조체(이벤트 메시지)를 전달하여 객체 간 상호작용 •핸들러 호출 – 이벤트를 받은 객체가 해당 핸들러를 실행 •큐(Queue) 사용 – 이벤트를 저장 후 나중에 처리 가능
  • 45.
    Scripting system 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 45 •게임 규칙과 콘텐츠를 쉽고 빠르게 개발하기 위한 시스템 •스크립트 언어 사용 – 코드 변경 시 컴파일 & 링크 없이 바로 반영 •일부 엔진은 실행 중에도 스크립트 변경 가능, 다른 엔진은 재시작 필요 •속도 vs. 유연성 – 스크립트는 빠르지만 네이티브 코드보다 성능은 낮음 이벤트 & 스크립트 시스템은 게임 개발 생산성을 높이는 핵심 요소!
  • 46.
    인공지능 기반 시스템 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 46 •AI는 초기에는 게임 규칙 일부였지만, 점점 엔진과 통합되는 추세 •현대 AI 시스템은 공통적인 패턴을 가지며 다양한 게임 엔진과 연결됨 •AI는 게임 세계의 현실감을 높이고, 더 나은 플레이 경험을 제공하는 중요한 요소! 2. 대표적인 AI 미들웨어 카이나곤(Kynogon) 키냅스(Kynapse) – 고급 AI 기능 지원 오토데스크 게임웨어 내비게이션(Gameware Navigation) – AI 네비게이션 시스템 3. 주요 AI 기능 •네비 메시(mesh) 생성 – AI가 이동할 수 있는 공간 정의 •길 찾기(Pathfinding) – 최적의 이동 경로 계산 •장애물 회피 – 정적/동적 장애물 피하기 •취약 구분 – AI가 문을 열거나 특정 지역 접근 가능 여부 판단 •시야 & 애니메이션 연동 – 캐릭터 행동과 애니메이션 자연스럽게 연결
  • 47.
    게임 특화 하부시스템 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 47 •게임플레이 기능을 구현하는 전용 시스템 •게임 특화 하부 시스템은 게임의 장르와 스타일에 따라 맞춤 설계됨! 2. 대표적인 게임 특화 시스템 플레이어 메카닉 – 이동, 점프, 상호작용 등 카메라 시스템 – 1인칭, 3인칭, 시네마틱 카메라 NPC AI – 적 행동, 동료 AI 무기 시스템 – 총기, 근접 무기, 투척 무기 탈것 시스템 – 자동차, 비행기, 말 3. 게임 엔진과의 관계 •게임플레이와 엔진의 중간 계층 역할 •일부 시스템은 게임 엔진의 핵심 요소까지 확장될 수도 있음
  • 48.
    Tools and theasset pipeline 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 48
  • 49.
    DCC 툴 (Digital contentcreation) 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 49 1. 게임 엔진과의 관계 •효율적인 워크플로우를 위해 DCC 툴과 엔진의 원활한 연동 필수 •일부 엔진은 자체적인 콘텐츠 제작 도구 제공 •게임 월드 제작은 일반적으로 DCC 툴 + 게임 엔진의 조합으로 진행 •툴은 사용하기 쉬울수록 좋지만, 반드시 안정적으로 동작해야 함 2. 대표적인 DCC 도구 3D 모델링 & 애니메이션 – Maya, 3ds Max 텍스처 제작 – Photoshop, Substance Painter 오디오 편집 – SoundForge
  • 50.
    애셋 다듬기 파이프라인 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 50 •게임 성능 최적화의 핵심 요소로, DCC와 게임 엔진을 연결하는 과정 •이 흐름을 자원 다듬기 파이프라인(ACP) 이라고 함 1. 자원이 바로 사용되지 않는 이유 •DCC 데이터는 게임 엔진에서 쓰기에 너무 복잡 •장면 노드 간 관계, 파일 변경 이력, 모든 물체의 변환 계층까지 저장됨 •게임 엔진은 필요한 정보만 활용하므로, 일부 데이터는 생략됨 2. 최적화 과정 (가공 & 내보내기) •DCC 데이터는 표준 포맷(예: XML, JSON) 또는 바이너리 형식으로 변환 •메시 가공 – 머티리얼 정보 최적화, 메시 정리, 용량 축소 •플랫폼 맞춤 최적화 – 다양한 기기에 맞게 변환
  • 51.
    Assets – 3DModels/Mesh 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 51 •게임에서 기하 형상은 삼각형 메시 기반으로 렌더링되며, 최적화를 위해 삼각형 처리 방식이 일반적 •게임 엔진에서 직접 활용할 수 있도록 DCC 툴에서 내보내기(export tool) 필요 1. 메시 (Mesh) 렌더링 단위 – 하나의 메시 = 여러 개의 삼각형 머티리얼 적용 – 색상, 반사도, 텍스처 정보 포함 DCC 툴 사용 – Maya, 3ds Max, ZBrush 등 2. 브러시 기하 형상 (Brush Geometry) •빠르게 제작 가능, 게임 에디터에서 직접 조작 가능 •프로토타입 제작, 충돌 볼륨 역할로 활용됨 장점 •빠르게 제작 가능 •게임 디자이너가 쉽게 사용 가능 •충돌 볼륨 역할 수행 가능 단점 •복잡한 구조 표현 어려움 •애니메이션/활동하는 물체 표현 제한
  • 52.
    Assets – SkeletalMesh 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 52 •**뼈대 메시(Skeletal Mesh)**는 애니메이션을 위해 뼈 구조에 연결된 특수한 메시 •각 정점은 어떤 뼈에 연결되는지, 뼈의 영향을 얼마나 받는지 등의 정보 포함 1. 스켈레탈 메시를 그리기 위한 3가지 데이터 메시 (Mesh) – 기본적인 3D 형상 뼈대(Skeleton) – 관절 이름, 부모-자식 관계, 기본 포즈 애니메이션 (Animation) – 뼈가 어떻게 움직이는지 정의 2. 데이터 관리 & 최적화 •보통 메시 & 뼈대는 같은 파일, 애니메이션은 분리된 파일로 저장 •애니메이션 데이터를 묶을 수도 있지만, 메모리 부담 증가 •뼈대 애니메이션은 보통 100개 이상의 관절 & 초당 30번 이상 갱신되므로 압축 필수 게임마다 애니메이션 압축 방식이 다르며, 표준화된 형식은 없음!
  • 53.
    Assets – Audio,Particle 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 53 오디오 데이터 (Audio Data) •오디오 클립은 Sound Forge 같은 툴에서 제작되며, 다양한 형식과 샘플링 주기를 가짐 •파일 형식: 모노, 스테레오, 5.1, 7.1 멀티채널 등 •일반적으로.wav형식을 사용하지만,플레이스테이션 ADPCM(vag) 같은 특수 포맷도 존재 •오디오 클립은 뱅크(bank) 단위로 묶어 관리 & 스트리밍 로딩 최적화 파티클 시스템 데이터 (Particle System Data) •게임 엔진에서 복잡한 파티클 효과(연기, 불꽃 등) 활용 •Houdini 같은 시뮬레이션 툴을 사용하면 영화 수준의 효과 가능 •그러나 게임 엔진의 실시간 렌더링 한계로 인해 최적화된 기능만 제공 •대부분 전용 파티클 툴을 사용하여, 게임 내에서의 시각적 효과를 미리 확인하고 제작
  • 54.
    Game world editor 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 54 •게임 엔진의 핵심 요소 중 하나로, 모든 게임 요소가 모이는 공간 •대부분의 상용 엔진이 자체 월드 에디터 제공 대표적인 월드 에디터 Radiant – 퀘이크 기반 엔진에서 사용 Hammer – 하프라이프 2 소스 엔진용 Unreal Editor – 언리얼 엔진 전용, 리소스 관리 기능 포함 Sandbox – 크라이엔진의 월드 에디터 좋은 월드 에디터를 만들기는 어렵지만, 게임 엔진에서 필수적인 요소!
  • 55.
    Resource database 초중급 게임개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 55 •게임 엔진은 모든 자원과 관련된 메타데이터를 관리하는 시스템이 필요 •보통 MySQL, Oracle 같은 관계형 DB 또는 Git, Perforce 같은 버전 관리 시스템을 사용 1. 포함되는 메타데이터 애니메이션 구분 ID – 특정 애니메이션 식별 파일 경로 & 원본 소스 정보 – 데이터 위치 추적 프레임 범위 – 애니메이션 시작 & 종료 프레임 압축 방식 & 레벨 – 품질 vs. 용량 최적화 2. 자원 DB 관리 & 편집 도구 •자원 관리에는 GUI 기반 툴 (예: Builder-너티독) 사용 가능 •개발팀의 필요에 따라 맞춤형 데이터베이스 설계 게임 자원 데이터베이스는 효율적인 자원 관리 & 최적화의 핵심 요소!
  • 56.
    툴 구조에 대한접근 방식 Stand alone Integrated 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 56
  • 57.
    언리얼 엔진의 툴구조 초중급 게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 57 언리얼 엔진의 월드 에디터 (UnrealEd) •언리얼 엔진의 월드 에디터는 자원 관리자와 통합된 형태로 동작 •게임 실행 시 커맨드 옵션에 'editor' 추가하면 에디터 모드로 실행 가능 1. 장점 데이터 접근 자유로움 – 엔진과 동일한 구조로 자원을 관리 빠른 실행 속도 – 에디터에서 곧바로 게임 실행 가능 게임 중 에디팅 지원 – 실시간 수정 & 반영 2. 단점 엔진 문제 발생 시 에디터도 중단될 위험 자원 생성 툴과의 밀접한 연결이 생산성 저하 가능성 언리얼 에디터는 강력한 기능을 제공하지만, 엔진과 밀접하게 연결된 만큼 리스크도 존재!
  • 58.
    웹 기반 툴 초중급게임 개발자 스터디 <데브루키> 알콜코더(박민근/크래프톤) 58 •게임 개발 도구는 웹 기반 UI가 빠르게 보편화되는 추세 •웹 UI는 설치 필요 없음, 유지보수 용이, 클라이언트-서버 구조 활용 가능 1. 웹 UI의 주요 활용 예시 현지화 도구 – 데이터베이스에 접근하는 전달부 역할 작업 관리 시스템 (Tasker) – 작업 생성, 일정 조정, 커뮤니케이션 관리 게임 엔진 디버깅 (Connector) – 렌더링, 애니메이션, AI 관련 정보 실시간 조회 2. 웹 UI vs. 독립 실행형 GUI •웹 UI: 별도 설치 필요 없음, 브라우저에서 즉시 사용 가능 •독립형 GUI: 복잡한 3D 시각화에는 더 적합 웹 기반 UI는 배포와 유지보수에 강점, 반면 복잡한 3D 작업에는 독립형 GUI가 더 유리!