1 / 25

게임 프로그래밍 I

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

anika
Download Presentation

게임 프로그래밍 I

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 게임 프로그래밍 I 제 7 주 DirectPlay, DirectShow, DirectSetup

  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) • DirectPlay 객체 생성 • DirectPlay 객체 초기화 • Hosting • 서비스 프로바이더(프로토콜) 설정 • 세션을 생성 • Host에 연결 • 서비스 프로바이더 확인 • Host 선택 • 세션에 연결 • 게임 진행 • 세션에서 나감 • 세션 종료 DirectPlay 및 기타 구성요소

  6. DirectPlay 객체 생성 // DirectPlay peer 객체 생성 IDirectPlay8Peer *pDP; HRESULT hr = CoCreateInstance( CLSID_DirectPlay8Peer, NULL, CLSCTX_INPROC_SERVER, IID_IDirectPlay8Peer, (LPVOID*) &pDP ); DirectPlay 및 기타 구성요소

  7. DirectPlay 객체 초기화 HRESULTIDirectPlay8Peer::Initialize( PVOIDconstpvUserContext, constPFNDPNMESSAGEHANDLERpfn, constDWORDdwFlags ); DirectPlay 및 기타 구성요소

  8. Hosting : 서비스 프로바이더 설정 HRESULTIDirectPlay8Address::SetSP( const GUID*constpguidSP ); DirectPlay 및 기타 구성요소

  9. 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 및 기타 구성요소

  10. 연결 : 서비스 프로바이더 확인 HRESULTIDirectPlay8Peer::EnumServiceProviders( const GUID*constpguidServiceProvider, const GUID*constpguidApplication, const DPN_SERVICE_PROVIDER_INFO *constpSPInfoBuffer, DWORD*constpcbEnumData, DWORD*constpcReturned, const DWORDdwFlags ); DirectPlay 및 기타 구성요소

  11. 연결 : 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 및 기타 구성요소

  12. 연결 : 세션 연결 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 및 기타 구성요소

  13. 메시지 보내기 HRESULTIDirectPlay8Peer::SendTo( const DPNIDdpnid, const DPN_BUFFER_DESC *constpBufferDesc, const DWORDcBufferDesc, const DWORDdwTimeOut, void*constpvAsyncContext, DPNHANDLE*constphAsyncHandle, const DWORDdwFlags ); DirectPlay 및 기타 구성요소

  14. 세션 종료 HRESULT IDirectPlay8Peer::TerminateSession( void*constpvTerminateData, const DWORDdwTerminateDataSize, const DWORDdwFlags ); DirectPlay 및 기타 구성요소

  15. DirectPlay 실행과정 (C/S) • C/S 세션 초기화 • 서비스 프로바이더 확인 • C/S Host 선택 • C/S 세션에 연결 • C/S 세션 관리 • C/S 메시지 관리 • C/S 게임 진행 • C/S 세션에서 나감 • C/S 세션 종료 DirectPlay 및 기타 구성요소

  16. C/S인 경우의 인터페이스 • 인터페이스 • client – IDirectPlay8Client • server – 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 File • strmiids.lib • quartz.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 DirectPlay 및 기타 구성요소

More Related