2004. 02. 22
( 멀티미디어 및 게임 소프트웨어 트랙 )
게임 프로그래밍 I
제 7 주 DirectPlay, DirectShow, DirectSetup
DirectPlay 및 기타 구성요소 2
DirectPlay
다중사용자를 위한 네트웍 플레이 지원 P2P 와 Client/Server 지원 lobby 서버 구축 가능 서버 구축 가능 TCP/IP, UDP, IPX 등을 한가지 인터페이스로
추상화 winsock 에 비해 많이 사용되지 않음 P2P 네트워크 개발 솔루션의 역할
DirectPlay 및 기타 구성요소 3
DIrectPlay 로 할 수 있는 일
P2P, C/S 세션의 생성 및 관리 세션내의 사용자와 그룹 관리 네트웍의 사용자 사이의 메시징 관리 lobby 가능 사용자들 간의 음성 채팅 가능
DirectPlay 및 기타 구성요소 4
DirectPlay 개발환경 Header File
dplay8.h
Library File dplayx.lib
DLL File dplay.dll
DirectPlay 및 기타 구성요소 5
DirectPlay 실행과정 (P2P)
1. DirectPlay 객체 생성2. DirectPlay 객체 초기화3. Hosting
1. 서비스 프로바이더 ( 프로토콜 ) 설정2. 세션을 생성
4. Host 에 연결 서비스 프로바이더 확인 Host 선택 세션에 연결
5. 게임 진행6. 세션에서 나감7. 세션 종료
DirectPlay 및 기타 구성요소 6
DirectPlay 객체 생성// DirectPlay peer 객체 생성IDirectPlay8Peer *pDP;
HRESULT hr = CoCreateInstance( CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (LPVOID*) &pDP
);
DirectPlay 및 기타 구성요소 7
DirectPlay 객체 초기화HRESULT IDirectPlay8Peer::Initialize(
PVOID const pvUserContext, const PFNDPNMESSAGEHANDLER pfn, const DWORD dwFlags
);
DirectPlay 및 기타 구성요소 8
Hosting : 서비스 프로바이더 설정
HRESULT IDirectPlay8Address::SetSP(const GUID *const pguidSP
);
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
);
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
);
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
);
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
);
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
);
DirectPlay 및 기타 구성요소 14
세션 종료HRESULT IDirectPlay8Peer::TerminateSession(
void *const pvTerminateData, const DWORD dwTerminateDataSize, const DWORD dwFlags
);
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 세션 종료
DirectPlay 및 기타 구성요소 16
C/S 인 경우의 인터페이스 인터페이스
client – IDirectPlay8Clientserver – IDirectPlay8Server
DirectPlay 및 기타 구성요소 17
C/S 세션 초기화 Initialize Server
IDirectPlay8Server::SetServerInfo Client
IDirectPlay8Client::GetServerInfo
DirectPlay 및 기타 구성요소 18
C/S 세션에 연결 Client
IDirectPlay8Client::SetClientInfo Server
IDirectPlay8Server::GetClientInfo
DirectPlay 및 기타 구성요소 19
C/S 세션 관리 세션에서 사용자 삭제
IDirectPlay8Server::DestroyClient
DirectPlay 및 기타 구성요소 20
DirectShow
동영상 및 미디어 파일 제어 윈도우 미디어 플레이어에 지원 동영상 및 음악 형식
지원 MPEG, AVI, MP3, WAV 등
스트리밍 방식 지원 동영상 캡쳐 기능 Direct3D 와 합성 가능 VMR9 기능
동영상 위에 text 를 overlay 비디오 화면을 texture 에 직접 렌더링 향상된 고화질의 화면 제공
DirectPlay 및 기타 구성요소 21
DirectShow 개발환경 Header File
dshow.h
Library Filestrmiids.libquartz.lib
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
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
DirectPlay 및 기타 구성요소 24
DirectSetup
DirectX 구성요소의 설치 한번의 call 로 설치 가능 다양한 API 제공 기본 제공 Dxsetup.exe 개인화 : DirectXSetupCallbackFunction
DirectPlay 및 기타 구성요소 25
DirectSetup : API
DirectXRegisterApplication DirectXSetup DirectXSetupCallbackFunction DirectXSetupGetEULA DirectXSetupGetVersion DirectXSetupSetCallback DirectXSetupShowEULA DirectXUnRegisterApplication