Gerçekçi karakterler, tipik olarak birbirleriyle konuşarak etkileşime girer. Diyaloğunuzu erişilebilir ve tamamlayıcı bir şekilde sunduğunuzdan emin olun.

Oyununuz karakterler içeriyorsa, muhtemelen birbirleriyle sohbet etmelerini isteyeceksiniz. Bir diyalog sistemi etkileşimli konuşmalar, hikaye ilerlemesi ve karakter gelişimi sağlar. Python Arcade kitaplığı, bir diyalog sistemini mevcut kod tabanınıza entegre etmeyi kolaylaştırır.

Bir diyalog sistemi ile oyuncu ve oyuncu olmayan karakterler (NPC'ler) arasında konuşmalar oluşturabilirsiniz. Oyuncu, oyunun anlatımını veya sonucunu etkileyen yanıtları seçebilir veya kararlar alabilir.

Bu sistem, daha sürükleyici bir oyun deneyimi sunarak ilgi çekici hikayeler oluşturmanıza ve dinamik etkileşimler oluşturmanıza olanak tanır.

Basit Bir Oyun Yaratın

Başlamak için, Arcade kitaplığını kullanarak basit bir oyun oluşturun. Bu, diyalog sisteminin uygulanması için temel teşkil edecektir.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

instagram viewer

adlı yeni bir dosya oluşturun. basit oyun.py ve bir tanımla oyun miras aldığı sınıf oyun makinesi. pencere. Ekran boyutlarını ayarlayın, oynatıcı ve platform konumlarını başlatın ve temel çizim işlevini uygulayın. bu oyuncu sola ve sağa hareket edebilir ok tuşlarını kullanarak.

İşte çıktı:

Diyalog Kutusu Ekleme

Artık temel bir oyun yapısına sahip olduğunuza göre, oyuncu bir düşmanla çarpıştığında beliren bir diyalog kutusu ekleyin. Basit şekiller kullanarak diyalog kutusu oluşturabilir ve bunu ekranda görüntüleyebilirsiniz.

Ekle diyalog_aktif bayrak oyun diyalog kutusunun gösterilip gösterilmeyeceğini belirten sınıf. İçinde on_update yöntem, düşman çarpışmasını kontrol etve algılanırsa, ayarlayın diyalog_aktif ile Doğru.

İçinde on_draw yöntemini çağırın beraberlik_diyalog_kutusu Diyalog etkinse yöntem. bu beraberlik_diyalog_kutusu yöntem, diyalog kutusunun arka planı olarak bir dikdörtgen çizer ve bir metin mesajı görüntüler.

adlı yeni bir dosya oluşturun. dialog-box.py ve aşağıdaki güncellemelerle kodu ekleyin:

# Oyun sınıfının içinde

sınıfoyun(oyun makinesi. pencere):
kesin__içinde__(kendi):
# ...

self.dialogue_active = YANLIŞ

kesinon_update(öz, delta_time):
eğer self.check_enemy_collision():
self.dialogue_active = Doğru

kesinon_draw(kendi):
# ...

eğer self.dialogue_active:
self.draw_dialogue_box()

kesincheck_enemy_collision(kendi):
player_radius = 25
mesafe_x = abs (self.player_x - self.platform_x)
mesafe_y = abs (self.player_y - self.platform_y)
birleştirilmiş_yarıçap = oynatıcı_yarıçap + 25

eğer mesafe_x < birleşik_yarıçap Ve mesafe_y < birleşik_yarıçap:
geri dönmekDoğru
başka:
geri dönmekYANLIŞ

kesinberaberlik_diyalog_kutusu(kendi):
metin = "Merhaba oyuncu! Nasılsın?"

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, beyaz)

arcade.draw_text (metin, SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2 + 20, siyah, font_size=16,
çapa_x="merkez", çapa_y="merkez")

Çıktı aşağıdadır:

Diyalog Metnini Görüntüleme

Artık dinamik metin mesajları görüntüleyerek diyalog sisteminizi geliştirebilirsiniz. Diyalog dizelerinin bir listesini oluşturun ve bir konuşmayı simüle etmek için bunları yineleyin. Diyalog kutusu her göründüğünde, yeni bir mesaj gösterecektir.

# Oyun sınıfının içinde

sınıfoyun(oyun makinesi. pencere):
kesin__içinde__(kendi):
# ...

self.dialogue_active = YANLIŞ
self.dialogue_messages = [
"Merhaba oyuncu! Nasılsın?",
"Bugün hava güzel değil mi?",
"İleride pusuya yatan düşmanlara dikkat!"
]
self.dialogue_index = 0

kesinberaberlik_diyalog_kutusu(kendi):

arcade.draw_rectangle_filled (SCREEN_WIDTH // 2,
SCREEN_HEIGHT // 2, 500, 200, beyaz)

arcade.draw_text (self.dialogue_messages[self.dialogue_index]),
EKRAN GENİŞLİĞİ // 2EKRAN_YÜKSEKLİK // 2 + 20, siyah, font_size=16,
çapa_x="merkez", çapa_y="merkez")

Üç yeni değişken tanıtın: dialog_messages, dialog_index, Ve diyalog_aktif. dialog_messages listesi, diyalog kutusunun göstereceği metin mesajlarını içerir. dialog_index, gösterilecek mevcut mesajı takip eder. Diyalog kutusu her göründüğünde, bir sonraki mesajı göstermek için dialog_index'i artırabilirsiniz.

Düğme Ekleme

Diyalog sistemini daha etkileşimli hale getirmek için, oyuncu tarafından basıldığında diyalog metnini değiştirmek için bir düğme ekleyin. adlı yeni bir dosya oluşturun. multi-text.py ve aşağıdaki güncellemelerle kodu ekleyin:

# Oyun sınıfının içinde

sınıfoyun(oyun makinesi. pencere):
kesin__içinde__(kendi):
# ...

self.dialogue_active = YANLIŞ

self.dialogue_messages = [
"Merhaba oyuncu! Nasılsın?",
"Bugün hava güzel değil mi?",
"İleride pusuya yatan düşmanlara dikkat!"
]

self.dialogue_index = 0

kesinon_mouse_press(self, x, y, button, değiştiriciler):
indeks = (self.dialogue_index + 1) % len (self.dialogue_messages)

eğer self.dialogue_active:
eğer düğme == çarşı. MOUSE_BUTTON_LEFT:
self.dialogue_index = dizin

kesinberaberlik_diyalog_kutusu(kendi):
# ...

çarşı.draw_text("Sonraki", EKRAN GENİŞLİĞİ // 2EKRAN_YÜKSEKLİK // 2 - 50,
siyah, font_size=16, çapa_x="merkez", çapa_y="merkez")

Ekle on_mouse_press yöntemi oyun sınıf. Diyalog aktifken farenin sol tuşuna bastığınızda bu metot dialog_index sonraki mesajı görüntülemek için dialog_messages liste. bu % len (self.dialogue_messages) dizinin sonuna ulaşıldığında listenin başına kadar sarmasını sağlar.

Ek Özellikler Dahil

Diyalog sistemini daha da geliştirmek için aşağıdaki ek özellikleri eklemeyi düşünebilirsiniz:

Çoklu seçimler

Tek bir mesaj yerine, oyuncunun seçebileceği birden fazla seçenek sunabilirsiniz. Bu, oyuncunun konuşmanın sonucunu etkilemesine veya oyunun ilerlemesini etkileyen kararlar almasına olanak tanır.

Bunu uygulamak için, beraberlik_diyalog_kutusu bir seçim listesi görüntüleme ve oyuncunun seçimini buna göre işleme yöntemi.

Karakter Portreleri

Diyalog sisteminize görsel bir hava katmak için metnin yanına karakter portreleri ekleyebilirsiniz. Her karakter, konuşma sırasında onları temsil eden karşılık gelen bir resme veya karaktere sahip olabilir. Karakter portrelerinin gösterilmesi, oyuncuların konuşmacıyı tanımasına ve hikaye anlatımı deneyimine derinlik katmasına yardımcı olabilir.

Metin Animasyonu

Görsel olarak daha çekici hale getirmek için metni canlandırabilirsiniz. Örneğin, yazmayı simüle etmek için metnin her seferinde bir karakter olmak üzere kademeli olarak görünmesini sağlayabilirsiniz. Bu, bir beklenti duygusu yaratır ve diyaloğu oyuncu için daha ilgi çekici hale getirebilir.

Ses efektleri

Ses efektleri ekleme Diyalog sisteminize eklemek, oyunun genel atmosferini geliştirebilir. Örneğin, diyalog kutusu göründüğünde veya oynatıcı bir diyalog seçeneği seçtiğinde ses efektleri çalabilirsiniz. Bu sesli ipuçları, sohbeti daha sürükleyici ve etkili hale getirebilir.

Diyalog Sistemi İçin En İyi Uygulamalar

Bir diyalog sistemi uygularken, aşağıdaki en iyi uygulamaları aklınızda bulundurun:

Kullanıcı Arayüzünü Temizle

Diyalog kutusunun ve metnin okunabilir olduğundan ve ekranda doğru şekilde konumlandırıldığından emin olun. Metnin okunmasını kolaylaştırmak için uygun yazı tiplerini, renkleri ve boyutları kullanın.

Tutarlı Karakter Sesi

Karakterlerin konuşma biçiminde ve diyalog boyunca kullandıkları tonda tutarlılığı koruyun. Bu, inandırıcı ve ilgi çekici konuşmalar oluşturmaya yardımcı olur.

Oynanışla İlgi

Diyaloğun oyunun anlatımına anlamlı bir şekilde katkıda bulunduğundan veya oyuncuya ilgili bilgiler sağladığından emin olun. Oyunun akışını bozabilecek aşırı veya alakasız konuşmalardan kaçının.

Test Etme ve Yineleme

Sorunları veya tutarsızlıkları belirlemek için diyalog sisteminizi kapsamlı bir şekilde test edin. Konuşmaların genel kalitesini ve etkisini iyileştirmek için oyuncu geri bildirimlerine dayalı olarak diyaloğunuzu yineleyin.

Diyalog Sistemi ile Oyunları Daha Eğlenceli Hale Getirin

Python'daki Arcade kitaplığını kullanarak oyunlarınıza bir diyalog sistemi eklemek, oyuncunun deneyimini büyük ölçüde geliştirebilir. Etkileşimli sohbetler, hikaye anlatımı ve karakter gelişimi sağlayarak oyunlarınızı daha sürükleyici, ilgi çekici ve oynaması eğlenceli hale getirir.