250 likes | 504 Views
게임 프로그래밍 I. 제 7 주 DirectPlay, DirectShow, DirectSetup. DirectPlay. 다중사용자를 위한 네트웍 플레이 지원 P2P 와 Client/Server 지원 lobby 서버 구축 가능 서버 구축 가능 TCP/IP, UDP, IPX 등을 한가지 인터페이스로 추상화 winsock 에 비해 많이 사용되지 않음 P2P 네트워크 개발 솔루션의 역할. DIrectPlay 로 할 수 있는 일. P2P, C/S 세션의 생성 및 관리 세션내의 사용자와 그룹 관리
E N D
게임 프로그래밍 I 제 7 주 DirectPlay, DirectShow, DirectSetup
DirectPlay • 다중사용자를 위한 네트웍 플레이 지원 • P2P와 Client/Server 지원 • lobby 서버 구축 가능 • 서버 구축 가능 • TCP/IP, UDP, IPX등을 한가지 인터페이스로 추상화 • winsock에 비해 많이 사용되지 않음 • P2P 네트워크 개발 솔루션의 역할 DirectPlay 및 기타 구성요소
DIrectPlay로 할 수 있는 일 • P2P, C/S 세션의 생성 및 관리 • 세션내의 사용자와 그룹 관리 • 네트웍의 사용자 사이의 메시징 관리 • lobby 가능 • 사용자들 간의 음성 채팅 가능 DirectPlay 및 기타 구성요소
DirectPlay 개발환경 • Header File • dplay8.h • Library File • dplayx.lib • DLL File • dplay.dll DirectPlay 및 기타 구성요소
DirectPlay 실행과정 (P2P) • DirectPlay 객체 생성 • DirectPlay 객체 초기화 • Hosting • 서비스 프로바이더(프로토콜) 설정 • 세션을 생성 • Host에 연결 • 서비스 프로바이더 확인 • Host 선택 • 세션에 연결 • 게임 진행 • 세션에서 나감 • 세션 종료 DirectPlay 및 기타 구성요소
DirectPlay 객체 생성 // DirectPlay peer 객체 생성 IDirectPlay8Peer *pDP; HRESULT hr = CoCreateInstance( CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (LPVOID*) &pDP ); DirectPlay 및 기타 구성요소
DirectPlay 객체 초기화 HRESULTIDirectPlay8Peer::Initialize( PVOIDconstpvUserContext, constPFNDPNMESSAGEHANDLERpfn, constDWORDdwFlags ); DirectPlay 및 기타 구성요소
Hosting : 서비스 프로바이더 설정 HRESULTIDirectPlay8Address::SetSP( const GUID*constpguidSP ); DirectPlay 및 기타 구성요소
Hosting : 세션을 생성 HRESULT IDirectPlay8Peer::Host( const DPN_APPLICATION_DESC*constpdnAppDesc, IDirectPlay8Address**constprgpDeviceInfo, const DWORDcDeviceInfo, const DPN_SECURITY_DESC*constpdpSecurity, const DPN_SECURITY_CREDENTIALS *constpdpCredentials, VOID*constpvPlayerContext, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
연결 : 서비스 프로바이더 확인 HRESULTIDirectPlay8Peer::EnumServiceProviders( const GUID*constpguidServiceProvider, const GUID*constpguidApplication, const DPN_SERVICE_PROVIDER_INFO *constpSPInfoBuffer, DWORD*constpcbEnumData, DWORD*constpcReturned, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
연결 : Host 선택 HRESULTIDirectPlay8Peer::EnumHosts( PDPN_APPLICATION_DESCconstpApplicationDesc, IDirectPlay8Address*constpdpaddrHost, IDirectPlay8Address*constpdpaddrDeviceInfo, PVOIDconstpvUserEnumData, const DWORDdwUserEnumDataSize, const DWORDdwEnumCount, const DWORDdwRetryInterval, const DWORDdwTimeOut, PVOIDconstpvUserContext, HANDLE*constpAsyncHandle, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
연결 : 세션 연결 HRESULTIDirectPlay8Peer::Connect( const DPN_APPLICATION_DESC*constpdnAppDesc, IDirectPlay8Address*constpHostAddr, IDirectPlay8Address*constpDeviceInfo, const DPN_SECURITY_DESC*constpdnSecurity, const DPN_SECURITY_CREDENTIALS *constpdnCredentials, const void*constpvUserConnectData, const DWORDdwUserConnectDataSize, void*constpvPlayerContext, void*constpvAsyncContext, DPNHANDLE*constphAsyncHandle, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
메시지 보내기 HRESULTIDirectPlay8Peer::SendTo( const DPNIDdpnid, const DPN_BUFFER_DESC *constpBufferDesc, const DWORDcBufferDesc, const DWORDdwTimeOut, void*constpvAsyncContext, DPNHANDLE*constphAsyncHandle, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
세션 종료 HRESULT IDirectPlay8Peer::TerminateSession( void*constpvTerminateData, const DWORDdwTerminateDataSize, const DWORDdwFlags ); DirectPlay 및 기타 구성요소
DirectPlay 실행과정 (C/S) • C/S 세션 초기화 • 서비스 프로바이더 확인 • C/S Host 선택 • C/S 세션에 연결 • C/S 세션 관리 • C/S 메시지 관리 • C/S 게임 진행 • C/S 세션에서 나감 • C/S 세션 종료 DirectPlay 및 기타 구성요소
C/S인 경우의 인터페이스 • 인터페이스 • client – IDirectPlay8Client • server – IDirectPlay8Server DirectPlay 및 기타 구성요소
C/S 세션 초기화 • Initialize • Server • IDirectPlay8Server::SetServerInfo • Client • IDirectPlay8Client::GetServerInfo DirectPlay 및 기타 구성요소
C/S 세션에 연결 • Client • IDirectPlay8Client::SetClientInfo • Server • IDirectPlay8Server::GetClientInfo DirectPlay 및 기타 구성요소
C/S 세션 관리 • 세션에서 사용자 삭제 • IDirectPlay8Server::DestroyClient DirectPlay 및 기타 구성요소
DirectShow • 동영상 및 미디어 파일 제어 • 윈도우 미디어 플레이어에 지원 동영상 및 음악 형식 지원 • MPEG, AVI, MP3, WAV 등 • 스트리밍 방식 지원 • 동영상 캡쳐 기능 • Direct3D와 합성 가능 • VMR9 기능 • 동영상 위에 text를 overlay • 비디오 화면을 texture에 직접 렌더링 • 향상된 고화질의 화면 제공 DirectPlay 및 기타 구성요소
DirectShow 개발환경 • Header File • dshow.h • Library File • strmiids.lib • quartz.lib DirectPlay 및 기타 구성요소
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 및 기타 구성요소
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 및 기타 구성요소
DirectSetup • DirectX 구성요소의 설치 • 한번의 call로 설치 가능 • 다양한 API 제공 • 기본 제공 Dxsetup.exe • 개인화 : DirectXSetupCallbackFunction DirectPlay 및 기타 구성요소
DirectSetup : API • DirectXRegisterApplication • DirectXSetup • DirectXSetupCallbackFunction • DirectXSetupGetEULA • DirectXSetupGetVersion • DirectXSetupSetCallback • DirectXSetupShowEULA • DirectXUnRegisterApplication DirectPlay 및 기타 구성요소