Apakah kode sumber Mesin Sumber tersedia?

9

Apakah kode sumber C ++ lengkap dari Source Engine tersedia?

Saya tahu SDK tersedia dengan pembelian game berbasis Sumber , tetapi tujuan saya adalah menemukan mesin game bersumber terbuka yang mencakup detail implementasi penuh untuk tujuan pembelajaran.

Pengembang CRUD Sedih
sumber

Jawaban:

35

Tidak, bukan itu. Anda dapat memperoleh lisensi sumber dari Valve, tetapi Sumber itu sendiri bukan open-source.


Lebih jauh lagi, umumnya merupakan pendekatan yang sangat berbahaya untuk menggunakan seluruh mesin yang ada sebagai bahan pembelajaran tanpa bimbingan dari seseorang yang sangat terlibat dalam pengembangan mesin itu.

Kode sumber sendiri hanya memberi tahu Anda bagaimana keputusan desain tertentu, bukan alasan di balik sebagian besar keputusan tersebut yang seringkali sangat penting mengingat bahwa begitu banyak pilihan dalam rekayasa perangkat lunak berasal dari antara opsi yang umumnya sama-valid. Anda perlu konteks untuk memahami mengapa suatu pilihan itu baik, dan jika Anda hanya melihat sumber dari suatu mesin dan menirukan teknik dan idiom mereka, Anda hampir tidak belajar sesuatu yang berguna.

Lebih lanjut, hanya karena kode yang dikirimkan permainan tidak membuat kode itu bagus (Sumber khususnya rentan terhadap banyak keputusan desain yang sangat ketinggalan zaman sehubungan dengan C ++ dan OO, misalnya). Ada banyak cerita horor yang tinggal di basis kode mesin bahkan judul AAA paling sukses. Dan sebagai orang baru yang mudah dipengaruhi, bagaimana Anda bisa mengetahui kode yang baik dari yang buruk?

Berhati-hatilah menggunakan kode sumber sebagai sumber belajar, dan pastikan untuk memasangkannya dengan informasi tambahan sebanyak yang Anda bisa.


sumber
3
"Kode sumber sendiri hanya memberi tahu Anda bagaimana keputusan desain tertentu, bukan alasan di balik sebagian besar keputusan itu yang seringkali sangat penting mengingat bahwa begitu banyak pilihan dalam rekayasa perangkat lunak berasal dari antara opsi yang secara umum sama-valid." menjawab.
Pengembang CRUD Sedih
@BDillan memang, beberapa orang belajar itu dengan cara yang sulit .. walaupun perusahaan akan mempekerjakan Anda untuk bekerja dengan tumpukan besar kode mesin yang Anda tidak mengerti dan tidak punya waktu untuk dan akhirnya hanya debugging.
teodron
Perhatikan bahwa perangkat lunak ID telah membuat beberapa engine mereka tersedia: github.com/id-Software
pjc50
1
Sebagai sedikit singgung, melihat kode mesin komersial bisa sangat mendidik jika Anda memiliki pro di tangan untuk menjelaskan perbedaan antara "kode ini baik" dan "kode ini adalah hack jelek yang diperlukan kembali di yang lama hari "; misalnya -> fabiensanglard.net
Shish
5

tl; dr: Mempelajari cara membuat mesin sering kali berguna untuk membuat game seperti belajar membangun komputer dan sistem operasi Anda sendiri dari awal. Jika Anda bukan ahli di bidangnya, Anda mungkin tidak ingin membuat mesin. Sebagai gantinya buat game, bagian mesin sudah ada. Nanti jika tidak ada mesin yang memiliki akses untuk memenuhi kriteria untuk desain game Anda, Anda bisa fokus membangun aspek spesifik dan neraka itu mungkin berguna bagi orang lain juga karena Anda sedang menciptakan sesuatu yang baru dan tidak mengulangi versi yang kurang kuat. dari sesuatu yang orang telah investasikan dalam ribuan jam.

Versi panjang: Jika Anda benar-benar ingin belajar cara menulis mesin, jangan melihat mesin yang sudah ada. Pelajari alih-alih bagian (algoritme) yang membuat mesin, baik itu rendering, fisika atau pencarian jalur, dll. Setelah Anda mendapatkan pemahaman mendalam tentang aspek tertentu, Anda mungkin ingin memeriksa sumbernya.

Anda biasanya tidak ingin belajar langsung dari sumber kecuali tidak ada alternatif yang unggul. Bahkan pemrogram berpengalaman biasanya tidak akan melihat sumber seluruh mesin untuk belajar dari itu (jika mereka dapat membantu), mereka kemungkinan besar akan memeriksa bagian tertentu atau men-tweak bagian tertentu dari itu. Mencoba melihat sumber untuk tujuan pembelajaran murni tidak akan memaparkan prosedur dan proses berpikir di balik kode mesin; Itu akan seperti merobek sebuah bangunan yang terpisah dalam upaya untuk melihat bagian dalamnya untuk belajar bagaimana membangunnya. Sementara saya setuju dengan jawaban Josh, saya akan melangkah lebih jauh, Anda bahkan tidak belajar "Bagaimana" dalam banyak hal (kecuali jika Anda terbiasa dengan bidang); contohnya, metodologi apa yang digunakan oleh tim pemrograman? Prinsip apa yang mereka andalkan untuk mengimplementasikan kode kerja? Alat dan teknik apa yang mereka gunakan untuk debugging? Semua pertanyaan ini terkadang lebih penting daripada kode itu sendiri (untuk tujuan pembelajaran).

Jika Anda ingin belajar dari sumber, cari sumber yang didokumentasikan dengan baik dan memiliki komunitas yang kuat di sekitarnya. Membaca kode (mesin), bahkan jika Anda telah menulisnya sendiri, seringkali membingungkan.

AturSams
sumber