Yazılarımı Daha Kolay Takip Etmek İçin Tıklayın!

XNA'de Multiplayer Network Temelleri – 2

yazan: 9/6/2008 6:25:00 AM

Bu yazımın konusu host edilmiş oyunu senkron şekilde bulmak olacak;Hostu nasıl oluşturacağımız hakkındaki yazımı buradan bulabilirsiniz.

Senkron bulmada yapmamız gereken uygun oturumları (session) bulmak, bulduğumuz oturumda oyuncu için boş slot aramak eğer uygunsa o slota yerleşmek. Yalnız bu kodu yazıp bitirdikten sonra 2 bilgisayara ihtiyacınız olacak, birinden host kurup diğerinden buraya bağlanacaksınız ben sanal makine kullanırım diyenlere eyvallah diyorum. Neyse ben başlayayım fazla uzatmadan;

Aşağıdaki metot bize oturum bulmayı ve içinden slot edinmeyi gösteriyor; bu metodu AgIsleri.cs dosyamıza ekleyelim.

  public void OturumBul()

        {

            // Tüm uygun sessionların listesi

            AvailableNetworkSessionCollection uygunOturumlar;

            // Katılacağımız session

            AvailableNetworkSession uygunOturum = null;

            // Bu komut ile tüm uygun oturumları listemize almiş oluyoruz

            uygunOturumlar =NetworkSession.Find(NetworkSessionType.SystemLink,

                                                 maxLocalOyuncu, null);

                        /* Yukrıda 3. parametredeki null Arama filtrelemek için bir opsiyondur

                               Buraya istenirse SearchProperties tipinde değer girilebilir */

            // Oyuncu için slota sahip olan bir oturum arıyoruz

            foreach (AvailableNetworkSession aramadakiOturum in uygunOturumlar)

            {

                // mantık basit bir oturuma ait açık ve rezerve

                //tüm slotların toplamı alınır

                int OturumSlotlariToplami = aramadakiOturum.OpenPublicGamerSlots +

                                             aramadakiOturum.OpenPrivateGamerSlots;

                // ve bu toplam dolu slotlardan fazlaysa hemen o oturum

                //uygun kabul edilir.

                if (OturumSlotlariToplami > aramadakiOturum.CurrentGamerCount)

                    uygunOturum = aramadakiOturum;

            }

            // eğer uygun oturum bulabildiysek katılıyoruz

            if (uygunOturum != null)

            {

                durum = " " + uygunOturum.HostGamertag + " adlı hostta uygun oturum

                                                            bulundu.";

                oturum = NetworkSession.Join(uygunOturum);

            }

            else

                durum = "Hiç uygun oturum bulunamadı.";

        }

Bu şekilde host arama ve dahil olma işini hallettikten sonra bu aramayı çalıştıracak kullanıcı etkileşimine geldi sıra, Game1.cs dosyasını açıyoruz, Update metoduna alttaki kodu ekliyoruz. Ben etkileşim tuşu olarak “S” (Senkron ara) tuşunu seçtim, siz aslında uğraşıp görsel tuşlar da ekleyebilirsiniz herşey dikdörtgenden ibaret, dikdörtgen çizmeyi (hatta içini doldurmayı) bu yazımda fare etkileşimini de bu yazımda anlatmıştım. Size de fare tıklamasının dikdörtgenin sınırları içinde olup olmadığını kontrol etmek içindeyse gerekli işi yaptırmak kalıyor.  Ya da dikdörtgene onMouseclick tarzı bir event handler da yazabilirsiniz gördüğünüz gibi bir sonuca ulaşmanın birden çok yolu var. Takılırsanız iletişime geçin. Neyse bu moladan sonra işe devam; Game1.cs sınıfımızın Update metoduna aşağıdaki kodu ekleyelim;

            // Oturum ara

            if (Keyboard.GetState().IsKeyDown(Keys.S))

                agYardimcisi.OturumBul();

İşte bu kadar basit XNA’de herşey çok basit zaten. Yazıyı kısa bulanlar Allah’larından bulsunlar. Bu saatte yazıyorum. Bir sonraki yazımda da Asenkron şekilde slot aramayı anlatacağım.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , , ,

XNA

Related posts

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

7/4/2009 8:10:00 PM

 

Yazar Hakkında

Erçin YONTAR
Erçin Yontar
1986 yılında Çorlu'da doğdu.İlk öğrenimini Ankara'da, ortaöğrenimini Eskişehir'de gördü.
Şu an Çanakkale 18 Mart Üniversitesi'nde Bilgisayar Mühendisliği bölümü öğrencisi.
Yazılım ile çok ilgili; Visual Studiosu daima açık :) bunun sayesinde Imagine Cup 2008 Türkiye 3.sü
Yazılım dışında : Frp hastası, rock/metal dinliyor, organizasyon işlerine merak sardı. Bunların yanında o bir; 
MCTS (Microsoft Certified Technology Specialist)



MSP (Microsoft Student Partner)

Bana posta atın Send mail

Favorilerine Ekle


Add to Technorati Favorites

 

Twitter - Ne Yapıyorum?

    Pages

      Recent comments

      Feragatname

      Burada yazan yazılar ve içerdikleri fikirler yazarına aittir. Başkasını ilgilendirmez. Yazıları kaynağını kopyaladığınız yazının içinde tıklanabilir link halinde belirtmek şartı ile olduğu gibi kullanabilirsiniz. Bu kuralları değiştirme hakkım saklıdır. Yarın bir gün benim yazım benim blogumdan başka bir yerde olamaz dersem Kopyaladığınız yazıyı da silmek zorundasınız. Bu işe girşen kişi bu koşulları ve doğan yasal yükümlülükleri kabul etmiş sayılır. Eyvallah diyen devam etsin.

      © Tüm hakları saklıdır.

      Giriş