DirectPlay DirectPlay C++ 샘플 SimplePeer [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
샘플 SimplePeer 는, 간단한 피어 투 피어 애플리케이션의 처리 방법을 나타낸다. 세션에 참가하는지, 또는 세션을 생성 하면, 곧바로 게임이 시작 한다. 세션에는, 다른 player도 언제라도 참가할 수 있다.
소스 파일 : (SDK 루트) \Samples\C++\DirectPlay\SimplePeer
실행 가능 파일 :(SDK 루트) \Samples\C++\DirectPlay\Bin
player 의 이름을 입력해, 접속의 종류를 선택한다. [Wait for lobby connection] 또는 서비스 프로바이더를 선택할 수 있다. [Multiplayer Games] 다이알로그 박스를 사용해, 참가하는 액티브한 게임의 검색 또는 새로운 게임의 시작이 생긴다. 게임에 참가하는지, 게임을 생성 하면, 곧바로 게임이 시작 한다. 다른 player는, 언제라도 게임에 참가할 수 있다. 호스트의 처리이 유효하게 되어 있는 경우, Microsoft® DirectPlay® 가 자동적으로 호스트 세션을 다른 player로 처리하기 (위해)때문에, 호스트 player는 언제라도 게임을 빠질 수 있다.
InitDirectPlay 함수는 다음의 처리를 실행한다.
애플리케이션이 로비 클라이언트에 의해 기동되었을 경우, 접속 설정은 CNetConnectWizard 의 ConnectUsingLobbySetting 함수에 의해, 로비 클라이언트로부터 취득할 수 있다. CNetConnectWizard 클래스는, 헬퍼-클래스이다. 이 클래스는 다이알로그 박스를 사용해, 사용자에 정보를 문의한다. ConnectUsingLobbySettings 함수는 다음의 처리를 실행한다.
로비 클라이언트로부터 접속 설정이 제공되지 않는 경우, 애플리케이션은 CNetConnectWizard 의 DoConnectWizard 함수를 호출한다. DoConnectWizard 는, 다음의 처리를 실행한다.
위저드에 현재의 세션의 일람이 표시되어 사용자가 일람으로부터 게임을 선택하는지, 새로운 게임을 선택할 수 있게 된다. [Join] 를 클릭 하면,SessionDlgJoinGame 함수는 IDirectPlay8Peer::SetPeerInfo 를 호출해, player명과 IDirectPlay8Peer::Connect 를 설정해 게임에 접속한다. [Create] 를 클릭 하면,SessionDlgCreateGame 함수는 IDirectPlay8Peer::SetPeerInfo 를 호출해 player명을 설정해,IDirectPlay8Peer::Host 를 호출해 게임의 호스팅을 시작 한다. 게임명, 최대 player수, 애플리케이션의 GUID 등의 정보가 저장 된 DPN_APPLICATION_DESC 구조체는,Connect 의 호출로 건네받는다.
접속 후,[Wave to other players] 를 클릭 하면,WaveToAllPlayers 함수는 DPNID_ALL_PLAYERS_GROUP 를 설정한 dpnid 파라미터와 GAME_MSGID_WAVE 가 포함된 DWORD 를 나타내는 pBufferDesc 파라미터를 사용해,IDirectPlay8Peer::SendTo 를 호출한다.
[Exit] 를 클릭 하면, 모든 인터페이스가 소거된다.