Throttle ve Debounce

Eklenti, Not more than once in <X> seconds ve On a deferred event adlı iki özel koşula erişim sağlar.

Eğer JavaScript kullanmayı tercih ederseniz, aşağıdaki makalelere göz atabilirsiniz: Arama forması örneğinde Debounce ve Sayfa kaydırma örneğinde Throttle.

Throttle

Bazen oyunun bir kısmı performansı ciddi şekilde etkileyebilir. Örneğin, fizik veya yapay zeka işleme.

Bu tür hesaplamaların karmaşıklığı nedeniyle bunları çok sık kullanmaktan kaçınmak daha iyidir. Bu gibi durumlarda, kodu belirli aralıklarla çalıştırmak için genellikle Every <X> seconds kullanılır, ancak bu her zaman mümkün değildir.

Örneğin, ekrana dokunulduğunda çalışan karmaşık bir oyun mekaniğimiz var. Kodun çalışma sıklığını sınırlamanız gerektiğinde ancak zamanlayıcı kullanamadığınız durumlarda, özel Not more than once in <X> seconds koşulunu kullanabilirsiniz.

Önemli

Not more than once in <X> seconds her tick'te kullanılması önerilmez; bu herhangi bir sonuç doğurmaz, ancak bunun yerine Every <X> seconds kullanmak daha iyidir.

Construct 3 ekran görüntüsü: YandexGamesSDK eklentisi kullanılarak liderlik tablosu yapılandırma ekranı. Üç sütunlu (üçüncü sütundaki her hücrede "+ Eylem ekle" ve "+ Ekle..." düğmeleri bulunur) ve üç satırlı bir tablo. 1. satır — "Düğme", "Tıklandığında", "Yan... | setScore olayını 1 saniye ertele". 2. satır — "YandexGames…", ""setScore" ertelenmiş olayına", boş hücre. 3. satır — "Sistem" ayarları simgesi, "authorized doğru", "Yan... | "" verileriyle "score" liderlik tablosuna 10 skorunu gönder".

Debounce

Yandex Oyun SDK'sının bazı yöntemlerinin belirli bir süre içindeki istek sayısına ilişkin sınırlamaları vardır. Bu sınırlamaları göz ardı ederseniz, oyununuz moderasyondan geçemeyebilir.

Örneğin, lider tablosundaki puanı çok sık güncelliyorsanız, On a deferred event özel koşulunu Delay execution tetikleyici koşuluyla birlikte kullanmalısınız. Bu kombinasyon, yerel Signal → On signal kombinasyonuyla aynı şekilde çalışır, ancak çağrıyı son yürütme denemesinden itibaren belirli bir süre erteler.

Ancak, bunu önceki Not more than once in <X> seconds koşuluyla karıştırabilirsiniz, çünkü biz de çok sık çağrılmaması gereken kodu gizlemek için onu kullanmıştık.

Temel farkları, Not more than once in <X> seconds çağrı sıklığını sınırlarken, On a deferred event fonksiyon çağrısını belirli bir süre ertelemesidir. Bu tam da ihtiyacımız olan şey, çünkü fonksiyonu çok sık çalıştırmamız gerekmiyor, sadece sınırı aşmamamız gerekiyor.

Not more than once in <X> seconds ve On a deferred event arasındaki farkın görselleştirilmesi:


Depo