Motorunuzu her platforma taşıyın. Bu konuda özel bir şey yok. Eğer bazı kodunuz varsa, Windows okunur, ardından ya dosyasında bazı #Ifdef mantığı eklemek veya (eğer olurdu böylece ikinci bir dosya eklemek FooWindows.cpp
ve FooLinux.cpp
ya neyse) uygular diğer OS üzerinde özellik (ler) umursadığın o .
Unity gibi bir motorun tek tıklatmayla yayınlanmasına izin verilir, çünkü Unity'nin kendisi hiçbir zaman son kullanıcı tarafından değiştirilmez. Sadece komut dosyaları ve veriler yazıyorsunuz, bu nedenle motorun tüm platformlar için önceden oluşturulmuş ikili dosyaları var ve yayınla düğmesi bu ikili dosyaları verilerle birlikte paketliyor.
Diğer motorlar, oyun dışı herhangi bir çapraz platform uygulamasında yaptığınız gibi, gerektiğinde derlenen oyunu oluşturmak için derleme sistemlerine ve çapraz derleyicilere güvenir.
HTML5 gibi şeyler için, JavaScript'te çalışacak bir C ++ uygulamasını derleyebilen emscripten gibi araçlar vardır. Temelde sadece emscripten için motorunuzun başka bir portunu yapmanız gerekir (çünkü herhangi bir keyfi C ++ kütüphanesi / özelliği kullanamaz).
Tüm oyununuzu yeniden yazmak zorunda değilsiniz, ancak kesinlikle desteklemek istediğiniz her yeni platform için çok fazla geliştirme, kodlama ve taşıma işi yapmanız gerekecek.
share/os/<linux>
(Veyashare/cpu/x86
) gibi bir şeye sahip olmak ve platforma özel tüm kodu oraya koymak ve daha sonra koşullu içerir yapmak kesinlikle daha iyidir . En azından gcc, HotSpot ve Linux çekirdeği bunu yapıyor (kesinlikle zor bir kural değil). Evet, platforma bağımlı olan tek bir işlevle başlayabilir ve aşırıya kaçtığını düşünebilirsiniz, ancak asla böyle kalmaz ve aksi halde hızlı bir şekilde karışıklık haline gelir.