한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Buku Putih Lag Game › L1 Proses game di klien

Pemuatan sinkron dan kompilasi shader di main thread Synchronous asset load, shader compile

ID penyebab cg-sync-load · Penanggung jawab utama Pengembangan klien (Tim Pengembang Game)

Buka kartu interaktif dengan gambar dan simulasi →

Game berhenti karena harus membaca file dan membuat shader tepat sebelum menggambar area, monster, atau efek yang baru pertama kali muncul.

Mengapa Masuk area baru, skill, equipment, atau monster yang baru pertama kali muncul → Akibatnya Main thread menunggu pembacaan file dan kompilasi shader → Di layar Berhenti 0,1–1 detik hanya pada kali pertama, setelah itu normal

Gejala
Freeze, Patah-patah
Faktor
Stall
Siapa yang mengalami
Hanya saya
Kapan
Saat bergerak atau pindah area, Saat melakukan aksi tertentu
Penanggung jawab
Penanggung jawab utama Pengembangan klien (Tim Pengembang Game)
Tugas Tim Pengembang Game
Gunakan loading asinkron, muat lebih awal (prewarming), kompilasi shader lebih awal di layar loading atau saat game pertama kali dijalankan, manfaatkan layar loading.
Kisaran angka
Kompilasi satu shader memakan puluhan ms, kalau lama bisa 100 ms atau lebih. Loading tekstur memakan puluhan hingga ratusan ms, tergantung kecepatan storage.
Di grafik
Melonjak tepat setelah server dibuka · Jumlah lonjakan frame (tepat setelah patch atau update driver)
Yang diperiksa
Rekam rute yang sama dua kali dengan PresentMon, lalu bandingkan kunjungan pertama dan kedua. Di development build Unreal, aktifkan r.PSOPrecache.Validation lalu periksa stat PSOPrecache dan “PSO PRECACHING MISS” di log; di Unity, periksa bagian loading dan shader pada frame yang melonjak di Timeline profiler
Cocok jika
Lonjakan 0,1–1 detik hanya terjadi di tempat yang pertama didatangi atau skill yang pertama dipakai, lalu hilang pada kali kedua. Laporan menumpuk tepat setelah patch atau update driver grafis, lalu berkurang
Tidak cocok jika
Selalu melonjak di tempat yang sama: masalahnya ada di luar cache shader. Berulang setiap kali bergerak, hanya di PC dengan storage lambat: lebih mungkin “Streaming aset tertinggal akibat storage lambat”. Memori GPU khusus penuh: lebih mungkin “Kekurangan memori grafis (VRAM)”
Sarana pemeriksaan
Log dan metrik server atau klien game
Pelajari lebih lanjut
Di PC, shader yang sudah dibuat sekali disimpan oleh driver grafis di cache shader lalu dipakai ulang. Karena itu, tepat setelah driver grafis diperbarui atau patch game dirilis, cache ini menjadi tidak berlaku, sehingga pemain yang tadinya lancar pun kembali mengalami patah-patah untuk sementara. Laporan yang khas berbunyi “setelah patch, tersendat setiap kali masuk tempat yang baru pertama didatangi”.

Sumber

  1. Shader loading Unity
    Saat varian shader dipakai pertama kali, driver grafis harus membuatnya untuk GPU sehingga bisa terjadi jeda yang terasa; yang sudah dibuat disimpan di cache sehingga tidak berhenti lagi
  2. Optimizing Rendering With PSO Caches in Unreal Engine Epic Games
    Membuat pipeline state (PSO) tepat saat dibutuhkan bisa memakan 100 ms atau lebih, jadi PSO harus dibuat lebih awal
  3. Direct3D 12 Return Codes Microsoft
    D3D12_ERROR_DRIVER_VERSION_MISMATCH: cache PSO yang dibuat dengan versi driver lain tidak bisa dipakai ulang (dikompilasi ulang setelah update driver)
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    Merekam waktu per frame dengan FrameTime (waktu CPU di antara frame)
  5. PSO Precaching for Unreal Engine Epic Games
    Jika r.PSOPrecache.Validation diaktifkan, statistik PSO yang terlewat terlihat di stat PSOPrecache dan “PSO PRECACHING MISS” dicatat di log; pembuatan PSO saat runtime yang melewati 20 ms (default) dihitung sebagai hitch

Lihat juga

Lapisan yang sama: L1 Proses game di klien

Penyebab di lapisan lain dengan gejala yang sama (Freeze)

Lihat kartu interaktif dengan gambar dan simulasi