health

[tahir][bigposts]

vehicles

[tahir][bigposts]

business

[tahir][bigposts]
Game Maker Multiplayer Oyun Yapımı Dersleri
Çok oyunculu oyunlar
Bu işlevsellik yalnızca Game Maker'ın Pro Edition sürümünde mevcuttur.
Bilgisayara karşı oyun oynamak eğlencelidir. Ama diğer insan oyunculara karşı oyun oynamak daha da eğlenceli olabilir. Bu oyunları yapmak da nispeten kolaydır çünkü karmaşık bilgisayar rakibi AI'yi uygulamak zorunda değilsiniz. Tabii ki, aynı monitörün arkasındaki iki oyuncuyla oturup farklı tuşlar veya diğer giriş aygıtlarını kullanabilirsiniz, ancak her oyuncu kendi bilgisayarının arkasına oturabildiğinde çok daha ilginçtir. Ya da daha da iyisi, bir oyuncu okyanusun diğer tarafında oturur. Oyun Makinesi çok oyunculu desteğine sahiptir. İyi senkronize ve gecikme olmayan etkili çok oyunculu oyunlar oluşturmanın zor bir görev olduğunu lütfen unutmayın. Bu bölüm olasılıkların kısa bir açıklamasını verir. Web sitesinde bir öğretici daha fazla bilgi ile kullanılabilir.

Çok oyunculu oyunlar hakkında bilgi aşağıdaki yazılarda bulunabilir:


1.Bir bağlantı kurma

İki bilgisayarın iletişim kurması için bazı bağlantı protokolüne ihtiyaçları olacak. Çoğu oyun gibi, Game Maker dört farklı bağlantı türü sunar: IPX, TCP / IP, Modem ve Serial. IPX bağlantısı (daha kesin olması için, bir protokoldür) neredeyse tamamen şeffaftır. Aynı yerel alan ağındaki diğer insanlarla oyun oynamak için kullanılabilir. Kullanmak için bilgisayarınızda kurulu olması gerekiyor. (Çalışmıyorsa, Windows belgelerine bakın. Veya Windows'un kontrol panelindeki Ağ öğesine gidin ve IPX protokolünü ekleyin.) TCP / IP, internet protokolüdür. IP adreslerini bildiğinizi varsayarak, internet üzerindeki herhangi bir yerde diğer oyuncularla oynamak için kullanılabilir. Yerel bir ağda adresleri kullanmadan kullanabilirsiniz. Modem üzerinden modem bağlantısı yapılır. Kullanmak için bazı modem ayarlarını (bir başlatma dizesi ve bir telefon numarası) vermelisiniz. Son olarak, bir seri hat kullanırken (bilgisayarlar arasında doğrudan bağlantı), bir dizi bağlantı noktası ayarı sağlamanız gerekir. Bu bağlantıları başlatmak için kullanılabilecek dört GML işlevi vardır:

mplay_init_ipx () bir IPX bağlantısını başlatır.
mplay_init_tcpip (addr) bir TCP / IP bağlantısını başlatır. addr, web adresini veya IP adresini, ör. 'www.gameplay.com' veya '123.123.123.12', muhtemelen bir port numarası (ör. ': 12'). Sadece bir oturuma katıldığınızda (aşağıya bakınız) bir adres belirtmeniz gerekir. Yerel bir alan ağında adres gerekli değildir.
mplay_init_modem (initstr, phonenr) bir modem bağlantısını başlatır. initstr, modem için başlatma dizesidir (boş olabilir). phonenr, çalınacak telefon numarasını içeren bir dizedir (ör. '0201234567'). Sadece bir seansa katıldığınızda (aşağıya bakınız) bir telefon numarası vermeniz gerekiyor.
mplay_init_serial (portno, baudrate, stopbits, parite, flow) bir seri bağlantıyı başlatır. portno port numarasıdır (1-4). baudrate kullanılacak baud hızıdır (100-256K). stop bitleri stop bitlerinin sayısını gösterir (0 = 1 bit, 1 = 1.5 bit, 2 = 2 bit). parite parite olduğunu gösterir (0 = yok, 1 = tek, 2 = çift, 3 = işaret). Ve akış, akış kontrol tipini gösterir (0 = yok, 1 = xon / xoff, 2 = rts, 3 = dtr, 4 = rts ve dtr). Başarılı olup olmadığını döndürür. Tipik bir çağrı mplay_init_serial (1,57600,0,0,4). Kullanıcının ayarları değiştirmesi için bir iletişim kutusu açmak için ilk argüman olarak 0 verin.

Oyununuz bu işlevlerden birini tam olarak bir kez çağırmalıdır. Tüm işlevler başarılı olup olmadığını bildirir. Belirli protokol makineniz tarafından kurulmadığında veya desteklenmediğinde başarılı olmazlar. Başarılı bir bağlantı olup olmadığını kontrol etmek için aşağıdaki işlevi kullanabilirsiniz.


mplay_connect_status () mevcut bağlantının durumunu döndürür. 0 = bağlantı yok, 1 = IPX bağlantısı, 2 = TCP / IP bağlantısı, 3 = modem bağlantısı ve 4 = seri bağlantı.

Bağlantı çağrısını sonlandırmak için


mplay_end () mevcut bağlantıyı sonlandırır.

Bir TCP / IP bağlantısı kullanırken, oyunu oynamak istediğiniz kişiyle bilgisayarınızın ip adresinin ne olduğunu söylemek isteyebilirsiniz. Aşağıdaki işlev burada size yardımcı olur:


mplay_ipaddress (), makinenizin IP adresini (ör. '123.123.123.12') bir dize olarak döndürür. Ör. Bunu ekranda bir yerde göster. Bu rutinin yavaş olduğunu unutmayın, bu yüzden her zaman arama.



2.Oturum oluşturma ve katılma

Bir ağa bağlandığınızda, aynı ağda birden fazla oyun olabilir. Bu seanslar diyoruz. Bu farklı oturumlar farklı oyunlara veya aynı oyuna karşılık gelebilir. Bir oyun kendini ağda tanımlamalıdır. Neyse ki, Game Maker bunu sizin için yapıyor. Bilmeniz gereken tek şey, oyun kimliğini değiştirdiğinizde bu kimliğin değişmesidir. Bu şekilde, oyununuzun eski sürümleri olan kişilerin yeni sürümlere sahip insanlara karşı oynayacaklarını önleyebilirsiniz.
Yeni bir çok oyunculu oyuna başlamak isterseniz yeni bir oturum oluşturmanız gerekir. Bunun için aşağıdaki rutini kullanabilirsiniz:


mplay_session_create (sesname, playnumb, playername) mevcut bağlantıda yeni bir oturum oluşturur. sesname, oturumun adını belirten bir dizedir. playnumb, bu oyunda izin verilen maksimum oyuncu sayısını gösteren bir sayıdır (rastgele bir sayı için 0'ı kullanın). playname isminiz oyuncu olarak. Başarılı olup olmadığını döndürür.

Oyunun bir örneği oturumu oluşturmalıdır. Oyunun diğer örnekleri / örnekleri bu oturuma katılmalıdır. Bu biraz daha karmaşık. İlk olarak hangi oturumların mevcut olduğuna bakmanız ve ardından katılmayı seçmeniz gerekir. Bunun için üç önemli rutin var:


mplay_session_find () hala oyuncuları kabul eden tüm oturumları arar ve bulunan oturum sayısını döndürür.
mplay_session_name (numb), oturum numarası numb adını döndürür (0, ilk oturumdur). Bu rutin sadece önceki rutini aradıktan sonra çağrılabilir.
mplay_session_join (numb, playername), oturum numarası uyuşmasına katılıyor (0 ilk seanstır). playername, oyuncu olarak adınızdır. Başarılı olup olmadığını döndürür.

Oturum modunu değiştirebilen bir rutin daha var. Bir oturum oluşturmadan önce çağrılmalıdır:


mplay_session_mode (move), ana bilgisayar bittiğinde oturum ana bilgisayarını başka bir bilgisayara taşımanın ya da kaldırılmamasını ayarlar. hareket doğru ya da yanlış (varsayılan) olmalıdır.

Mevcut oturumun durumunu kontrol etmek için aşağıdaki işlevi kullanabilirsiniz.


mplay_session_status () mevcut oturumun durumunu döndürür. 0 = oturum yok, 1 = oluşturulan oturum, 2 = birleştirilmiş oturum.

Bir oyuncu aşağıdaki rutini kullanarak bir oturumu durdurabilir:


mplay_session_end () bu oyuncu için oturumu sonlandırır.


3.Oyuncular


Bir oturuma katılan oyunun her bir örneği bir oyuncudur. Yukarıda belirtildiği gibi, oyuncuların adları vardır. Oyuncularla uğraşan üç rutin var.

mplay_player_find () mevcut oturumdaki tüm oyuncuları arar ve bulunan oyuncu sayısını döndürür.
mplay_player_name (numb), çalma numarası numb'inin ismini döndürür (0, her zaman kendinizinki olan ilk oyuncudur). Bu rutin sadece önceki rutini aradıktan sonra çağrılabilir.
mplay_player_id (numb), oyuncu numarası uyuşmasının benzersiz kimliğini döndürür (0, her zaman kendinizinki olan ilk oyuncudur). Bu rutin sadece ilk rutini aradıktan sonra çağrılabilir. Bu kimlik, bireysel oyunculara mesaj gönderip almada kullanılır.



4.Paylaşılan veriler



Paylaşılan veri iletişimi, muhtemelen oyunu senkronize etmenin en kolay yoludur. Tüm iletişim sizden korunmaktadır. Oyunun tüm varlıkları için ortak olan 1000000 değeri vardır (tercihen hafızayı kaydetmek için ilk birkaçını kullanın). Her varlık değerleri ve okuma değerlerini ayarlayabilir. Oyun Maker, her varlığın aynı değerleri görmesini sağlar. Bir değer ya gerçek ya da bir dize olabilir. Sadece iki rutin var:

mplay_data_write (ind, val) değer indisini (string veya real) konum indisine (0 ve 1000000 arasında ind) yazın.
mplay_data_read (ind), konum indindeki değeri döndürür (0 ve 1000000 arası). Başlangıçta tüm değerler 0'dır.

Verileri farklı makineler üzerinde senkronize etmek için, değişikliğin diğer makineye (ancak yavaş olan) veya garanti edilmediğine emin olan garantili bir mod kullanabilirsiniz. Bunu değiştirmek için aşağıdaki rutini kullanın:


mplay_data_mode (guar), paylaşılan veriler için garantili iletimin kullanılıp kullanılmayacağını belirler. guar ya true (varsayılan) ya da false olmalıdır.



5.Mesajlar


Game Maker'ın desteklediği ikinci iletişim mekanizması, mesajların gönderilmesi ve alınmasıdır. Bir oyuncu, bir veya tüm diğer oyunculara mesaj gönderebilir. Oyuncular mesajların gelip gelmediğini görebilir ve buna göre harekete geçebilirler. Mesajlar, geldiklerinden emin olduğunuz (ancak bu yavaş olabilir) veya garanti edilmeyen bir modda daha hızlı olan garantili bir modda gönderilebilir.
Aşağıdaki mesajlaşma rutinleri vardır:


mplay_message_send (player, id, val) belirtilen oyuncuya bir mesaj gönderir (bir tanımlayıcı veya bir isim; mesajı tüm oyunculara göndermek için 0'ı kullanın). kimlik bir tamsayı mesaj tanımlayıcısıdır ve val değeri (gerçek ya da bir dize) değeridir. Mesaj garanti edilmeyen modda gönderilir. Val bir dize içeriyorsa izin verilen maksimum dize uzunluğu 30000 karakterdir.
mplay_message_send_guaranteed (player, id, val) belirtilen oyuncuya bir mesaj gönderir (bir tanımlayıcı veya bir isim; mesajı tüm oyunculara göndermek için 0'ı kullanın). kimlik bir tamsayı mesaj tanımlayıcısıdır ve val değeri (gerçek ya da bir dize) değeridir. Bu garantili bir gönderim. Val bir dize içeriyorsa izin verilen maksimum dize uzunluğu 30000 karakterdir.
mplay_message_receive (player), belirtilen oyuncudan (bir tanımlayıcı veya bir isim) gelen mesaj sırasından bir sonraki mesajı alır. Herhangi bir oyuncudan gelen mesajlar için 0'ı kullanın. Rutin, gerçekten yeni bir mesaj olup olmadığını döndürür. Eğer varsa, içeriğini almak için aşağıdaki rutinleri kullanabilirsiniz:
mplay_message_id () Son alınan mesajın tanımlayıcısını döndürür.
mplay_message_value () Son alınan mesajın değerini döndürür.
mplay_message_player () Son alınan mesajı gönderen oynatıcıyı döndürür.
mplay_message_name () Son alınan mesajı gönderen oyuncunun adını döndürür.
mplay_message_count (player) Kuyrukta kalan mesaj sayısını müzikçalardan döndürür (tüm mesajı saymak için 0'ı kullanın).
mplay_message_clear (player) Kuyrukta kalan tüm mesajları oynatıcıdan kaldırır (tüm mesajı silmek için 0 tuşunu kullanın).

Burada birkaç söz var. Her şeyden önce, sadece belirli bir oyuncuya mesaj göndermek istiyorsanız, oyuncunun benzersiz kimliğini bilmeniz gerekir. Daha önce belirtildiği gibi bunu mplay_player_id () işleviyle elde edebilirsiniz. Bu oynatıcı tanımlayıcısı, belirli bir oynatıcıdan mesaj alırken de kullanılır. Alternatif olarak, oyuncunun adını bir dize olarak verebilirsiniz. Birden fazla oyuncu aynı ada sahipse, sadece ilk mesaj alır.

İkincisi, her mesajın neden tamsayı tanımlayıcısı olduğunu merak edebilirsiniz. Bunun nedeni, uygulamanızın farklı mesaj türleri göndermesine yardımcı olmasıdır. Alıcı, kimliği kullanarak mesajın tipini kontrol edebilir ve uygun işlemleri yapabilir. (Mesajların ulaşması garanti edilmez, farklı mesajlarda kimlik ve değer gönderilmesi ciddi sorunlara neden olabilir.)




No comments:

Post a Comment