| Makale Adı | MIDP ile Çok Oyunculu Oyun Programlama |
| Derleyen | Mobilpro |
| Tarih | 28.07.2004 |
|
Oyun Tipleri Burada bahsedilecek olan çok oyunculu oyunlar , Nokia Forumda dökümanı olan "Mobil Oyun Geliştirmeye Giriş" ten alınmıştır. Her oyun tipi için , en uygun teknolojinin hangisi olduğunuda burada vermeye çalışacağız. Çok Oyunculu Tekli Oyunlar Bu tip oyunlarda oyuncular oyunları tek başlarına oynarlar ; oyunun sonunda diğer oyuncularla skorları karşılaştırılır.Oyun sırasında ağ bağlantısı kurulmadığından gecikme yaşanmaz. Oyunda ağ bağlantısı yüzünden gecikme bir tek oyunun sonunda yaşanabilir ama buda oyunun skorunu yada oynanabilirliğini etkilemez. HTTP skor bilgisini göndermekte yeterli olacaktır fakat oyun sunucusunun telefona tüm oyunları bittiğini bildirme gibi bir şansı olmadığından , telefonda çalışan bir HTTP isteği ile periyodik olarak serverdaki oyun bilgisi kontrol edilmelidir. MIDP 2.0 da TCP kullanımı ile bu sorun aşılmıştır. Server , bağlantı açık olduğu sürece telefona TCP ile bir bilgiyi istek olmadan direkt olarak gönderebilir. Sıralı Oyunlar Bu oyunlarda stil , sürekli oynamak değil ; sıralı oynama yüzünden kesintili oynamaktır. Sıralı Oyunlar (Round-Robin Games) Satranç , poker , Briç gibi oyunlarda oyuncular oyunu sıra ile oynarlar. Bir telefonda sıralı oyun yazmanın en basit yolu aynı telefonu paylaşmaktır. Eğer oyuncular fiziksel olarak aynı yerde iseler bu yöntemle oyun oynanabilir. MIDP 1.0 da bu tip oyun yazmak için tek altarnatif HTPP dir. HTTP için burada bir handikap vardır : Server hiç bir şekilde hamle sırasını bekleyen oyuncunun telefonuna hadi sıra sende diyemez. Bu yüzden hamle sırası bekleyen oyuncunun telefonundaki uygulama periyodik olarak sunucuya Benim Sıram geldi mi diye sormak zorundadır. Bu durumda bekleyen oyuncu için ekranda beklediği gösteren bir belirteç olmalıdır ve aynı zamanda oyuncu isterse bu bağlantıyı kesebilmelidir. Bu şu açıdanda gerekli olabilir , eğer oyuncular aynı yerde oyun oynuyorlarsa , sıranın kimde olduğunu konuşarak biribirilerine söyleyebilirler ve böylece cevap bekleyen oyuncu , ağ bağlantısını keserek oyuna devam edebilir. MIDP 1.0 ile geliştirilmiş sıralı oyunlara örnek olarak , MacroSpace 'in CanonsME verilebilir. Bu oyunu 2 ile 4 oyuncu , sıra ile oynar ve sırası gelen rakiplerin tanklarına ateş ederek saldırı hakkını kullanır ve bu arada diğer kullanıcılar beklerler. Wireless Messaging API içeren telefonlarda , sıra konusu SMS gönderilerek halledilebilir fakat oyunda çok sıra değişiyorsa bu sefer oyunun maliyeti yükselecektir. MIDP 2.0 da TCP kullanmak bu tip oyunlarda en iyi yöntemdir. Sunucu oyuncuya sırası geldiğini anında bildirebilir. Bu tip sıralı oyunlarda hamlenin karşı tarafa bildirilmesi önemli olduğundan UDP güvenilirbir çözüm değildir. Eş Zamanlı Hareket Edilen Oyunlar Eş zamanlı oyunlarda birçok oyuncu bir anda oyunu oynar ve en sonunda skorlar karşılaştırılır. (Örnek olarak Taş,Kağıt,Makas oyunu gibi) Aslında bu oyunlar ile sıralı oyunların mantığı açısından bir fark yoktur. Her ikisindede hamleler yapılır ve servera gönderilir ve sonra diğer oyuncuların oyunları bitirmeleri beklenir. İstediğin Zaman Hamle Yap Bu tip oyunlar uzun zaman aralıklarında sürer. (Günler , Haftalar , ..) Oyuncular oyuna istedikleri zaman katılır ve hamlelerini yaparlar. Eğer oyunda gerçek zamanlı yapılması gereken aksiyonlar yoksa (borsa simülasyonu gibi) HTTP ağ bağlantısı için yeterli olacaktır. Eğer sadece birkaç , basit aksiyon var ise SMS de kullanılabilir. Genede HTTP ile anında aksiyon gerektiren araba sürme , karşılıklı ateş etme gibi aksiyonların olduğu oyunlar yazılamaz. Çünkü ağ gecikmesi yüksektir. MIDP 2.0 kullanılmaya başlayan TCP yada UDP ile bu tip sorunlar yaşanmayabilir. Yavaş Değişen Oyunlar Bu oyunlar İstediğin Zaman Hamle Yap tipi oyunların özel bir şekli gibi kabul edilebilir. Bu oyunlarda oyuncular oyuna istedikleri zaman bağlanırlar ve son durum hakkında bilgi alırlar. Oyun devamlı olarak oynanmakta ve çalışmaktadır. Oyun hakkındaki hamleleri yaptıktan sonra oyundan çıksalarda oyundaki karakterleri verilen talimatları yerine getirir. Oyuncu oyuna bağlansada , bağlanmasada oyun oynanır. Bu tip oyunlarda gecikme sorun oluşturmayacağından HTTP uygun olacaktır. Çok Oyunculu Oyunların Özellikleri Kalıcı Kullanıcı Kayıtları Oyununuzun amacına göre her kullanıcıya kalıcı bir kullanıcı kayıdı vermek isteyebilirsiniz. Yeni oyuncuların kolaylıkla üye olmalarını sağlamak için , oyunu ilk oynandıklarında bir kullanıcı arayüzü ile sistem üye olmalarını sağlayın. Kullanıcı adı ve şifrelerini telefonun RMS kayıt sisteminde saklayabilirsiniz. Böylece oyuna ikinci defa girdiklerinde tekrardan kullanıcı adı ve şifre girmelerine gerek kalmaz. Telefonda saklanan bu kullanıcı isim ve şifrelerinin üzerine gerektiğinde güncelleme sağlanabilmelidir. Kullanıcı adı ve şifresini hem telefonda hemde serverda saklamak iyi olacaktır.Eğer kullanıcı yeni bir telefon alır yada arkadaşının telefonunda oyunu oynamak isterse RMS diğer telefonda kaldığından oyunu oynayamayacaktır. Liste (Lobby) Listede o an aktif olan oyunlar gösterilir ve oyuncunun bu oyunlardan birisini seçmesi yada yeni bir oyun başlatması sağlanır. Eğer o anda aktif olan birçok oyun var ise ve sizinde oyuncunun seviyesi hakkında bilginiz var ise , o zaman içinde o oyuncunun seviyesinde oyuncular olan oyunların listesini gösterebilirsiniz. Oyunculara özel , sadece kendisinin davet edebileceği oyunlar oluşturma hakkı vermeniz iyi olacaktır. Böylece sadece kendi arkadaşlarını davet edebileceği oyunlar oluşturabilir. Yüksek Skorlar Tablosu Birçok oyunda yüksek skorlar tablosunu görmek oyuncuların hoşuna gidecektir. Bu bilgiler serverda tutulur. Oyunculara kayıt sırasında sabit kullanıcı isimleri verdirmek bu listelerde gösterimde işe yarar. Ayrıca şunu unutmayınki oyuncu sayınız çoğaldıkça listede sadece belirli kişiler olacak ve birçok oyuncunuz listeye hiçbir zaman giremeyecektir. Bu yüzden günün en yüksek skoru gibi farklı oyuncuların girme şansı olabileceği listeler ekleyin yada farklı başarı seviye ölçüm kriterleri belirleyin. Oyuncular Arasında Sohbet (Chat) Oyuncular oyun oynarken aynı zamanda biribirileri ile mesajlaşmakta isterler. Bu nedenle oyun sırasında oyuncuların sadece o anki rakiplerine yada tüm diğer kullanıcılara mesaj göndermesini sağlayacak bir yapı kurun. Mesaj tekstleri için MIDP 'in high-level yapısını kullanın. Gidipte low-level yapıyı kullanarak kendi tekst mesaj giriş yapınızı geliştirmeyin. Çünkü telefonun kendi yapısında olan T9 gibi özellikleri kullanamayacağınız gibi , klavye düzeneği farklı olan telefonlarda yaptığınız tekst giriş algoritması yanılabilecektir.(Örnek 6800 gibi tam bir klavye kullanan telefonlar gibi) Gecikmeyi Gösterin Oyunda ağ bağlantısı yüzünden bir gecikme oluyorsa bunu ekranda gösterin. Oyuncu ne nedenle beklediğiniz bilsin. Paket Kullanımını Gösterin Telefonlar genelde ne kadar data paketi gittiğini gösterirler ama buna bakmak için oyuncunun oyundan çıkması gerekmektedir. Bu yüzden oyundan çıkmadan bu değerleri kontrol edebilecek bir yapı geliştirin. EK A MIDP Haberleşme protokolleri Özeti
EK B Mobil Ağlardaki Internet Protokolleri Mobil ağlar , sabit yapılı ağlara göre farklı özellikler gösterirler. Bant genişlikleri düşüktür ve ağ gecikmeleri yüksektir. HTTP
Şekil - 9 : Normal TCP üzerinden yapılan HTTP Bir telefon ağ üzerinden normal internet IP bağlantısı kurmak istediğinde telsiz bir IP yönlendirici (Wireless IP Router) bunu sağlar. Bu yönlendiricinin yaptığı telsiz dünyada gelen IP paketlerini normal telekom dünyası içine almaktır. Bu aynı yapıyı laptopunuzu internete bağlamak için mobil telefonunuzu modem olarak kullandığınızdada görürsünüz. Bazı telefonlar bu yapı kendi iç ağ yapısında kullanılır. Nokia 9210 ve 9290 da MIDP HTTP bu şekilde kurulmuştur. Nokia 7650 de ise Şekil-11 de görülen HTTP ile WAP 1.x WSP bağlantısı kullanılabilir.
Şekil - 10 : Telsiz TCP profili (Wireless Profiled TCP) (WAP 2.x) kullanan Telsiz HTTP profili (Wireless Profiled HTTP) WAP 2.x ile Telsiz TCP ve Telsiz HTTP profili kavramları oluşmuştur. Bu yapılar TCP ve HTTP yapılarının telsiz ortam için optimize edilmiş halleridir. Fakat Şekil-10 dada görüldüğü gibi telsiz dünya ile sabit hatlı dünya arasında geçiş için WAP Proxye gerek duyulmaktadır.
Şekil - 11 : WAP 1.0 ile yapılan TCP bağlantısı MIDP 1.0 üzerinde çalışan HTTP , Nokianın birçok modelinde vardır : 3410 , 3510i , 5100 , 6100 , 6310i , 6610 , 7210 , 7250 , 8910i gibi. HTTPS
Şekil - 12 : Normal TCP üzerinden yapılan HTTPS bağlantısı Secure HTTP olarak bilinen HTTPS , HTTP nin güvenli bir soket bağlantısı (TLS gibi) üzerinden çalışan halidir. Gene bir telsiz IP Router yardımı ile telsiz dünyadan gelen bağlantılar sabit hatli dünyaya aktarılır.
Şekil - 13 : Telsiz TCP profili üzerinden yapılan HTTPS bağlantısı WAP 2.x ile beraber gelen Telsiz TCP profili , TLS olarak bilinen güvenli soket bağlantısı üzerinden çalışır. Şekil - 13. Bu şekilde telsiz ağ bağlantısı için yapılan optimizasyonlar kullanılabilir fakat genede arada bir WAP Proxy 'e ihtiyaç vardır.
Şekil - 14 : WSP üzerinden yapılan HTTPS bağlantısı (WAP 1.x) WAP 1.x kullanılarakta HTTPS bağlantısı sağlanabilir. Bunu başarmak için Şekil-14 de görülen WLTS ve TLS kullanmak gereklidir. WTLS , Telsiz ortam için geliştirilmiş olan TLS dir. Burada bir dezavantaj bağlantının baştan sona güvenilir olmamasıdır. Data WAP Gateway den transfer edilirken açık olarak gider. TCP
Şekil - 15 : Normal TCP En basit TCP kullanımı Telsiz bir IP yönlendirici (Wireless IP Router) kullanmaktadır.
Şekil - 16 : Telsiz TCP profili UDP
Şekil - 17 : UDP UDP en basit protokellerindendir. Ağ üzerinde yük olmaz. EK C GPRS üzerinden yapılan Ağ Gecikme Ölçümleri Telsiz Ağ üzerinde gecikmenin testini yapmak için , bir laptopta WTK 2.0 simülatörü çalıştırdık ve bu simülatörden internete bağlanmak için 6310i telefonu kullandık. Bağlanılan serverlar ise hem lokalde , hemde farklı fiziksel konumlardaydı. UDP Gecikmesi
Şekil - 18 : GPRS üzerinden UDP bağlantı gecikmesi <- Makalenin ilk sayfası için tıklayınız <- |
| Yararlanılan Kaynaklar |
| 1. Multi-Player MIDP Game Programming - Forum Nokia -> Version 1.0 (Ekim 2003) |