Kembali ke Blog

Mimpi Buruk UEFN Session Launch Timeout? Mendiagnosis Unreal Engine Network Drivers

Diterbitkan pada 21 Maret 2026
Mimpi Buruk UEFN Session Launch Timeout? Mendiagnosis Unreal Engine Network Drivers

Setiap pengembang game teknis tahu rasa frustrasi yang luar biasa saat menatap layar pemuatan selama tiga menit, hanya untuk disambut dengan pemutusan koneksi mendadak. Anda menekan "Launch Session," menunggu fase validasi dan unggah selesai, duduk di creative hub sementara aset dikompilasi, dan kemudian engine tersebut mendepak Anda kembali ke editor dengan pesan log fatal.

Jika Anda sedang membangun pengalaman multiplayer yang kompleks, menghadapi UEFN session launch timeout hampir merupakan sebuah ritual wajib. Log editor biasanya mengeluarkan sesuatu yang identik dengan ini:

LogNet: Warning: UNetConnection::Tick: Connection TIMED OUT. Closing connection.. Elapsed: 30.00, Real: 30.00, Good: 30.00, DriverTime: 151.46, Threshold: 30.00, [UNetConnection] RemoteAddr: 18.156.253.228:15009, Name: IpConnection_0, Driver: Name:IpNetDriver_0 Def:BeaconNetDriver IpNetDriver_0, IsServer:

Ini bukan sekadar gangguan jaringan acak. Ini adalah tabrakan arsitektural yang sangat spesifik antara ambang batas networking Unreal Engine yang ketat dan operasi pemblokiran berat yang diperlukan untuk mengompilasi dan menyinkronkan custom asset.

Dalam bedah teknis ini, kita akan membedah apa arti log ini, mengapa networking stack Unreal Engine berperilaku seperti ini, dan bagaimana Anda dapat merancang proyek Anda untuk mencegah timeout ini—baik saat Anda bekerja dalam batasan UEFN atau membangun dedicated servers kustom di UE5.

Mendekonstruksi Log Timeout UNetConnection

Untuk memperbaiki masalah ini, pertama-tama Anda perlu memahami telemetri yang diberikan Unreal Engine. Mari kita uraikan variabel-variabel dalam peringatan LogNet tersebut:

  • Elapsed: 30.00: Ini adalah metrik kritis. Artinya, tepat 30 detik telah berlalu sejak klien terakhir kali menerima paket jaringan yang valid (atau heartbeat) dari server.
  • Threshold: 30.00: Ini adalah batas hardcoded yang ditentukan oleh variabel ConnectionTimeout dalam konfigurasi network driver engine. Begitu Elapsed mencapai Threshold, koneksi akan diputus tanpa ampun.
  • DriverTime: 151.46: Network driver telah berjalan selama total sekitar 2,5 menit. Ini memberi tahu kita bahwa koneksi awal berhasil, tetapi operasi pemblokiran berikutnya menyebabkan keheningan selama 30 detik.
  • Def:BeaconNetDriver: Ini adalah bukti utamanya. Unreal Engine menggunakan BeaconNetDriver untuk menangani komunikasi ringan sebelum koneksi—seperti memesan slot pemain atau memeriksa kompatibilitas versi—sebelum beralih ke IpNetDriver utama untuk gameplay.

Ketika proyek UEFN mengunggah custom asset ke server live edit, klien terhubung melalui beacon. Namun, jika mesin lokal atau server jarak jauh Anda benar-benar terbebani saat mengompilasi shader yang tidak dioptimalkan atau memvalidasi kode Verse yang berat, main thread akan terblokir. Jika thread terblokir selama lebih dari 30 detik, tidak ada paket keep-alive yang dikirim. Beacon menganggap klien crash dan memutuskan koneksi.

Mengapa Live Edit Memperburuk Masalah

Arsitektur UEFN Live Edit adalah keajaiban desain game engine modern, tetapi beroperasi di bawah batasan yang sangat besar. Saat Anda meluncurkan sesi, editor harus mengemas aset yang Anda modifikasi, mengunggahnya ke instance yang di-host oleh Epic, dan kemudian memerintahkan klien Fortnite lokal untuk terhubung ke instance tersebut.

Jika Anda bekerja dengan mesh impor yang besar, texture array masif, atau stem audio yang kompleks, fase "Menunggu di creative hub untuk kompilasi" menjadi bottleneck yang sangat besar. Server mengharapkan klien untuk beralih dari hub ke status game live dengan cepat. Ketika klien terjebak mengompilasi 4.000 shader secara lokal, network tick akan terhenti.

Ini adalah versi lokal dari masalah engine yang lebih luas. Faktanya, jika Anda kesulitan dengan sinkronisasi spasial setelah beban berat, Anda mungkin ingin meninjau panduan kami tentang How To Fix Player Location Desync In Uefn And Unreal Engine Multiplayer.

Memperbaiki Timeout di Unreal Engine 5 Standar

Meskipun UEFN mengabstraksi kemampuan Anda untuk mengedit file konfigurasi engine tingkat rendah, memahami cara menyelesaikan ini di Unreal Engine 5 standar adalah wajib bagi pengembang yang berencana untuk beralih ke dedicated servers kustom.

Dalam proyek UE5 standar, Anda dapat langsung memanipulasi nilai Threshold yang menyebabkan crash. Secara default, Unreal Engine menyetel network timeout dengan sangat agresif untuk mencegah koneksi mati memakan memori server.

Untuk meningkatkan ambang batas ini, Anda harus memodifikasi file DefaultEngine.ini Anda. Berikut adalah konfigurasi tepat yang diperlukan untuk memberi klien Anda lebih banyak ruang bernapas selama kompilasi aset yang berat:

; DefaultEngine.ini

[/Script/OnlineSubsystemUtils.IpNetDriver]
; Tingkatkan batas waktu koneksi standar menjadi 120 detik
ConnectionTimeout=120.0
; Beri fase koneksi awal lebih banyak waktu (150 detik) untuk pemuatan peta yang berat
InitialConnectTimeout=150.0

[/Script/Engine.NetDriver]
ConnectionTimeout=120.0
InitialConnectTimeout=150.0
KeepAliveTime=0.2
MaxClientRate=100000
MaxInternetClientRate=100000

Dengan mendorong timeout dari 30 detik ke 120 detik, Anda mengizinkan klien untuk menyelesaikan operasi pemblokiran (seperti kompilasi shader atau pemuatan aset seamless travel) tanpa server memutus koneksi.

Penyesuaian Timeout Dinamis melalui C++

Melakukan hardcoding timeout 120 detik dalam file INI Anda adalah instrumen yang kasar. Timeout 2 menit berarti jika seorang pemain benar-benar crash, server Anda akan menahan actor dan sumber daya jaringan mereka di memori selama 120 detik penuh, membuang siklus CPU dan RAM yang berharga. Untuk pembahasan mendalam tentang bagaimana pemborosan sumber daya server berdampak pada keuntungan Anda, lihat analisis kami tentang Architecting Zero Waste Servers The Fortnite Server Optimization Hibernation Proposal Analyzed.

Pendekatan yang jauh lebih baik untuk game UE5 kustom adalah dengan menyesuaikan ambang batas timeout secara dinamis hanya ketika Anda tahu operasi pemblokiran berat akan terjadi (seperti memuat ke dalam peta open-world yang masif).

Berikut adalah implementasi C++ yang menunjukkan cara mengakses UNetConnection dan memperpanjang timeout untuk sementara selama fase pemuatan:

#include "Engine/NetConnection.h"
#include "GameFramework/PlayerController.h"

void AMyPlayerController::PrepareForHeavyMapLoad()
{
    // Ambil koneksi jaringan aktif untuk pemain ini
    if (UNetConnection* NetConnection = GetNetConnection())
    {
        // Simpan timeout asli untuk dipulihkan nanti
        float OriginalTimeout = NetConnection->GetTimeoutValue();
        
        // Tingkatkan timeout sementara menjadi 180 detik untuk bertahan dari kompilasi aset berat
        NetConnection->SetTimeoutValue(180.f);
        
        UE_LOG(LogTemp, Warning, TEXT("Adjusted connection timeout from %f to 180s for loading phase."), OriginalTimeout);
        
        // TODO: Bind sebuah delegate ke penyelesaian pemuatan peta untuk memulihkan OriginalTimeout
    }
    else
    {
        UE_LOG(LogTemp, Error, TEXT("Failed to retrieve UNetConnection. Player may already be disconnected."));
    }
}

Kode ini memastikan pemain Anda bertahan di layar pemuatan tanpa mengorbankan kemampuan server secara permanen untuk memangkas koneksi yang benar-benar terputus dengan cepat.

Praktik Terbaik untuk Mencegah Session Timeout

Jika Anda terkunci di UEFN dan tidak dapat mengedit DefaultEngine.ini, Anda harus menyelesaikan masalah dengan mengoptimalkan payload daripada memperpanjang timeout. Berikut adalah lima praktik terbaik yang dapat dilakukan:

  1. Hapus Aset yang Tidak Digunakan Sebelum Meluncurkan: UEFN akan mencoba memvalidasi dan mengunggah aset yang ada di direktori proyek, meskipun aset tersebut tidak ditempatkan secara aktif di level. Pindahkan mesh high-poly dan tekstur 4K yang tidak digunakan ke luar folder proyek.
  2. Paksa Pra-Kompilasi Shader: Jika Anda menggunakan material kustom, pastikan material tersebut telah dikompilasi sepenuhnya secara lokal sebelum meluncurkan sesi. Penyebab umum timeout 30 detik adalah klien lokal membeku untuk mengompilasi shader tepat saat server mengharapkan heartbeat jaringan.
  3. Optimalkan Batas Eksekusi Kode Verse: Loop OnBeginPlay yang berat di Verse dapat menghambat inisialisasi sisi server. Pecah loop inisialisasi masif menggunakan Sleep(0.0) untuk mengembalikan eksekusi ke main thread.
  4. Kurangi Kompleksitas Tabrakan (Collision): Mesh collision kustom yang kompleks membutuhkan waktu jauh lebih lama untuk divalidasi di backend. Gunakan primitif box atau capsule sederhana untuk collision jika memungkinkan.
  5. Pantau Bandwidth Unggah Anda: Metrik DriverTime terus berjalan saat klien Anda mengunggah perubahan. Jika Anda menggunakan koneksi dengan bandwidth unggah rendah (di bawah 20Mbps), mendorong pembaruan proyek sebesar 500MB hampir pasti akan memicu timeout.

Faktor Infrastruktur Backend

Saat Anda beralih dari UEFN ke membangun game multiplayer mandiri Anda sendiri di Unreal Engine, Anda mewarisi tanggung jawab untuk mengelola infrastruktur backend yang mendikte aturan jaringan ini.

Mengelola session timeouts, load balancing dedicated servers, dan mengelola matchmaking pemain memerlukan penerapan fleet manager seperti Agones atau menulis lapisan orkestrasi kustom di Kubernetes. Membangun ini sendiri memerlukan pengaturan database sharding, manajemen sertifikat SSL, dan perutean lintas wilayah—dengan mudah memakan waktu 4 hingga 6 minggu kerja DevOps yang melelahkan sebelum Anda mulai menulis logika game.

Di sinilah horizOn mengubah segalanya. Dengan horizOn, layanan backend yang kompleks ini sudah dikonfigurasi sebelumnya khusus untuk pengembang game. Alih-alih bergulat dengan orkestrasi server dan connection timeouts di AWS, Anda mendapatkan Backend-as-a-Service yang dikelola sepenuhnya yang menangani penskalaan dedicated servers secara otomatis.

Kesimpulan

Menghadapi UEFN session launch timeout adalah hambatan yang membuat frustrasi, tetapi juga merupakan pelajaran berharga tentang bagaimana game engine modern menangani status jaringan. Engine tersebut hanya melakukan tugasnya: secara agresif memangkas koneksi yang tampak mati untuk melindungi stabilitas server.

Siap untuk berhenti mengkhawatirkan infrastruktur server dan mulai menskalakan backend multiplayer Anda? Coba horizOn secara gratis atau pelajari dokumentasi API untuk melihat betapa mudahnya Anda dapat menerapkan server game yang siap produksi hari ini.