Bagaimana saya terus belajar UE4 saat membuat game saya

Hari baik untuk semua


Pada artikel ini saya ingin berbicara tentang masalah yang saya temui sambil terus mengembangkan simulator mobil dan apa yang saya temukan ketika mencoba untuk mengatasinya.

Komposisi dunia


Dalam artikel sebelumnya, saya berbicara tentang cara sederhana dan cepat untuk membuat dunia besar di UE4, dibagi menjadi beberapa bagian untuk mengoptimalkan pemuatan. Akibatnya, saya meninggalkan mode ini karena alasan berikut:

  • Pertama-tama, saya menarik perhatian pada fakta bahwa dalam semua contoh dan video, Epics sendiri (dan pengembang lainnya) membuat kartu 8km x 8km “utuh”. Ini bahkan lebih dari yang saya butuhkan, jadi Komposisi Dunia bagi saya, tampaknya, semacam optimasi yang berlebihan.
  • membuka jalan dengan bantuan Landscape Splines, saya perhatikan bahwa UE4 tidak memecahnya berdasarkan ukuran sel peta (pada sambungan), tetapi memperluas perbatasannya dengan ukuran Spline yang dihasilkan. Ini menyebabkan masalah ketika mencoba untuk memindahkan peta, dan tampaknya juga merusak logika pembebanan dinamis, memuat segera semua yang dilalui jalan (dalam kasus saya, ini adalah setengah dunia).
  • perbatasan potongan peta umumnya merupakan pertanyaan yang menarik. Saya memperbaiki jalan untuk Blueprint Spline buatan sendiri (lebih lanjut tentang itu di bawah) dan, agar tidak mengulangi "kesalahan" Landscape Splines, saya harus menerapkan spline otomatis yang terbelah menjadi beberapa bagian pada batas level, menyinkronkan lengkungan di tempat-tempat ini, membuat objek anak (sehingga masing-masing memiliki sendiri tempatkan level untuk memuat otomatis) ... Saya tidak yakin bahwa ini pada prinsipnya mungkin, dan tentu saja akan memakan banyak waktu (saya tidak menemukan referensi untuk fungsi batas level, dll. dalam Cetak Biru)
  • jatuh melalui peta. Tentang memotong "fitur" ini menggunakan BlockTillLevelStreamingCompleted () yang sudah saya bicarakan di artikel itu. Namun, solusi ini menyebabkan masalah berikut:
  • . ( ) OpenLevel ( World Composition), «» -, .. spawn , , . , ++, «StreamingPauseRendering» override «BeginLoadingScreen». , , .
  • , World Composition ++

    void UMyGameInstance::OnWorldChanged(UWorld * OldWorld, UWorld * NewWorld)
    {
    	Super::OnWorldChanged(OldWorld, NewWorld);
    
    	if (NewWorld) {
    		if (NewWorld->WorldComposition) {
    			const TArray<ULevelStreaming*> TilesStreaming = NewWorld->WorldComposition->TilesStreaming;
    			NewWorld->ClearStreamingLevels();
    			NewWorld->SetStreamingLevels(TilesStreaming);
    		}
    	}
    }
    

Blueprints Spline


, Blueprints Spline «» ( , , «» ), Landscape Splines «Deform Landscape to Splines». , «», "Editor Apply Spline" Landscape + Spline! «Call In Editor» Blueprint Spline ( ) . .


Widgets


, Vehicle Variety Pack , , , , , . 3D , Widget, , ! Workaround' «Render Target», 3 , «» , , , Widget. , « » .



, UE4, ( , ). Udemy , , , , , \ . , , , «» ( PlayerController) . AI Controller Class «dummy» AIController, .



Tiba-tiba ternyata menjadi masalah untuk menutup menu dalam game dengan menekan Esc. Tidak ada kesulitan dalam menangkap Esc dalam permainan, menjeda permainan dan membuka Menu Widget di layar penuh ... tapi dia tidak buru-buru untuk menutup Esc lagi, pengesampingan "On Key Down" mulai bekerja dalam beberapa situasi yang tidak jelas, seperti "memanggil konsol UE4 dengan ~, lalu tutup, lalu tekan sesuatu ... ”Solusinya ternyata sangat sederhana - centang kotak centang“ Is Focusable ”di perancang Widget pada elemen root (pada Widget itu sendiri).


Terima kasih atas perhatian Anda, jika saya berhasil keluar dari Mount & Blade II yang dirilis: Bannerlord dan tidak jatuh ke dalam Snowrunner yang keluar, maka saya akan terus mengembangkan proyek saya dan menulis tentang semua hal yang tidak jelas yang membutuhkan banyak keberanian dan waktu.


All Articles