Bagaimana alat "pembuat game" seperti Blitz3D membuat file .exe?

8

Ada beberapa aplikasi seperti Blitz3D atau jenis alat konstruksi gim lain yang menyusun skrip atau data gim lain menjadi satu file yang dapat dieksekusi. Bagaimana mereka melakukannya?

pengguna3689
sumber

Jawaban:

10

Alat yang berbeda mendekati dengan cara yang berbeda, tetapi cara Blitz3D melakukannya adalah dengan membungkus kode dan juru bahasa menjadi satu bundel. Kemudian ketika Anda menjalankan exe, itu meluncurkan penerjemah dan melewati kode yang dibundel. Ini hampir sama dengan bagaimana, katakanlah, Python bekerja ketika menggunakan py2exe.

Dalam banyak alat pengembangan game, kode yang digabungkan bersama dengan executable hanyalah teks mentah yang diurai oleh penerjemah. Namun beberapa mengambil pendekatan bytecode seperti Java, di mana kode sumber diubah menjadi bentuk perantara yang menggunakan mesin virtual. Saya pikir Unity menggunakan pendekatan yang terakhir ini tetapi saya tidak yakin.

Dari atas kepala saya semua alat pengembangan game yang dapat saya pikirkan bahwa paket yang dapat dieksekusi baik berdasarkan pendekatan ini dari interpreter inti / mesin virtual dan kemudian mengemasnya dengan kode, atau perpustakaan yang Anda kompilasi di Visual Studio atau apa pun.

jhocking
sumber
Apakah pendekatan kedua lebih cepat dari yang pertama?
Quazi Irfan
Ada pro dan kontra, tetapi hal utama yang harus diingat sehubungan dengan kecepatan adalah bahwa semua kode kritis yang benar-benar cepat (mis. Render rutinitas) ada dalam penafsir dan dengan demikian kecepatan kode yang ditafsirkan tidak begitu penting. Kode yang ditafsirkan hanya memanggil fungsi seperti loadMesh () dan penerjemah melakukan sisanya. Ini situasi yang sama persis seperti menggunakan bahasa skrip yang tertanam dalam mesin game; memang, sering ada perdebatan di forum Blitz3D tentang apakah itu "mesin game" atau tidak.
jhocking
-1

Alur program, penanganan variabel dan sejenisnya dikompilasi menjadi kode mesin murni, sedangkan perintah tingkat tinggi diimplementasikan sebagai fungsi pustaka C ++ yang dipanggil dari pustaka runtime yang dikompilasi ke dalam setiap executable yang dihasilkan Blitz. Non keluarga Blitz Basic ditafsirkan seperti Python.

Domba Penembak jitu
sumber
Saya tidak yakin apa yang Anda maksud dengan "diimplementasikan sebagai fungsi pustaka C ++ yang dipanggil dari pustaka runtime", tapi entah itu hanya cara yang bagus untuk mengatakan kode pengguna ditafsirkan oleh mesin inti, atau Anda hanya salah. Beberapa tahun yang lalu ada produk berumur pendek bernama CoolBasic yang bekerja dengan mengganti kode pengguna di exe Blitz3D (tentu saja ditutup karena ini peretasan legalitas yang dipertanyakan); itu tidak akan berhasil jika kode pengguna dikompilasi ke dalam runtime.
jhocking