FiveM'de Atmosferik Derinlik: Zaman ve Hava Yönetimi
FiveM sunucularında rol kalitesini belirleyen en önemli unsurlardan biri, oyuncunun içinde bulunduğu atmosferdir. 2026 yılı standartlarında statik bir hava durumu yerine, dinamik ve gerçekçi bir zaman döngüsü kullanmak sunucunuzu rakiplerinden ayırır.
1. Zaman Senkronizasyonu (TimeSync)
Sunucunuzun zamanını gerçek dünya saatiyle eşleştirmek veya kendi 'oyun saati' hızınızı belirlemek için server.cfg üzerinden basit bir konfigürasyon yapabilirsiniz. Ancak daha profesyonel bir kontrol için SetWorldTime event'ini kullanmak gerekir.
-- server.lua içerisinde basit bir zaman döngüsü
Citizen.CreateThread(function()
while true do
Citizen.Wait(60000) -- Her dakika başı
local hour = os.date("%H")
local minute = os.date("%M")
TriggerClientEvent('esx:setTime', -1, tonumber(hour), tonumber(minute))
end
end)2. Dinamik Hava Durumu (Weather Sync)
Hava durumu geçişlerinin aniden olması oyuncu gözünde 'lag' veya hata gibi algılanabilir. Bunun yerine yumuşak geçişler (Transition) kullanmalısınız. SetWeatherTypeOverTime fonksiyonu ile hava değişimlerini 30-60 saniyelik periyotlara yayarak sinematik bir geçiş sağlayabilirsiniz.
Citizen.Wait ile değil, SetWeatherTypeOverTime kullanarak yapın. Bu, oyun motorunun ışıklandırma ve gölge hesaplamalarını daha doğal bir şekilde güncellemesini sağlar.3. Neden Hazır Sistemleri Tercih Etmelisiniz?
Kendi hava durumu ve zaman sisteminizi yazmak, özellikle senkronizasyon hataları (bazı oyuncuların güneşli görürken diğerlerinin yağmurlu görmesi) nedeniyle zorlayıcı olabilir. Eğer bu tür teknik detaylarla uğraşmak yerine doğrudan stabil ve optimize edilmiş bir yapı arıyorsanız, DxAV1 - Roleplay Paketi içerisinde yer alan profesyonel hava ve zaman yönetimi modüllerini inceleyebilirsiniz.
4. Performans Uyarısı
Citizen.CreateThread içerisinde while true döngüsüyle çok kısa sürelerde (örneğin 10ms) çalıştırmayın. Bu durum, sunucu tarafında gereksiz CPU yükü oluşturur. 1000ms ile 5000ms arası bir döngü yeterlidir.Sıkça Sorulan Sorular (SSS)
S: Hava durumu herkes için aynı anda mı değişir?
C: Evet, TriggerClientEvent ile 'server-side' üzerinden tüm oyunculara eş zamanlı komut gönderdiğinizde senkronizasyon sağlanır.
S: Gece/Gündüz süresini nasıl değiştirebilirim?
C: SetTimeScale fonksiyonunu kullanarak oyun saatinin akış hızını (örneğin 1.0 normal hızdır, 2.0 iki kat hızlıdır) değiştirebilirsiniz.
