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