Port mesin Anda ke setiap platform. Tidak ada yang istimewa tentang itu. Jika Anda memiliki beberapa kode yang hanya Windows, maka tambahkan beberapa logika #ifdef dalam file atau tambahkan file kedua (sehingga Anda akan memiliki FooWindows.cpp
dan FooLinux.cpp
atau apa pun) yang mengimplementasikan fitur itu pada OS lain yang Anda pedulikan .
Publikasi sekali klik mempublikasikan bahwa mesin seperti Unity diizinkan karena Unity sendiri tidak pernah dimodifikasi oleh pengguna akhir. Anda hanya menulis skrip dan data, sehingga mesin memiliki binari pra-dibangun untuk semua platform dan tombol publikasikan hanya menggabungkan binari-binari tersebut bersama dengan data.
Mesin lain mengandalkan sistem build dan cross-compiler untuk membuat game yang dikompilasi saat dibutuhkan, seperti yang akan Anda lakukan dengan aplikasi lintas-platform non-game.
Untuk hal-hal seperti HTML5, ada alat seperti emscripten yang dapat mengkompilasi aplikasi C ++ untuk dijalankan dalam JavaScript. Anda pada dasarnya hanya perlu membuat port lain dari mesin Anda untuk emscripten (karena tidak dapat menggunakan pustaka C ++ yang sewenang-wenang).
Anda tidak harus menulis ulang seluruh permainan, tetapi Anda harus melakukan banyak pengembangan, pengkodean, dan pekerjaan porting untuk setiap platform baru yang ingin Anda dukung.
share/os/<linux>
(ataushare/cpu/x86
) dan meletakkan semua kode spesifik platform di sana dan kemudian melakukan termasuk bersyarat. Setidaknya itulah yang dilakukan gcc, HotSpot, dan kernel Linux (bukan aturan yang sulit). Ya, Anda dapat mulai dengan hanya satu fungsi yang bergantung pada platform dan berpikir itu berlebihan tetapi tidak pernah tetap seperti itu dan menjadi berantakan dengan cepat jika tidak.