Zamanı nasıl ölçeceğinizi ve oyununuzun çeşitli yönlerini kontrol etmek için nasıl kullanacağınızı öğrenin.

Oyun geliştirmede, zamana dayalı etkinlikler eklemek, oyun mekaniğini büyük ölçüde geliştirebilir ve oyunları oyuncular için daha ilgi çekici hale getirebilir. Süreölçerleri dahil ederek meydan okumalar sunabilir, süresi sınırlı hedefler oluşturabilir veya belirli oyun öğelerine bir aciliyet duygusu katabilirsiniz.

Basit Bir Oyun Yaratın

Temel bilgileri anlamak için basit bir oyun oluşturarak başlayın. Oyuncunun sola ve sağa hareket edebildiği bir oyun oluşturun ve tek bir platform olacak. adlı yeni bir dosya oluşturun. basit oyun.py ve oyunu oluşturmak için gerekli işlevleri sağlayan çarşı modülünü içe aktarın.

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

Ardından, Oyun Penceresi sınıfının bir alt sınıfı olan oyun makinesi. pencere. GameWindow sınıfının içinde, __içinde__ pencereyi belirtilen genişlik, yükseklik ve başlık ile başlatan yöntem.

bu on_key_press yöntem sol veya sağ ok tuşuna basıldığını algılar. Sola basmak azalır oyuncu_x sağa basıldığında 10 birim artar, 10 birim artar. Bu oyuncunun hareket etmesine izin verir oyun penceresi içinde yatay olarak.

Oyunu çalıştırmak için ana işlevi tanımlayın, GameWindow'un bir örneğini oluşturun, oyun penceresini ayarlamak için kurulum yöntemini çağırın ve son olarak, kullanarak oyun döngüsünü başlatın. çarşı.run().

Zamanlayıcı Sınıf Yapısını Tasarlama

Zamanlayıcıları oyununuza uygulamak için gerekli özniteliklere ve yöntemlere sahip bir Zamanlayıcı sınıfı oluşturabilirsiniz. Bu sınıf, zamanlayıcıyı başlatmak, durdurmak, geçen süreyi almak ve zamanlayıcının süresinin dolup dolmadığını kontrol etmek için işlevler sağlayacaktır. İşte Timer sınıfı için temel yapı:

içe aktarmak zaman

sınıfZamanlayıcı:
kesinlikle__içinde__(öz, süre):
self.duration = süre
self.start_time = 0
self.is_running = YANLIŞ

kesinliklebaşlangıç(kendi):
self.start_time = zaman.zaman()
self.is_running = Doğru

kesinlikledurmak(kendi):
self.is_running = YANLIŞ

kesinlikleget_elapsed_time(kendi):
eğer self.is_running:
geri dönmek time.time() - self.start_time
geri dönmek0

kesinliklesüresi doldu(kendi):
geri dönmek self.get_elapsed_time() >= self.duration

Timer sınıfı bir süre Başlatma sırasında saniye cinsinden parametre. Sınıf, aşağıdaki gibi öznitelikleri içerir: Başlangıç ​​saati zamanlayıcının başladığı zamanı saklamak için ve çalışıyor zamanlayıcının durumunu izlemek için.

bu başlangıç() yöntemi, start_time'ı şu anki zamana ayarlar. zaman zaman() ve is_running öğesini şu şekilde ayarlar: Doğru. bu durmak() yöntem basitçe is_running öğesini şu şekilde ayarlar: YANLIŞ. bu get_elapsed_time() method, start_time'ı şimdiki zamandan çıkararak geçen zamanı hesaplar.

Zamanlayıcı çalışıyorsa geçen süreyi döndürür; aksi takdirde, 0 döndürür. bu süresi doldu() yöntem, geçen sürenin süreden büyük veya eşit olup olmadığını kontrol ederek zamanlayıcının süresinin dolduğunu gösterir.

Geri Sayım Sayaçlarını Uygulama

Oyununuzda bir geri sayımı göstermek için, oyuncu boşluk çubuğu gibi belirli bir tuşa bastığında zamanlayıcıyı başlatabilirsiniz. Python'un print komutunu kullanarak geri sayımı konsola yazdırın. adlı yeni bir dosya oluşturun. timer.py ve kodu şu güncellemelerle ekleyin:

içe aktarmak zaman

sınıfOyun Penceresi(oyun makinesi. pencere):
kesinlikle__içinde__(kendi):
super().__init__(GENİŞLİK, YÜKSEKLİK, "Basit Oyun")
self.player_x = GENİŞLİK // 2
self.player_y = BOY // 2
self.timer = Zamanlayıcı(10)

kesinlikleon_key_press(self, key, değiştiriciler):
eğer anahtar == çarşı.key. UZAY:
self.timer.start()

kesinlikleon_draw(kendi):
# Mevcut kod
eğer self.timer.is_running:
geçen_zaman = self.timer.get_elapsed_time()
r_time = self.timer.duration - geçen_zaman
kalan_zaman = maks (r_zaman, 0)
Yazdır(Geri sayım: {kalan süre:.1F} saniye")

Terminal penceresini ve oyun penceresini aynı anda görebildiğinizden emin olun. Ardından boşluk tuşuna basın ve zamanlayıcı geri sayımını göreceksiniz:

Zamanlayıcı Olaylarını Yönetme ve Eylemleri Tetikleme

Ayrıca, bir işlevi tetikleyebilirsiniz. bir dikdörtgen çizer geri sayım sayacı sona erdiğinde. adlı yeni bir dosya oluşturun. handle-event.py ve aşağıdaki güncellemelerle kodu ekleyin:

kesinlikleon_draw(kendi):
# Mevcut kod
eğer self.timer.is_expired():
self.draw_rectangle()

kesinlikleçiz_dikdörtgen(kendi):
arcade.draw_rectangle_filled (GENİŞLİK // 2, YÜKSEKLİK // 2, 100, 100, kırmızı)

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

Zamanlayıcıyı Duraklatma, Sıfırlama ve Devam Ettirme

Zamanlayıcıyı duraklatma, sıfırlama ve devam ettirme işlevi eklemek için süreyi uzatabilirsiniz. Zamanlayıcı uygun yöntemlerle sınıflandırır. İşte bir örnek:

sınıfZamanlayıcı:
# Mevcut kod

kesinlikleDuraklat(kendi):
self.duration -= self.get_elapsed_time()
self.is_running = YANLIŞ

kesinlikleSıfırla(kendi):
self.start_time = 0
self.is_running = YANLIŞ

kesinliklesürdürmek(kendi):
self.start_time = zaman.zaman()
self.is_running = Doğru

Zamanlayıcıya Görsel Geri Bildirim Ekleme

Zamanlayıcıya görsel geri bildirim sağlamak için oyun ekranına metin veya grafik öğeleri dahil edebilirsiniz. adlı yeni bir dosya oluşturun. görsel.py ve aşağıdaki güncellemelerle kodu ekleyin:

kesinlikleon_draw(kendi):
# Mevcut kod
eğer self.timer.is_running:
metin = Geri sayım: {kalan süre:.1F} saniye"
arcade.draw_text (metin, 10, 10, siyah, 18)

Artık zamanlayıcıyı konsol yerine doğrudan oyun penceresinde göreceksiniz:

Ek Özellikler Dahil

Zamana dayalı etkinlikleri daha da geliştirmek için oyunlarınıza aşağıdaki ek özellikleri uygulamayı düşünebilirsiniz.

Zamana Dayalı Güçlendirmeler veya Bonuslar

Oyun boyunca periyodik olarak görünen güçlendirmeleri veya bonusları tanıtın. Bu güçlendirmeler, geçici yetenekler, ekstra puanlar, artırılmış hız veya geliştirilmiş silahlar sağlayabilir.

Oyuncuların onları zaman sınırlı hale getirerek, avantaj elde etmek için belirli bir zaman çerçevesi içinde stratejik olarak toplamaları gerekir. Bu, heyecan katar ve hızlı düşünmeyi ödüllendirir.

Zaman Sınırlı Zorluklar

Oyuncuların bir görevi belirli bir zaman dilimi içinde tamamlaması gereken, zaman sınırlı zorluklar oluşturun. Örneğin, belirli bir süre içinde çözülmesi gereken bir yapboz veya platform oluşturma bölümü.

Bu, oyuncuları hızlı düşünmeye ve harekete geçmeye zorlayarak oyuna heyecan verici bir aciliyet duygusu katar. Bu zorlukların başarıyla tamamlanması, ödüllerin kilidini açabilir veya hikayeyi ilerletebilir.

Zamanlanmış Engeller veya Düşmanlar

Oyuncu için tehdit oluşturan zamanlanmış engelleri veya düşmanları uygulayın. Örneğin, belirli aralıklarla belirip kaybolan hareketli platformlar veya sınırlı bir süre için yenilmez hale gelen düşmanlar.

Oyuncular, bu engelleri aşmak veya süre dolmadan önce düşmanları yenmek için eylemlerini ve hareketlerini doğru bir şekilde zamanlamalıdır. Bu, oyuna bir strateji ve koordinasyon katmanı ekler.

Zamana Dayalı Olaylar İçin En İyi Uygulamalar

Oyunlarınızda zamana dayalı etkinlikleri uygularken, bu en iyi uygulamaları takip etmeniz çok önemlidir.

Test ve Denge

Adil ve dengeli olduklarından emin olmak için zamana dayalı etkinliklerinizi kapsamlı bir şekilde test edin. Keyifli oyun deneyimleri yaratmak için süreyi, zorluğu ve ödülleri hassas şekilde ayarlayın.

Kullanıcı geribildirimi

Oyunculara zamanlayıcının durumu ve zamana dayalı olaylar hakkında net ve sezgisel geri bildirim sağlayın. Ses efektleri ekleme, görsel göstergeler veya metinsel ipuçları, oyuncuların zaman kısıtlamalarını ve eylemlerinin sonuçlarını anlamalarına yardımcı olabilir.

Tutarlı Zaman Ölçümü

Oyununuz boyunca tutarlı bir zaman ölçüm sistemi kullanın. Örneğin, tüm zamanlayıcılar ve zamanla ilgili hesaplamalar için birim olarak saniye kullanın. Bu, hem oyuncular hem de geliştiriciler için tutarlılık ve kolay anlaşılırlık sağlar.

Kenar Kılıfları Kolu

Oyunun duraklatılabileceği, simge durumuna küçültülebileceği veya arka planda çalışabileceği senaryoları göz önünde bulundurun. Doğru zamanlamayı korumak ve oyun devam ederken istenmeyen davranışları önlemek için bu durumları incelikle ele alın.

Bu en iyi uygulamaları takip ederek oynanışı geliştiren, oyunculara meydan okuyan ve dengeli ve keyifli bir deneyim sağlayan zamana dayalı etkinlikler oluşturabilirsiniz.

Zamana Dayalı Etkinliklerle Oyunları Daha Eğlenceli Hale Getirme

Zamana dayalı etkinlikleri oyunlarınıza dahil ederek oyuncular için dinamik ve ilgi çekici bir deneyim yaratabilirsiniz. Zamanla sınırlı meydan okumalar heyecan ve aciliyet katarken, zamanlanmış güçlendirmeler veya engeller stratejik karar alma fırsatları yaratabilir.

Oyununuz için doğru dengeyi bulmak üzere farklı zamana dayalı mekaniklerle deneyler yapın ve eğlenceyi ve keyfi en üst düzeye çıkarmak için oynamayı ve yinelemeyi unutmayın.