Tüm Blog Yazılarına Dön
Performans 2026 Güncel Rehber

FiveM NUI Performans Optimizasyonu (2026): CEF Bellek Şişmesini ve Webview Kasmalarını Önleme

FiveM sunucularında oyuncuların FPS'ini sinsi sinsi eriten CEF (Chromium Embedded Framework) arayüz bellek sızıntılarını tespit edin, NUI kasmalarını sıfıra indirin.

DX
Dexta Store Ekibi
10 Ekim 20266 dk okuma0 okuma
FiveM NUI Performans Optimizasyonu (2026): CEF Bellek Şişmesini ve Webview Kasmalarını Önleme

FiveM sunucularında FPS düşüşü denince akla genelde yüksek poligonlu araçlar ya da sonsuz döngüye giren Citizen.CreateThread blokları gelir. Ancak 2026 yılında modern roleplay sunucularının karşılaştığı en sinsi performans katili bambaşka bir yerdedir: CEF (Chromium Embedded Framework), yani sunucunuzun kullandığı NUI (HTML/CSS/JS) arayüzleri!

Oyuncularınız envanteri, HUD'ı, telefon veya F3 menüyü birkaç saat kullandıktan sonra oyunun aniden kasmaya başladığını veya FPS'in yarı yarıya düştüğünü söylüyorsa, muhtemelen bir NUI Bellek Şişmesi (Memory Leak) ile karşı karşıyasınız. Bu rehberde, NUI katmanındaki gizli darboğazları adım adım çözeceğiz.

1. CEF Neden Şişer? Görünmez Arayüz Tehlikesi

GTA V içerisinde açılan her NUI ekranı aslında arka planda çalışan bir Google Chrome sekmesidir. Geliştiricilerin yaptığı en büyük hata, ekrandan gizlenen bir arayüzün arka planda hala DOM ağacını güncellemeye devam etmesine (display: none yerine şeffaflık kullanılması veya dinleyicilerin açık kalması) izin vermektir.

⚠️ Önemli Uyarı: CSS'te opacity: 0 ya da visibility: hidden yapmak arayüzü sadece gözden saklar! CEF motoru arka planda CSS animasyonlarını, SVG filtrelerini ve JavaScript zamanlayıcılarını (setInterval) işlemeye devam ederek GPU ve RAM tüketir.

2. Adım Adım NUI Kaynak Optimizasyonu

NUI dosyalarınız genellikle resources/[hud]/hud/html/ veya resources/[scriptler]/envanter/web/ dizinlerinde yer alır. Aşağıdaki yöntemlerle bu arayüzleri hafifletebilirsiniz:

A. JavaScript Dinleyicilerini Doğru Yönetin

İstemci tarafından gelen mesajları dinlerken her açılışta yeni bir window.addEventListener başlatmak bellek sızıntısına yol açar. Mesaj dinleyicisini tek bir ana handler altında toplayın:

javascript
// Hatalı: Her UI açıldığında yeni listener eklemek
// Doğru: Tek global dinleyici ve state yönetimi

window.addEventListener('message', (event) => {
    const { action, data } = event.data;

    switch (action) {
        case 'OPEN_INVENTORY':
            document.getElementById('app').style.display = 'block';
            renderItems(data.items);
            break;
        case 'CLOSE_INVENTORY':
            document.getElementById('app').style.display = 'none';
            clearInventoryCache(); // Bellekte biriken sanal DOM elemanlarını temizle
            break;
        default:
            break;
    }
});

B. Lottie ve Ağır CSS Animasyonlarını Sınırlandırın

HUD veya bildirim sistemlerinde kullanılan sonsuz döngülü SVG ve CSS keyframe animasyonları, arka planda render motorunu sürekli meşgul eder. Arayüz kapalıyken tüm animasyonları durdurun (animation-play-state: paused).

3. Lua Tarafında NUI Mesaj Trafiğini Azaltma

İstemci tarafındaki Lua kodunuz (client.lua), NUI tarafına gereksiz yere her tick'te veri gönderiyorsa (SendNUIMessage), CEF darboğaza girer. Can, zırh, hız gibi verileri yalnızca değer değiştiğinde gönderin:

lua
-- resources/[hud]/hud/client/main.lua
local lastHealth = -1
local lastArmor = -1

CreateThread(function()
    while true do
        local ped = PlayerPedId()
        local currentHealth = GetEntityHealth(ped) - 100
        local currentArmor = GetPedArmour(ped)

        -- Yalnızca değer değiştiğinde CEF katmanına veri yolla
        if currentHealth ~= lastHealth or currentArmor ~= lastArmor then
            lastHealth = currentHealth
            lastArmor = currentArmor

            SendNUIMessage({
                action = 'UPDATE_STATUS',
                health = currentHealth,
                armor = currentArmor
            })
        end

        Wait(350) -- Her karede değil, saniyede ~3 kez sorgulamak insan gözü için yeterlidir
    end
end)
💡 İpucu: SendNUIMessage çağrısı JSON serileştirmesi yapar. Bu çağrıyı milisaniyelik Wait(0) döngülerine sokmak doğrudan istemci işlemcisini kilitler.

4. CEF Konsolunu Canlıda Kapatın

Geliştirme aşamasında tarayıcı konsoluna basılan yüzlerce console.log çağrısı, sunucu prodüksiyona geçtiğinde bellek kullanımını katlar. Canlı sunucularda arayüz dosyalarınızın minify edilmiş ve loglardan arındırılmış (production build) olduğundan emin olun.

Eğer sunucunuzdaki arayüzlerin, HUD'ın ve scriptlerin tek tek optimize edilmesiyle vakit kaybetmek istemiyorsanız, tüm CEF ve Lua altyapısı önceden test edilmiş ve optimize edilmiş DxAV1 - Roleplay Paketi sistemimize göz atabilir veya sunucunuzu profesyonel ellere teslim etmek için Developerlik Hizmeti alabilirsiniz.

Sıkça Sorulan Sorular (SSS)

1. Oyuncunun F8 konsolunda NUI kaynaklı hataları nasıl görebilirim?

Oyuncular oyun açıkken tarayıcıdan localhost:13172 adresine girerek FiveM CEF DevTools konsolunu açabilir ve arayüz hatalarını, bellek tüketimini doğrudan inceleyebilir.

2. Vue/React kullanmak FiveM'de FPS düşürür mü?

Hayır. Modern framework'ler sanal DOM sayesinde düzensiz yazılmış ham JavaScript'e göre genelde daha performanslıdır. Ancak bileşenler (components) ekrandan kalktığında unmount edilmeli ve arka plan zamanlayıcıları yok edilmelidir.

3. NUI odaklı donmalar ekran kartından mı kaynaklanır?

Çoğunlukla işlemci çekirdeklerinden birinin aşırı NUI tick trafiği veya CSS render yükü nedeniyle %100'e vurması sonucu oluşur.

Bu Rehber İşinize Yaradı mı?

Fikrinizi belirterek içeriklerimizi geliştirmemize yardımcı olun.

Topluluk
DX
Teknik İçerik Ekibi

Dexta Store Geliştirici Grubu

FiveM sunucuları için yüksek FPS optimizasyonlu hazır paketler, özel scriptler, MLO haritaları ve DXA koruma mimarisi geliştiren teknik ekibimiz tarafından hazırlanmıştır.

Premium FiveM Çözümleri

Sunucunuzu Bir Üst Seviyeye Taşımaya Hazır Mısınız?

Sıfırdan uğraşmak yerine; test edilmiş, yüksek FPS garantili ve 7/24 anında teslim edilen hazır roleplay paketlerimizi keşfedin.

Tüm Paket ve Scriptleri İncele

İlginizi Çekebilecek Diğer Rehberler