Cổng động cơ của bạn đến từng nền tảng. Không có gì đặc biệt về nó. Nếu bạn có một số mã chỉ dành cho Windows, thì hãy thêm một số logic #ifdef vào tệp hoặc thêm tệp thứ hai (vì vậy bạn có FooWindows.cpp
và FooLinux.cpp
hoặc bất cứ thứ gì) thực hiện tính năng đó trên các HĐH khác mà bạn quan tâm .
Công cụ xuất bản bằng một cú nhấp chuột mà một công cụ như Unity đã được cho phép vì bản thân Unity không bao giờ được sửa đổi bởi người dùng cuối. Bạn chỉ đang viết tập lệnh và dữ liệu, vì vậy công cụ có các nhị phân dựng sẵn cho tất cả các nền tảng và nút xuất bản chỉ gói các nhị phân đó cùng với dữ liệu.
Các công cụ khác dựa vào hệ thống xây dựng và trình biên dịch chéo để tạo trò chơi được biên dịch khi cần, giống như bạn làm với bất kỳ ứng dụng đa nền tảng không phải trò chơi nào.
Đối với những thứ như HTML5, có những công cụ như emscripten có thể biên dịch ứng dụng C ++ để chạy bằng JavaScript. Về cơ bản, bạn chỉ cần tạo một cổng khác cho công cụ của mình cho emscripten (vì nó không thể sử dụng bất kỳ thư viện / tính năng C ++ tùy ý nào).
Bạn không phải viết lại toàn bộ trò chơi của mình, nhưng bạn chắc chắn sẽ phải thực hiện nhiều công việc phát triển, mã hóa và chuyển cho mỗi nền tảng mới mà bạn muốn hỗ trợ.
share/os/<linux>
(hoặcshare/cpu/x86
) và đặt tất cả mã cụ thể của nền tảng vào đó và sau đó bao gồm điều kiện. Đó ít nhất là những gì gcc, HotSpot và nhân Linux làm được (chắc chắn không phải là một quy tắc cứng). Có, bạn có thể bắt đầu chỉ với một chức năng duy nhất phụ thuộc vào nền tảng và nghĩ rằng nó quá mức nhưng nó không bao giờ tồn tại như vậy và nó sẽ trở thành một mớ hỗn độn một cách nhanh chóng.