Programmer perekrutan Gentleman UE4, bagian 1



Saya sudah lama ingin membuat daftar keterampilan dan alat yang, menurut pendapat saya, harus dimasukkan dalam "set pria" dari setiap programmer di bawah Unreal Engine 4 . Beberapa hari yang lalu, dalam obrolan UE4, saya melihat ini:

> cetak biru, pengembang animasi, seni teknologi, ai, multipemain, ekstensi editor. hal pertama yang terlintas dalam pikiran

> Apa yang terlintas dalam pikiran: cetak biru, animasi, AI, editor materi, widget, slate, ekstensi editor, plugin ue4, fisika, pencahayaan, render, c ++
+ Berapa banyak waktu bekerja dengan mesin dan negara, itu saja :)

Dalam formulasi seperti itu, semua yang dikatakan hanyalah kumpulan kata-kata. Oleh karena itu, saya berkumpul dan menyusun kuesioner untuk mereka yang ingin menjadi programmer UE4, dan yang dapat mengevaluasi level mereka kepada mereka yang sudah menganggap diri mereka sebagai programmer canggih untuk UE4.

Jangan gunakan kata-kata umum


Semua istilah yang tercantum dalam kutipan adalah keseluruhan kompleks keterampilan, prinsip, dan teknologi. Mengekspresikan mereka dalam satu kata, Anda sama sekali tidak menyampaikan apa yang sebenarnya perlu diterapkan dan seberapa "dalam" itu perlu dipelajari.

Saya akan pergi melalui kategori utama, mengajukan pertanyaan yang Anda harus tahu jawaban untuk mengatakan: "Saya mengerti ini."

Dasar-dasar arsitektur mesin


  • Apa perbedaan antara kelas UObject dan AActor ? Apa perbedaan mendasarnya ? Apakah mungkin untuk membuat UObject melakukan fungsi yang sama? Mengapa AGameState dan APlayerState ? Pertanyaan serupa tentang AGameMode dan AHUD .
  • Apa perbedaan UGameInstance dari UGameInstance ? Untuk apa mereka berdua digunakan? Mengapa APlayerController diperlukan dan mengapa itu adalah sebuah ector?
  • Untuk apa UPROPERTY digunakan? Bisakah saya menggantinya dengan SharedRef ? Bagaimana mengatasi Ketergantungan Sirkular dalam vektor (orang tua memiliki pointer ke anak, anak ke orang tua)? Kapan UObject akan dihapus? Bagaimana cara melindungi suatu entitas dari penghapusan oleh Pengumpul Sampah ? Bagaimana cara menghapus aktor ?
  • Apa itu CDO ? Bagaimana saya bisa memutus rantai kelas Reference'ov satu sama lain, dan mengapa?
  • Bagaimana urutan inisialisasi entitas utama mesin (setidaknya di tingkat controller / pavna / state)? Bagaimana urutan bibit AActor?
  • Komponen dalam komponen - baik atau buruk?
  • Apa itu WorldContextObject ? Apakah mungkin untuk membawanya ke UObject , dan jika demikian, dari mana?
  • Apa perbedaan mendasar antara Slate dan UMG ?

Cetak Biru


  • Apa perbedaan makro dari fungsi?
  • Menggunakan apa sebenarnya yang mengarah pada pembentukan Referenc antar kelas? Aset? Bagaimana cara menghindarinya?
  • Apa itu nativization tumpul dan apa gunanya? Apa kerugian dari asliisasi yang disertakan?

Jaringan


  • Di mana menyimpan data permainan pengguna (mis. Inventaris atau poin) selama sesi permainan? Apakah APlayerController tepat?
  • Bagaimana PlayerState direplikasi ke klien? Apa siklus hidup PlayerController dan PlayerState saat menghubungkan kembali pemain?
  • Bagaimana membedakan replikasi data berdasarkan peran? Apa peran jaringan ? Oleh siapa dan dengan aturan apa mereka ditunjuk?
  • Di kelas apa saya dapat memanggil RPC dan mengapa? Apakah mungkin untuk memperluas fitur ini ke kelas / entitas lain? Berapa overhead panggilan RPC?
  • Bagaimana komponen ector direplikasi? Bagaimana memahami bahwa ector direplikasi "seluruhnya"? Apa yang terjadi jika Anda ingin mereplikasi, katakanlah, 3 MB data dalam sebuah ector: bagaimana perilaku ector ini? game secara umum?
  • Bagaimana array direplikasi? Dan bagaimana properti terlampir direplikasi (bidang yang direplikasi adalah struktur)?
  • Apa batasan jaringan yang ada? ( Angka! ) Bagaimana cara membuat profil beban di jaringan? Metode optimasi jaringan apa yang digunakan? Untuk apa ForceNetUpdate ?

Fisika dan algoritma dasar


  • Bagaimana cara kerja redaman? Apa itu subteping ? Untuk apa ini digunakan? Bagaimana cara fisika disinkronkan melalui jaringan?
  • Apa angka empat dan masalah apa yang dipecahkan oleh aplikasi mereka ?
  • Apa itu saluran fitur dan jejak? Apakah mungkin untuk mengkonfigurasi perilaku yang berbeda dalam aset fisika yang sama? Jika tidak, lalu mengapa, dan bagaimana menyiasatinya?
  • Seberapa mahal penelusuran? Apa itu tergantung?

Streaming


  • Apa utas utama di UE4? Tugas mana yang dilakukan secara paralel dan mana yang tidak? Bagaimana pengaturan kelompok centang?
  • Tindakan apa yang dapat dilakukan dalam aliran paralelnya sendiri? (Atau tindakan apa yang pasti tidak dapat dilakukan?) Bagaimana cara menyinkronkan hasil dengan utas utama?

Kode


Saya tidak menyentuh banyak aspek bekerja dengan UE4, tetapi menyarankan pertanyaan tentang topik utama yang, menurut pendapat saya, adalah dasar ketika bekerja dengan mesin .

Adalah normal bagi seorang junior untuk tidak tahu banyak tentang mesin, tetapi untuk memiliki kepala yang cerah dan memahami beberapa hal. Setidaknya programmer "rata-rata" hanya berkewajiban untuk mengetahui jawaban (atau setidaknya memiliki pendapatnya sendiri) untuk pertanyaan dari blok tentang arsitektur. Terutama pada topik yang dijelaskan pada halaman pertama dokumentasi tentang Kerangka Gameplay .

Jika komunitas memiliki minat, kuesioner serupa dapat dikompilasi pada animasi, debugging, shader dan bahan, pencahayaan, pengemasan proyek, membuat AI, bekerja dengan Pawn'ami dan lainnya. Tulis :) Saya selalu hanya untuk diskusi aktif.

Source: https://habr.com/ru/post/id427319/


All Articles