Kilka lat temu, jeśli napisałeś w C i jakimś podzbiorze C ++ i użyłeś wystarczającej liczby abstrakcji platformy (przez SDL lub cokolwiek innego), możesz uruchomić na każdej platformie, na której indie może się dostać - Linux, Windows, Mac OS różnych wersji , niejasne rzeczy, takie jak BeOS, oraz otwarte konsole, takie jak GP2X i Dreamcast po śmierci. Jeśli w pewnym momencie dostałeś kontrakt na zamkniętą platformę, możesz przenieść swoją grę na tę platformę z „minimalnymi” zmianami kodu.
Dzisiaj niezależni programiści muszą korzystać z XNA, aby dostać się na Xbox 360 (i nadchodzący telefon z Windows); nie wolno używać XNA do pracy nigdzie indziej niż Windows; do niedawna musiał korzystać z Java na Androida; Flash nie działa na telefonach, HTML5 nie działa na IE. W przeciwieństwie do np. DirectX vs. OpenGL lub Windows vs. Unix, są to zmiany w podstawowym języku, w którym piszesz swój kod, i nie można na niego nakładać bez pisania kompilatora. Możesz przenieść logikę gry do skryptów i dołączyć interpretera - z wyjątkiem sytuacji, gdy nie możesz, ponieważ iPhone SDK nie pozwala na to, a wydajność spada, ponieważ nikt nie pozwala na JIT.
Co więc możesz zrobić, jeśli chcesz naprawdę wieloplatformową przenośną grę, a nawet znaczną część silnika i kodu logicznego?
Czy to nie jest problem, ponieważ platformy zasadniczo się rozeszły - po prostu nie warto próbować atakować zarówno iPhone'a, jak i Xboxa 360 za pomocą dowolnego wspólnego kodu, ponieważ taka gra byłaby zła? (Uważam to za bardzo mało prawdopodobne. Z łatwością widzę, że chcę udostępnić grę między telefonem z systemem Windows Mobile a telefonem z Androidem lub Xbox 360 i iPadem.) Czy interfejsy są na tak wysokim poziomie, że czas przenoszenia jest znikomy? (Mogę w to uwierzyć w przypadku aplikacji biznesowych, ale nie w przypadku gier o ścisłych wymaganiach dotyczących wydajności).
Czy w przyszłości będzie to bardziej widoczne? Czy podział będzie, choć trochę przerażający, nadal spadać na linie dostawców? Czy wszyscy będziemy polegać na oprogramowaniu pośredniczącym wysokiego poziomu, takim jak Flash lub Unity, aby zrobić coś międzyplatformowego?
tl; dr - Czy przenoszenie problemu jest problemem, czy będzie większym problemem w przyszłości, a jeśli tak, to jak go rozwiązać?