DirectPlay, DirectX'in çok kullanıcı oyunlar başta olmak üzere birçok kişinin aynı anda birçok mesaj yolladığı ortamların yaratılmasını kolaylaştırmak için geliştirdiği bir iletişim protokolüdür. DirectPlay, () veya tipi bir organizasyonda asenkron mesajlaşma, mesaj öncelikleri, paket birleştirme, kayıpsız gönderim veya paket şifreleme gibi olanaklar sunar ve DirectPlay Voice modülü sayesinde ses iletimini de mümkün kılar.
Sunucu-istemci ve peer to peer arasında seçim
Sunucu-istemci tipi bir ağda birçok istemci (kullanıcı) bir sunucuya bağlanır. Burada her kullanıcı sunucuya diğer kullancılara yollamak istediği mesajları bir kez verir, sunucu ise bu mesajı gerekli kullanıcılara yollamakla yükümlüdür. Dolayısıyla, sunucunun büyük miktarda ağ kaynağına sahip olması gerekmektedir.
Peer to peer tipi bir ağda ise, her kullanıcı her istediği kullanıcıya mesajını teker teker yollar. Her ne kadar bu kullanıcı başına düşen ağ yükünü artırsa da, sistemin paylaştırılmış olması ve dolayısıyla çökmesinin çok daha zorlaşmış olması bir avantaj kabul edilmektedir, üstelik bu oyun yazarını bir oyun sunucusu kurma derdinden de kurtarır.
Programcı, DCOM arayüzünü kullanarak IDirectPlayClient, IDirectPlayServer veya IDirectPlayPeer neslerinden kendi uygulamasına uygun olanları yaratır.
Servis sağlayıcılar
DirectPlay, mesajlaşma hizmetlerini muhtelif servis sağlayıcıları (service provider) kullanarak yapabilir. Genelde servis sağlayıcı (TCP/IP) olsa da bazı kullanıcıların ihtiyaçlarına göre Bluetooth veya modem de olabilir. Buna ek olarak, programcı isterse Microsoft'un sunduğu ayarlanabilir başarımlı TCP/IP servis sağlayıcısını kullanarak yazılımın değişik ağ koşullarında nasıl çalıştığını görebilir.
Bağlantı
Kontrol nesnesinin yaratılması, servis sağlayıcı ve ona bağlı adres nesnesinin de ona eklenmesiyle bağlantıya hazır hale gelinir. Bağlantı sırasında, DirectPlay nesnesi yaratırken belirttiğiniz mesaj alma fonksiyonuna çağrılarda bulunur, ki bu çağrılardan en önemlileri:
- DPN_MSGID_ENUM_HOSTS_RESPONSE mesajı bağlanma isteğinin kabul olduğuna işaret olarak gelir. Bağlantı bilgilerini içerir.
- DPN_MSGID_CREATE_PLAYER ve DPN_MSGID_DESTROY_PLAYER mesajları oyuncular bağlandığında ve bağlantıyı koparttığında gelir.
- DPN_MSGID_RECEIVE kullanıcıya mesaj gelince gelir (mesajlar SendTo metodu ile yollanır). Tartışmasız bir oyundaki en önemli mesaj da budur.
- DPN_MSGID_TERMINATE_SESSION bağlantı kopunca gelir.
Unutulmaması gereken önemli noktalardan biri: DirectPlay, kullanıcı yaratılışı için kendi iç mesajlaşma sistemini kullanır. Dolayısıyla, yüksek öncelikli mesajlar yollandığında bu mesajlar o kullanıcıya "ilgili kullanıcı bağlandı" mesajından daha önce gelebilir.
Ses bağlantısı
"Normal" nesne bağlantısı kuruluduğunda, DirectPlayVoiceClient ve gerekiyorsa DirectPlayVoiceServer nesnelerini DCOM aracılığı ile yaratıp "normal" bağlantı nesnesine eklediğiniz anda ses bağlantısı kurulur. DirectPlay Voice, 1.2 kbit'den 64 kbit'e kadar değişik bant genişlikleri kullanan codecler ile birlikte gelir, ama maalesef dış codec kullanımı mümkün değildir. Sesin hangi kullanıcılara yollanacağı SetTransmitTargets metodu ile seçilir.
Son olarak, DirectPlayVoiceClient nesnesinin Create3DSoundBuffer metodu kullanılarak her oyuncuya özel bir üç boyutlu ses kanalı verilebilir!
Sonuç
Görüldüğü üzere, DirectPlay ile çok hızlı bir şekilde NAT ve UPnP desteğine sahip, gerekiyorsa şifreleme kullanabilen ve hatta üç boyutlu ses alış verişi yapabilen uygulamalar yapılması mümkündür.
wikipedia, wiki, viki, vikipedia, oku, kitap, kütüphane, kütübhane, ara, ara bul, bul, herşey, ne arasanız burada,hikayeler, makale, kitaplar, öğren, wiki, bilgi, tarih, yukle, izle, telefon için, turk, türk, türkçe, turkce, nasıl yapılır, ne demek, nasıl, yapmak, yapılır, indir, ücretsiz, ücretsiz indir, bedava, bedava indir, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, resim, müzik, şarkı, film, film, oyun, oyunlar, mobil, cep telefonu, telefon, android, ios, apple, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, pc, web, computer, bilgisayar
DirectPlay DirectX in cok kullanici oyunlar basta olmak uzere bircok kisinin ayni anda bircok mesaj yolladigi ortamlarin yaratilmasini kolaylastirmak icin gelistirdigi bir iletisim protokoludur DirectPlay veya tipi bir organizasyonda asenkron mesajlasma mesaj oncelikleri paket birlestirme kayipsiz gonderim veya paket sifreleme gibi olanaklar sunar ve DirectPlay Voice modulu sayesinde ses iletimini de mumkun kilar Sunucu istemci ve peer to peer arasinda secimSunucu istemci tipi bir agda bircok istemci kullanici bir sunucuya baglanir Burada her kullanici sunucuya diger kullancilara yollamak istedigi mesajlari bir kez verir sunucu ise bu mesaji gerekli kullanicilara yollamakla yukumludur Dolayisiyla sunucunun buyuk miktarda ag kaynagina sahip olmasi gerekmektedir Peer to peer tipi bir agda ise her kullanici her istedigi kullaniciya mesajini teker teker yollar Her ne kadar bu kullanici basina dusen ag yukunu artirsa da sistemin paylastirilmis olmasi ve dolayisiyla cokmesinin cok daha zorlasmis olmasi bir avantaj kabul edilmektedir ustelik bu oyun yazarini bir oyun sunucusu kurma derdinden de kurtarir Programci DCOM arayuzunu kullanarak IDirectPlayClient IDirectPlayServer veya IDirectPlayPeer neslerinden kendi uygulamasina uygun olanlari yaratir Servis saglayicilarDirectPlay mesajlasma hizmetlerini muhtelif servis saglayicilari service provider kullanarak yapabilir Genelde servis saglayici TCP IP olsa da bazi kullanicilarin ihtiyaclarina gore Bluetooth veya modem de olabilir Buna ek olarak programci isterse Microsoft un sundugu ayarlanabilir basarimli TCP IP servis saglayicisini kullanarak yazilimin degisik ag kosullarinda nasil calistigini gorebilir BaglantiKontrol nesnesinin yaratilmasi servis saglayici ve ona bagli adres nesnesinin de ona eklenmesiyle baglantiya hazir hale gelinir Baglanti sirasinda DirectPlay nesnesi yaratirken belirttiginiz mesaj alma fonksiyonuna cagrilarda bulunur ki bu cagrilardan en onemlileri DPN MSGID ENUM HOSTS RESPONSE mesaji baglanma isteginin kabul olduguna isaret olarak gelir Baglanti bilgilerini icerir DPN MSGID CREATE PLAYER ve DPN MSGID DESTROY PLAYER mesajlari oyuncular baglandiginda ve baglantiyi koparttiginda gelir DPN MSGID RECEIVE kullaniciya mesaj gelince gelir mesajlar SendTo metodu ile yollanir Tartismasiz bir oyundaki en onemli mesaj da budur DPN MSGID TERMINATE SESSION baglanti kopunca gelir Unutulmamasi gereken onemli noktalardan biri DirectPlay kullanici yaratilisi icin kendi ic mesajlasma sistemini kullanir Dolayisiyla yuksek oncelikli mesajlar yollandiginda bu mesajlar o kullaniciya ilgili kullanici baglandi mesajindan daha once gelebilir Ses baglantisi Normal nesne baglantisi kuruludugunda DirectPlayVoiceClient ve gerekiyorsa DirectPlayVoiceServer nesnelerini DCOM araciligi ile yaratip normal baglanti nesnesine eklediginiz anda ses baglantisi kurulur DirectPlay Voice 1 2 kbit den 64 kbit e kadar degisik bant genislikleri kullanan codecler ile birlikte gelir ama maalesef dis codec kullanimi mumkun degildir Sesin hangi kullanicilara yollanacagi SetTransmitTargets metodu ile secilir Son olarak DirectPlayVoiceClient nesnesinin Create3DSoundBuffer metodu kullanilarak her oyuncuya ozel bir uc boyutlu ses kanali verilebilir SonucGoruldugu uzere DirectPlay ile cok hizli bir sekilde NAT ve UPnP destegine sahip gerekiyorsa sifreleme kullanabilen ve hatta uc boyutlu ses alis verisi yapabilen uygulamalar yapilmasi mumkundur