SlideShare uma empresa Scribd logo
1 de 8
Game
Programming Gems
1.8 빠른 데이터 로드 기법
Idea #1: 데이터의 전처리
• 레벨 데이터는 최대한으로 전처리 작업
 레벨 에디터 같은 유틸리티 프로그램을 이용
 게임 자체에 데이터 패킹 코드를 넣어 처리
• 저장될 데이터는 반드시 비 static 멤버 변수
• 포인터를 데이터 파일에 저장해서는 안됨
 저장시에 포인터가 가리키는 것과 다시 로드한 후에 가리키
는 것이 전혀 다른 메모리이기 때문
Idea #2: 데이터의 저장
• 데이터가 적절한 구조체에 채워지고 나면 그것을 디스크(?)에
저장할 수 있게 됨
 데이터 파일에 저장한다 라는 의미 인듯
• 예제 코드
Idea #2: 데이터의 저장
• 예제 코드
Idea #3: 데이터의 로드
• 간단한 방법  그냥 클래스에 데이터를 그대로 읽으면 됨
Idea #3: 데이터의 로드
• 일부 게임기 하드웨어의 경우 데이터를 읽는 방식이 다르다.
Ex) 소니 플레이스테이션: CD-ROM으로부터 2048byte의 배수만큼
데이터를 읽음
 남는 메모리 공간에는 의미없는 데이터가 덮임.
이러한 현상을 방지하기 위해 구조체의 크기가 경계에 맞도록 더
미 버퍼를 구조체에 추가해야 함
• 보통 데이터 로드에 필요한 충분한 공간을 미리 마련해 두는 것이 제
일 좋음
 여러 데이터 로드에 재사용 가능
 동적 메모리 할당이 일어나지 않는 시스템에서 사용 가능
Idea #3: 데이터의 로드
• 좀더 안전한 방법
: 특정 크기의 배수만큼 읽기 작업이 일어나는 시스템에서의 코드 예제
마무레이션
• 데이터를 전처리 하면 게임이 사용할 수 있는 형태로 변환하는
데 필요한 CPU 시간을 줄일 수 있다.
• 로드해야 할 데이터의 크기도 줄일 수 있다.
• 속도와 용량을 모두 만족시킴
= 최적화 기법이 추구해야 할 목표

Mais conteúdo relacionado

Destaque (11)

[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
[11 0916] gpg 2.1.22 비디오 게임에서의 웹 카메라 활용(공개)
 
[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링[0604 석재호]광택성사전필터링
[0604 석재호]광택성사전필터링
 
[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법[12 0210] gpg 2.3.7 전략적 판단 기법
[12 0210] gpg 2.3.7 전략적 판단 기법
 
GPG 1권 4.12 VIPM
GPG 1권 4.12 VIPMGPG 1권 4.12 VIPM
GPG 1권 4.12 VIPM
 
[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규[NDC08] 최적화와 프로파일링 - 송창규
[NDC08] 최적화와 프로파일링 - 송창규
 
[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발[NDC2014] 반응적 라이브 개발
[NDC2014] 반응적 라이브 개발
 
GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법GPG Study 4.3 카메라 제어기법
GPG Study 4.3 카메라 제어기법
 
Windows system - memory개념잡기
Windows system - memory개념잡기Windows system - memory개념잡기
Windows system - memory개념잡기
 
Gpg study5.5
Gpg study5.5Gpg study5.5
Gpg study5.5
 
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
GPG 1.2 템플릿 메타프로그래밍을 이용한 빠른 수학 연산
 
Gpg gems1 1.3
Gpg gems1 1.3Gpg gems1 1.3
Gpg gems1 1.3
 

Semelhante a Gpg study1.8

Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
cranbe95
 
운영체제 Chapter 8
운영체제 Chapter 8운영체제 Chapter 8
운영체제 Chapter 8
YoungGun Na
 
From Java code to Java heap_SYS4U I&C
From Java code to Java heap_SYS4U I&CFrom Java code to Java heap_SYS4U I&C
From Java code to Java heap_SYS4U I&C
sys4u
 

Semelhante a Gpg study1.8 (12)

System+os study 1
System+os study 1System+os study 1
System+os study 1
 
1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법1.0데이터 주도적 설계의_마법
1.0데이터 주도적 설계의_마법
 
[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법[GPG스터디] 1.0 데이터 주도적 설계의 마법
[GPG스터디] 1.0 데이터 주도적 설계의 마법
 
DirectStroage프로그래밍소개
DirectStroage프로그래밍소개DirectStroage프로그래밍소개
DirectStroage프로그래밍소개
 
Mobile memory
Mobile memoryMobile memory
Mobile memory
 
Main memory
Main memoryMain memory
Main memory
 
프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법프로그래머가 알아야 하는 메모리 관리 기법
프로그래머가 알아야 하는 메모리 관리 기법
 
System+os study 5
System+os study 5System+os study 5
System+os study 5
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
Windows reversing study_basic_3
Windows reversing study_basic_3Windows reversing study_basic_3
Windows reversing study_basic_3
 
운영체제 Chapter 8
운영체제 Chapter 8운영체제 Chapter 8
운영체제 Chapter 8
 
From Java code to Java heap_SYS4U I&C
From Java code to Java heap_SYS4U I&CFrom Java code to Java heap_SYS4U I&C
From Java code to Java heap_SYS4U I&C
 

Mais de 세빈 정 (6)

Effective c++ Chapter6
Effective c++ Chapter6Effective c++ Chapter6
Effective c++ Chapter6
 
Effective c++ 1,2
Effective c++ 1,2Effective c++ 1,2
Effective c++ 1,2
 
디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)디자인 패턴(Observer, visitor)
디자인 패턴(Observer, visitor)
 
소켓프로그래밍 기초요약
소켓프로그래밍 기초요약소켓프로그래밍 기초요약
소켓프로그래밍 기초요약
 
Pac-man
Pac-manPac-man
Pac-man
 
포스트모템1
포스트모템1포스트모템1
포스트모템1
 

Gpg study1.8

  • 1. Game Programming Gems 1.8 빠른 데이터 로드 기법
  • 2. Idea #1: 데이터의 전처리 • 레벨 데이터는 최대한으로 전처리 작업  레벨 에디터 같은 유틸리티 프로그램을 이용  게임 자체에 데이터 패킹 코드를 넣어 처리 • 저장될 데이터는 반드시 비 static 멤버 변수 • 포인터를 데이터 파일에 저장해서는 안됨  저장시에 포인터가 가리키는 것과 다시 로드한 후에 가리키 는 것이 전혀 다른 메모리이기 때문
  • 3. Idea #2: 데이터의 저장 • 데이터가 적절한 구조체에 채워지고 나면 그것을 디스크(?)에 저장할 수 있게 됨  데이터 파일에 저장한다 라는 의미 인듯 • 예제 코드
  • 4. Idea #2: 데이터의 저장 • 예제 코드
  • 5. Idea #3: 데이터의 로드 • 간단한 방법  그냥 클래스에 데이터를 그대로 읽으면 됨
  • 6. Idea #3: 데이터의 로드 • 일부 게임기 하드웨어의 경우 데이터를 읽는 방식이 다르다. Ex) 소니 플레이스테이션: CD-ROM으로부터 2048byte의 배수만큼 데이터를 읽음  남는 메모리 공간에는 의미없는 데이터가 덮임. 이러한 현상을 방지하기 위해 구조체의 크기가 경계에 맞도록 더 미 버퍼를 구조체에 추가해야 함 • 보통 데이터 로드에 필요한 충분한 공간을 미리 마련해 두는 것이 제 일 좋음  여러 데이터 로드에 재사용 가능  동적 메모리 할당이 일어나지 않는 시스템에서 사용 가능
  • 7. Idea #3: 데이터의 로드 • 좀더 안전한 방법 : 특정 크기의 배수만큼 읽기 작업이 일어나는 시스템에서의 코드 예제
  • 8. 마무레이션 • 데이터를 전처리 하면 게임이 사용할 수 있는 형태로 변환하는 데 필요한 CPU 시간을 줄일 수 있다. • 로드해야 할 데이터의 크기도 줄일 수 있다. • 속도와 용량을 모두 만족시킴 = 최적화 기법이 추구해야 할 목표