Cách đây vài năm, nếu bạn đã viết bằng C và một số tập hợp con của C ++ và sử dụng đủ số lượng trừu tượng nền tảng (thông qua SDL hoặc bất cứ thứ gì), bạn có thể chạy trên mọi nền tảng mà một phiên bản độc lập có thể có trên - Linux, Windows, Mac OS của các phiên bản khác nhau , những thứ tối nghĩa như BeOS và các bảng điều khiển mở như GP2X và Dreamcast sau khi chết. Nếu bạn có hợp đồng cho một nền tảng đóng tại một số thời điểm, bạn có thể chuyển trò chơi của mình sang nền tảng đó với các thay đổi mã "tối thiểu".
Ngày nay, các nhà phát triển độc lập phải sử dụng XNA để có được trên Xbox 360 (và điện thoại Windows sắp ra mắt); không được sử dụng XNA để làm việc ở bất kỳ nơi nào khác ngoài Windows; cho đến gần đây đã phải sử dụng Java trên Android; Flash không chạy trên điện thoại, HTML5 không hoạt động trên IE. Không giống như DirectX so với OpenGL hoặc Windows so với Unix, đây là những thay đổi đối với ngôn ngữ cốt lõi mà bạn viết mã của mình và không thể viết ra mà không có, về cơ bản, viết một trình biên dịch. Bạn có thể chuyển một số logic trò chơi thành tập lệnh và bao gồm trình thông dịch - ngoại trừ khi bạn không thể, vì SDK iPhone không cho phép và hiệu suất bị ảnh hưởng vì không ai cho phép JIT.
Vì vậy, bạn có thể làm gì nếu bạn muốn một trò chơi di động đa nền tảng thực sự, hoặc thậm chí chỉ là một cơ thể quan trọng của mã động cơ và mã logic?
Đây có phải là vấn đề không vì các nền tảng đã bị phân tán một cách cơ bản - thật không đáng để cố gắng nhắm mục tiêu cả iPhone và Xbox 360 với bất kỳ mã được chia sẻ nào vì một trò chơi như vậy sẽ rất tệ? (Tôi thấy điều này rất khó xảy ra. Tôi có thể dễ dàng thấy muốn chia sẻ một trò chơi giữa điện thoại Windows Mobile và Android, hoặc Xbox 360 và iPad.) Các giao diện có mức độ cao đến mức thời gian chuyển không đáng kể? (Tôi có thể tin điều này cho các ứng dụng kinh doanh, nhưng không phải cho các trò chơi có yêu cầu hiệu năng nghiêm ngặt.)
Điều này sẽ trở nên rõ rệt hơn trong tương lai? Là sự phân chia sẽ được, phần nào đáng sợ, vẫn xuống dòng nhà cung cấp? Tất cả chúng ta sẽ dựa vào phần mềm trung gian cấp cao như Flash hay Unity để hoàn thành mọi thứ đa nền tảng chứ?
tl; dr - Có phải là một vấn đề, nó sẽ là một vấn đề lớn hơn trong tương lai, và nếu vậy làm thế nào để chúng ta giải quyết nó?