Портуйте свій двигун на кожну платформу. У цьому немає нічого особливого. Якщо у вас є код, призначений лише для Windows, то або додайте у файл деяку логіку #ifdef, або додайте другий файл (щоб у вас був FooWindows.cpp
і так FooLinux.cpp
чи інакше), який реалізує цю функцію в інших ОС, про які ви дбаєте. .
Публікація одним натисканням кнопки, яку має такий двигун, як Unity, оскільки кінцевий користувач ніколи не змінюється. Ви просто пишете сценарії та дані, тому двигун має заздалегідь вбудовані бінарні файли для всіх платформ, а кнопка публікації просто поєднує ці файли разом із даними.
Інші двигуни покладаються на системи побудови та крос-компілятори для створення компільованої гри, коли це потрібно, як і у будь-якому неігровому кросплатформенному додатку.
Для таких речей, як HTML5, є такі інструменти, як emscripten, які можуть скласти додаток C ++ для запуску в JavaScript. По суті, вам просто потрібно зробити інший порт вашого двигуна для emscripten (оскільки він не може використовувати будь-яку довільну бібліотеку / функцію C ++).
Вам не доведеться переписувати всю свою гру, але вам, безумовно, доведеться зробити багато роботи з розробки, кодування та перенесення для кожної нової платформи, яку ви хочете підтримати.
share/os/<linux>
(абоshare/cpu/x86
) і помістити туди весь специфічний код платформи, а потім зробити умовне включення. Так принаймні те, що роблять gcc, HotSpot та ядро Linux (звичайно, не важке правило). Так, ви можете почати лише з однієї функції, залежної від платформи, і вважаєте, що це надмірно, але вона ніколи не залишається такою, і в іншому випадку це швидко стає безладом.