25
2004. 02. 22 ( 멀멀멀멀멀 멀 멀멀 멀멀멀멀멀 멀멀 ) 멀멀 멀멀멀멀멀 I 제 7 제 DirectPlay, DirectShow, DirectS etup

게임 프로그래밍 I

  • Upload
    anika

  • View
    63

  • Download
    3

Embed Size (px)

DESCRIPTION

게임 프로그래밍 I. 제 7 주 DirectPlay, DirectShow, DirectSetup. DirectPlay. 다중사용자를 위한 네트웍 플레이 지원 P2P 와 Client/Server 지원 lobby 서버 구축 가능 서버 구축 가능 TCP/IP, UDP, IPX 등을 한가지 인터페이스로 추상화 winsock 에 비해 많이 사용되지 않음 P2P 네트워크 개발 솔루션의 역할. DIrectPlay 로 할 수 있는 일. P2P, C/S 세션의 생성 및 관리 세션내의 사용자와 그룹 관리 - PowerPoint PPT Presentation

Citation preview

Page 1: 게임 프로그래밍  I

                             

                             

2004. 02. 22

( 멀티미디어 및 게임 소프트웨어 트랙 )

게임 프로그래밍 I

제 7 주 DirectPlay, DirectShow, DirectSetup

Page 2: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 2

DirectPlay

다중사용자를 위한 네트웍 플레이 지원 P2P 와 Client/Server 지원 lobby 서버 구축 가능 서버 구축 가능 TCP/IP, UDP, IPX 등을 한가지 인터페이스로

추상화 winsock 에 비해 많이 사용되지 않음 P2P 네트워크 개발 솔루션의 역할

Page 3: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 3

DIrectPlay 로 할 수 있는 일

P2P, C/S 세션의 생성 및 관리 세션내의 사용자와 그룹 관리 네트웍의 사용자 사이의 메시징 관리 lobby 가능 사용자들 간의 음성 채팅 가능

Page 4: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 4

DirectPlay 개발환경 Header File

dplay8.h

Library File dplayx.lib

DLL File dplay.dll

Page 5: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 5

DirectPlay 실행과정 (P2P)

1. DirectPlay 객체 생성2. DirectPlay 객체 초기화3. Hosting

1. 서비스 프로바이더 ( 프로토콜 ) 설정2. 세션을 생성

4. Host 에 연결 서비스 프로바이더 확인 Host 선택 세션에 연결

5. 게임 진행6. 세션에서 나감7. 세션 종료

Page 6: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 6

DirectPlay 객체 생성// DirectPlay peer 객체 생성IDirectPlay8Peer *pDP;

HRESULT hr = CoCreateInstance( CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (LPVOID*) &pDP

);

Page 7: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 7

DirectPlay 객체 초기화HRESULT IDirectPlay8Peer::Initialize(

PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags

);

Page 8: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 8

Hosting : 서비스 프로바이더 설정

HRESULT IDirectPlay8Address::SetSP(const GUID *const pguidSP

);

Page 9: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 9

Hosting : 세션을 생성HRESULT IDirectPlay8Peer::Host(

const DPN_APPLICATION_DESC *const pdnAppDesc, IDirectPlay8Address **const prgpDeviceInfo, const DWORD cDeviceInfo, const DPN_SECURITY_DESC *const pdpSecurity, const DPN_SECURITY_CREDENTIALS

*const pdpCredentials, VOID *const pvPlayerContext, const DWORD dwFlags

);

Page 10: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 10

연결 : 서비스 프로바이더 확인

HRESULT IDirectPlay8Peer::EnumServiceProviders(const GUID *const pguidServiceProvider, const GUID *const pguidApplication, const DPN_SERVICE_PROVIDER_INFO

*const pSPInfoBuffer,

DWORD *const pcbEnumData, DWORD *const pcReturned, const DWORD dwFlags

);

Page 11: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 11

연결 : Host 선택HRESULT IDirectPlay8Peer::EnumHosts(

PDPN_APPLICATION_DESC const pApplicationDesc, IDirectPlay8Address *const pdpaddrHost, IDirectPlay8Address *const pdpaddrDeviceInfo, PVOID const pvUserEnumData, const DWORD dwUserEnumDataSize, const DWORD dwEnumCount, const DWORD dwRetryInterval, const DWORD dwTimeOut, PVOID const pvUserContext, HANDLE *const pAsyncHandle, const DWORD dwFlags

);

Page 12: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 12

연결 : 세션 연결HRESULT IDirectPlay8Peer::Connect(

const DPN_APPLICATION_DESC *const pdnAppDesc, IDirectPlay8Address *const pHostAddr, IDirectPlay8Address *const pDeviceInfo, const DPN_SECURITY_DESC *const pdnSecurity, const DPN_SECURITY_CREDENTIALS

*const pdnCredentials, const void *const pvUserConnectData, const DWORD dwUserConnectDataSize, void *const pvPlayerContext, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags

);

Page 13: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 13

메시지 보내기HRESULT IDirectPlay8Peer::SendTo(

const DPNID dpnid, const DPN_BUFFER_DESC

*const pBufferDesc, const DWORD cBufferDesc, const DWORD dwTimeOut, void *const pvAsyncContext, DPNHANDLE *const phAsyncHandle, const DWORD dwFlags

);

Page 14: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 14

세션 종료HRESULT IDirectPlay8Peer::TerminateSession(

void *const pvTerminateData, const DWORD dwTerminateDataSize, const DWORD dwFlags

);

Page 15: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 15

DirectPlay 실행과정 (C/S)

1. C/S 세션 초기화2. 서비스 프로바이더 확인3. C/S Host 선택4. C/S 세션에 연결5. C/S 세션 관리6. C/S 메시지 관리7. C/S 게임 진행8. C/S 세션에서 나감9. C/S 세션 종료

Page 16: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 16

C/S 인 경우의 인터페이스 인터페이스

client – IDirectPlay8Clientserver – IDirectPlay8Server

Page 17: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 17

C/S 세션 초기화 Initialize Server

IDirectPlay8Server::SetServerInfo Client

IDirectPlay8Client::GetServerInfo

Page 18: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 18

C/S 세션에 연결 Client

IDirectPlay8Client::SetClientInfo Server

IDirectPlay8Server::GetClientInfo

Page 19: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 19

C/S 세션 관리 세션에서 사용자 삭제

IDirectPlay8Server::DestroyClient

Page 20: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 20

DirectShow

동영상 및 미디어 파일 제어 윈도우 미디어 플레이어에 지원 동영상 및 음악 형식

지원 MPEG, AVI, MP3, WAV 등

스트리밍 방식 지원 동영상 캡쳐 기능 Direct3D 와 합성 가능 VMR9 기능

동영상 위에 text 를 overlay 비디오 화면을 texture 에 직접 렌더링 향상된 고화질의 화면 제공

Page 21: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 21

DirectShow 개발환경 Header File

dshow.h

Library Filestrmiids.libquartz.lib

Page 22: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 22

DirectShow 에서 제공하는 Format

File type Windows Media Audio (WMA) Windows Media Video (WMV) Advanced System Format (ASF) Motion Picture Experts Group (MPEG) Audio-Video Interleaved (AVI) QuickTime ( 버전 2 이하 ) WAV AIFF AU SND MID

Page 23: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 23

DirectShow 에서 제공하는 Format

압축 format Windows Media Video ISO MPEG-4 video version 1.0 Microsoft MPEG-4 version 3 Sipro Labs ACELP Window Media Audio MPEG Audio Layer-3 (MP3) – 압축풀기만 지원 Digital Video (DV) MPEG-1 – 압축 풀기만 지원 MJPEG Cinepak

Page 24: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 24

DirectSetup

DirectX 구성요소의 설치 한번의 call 로 설치 가능 다양한 API 제공 기본 제공 Dxsetup.exe 개인화 : DirectXSetupCallbackFunction

Page 25: 게임 프로그래밍  I

DirectPlay 및 기타 구성요소 25

DirectSetup : API

DirectXRegisterApplication DirectXSetup DirectXSetupCallbackFunction DirectXSetupGetEULA DirectXSetupGetVersion DirectXSetupSetCallback DirectXSetupShowEULA DirectXUnRegisterApplication