SlideShare a Scribd company logo
1 of 37
Download to read offline
게임 엔진 (1)
 설계 요소
 김성익(noerror@hitel.net)
            2006.02.05
개요
•   게임   엔진 개념 정리
•   엔진   구성 예제
•   엔진   설계 포인트
•   엔진   인터페이스 디자인 요소와 사례


Note. 이번 발표 내용은 개인적인 의견 중심으로 정리한 내용으로 일반적으로 인정
되는 내용과 다를 수 있습니다.
엔진이란 ?
• 기능적인 관점
 특정 기능을 구현
• 목적
 특별히 어플리케이션에서 기능 구현 없이 사용하도록
 설계된 것

• 단순히 wrap한 인터페이스를 제공하는 것도 엔진 범
 주에 속한다고 봐야
게임엔진
• 게임 개발에 특화된 형태의 엔진
 그래픽 엔진 GameBryo, RenderWare, OGRE, Jupiter
 2d엔진, 장면 관리 엔진dPVS
 캐릭터 엔진 CAL3D, Granny3D, EMotionFX
 사운드 엔진 Miles, fmod, 물리 엔진 NovodeX, Havok
 인풋 엔진,네트워크 엔진 RakNet, 길 찾기 엔진
 스크립트 엔진, 인공지능 엔진, 기타 등등등
 (다수의 기능을 혼재하는 경우도 Torque, 게임의 로직
 까지도 일부 구현하는 경우도 Unreal, SeriousSam)
게임 엔진 지향점
• 게임 구현에 특화 된 기능
• 필요에 따라 기능을 확장가능   (그렇지 않아
 도 상관은 없어보임)
• 다양한 게임, 다양한 플렛폼에 적용 가
  능 (그렇지 않아도 상관은 없어보임)
• 엔진의 기능 구현 알고리즘을 전혀(?)
  모르더라도 쉽게 개발 가능
파일 IO 엔진 구성 예
• 목표:간단한 파일 로더를 엔진으로 구성
• 아래 예제처럼 사용할 목적의 엔진 구성
파일 로더 구현부를 분리
• 파일로더의 구현부를 분리하고 구현한
  클래스를 활용하여 알고리즘을 구현
리소스 추상화, 팩토리
• 파일 객체를 추상화 (인터페이스 중요!!)
 구현부를 숨겨서 구현 가능, 쉽게 기능 확장 가능
• 사용하는 쪽에서 리소스를 얻기 위한 팩
  토리 추가
파일IO 엔진 사용
• 인터페이스가 정해지면 엔진을 사용하
  는 쪽의 변화는 거의 없다
• 구현부는 완전 분리된다
파일IO 엔진 기능 확장(1)
• 만약 메모리에 미리 읽어두도록 확장한다면
파일IO 엔진 기능 확장(2)




• 추가된 기능은 리소스를 생성할 때 type에
  membuf 가 담긴 문자열만 보내면 된다
파일IO 엔진 기능 확장(3)
• Http를 이용해 파일을 읽어오는 기능을
  확장한다면
파일IO 엔진 정리
• 간단한 외부 인터페이스를 통해서 쉽게 사용
  가능
• 외부에는 추상화 된 객체만 노출하여 구현부
  와 사용부를 완전 분리 (캡슐화)
• 추상화 특성을 이용하여 여러 가지 기능을 확
  장
• 팩토리를 통해서 쉽게 엔진의 추가된 기능을
  사용
엔진 설계 포인트
• 탄탄하고 확장 가능한 내부 구조
• 외부 인터페이스 디자인
 인터페이스에 따라 기능의 범위가 정해지고, 제약이 생기기도
 하며, 확장을 가능하기도 하다
외부 인터페이스 디자인
• 1. 엔진의 기능을 외부에 노출하는 요소
• 2. 손쉽게 접근하는 디자인 요소

• 외부 인터페이스의 편의성, 단순성, 확
  장성, 융통성
 사실상 기능을 외부에 노출시키는 것이 제일 중요한 요소라고
 보면 필수 요소는 아니라고 할 수는 있음. (다만 게임 엔진은 어
 플레케이션 개발자를 타겟으로 함)
엔진 구성 요소
• 리소스, 디바이스
 실제 게임에서 사용하는 객체
• 팩토리
 리소스를 생성하고 관리하는 객체
리소스 객체 추상화(1)
• 추상화는 별도의 인터페이스 학습 없이
  기능에 접근 가능하게 함
• udp, tcp, pipe등의 제약 없이 쉽게 사용 가
  능한 네트웍 객체 ?
• d3d, opengl 을 지원하는 그래픽 디바이스?
• octree, bsp, quadtree, pvs를 지원하는
  씬 매니징 객체 ?
리소스 객체 추상화(2)
• 네비게이션 메쉬, 웨이 포인트를 지원하는 길
  찾기 객체 ?
• pvs, octree, view frustum culling,
  portal을 지원하는 culling 객체 ?
• 메모리db, oracle, mysql을 지원하는 db
  객체 ?
리소스 객체 추상화(3)
• 인터페이스 변화 없이 추가적인 기능을
  부여할 수 있음
• packet 압축을 하는 네트웍 엔진, packet을
  저장해서 모니터링 정보를 생성하는 네트웍
  객체 ?
• zip파일을 억세스 하는 파일 객체 ?
리소스 객체 설계 사례
• 리소스 인터페이스 구성 사례
  (Cmodel)
• 객체 내부 인터페이스 구성 사례
• 디바이스 인터페이스 구성 팁
설계 사례 - 렌더링객체
• 화면상에 그려지는 렌더링 객체(Cmodel)의
  추상 인터페이스 구성




• 적절한 추상화는 일반 캐릭터, 정적 메시,
  Octree등으로 관리되는 대형 메시, 높이맵,
  빌보드도 일괄적으로 처리 가능
Model 추상화
• 물리적인 천이나 수면도 Model인터페이스로
  구현할 수 있다면 어플리케이션 레벨에서는
  똑같이 Model로 리스트로 관리해서 찍을 수
  도
• 만약 Model 에 GetBound 등의 메소드를
  추가해서 Model읠 장면 관리를 할 수 있게
  한다면, 모든 렌더링 모델을 구현할 때는 컬
  링 걱정을 하지 않아도 될지도
Model 확장 - 애니메이션
• 애니메이션 기능을 추가한다면




• 모션 블랜딩 기능까지 추가한다면
Model 복잡도 증가요소
• 만약 애니메이션을 공유한다면
• IK를 적용한다고 하면

• 나쁘다고 볼 수는 없지만 기능 추가에 따라 추상화 객
 체 CModel의 Method가 증가하며 복잡도가 늘어난
 다
외부 제어 객체(1)
• 외부에서 Model의 본을 제어할 수 있는
  MotionController 객체 추가하면??
외부 제어 객체(2)
• 이 방법으로도 애니메이션과 IK를 구현 가능




• 별도의 장치 없이 IK와 애니메이션을 혼합 가능
• 게임 어플리케이션에서 외부 제어 객체에 접근 안 한
  다고 가정하면 객체 정의를 숨기는 것도 가능
외부 제어 객체(3)
•   검기를 구현한다면 ??
•   특정 Model의 본에 다른 Model을 attach한다면??


• 추가적인 외부 제어 객체를 통해서 다른 기능을 추가
    애니메이션 외에도 텍스처 애니메이션이 필요하다면??
쉬어가기 (Tip)
        인덱스활용

• 문자열을 이용하면 개발 효율이 좋지만 검색 속도상
  불이익이 있을 수 있다
• 테이블 등을 활용한 인덱스를 활용하면 속도상의 불
  이익을 크게 줄일 수 있다.
인스턴스 객체
• Proxy 패턴을 적극 활용하면 인스턴스 구현상 고민
 이 줄어든다
디바이스
• 싱글턴으로 구성 가능
• 어플리케이션 레벨에 노출되는 외부 인터페이
  스는 적음
• 실제 구현 객체와 연동되어 사용됨

•   역시 단순화는 구현에 도움이 됨
•   디바이스 관련 메소드가 리소스에 위치하는 것보다는 디바이스
    객체에 있는 것이 유리
리소스 팩토리
• Abstract Factory
• 어플리케이션 레벨에선 추상화 된 객체
  만을 받는다
• 팩토리의 인터페이스에 따라 쉽게 추가
  된 기능 사용가능
• 독립되어 내부 구현의 자유도는 높다
인스턴스 매니징
• 하나의 자원을 여러 개의 리소스 객체에서 공
  유해서 사용할 수 있다.
• 만약 자원 공유가 되지 않으면 중복되는 자원
  낭비가 심해진다
리소스 매니징
• 게임에서 사용할 수 있는 시스템의 자원은 제한됨
• 쾌적한 게임을 위해서 사용하지 않는 자원을 관리하
  는 정책이 필요

• 불필요한 자원을 검출하는 알고리즘이 필요
  사용중인 인스턴스의 수를 검사
  마지막 사용한 시간으로 검사

•   신경 쓰지 않으면 관리가 힘든 요소가 많음
기타
• DLL 사용하는 경우 자원 관리
  자원 해제문제
질문

More Related Content

What's hot

AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxTonyCms
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들MinGeun Park
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능Yongha Kim
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법Chris Ohk
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019devCAT Studio, NEXON
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017devCAT Studio, NEXON
 
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기Yongha Kim
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계ByungChun2
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현YEONG-CHEON YOU
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019devCAT Studio, NEXON
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점Ryan Park
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례SangYun Yi
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템Chaeone Son
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012devCAT Studio, NEXON
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2Jubok Kim
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013devCAT Studio, NEXON
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기Sunnyrider
 

What's hot (20)

AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
[KGC2011_박민근] 신입 게임 개발자가 알아야 할 것들
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능[NDC 2009] 행동 트리로 구현하는 인공지능
[NDC 2009] 행동 트리로 구현하는 인공지능
 
게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법게임 프로그래밍 기초 공부법
게임 프로그래밍 기초 공부법
 
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
김동건, 할머니가 들려주신 마비노기 개발 전설, NDC2019
 
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
전형규, 프로젝트DH의 절차적 애니메이션 시스템, NDC2017
 
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
[NDC 2010] 그럴듯한 랜덤 생성 컨텐츠 만들기
 
게임 인공지능 설계
게임 인공지능 설계게임 인공지능 설계
게임 인공지능 설계
 
MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현MMOG Server-Side 충돌 및 이동처리 설계와 구현
MMOG Server-Side 충돌 및 이동처리 설계와 구현
 
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
윤석주, 신입 게임 프로그래머가 되는 법 - 넥슨 채용 프로세스 단계별 분석, NDC2019
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점위대한 게임개발팀의 공통점
위대한 게임개발팀의 공통점
 
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
Unity3D 엔진을 활용한 게임환경 분석 및 3D 그래픽스 기술 /제작 사례
 
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
ndc 2017 어쩌다 신입 - 초보 게임 개발자 2년 간의 포스트모템
 
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
최은영, 아티스트가 기획을 - 하이브리드의 길 Ver.1, NDC 2012
 
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
NDC2012 - 완벽한 MMO 클라이언트 설계에의 도전, Part2
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기
 

Viewers also liked

취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기Jiho Choi
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editornoerror
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리noerror
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개noerror
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용noerror
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁noerror
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개noerror
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)noerror
 
Engines, Tools, and Scripts
Engines, Tools, and ScriptsEngines, Tools, and Scripts
Engines, Tools, and ScriptsKalito Viscra
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlasnoerror
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집noerror
 

Viewers also liked (12)

취미로 엔진 만들기
취미로 엔진 만들기취미로 엔진 만들기
취미로 엔진 만들기
 
07_Visual Shader Editor
07_Visual Shader Editor07_Visual Shader Editor
07_Visual Shader Editor
 
KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리KGC06_적응성 있는 자원 흐름 관리
KGC06_적응성 있는 자원 흐름 관리
 
06_앰비언트어클루전 소개
06_앰비언트어클루전 소개06_앰비언트어클루전 소개
06_앰비언트어클루전 소개
 
11_웹서비스활용
11_웹서비스활용11_웹서비스활용
11_웹서비스활용
 
06_게임엔진 활용팁
06_게임엔진 활용팁06_게임엔진 활용팁
06_게임엔진 활용팁
 
06_HDR 소개
06_HDR 소개06_HDR 소개
06_HDR 소개
 
06_자동차물리입문(1)
06_자동차물리입문(1)06_자동차물리입문(1)
06_자동차물리입문(1)
 
Engines, Tools, and Scripts
Engines, Tools, and ScriptsEngines, Tools, and Scripts
Engines, Tools, and Scripts
 
Ssao
SsaoSsao
Ssao
 
15_TextureAtlas
15_TextureAtlas15_TextureAtlas
15_TextureAtlas
 
NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집NDC08_실시간비주얼그래프편집
NDC08_실시간비주얼그래프편집
 

Similar to 06_게임엔진구성

191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기KWANGIL KIM
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰Jubok Kim
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)SeongIkKim2
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴MinGeun Park
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례Jeongsang Baek
 
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSData-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSSukwoo Lee
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Dong Chan Shin
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기Miyu Park
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipelinechangehee lee
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012devCAT Studio, NEXON
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍NDOORS
 
05_스마트 포인터 구현하기
05_스마트 포인터 구현하기05_스마트 포인터 구현하기
05_스마트 포인터 구현하기noerror
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)수보 김
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetesNAVER D2
 
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발MinGeun Park
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요Youngjae Kim
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018devCAT Studio, NEXON
 

Similar to 06_게임엔진구성 (20)

191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
 
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
Ndc2010   김주복, v3. 마비노기2아키텍처리뷰Ndc2010   김주복, v3. 마비노기2아키텍처리뷰
Ndc2010 김주복, v3. 마비노기2아키텍처리뷰
 
야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)야, 너두 짤수있어 - IaC Basic(210131 김성익)
야, 너두 짤수있어 - IaC Basic(210131 김성익)
 
Game Play System
Game Play SystemGame Play System
Game Play System
 
게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴게임 프레임워크의 아키텍쳐와 디자인 패턴
게임 프레임워크의 아키텍쳐와 디자인 패턴
 
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
(GameTech2015) Live Operation by Adbrix의 Node.js와 MongoDB를 이용한 멀티테넌트 인프라 구축사례
 
Tizen UIFW - EFL
Tizen UIFW - EFLTizen UIFW - EFL
Tizen UIFW - EFL
 
Data-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTSData-Oriented Design과 유니티 DOTS
Data-Oriented Design과 유니티 DOTS
 
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기Project anarchy로 3d 게임 만들기 part_2_vforge피하기
Project anarchy로 3d 게임 만들기 part_2_vforge피하기
 
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
HTML5/JSON 을 이용해 범용 2D 맵에디터 제작하기
 
Ndc12 이창희 render_pipeline
Ndc12 이창희 render_pipelineNdc12 이창희 render_pipeline
Ndc12 이창희 render_pipeline
 
Codex project
Codex projectCodex project
Codex project
 
임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012임태현, MMO 서버 개발 포스트 모템, NDC2012
임태현, MMO 서버 개발 포스트 모템, NDC2012
 
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
(게임개발을위한) printf("Hello World!"); 그 이상의 콘솔 프로그래밍
 
05_스마트 포인터 구현하기
05_스마트 포인터 구현하기05_스마트 포인터 구현하기
05_스마트 포인터 구현하기
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes[D2 COMMUNITY] Open Container Seoul Meetup -  마이크로 서비스 아키텍쳐와 Docker kubernetes
[D2 COMMUNITY] Open Container Seoul Meetup - 마이크로 서비스 아키텍쳐와 Docker kubernetes
 
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발[1126 박민근] 비전엔진을 이용한 mmorpg 개발
[1126 박민근] 비전엔진을 이용한 mmorpg 개발
 
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
[테크데이즈2015] 개발하기 바쁜데 푸시와 메시지큐는 있는거 쓸래요
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 

More from noerror

NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현noerror
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법noerror
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문noerror
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템noerror
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법noerror
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법noerror
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrainsnoerror
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드noerror
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기noerror
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강noerror
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개noerror
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문noerror
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개noerror
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현noerror
 
05_벡터와 매트릭스
05_벡터와 매트릭스05_벡터와 매트릭스
05_벡터와 매트릭스noerror
 
05_STL컨테이너정리
05_STL컨테이너정리05_STL컨테이너정리
05_STL컨테이너정리noerror
 
05_동기화_개요
05_동기화_개요05_동기화_개요
05_동기화_개요noerror
 
05_글로벌일루미네이션
05_글로벌일루미네이션05_글로벌일루미네이션
05_글로벌일루미네이션noerror
 
05_컴파일러최적화전략(1)
05_컴파일러최적화전략(1)05_컴파일러최적화전략(1)
05_컴파일러최적화전략(1)noerror
 
04_장면 관리 개요
04_장면 관리 개요04_장면 관리 개요
04_장면 관리 개요noerror
 

More from noerror (20)

NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현NDC12_Lockless게임서버설계와구현
NDC12_Lockless게임서버설계와구현
 
KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법KCGS11_실시간 피사계 심도 렌더링 개선 기법
KCGS11_실시간 피사계 심도 렌더링 개선 기법
 
11_통계 자료분석 입문
11_통계 자료분석 입문11_통계 자료분석 입문
11_통계 자료분석 입문
 
11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템11_빠른 개발 가능한 레벨 편집 시스템
11_빠른 개발 가능한 레벨 편집 시스템
 
11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법11_SH를 이용한 실시간 투명 근사법
11_SH를 이용한 실시간 투명 근사법
 
ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법ICON08_게임 애니메이션 최적화 기법
ICON08_게임 애니메이션 최적화 기법
 
08_Marching Cube Terrains
08_Marching Cube Terrains08_Marching Cube Terrains
08_Marching Cube Terrains
 
08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드08_게임 물리 프로그래밍 가이드
08_게임 물리 프로그래밍 가이드
 
08_플래시 맛보기
08_플래시 맛보기08_플래시 맛보기
08_플래시 맛보기
 
08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강08_애니메이션고등학교 게임과 특강
08_애니메이션고등학교 게임과 특강
 
08_Wxwidgets 소개
08_Wxwidgets 소개08_Wxwidgets 소개
08_Wxwidgets 소개
 
07_PhysX 강체물리 입문
07_PhysX 강체물리 입문07_PhysX 강체물리 입문
07_PhysX 강체물리 입문
 
07_스케일폼 소개
07_스케일폼 소개07_스케일폼 소개
07_스케일폼 소개
 
05_Reliable UDP 구현
05_Reliable UDP 구현05_Reliable UDP 구현
05_Reliable UDP 구현
 
05_벡터와 매트릭스
05_벡터와 매트릭스05_벡터와 매트릭스
05_벡터와 매트릭스
 
05_STL컨테이너정리
05_STL컨테이너정리05_STL컨테이너정리
05_STL컨테이너정리
 
05_동기화_개요
05_동기화_개요05_동기화_개요
05_동기화_개요
 
05_글로벌일루미네이션
05_글로벌일루미네이션05_글로벌일루미네이션
05_글로벌일루미네이션
 
05_컴파일러최적화전략(1)
05_컴파일러최적화전략(1)05_컴파일러최적화전략(1)
05_컴파일러최적화전략(1)
 
04_장면 관리 개요
04_장면 관리 개요04_장면 관리 개요
04_장면 관리 개요
 

06_게임엔진구성

  • 1. 게임 엔진 (1) 설계 요소 김성익(noerror@hitel.net) 2006.02.05
  • 2. 개요 • 게임 엔진 개념 정리 • 엔진 구성 예제 • 엔진 설계 포인트 • 엔진 인터페이스 디자인 요소와 사례 Note. 이번 발표 내용은 개인적인 의견 중심으로 정리한 내용으로 일반적으로 인정 되는 내용과 다를 수 있습니다.
  • 3. 엔진이란 ? • 기능적인 관점 특정 기능을 구현 • 목적 특별히 어플리케이션에서 기능 구현 없이 사용하도록 설계된 것 • 단순히 wrap한 인터페이스를 제공하는 것도 엔진 범 주에 속한다고 봐야
  • 4. 게임엔진 • 게임 개발에 특화된 형태의 엔진 그래픽 엔진 GameBryo, RenderWare, OGRE, Jupiter 2d엔진, 장면 관리 엔진dPVS 캐릭터 엔진 CAL3D, Granny3D, EMotionFX 사운드 엔진 Miles, fmod, 물리 엔진 NovodeX, Havok 인풋 엔진,네트워크 엔진 RakNet, 길 찾기 엔진 스크립트 엔진, 인공지능 엔진, 기타 등등등 (다수의 기능을 혼재하는 경우도 Torque, 게임의 로직 까지도 일부 구현하는 경우도 Unreal, SeriousSam)
  • 5. 게임 엔진 지향점 • 게임 구현에 특화 된 기능 • 필요에 따라 기능을 확장가능 (그렇지 않아 도 상관은 없어보임) • 다양한 게임, 다양한 플렛폼에 적용 가 능 (그렇지 않아도 상관은 없어보임) • 엔진의 기능 구현 알고리즘을 전혀(?) 모르더라도 쉽게 개발 가능
  • 6. 파일 IO 엔진 구성 예 • 목표:간단한 파일 로더를 엔진으로 구성 • 아래 예제처럼 사용할 목적의 엔진 구성
  • 7. 파일 로더 구현부를 분리 • 파일로더의 구현부를 분리하고 구현한 클래스를 활용하여 알고리즘을 구현
  • 8. 리소스 추상화, 팩토리 • 파일 객체를 추상화 (인터페이스 중요!!) 구현부를 숨겨서 구현 가능, 쉽게 기능 확장 가능 • 사용하는 쪽에서 리소스를 얻기 위한 팩 토리 추가
  • 9. 파일IO 엔진 사용 • 인터페이스가 정해지면 엔진을 사용하 는 쪽의 변화는 거의 없다
  • 10. • 구현부는 완전 분리된다
  • 11. 파일IO 엔진 기능 확장(1) • 만약 메모리에 미리 읽어두도록 확장한다면
  • 12. 파일IO 엔진 기능 확장(2) • 추가된 기능은 리소스를 생성할 때 type에 membuf 가 담긴 문자열만 보내면 된다
  • 13. 파일IO 엔진 기능 확장(3) • Http를 이용해 파일을 읽어오는 기능을 확장한다면
  • 14.
  • 15. 파일IO 엔진 정리 • 간단한 외부 인터페이스를 통해서 쉽게 사용 가능 • 외부에는 추상화 된 객체만 노출하여 구현부 와 사용부를 완전 분리 (캡슐화) • 추상화 특성을 이용하여 여러 가지 기능을 확 장 • 팩토리를 통해서 쉽게 엔진의 추가된 기능을 사용
  • 16. 엔진 설계 포인트 • 탄탄하고 확장 가능한 내부 구조 • 외부 인터페이스 디자인 인터페이스에 따라 기능의 범위가 정해지고, 제약이 생기기도 하며, 확장을 가능하기도 하다
  • 17. 외부 인터페이스 디자인 • 1. 엔진의 기능을 외부에 노출하는 요소 • 2. 손쉽게 접근하는 디자인 요소 • 외부 인터페이스의 편의성, 단순성, 확 장성, 융통성 사실상 기능을 외부에 노출시키는 것이 제일 중요한 요소라고 보면 필수 요소는 아니라고 할 수는 있음. (다만 게임 엔진은 어 플레케이션 개발자를 타겟으로 함)
  • 18. 엔진 구성 요소 • 리소스, 디바이스 실제 게임에서 사용하는 객체 • 팩토리 리소스를 생성하고 관리하는 객체
  • 19. 리소스 객체 추상화(1) • 추상화는 별도의 인터페이스 학습 없이 기능에 접근 가능하게 함 • udp, tcp, pipe등의 제약 없이 쉽게 사용 가 능한 네트웍 객체 ? • d3d, opengl 을 지원하는 그래픽 디바이스? • octree, bsp, quadtree, pvs를 지원하는 씬 매니징 객체 ?
  • 20. 리소스 객체 추상화(2) • 네비게이션 메쉬, 웨이 포인트를 지원하는 길 찾기 객체 ? • pvs, octree, view frustum culling, portal을 지원하는 culling 객체 ? • 메모리db, oracle, mysql을 지원하는 db 객체 ?
  • 21. 리소스 객체 추상화(3) • 인터페이스 변화 없이 추가적인 기능을 부여할 수 있음 • packet 압축을 하는 네트웍 엔진, packet을 저장해서 모니터링 정보를 생성하는 네트웍 객체 ? • zip파일을 억세스 하는 파일 객체 ?
  • 22. 리소스 객체 설계 사례 • 리소스 인터페이스 구성 사례 (Cmodel) • 객체 내부 인터페이스 구성 사례 • 디바이스 인터페이스 구성 팁
  • 23. 설계 사례 - 렌더링객체 • 화면상에 그려지는 렌더링 객체(Cmodel)의 추상 인터페이스 구성 • 적절한 추상화는 일반 캐릭터, 정적 메시, Octree등으로 관리되는 대형 메시, 높이맵, 빌보드도 일괄적으로 처리 가능
  • 24. Model 추상화 • 물리적인 천이나 수면도 Model인터페이스로 구현할 수 있다면 어플리케이션 레벨에서는 똑같이 Model로 리스트로 관리해서 찍을 수 도 • 만약 Model 에 GetBound 등의 메소드를 추가해서 Model읠 장면 관리를 할 수 있게 한다면, 모든 렌더링 모델을 구현할 때는 컬 링 걱정을 하지 않아도 될지도
  • 25. Model 확장 - 애니메이션 • 애니메이션 기능을 추가한다면 • 모션 블랜딩 기능까지 추가한다면
  • 26. Model 복잡도 증가요소 • 만약 애니메이션을 공유한다면 • IK를 적용한다고 하면 • 나쁘다고 볼 수는 없지만 기능 추가에 따라 추상화 객 체 CModel의 Method가 증가하며 복잡도가 늘어난 다
  • 27. 외부 제어 객체(1) • 외부에서 Model의 본을 제어할 수 있는 MotionController 객체 추가하면??
  • 28. 외부 제어 객체(2) • 이 방법으로도 애니메이션과 IK를 구현 가능 • 별도의 장치 없이 IK와 애니메이션을 혼합 가능 • 게임 어플리케이션에서 외부 제어 객체에 접근 안 한 다고 가정하면 객체 정의를 숨기는 것도 가능
  • 29. 외부 제어 객체(3) • 검기를 구현한다면 ?? • 특정 Model의 본에 다른 Model을 attach한다면?? • 추가적인 외부 제어 객체를 통해서 다른 기능을 추가 애니메이션 외에도 텍스처 애니메이션이 필요하다면??
  • 30. 쉬어가기 (Tip) 인덱스활용 • 문자열을 이용하면 개발 효율이 좋지만 검색 속도상 불이익이 있을 수 있다 • 테이블 등을 활용한 인덱스를 활용하면 속도상의 불 이익을 크게 줄일 수 있다.
  • 31. 인스턴스 객체 • Proxy 패턴을 적극 활용하면 인스턴스 구현상 고민 이 줄어든다
  • 32. 디바이스 • 싱글턴으로 구성 가능 • 어플리케이션 레벨에 노출되는 외부 인터페이 스는 적음 • 실제 구현 객체와 연동되어 사용됨 • 역시 단순화는 구현에 도움이 됨 • 디바이스 관련 메소드가 리소스에 위치하는 것보다는 디바이스 객체에 있는 것이 유리
  • 33. 리소스 팩토리 • Abstract Factory • 어플리케이션 레벨에선 추상화 된 객체 만을 받는다 • 팩토리의 인터페이스에 따라 쉽게 추가 된 기능 사용가능 • 독립되어 내부 구현의 자유도는 높다
  • 34. 인스턴스 매니징 • 하나의 자원을 여러 개의 리소스 객체에서 공 유해서 사용할 수 있다. • 만약 자원 공유가 되지 않으면 중복되는 자원 낭비가 심해진다
  • 35. 리소스 매니징 • 게임에서 사용할 수 있는 시스템의 자원은 제한됨 • 쾌적한 게임을 위해서 사용하지 않는 자원을 관리하 는 정책이 필요 • 불필요한 자원을 검출하는 알고리즘이 필요 사용중인 인스턴스의 수를 검사 마지막 사용한 시간으로 검사 • 신경 쓰지 않으면 관리가 힘든 요소가 많음
  • 36. 기타 • DLL 사용하는 경우 자원 관리 자원 해제문제