THE ORB
Studio başlatılıyor

hitch warning (kare süresi sıçraması)

Bir şey sunucuyu bir anlığına dondurdu. Oyuncular bunu takılma olarak hisseder. Bu bir belirtidir, bir arıza değil.

groupsTakılmalar ve gecikme sıçramalarıcodeGeliştirici gerektirir

Önce şunu yap

Başlangıçta birkaç tane olması normaldir. Oyun sırasında sürekli olması, bir script'e bakılması gerektiği anlamına gelir.

bug_reportBunun yerine tüm konsolunu yapıştır

Ne anlama gelir

Bir şey ana thread'i o kadar süre engelledi. Bu bir hata DEĞİLDİR: hiçbir şey başarısız olmadı ve hiçbir şey çökmedi. Çalışma zamanının, bir karenin olması gerekenden çok daha uzun sürdüğünü bildirmesidir, ki oyuncular bunu bir donma olarak hisseder.

Onu, üzerinde bir sayı olan bir belirti olarak gör. Yaklaşık 100ms'nin altı genelde başlangıç gürültüsüdür; normal oyun sırasında 200ms'yi aşan sürekli takılmalar gerçek bir sorundur.

Neden olur

Ne sıklıkla doğru cevap olduğuna göre sıralı.

  1. 1

    Sunucuda eşzamanlı bir veritabanı sorgusu

    Tick'in tamamı MySQL'i bekler. Eksik bir indeks bunu görünmezden birkaç yüz milisaniyeye çıkarır.

  2. 2

    Kaynak başlangıcında ağır iş

    Büyük bir JSON config'i ayrıştırmak, büyük bir tablo kurmak, yüzlerce prop yüklemek. Yalnızca başlangıçtaki takılmalar genelde zararsızdır.

  3. 3

    Wait'siz sıkı bir döngü

    Yield'siz while true do ... end, bitene kadar zamanlayıcıyı engeller.

  4. 4

    Aynı anda çok sayıda varlığı stream etmek

    Aynı karede çok sayıda model ya da animasyon sözlüğü istemek.

  5. 5

    Yavaş bir olay işleyicisi

    Dolu bir sunucuda, oyuncu başına tetiklenen ve gerçek iş yapan bir olay.

Hangisinin seninki olduğu nasıl anlaşılır

İstemci konsolunda:

resmon 1

kaynak başına CPU'yu gösterir. Sunucuda txAdmin ve yerleşik profilleyici kaynağı işaret eder. Takılmanın zamanlamasını o sırada olanla eşleştir: katılım dalgası, kaynak yeniden başlatması, ya da belirli bir oyuncu işlemi.

Nereye bakmalı

resmon'un işaret ettiği kaynak, sonra onun thread'leri ve veritabanı çağrıları.

Nasıl düzeltilir

Uzun döngülerin içinde yield et, sorguları asenkron yap, ve süzdüğün şeyi indeksle:

-- engelleyen
local rows = MySQL.query.await('SELECT * FROM users')

-- engellemeyen
MySQL.query('SELECT * FROM users WHERE identifier = ?', { id }, function(rows)
    -- ...
end)

-- her zaman yield et
CreateThread(function()
    while true do
        Wait(500)      -- bunu asla atlama
    end
end)

Hâlâ kendi kodunda mı takıldın?

Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.

bug_reportServer Fixer'ı aç

Bu tür bir hata için Script Optimizer sana kare kaybettiren şeyi bulur ve yeniden yazar.

Bununla birlikte gelen hatalar