Saya sedang mempersiapkan magang sebagai programmer game di sebuah perusahaan pengembangan game yang terkenal di dunia. Ketika saya mencari prasyarat yang diperlukan di situs web mereka, itu menunjukkan kepada saya ini:
Keuntungan tambahan
- Pengetahuan tentang DirectX / OpenGL.
- Perintah yang kuat pada Matematika dan Fisika 3D.
- Visual Studio IDE untuk pengembangan C ++.
- Pemrograman Sistem dan konsep OS.
Apa sebenarnya yang dimaksud dengan pemrograman sistem dan konsep OS?
Haruskah saya mempelajari pemrograman Windows? Atau haruskah saya menggunakan pemrograman Linux (artinya mereka ingin saya tahu konsep-konsep penting). Atau itu sesuatu yang sama sekali berbeda?
terminology
career
Dhannanjai
sumber
sumber
Jawaban:
"Pemrograman sistem" (atau "pemrograman sistem") cenderung berarti pemrograman yang dilakukan pada tingkat abstraksi yang lebih rendah daripada (misalnya) pemrograman gameplay. Pemrograman gameplay biasanya tentang membangun mekanisme permainan yang sebenarnya dan fitur-fitur yang menghadap ke depan yang mungkin dilihat oleh seorang pengguna, sedangkan pemrograman sistem lebih banyak tentang membangun kerangka kerja tempat programmer bekerja.
Ini mungkin berarti grafik, pemuatan dan streaming sumber daya, audio, manajemen memori, file IO, API abstraksi platform, dan lain-lain. Detailnya sedikit berbeda, dan karena tidak ada standar untuk jabatan di industri game, maka tidak ada standar untuk nama domain pemrograman. Di satu studio, Anda mungkin menemukan bahwa "pemrograman sistem" berarti semua yang saya sebutkan di atas. Di tempat lain, Anda mungkin menemukan bahwa mereka membedakan "pemrograman grafis" sebagai domain terpisah dan menyebut setiap tugas pemrograman non-gameplay "pemrograman sistem". Di lain, mereka mungkin tidak menggunakan istilah sama sekali dan hanya menyebutnya "pemrograman mesin."
Karena ini adalah domain tingkat lebih rendah, dan biasanya melibatkan antarmuka lebih langsung dengan API khusus platform untuk platform apa pun yang sedang dibuat untuk game, memiliki pengetahuan tentang platform tersebut akan sangat membantu, karena memiliki pengetahuan tentang domain yang lebih umum (misalnya , tentang konsep OS tanpa memperhatikan cara kerja OS tertentu, seperti apa memori virtual itu, atau bagaimana thread bekerja, bagaimana buffering IO bekerja, dan lain-lain).
sumber
Jawaban Josh benar-benar baik tetapi saya pikir saya akan melemparkan beberapa poin penting tentang tim Sistem tempat saya bekerja. Saya tidak bekerja pada Sistem tetapi saya sering bekerja dengan mereka. Tanggung jawab tim Sistem sangat bervariasi dari perusahaan ke perusahaan.
Tim Sistem kami bertanggung jawab atas banyak hal:
Ada banyak pengetahuan domain Windows dan Linux di sini serta banyak pengetahuan tentang Fisika, logika permainan inti dan manajemen memori tingkat rendah. Tim sistem biasanya akan terlibat setidaknya di beberapa bagian dalam setiap OS yang didukung karena sebagian besar proyek mereka berada di setiap OS pada level yang cukup rendah.
Beberapa hal yang mungkin termasuk dalam tim "Sistem" yang kami bagi menjadi beberapa tim yang terpisah (tetapi tim Sistem kami masih berinteraksi dengan cukup banyak):
sumber
Pemrograman sistem sangat terdefinisi dengan baik, tetapi perusahaan berusaha mengembangkannya sesuai kebutuhan mereka. Jika Anda menggunakan atau menulis panggilan sistem, Anda sedang melakukan pemrograman sistem. Panggilan sistem adalah fungsi yang disediakan oleh kernel, atau driver userspace. Ini termasuk OpenGL karena pada dasarnya adalah driver.
sumber
Keuntungan tambahan yang tercantum di atas sebagian besar untuk pemrograman mesin permainan bila perlu, sehingga melibatkan penggunaan API tingkat rendah. Pemrograman sistem di sini mengharapkan Anda untuk mengetahui cara melakukan panggilan ke audio OS, manajemen proses, manipulasi file, panggilan jaringan, dan sebagainya ...
sumber
Karena mereka merujuk Visual Studio, pemrograman sistem mengacu pada penulisan program khusus untuk Sistem Operasi windows, yang berarti: windows syscalls (misalnya tidak ada rantai fork-exec), akun pengguna, tempat meletakkan data spesifik pengguna Anda, model berbagi data di windows Cari, misalnya bagaimana Anda dapat memeriksa pengguna saat ini dalam visual c ++ atau cara memulai proses baru
Konsep OS, merujuk pada penjadwalan, abstraksi file, utas, userspace dll. Os dev wiki dan forum dapat menjadi bacaan yang baik
Otentikasi pengguna misalnya di kedua bagian, karena windows adalah sistem operasi pengguna tunggal, yang memiliki integrasi kernel jauh lebih dalam dari manajemen pengguna dan antarmuka pengguna.
Msdn adalah basis pengetahuan untuk semua hal pemrograman windows, perpustakaan dll https://msdn.microsoft.com/
Stackoverflow untuk pengkodean aktual jika Anda macet.
sumber