Alcuni anni fa, se hai scritto in C e alcuni sottoinsiemi di C ++ e hai utilizzato un numero sufficiente di astrazioni di piattaforma (tramite SDL o altro), potresti eseguire su ogni piattaforma su cui un indie potrebbe accedere - Linux, Windows, Mac OS di varie versioni , cose oscure come BeOS e console aperte come GP2X e Dreamcast post-morte. Se a un certo punto hai ottenuto un contratto per una piattaforma chiusa, puoi portare il tuo gioco su quella piattaforma anche con modifiche "minime" al codice.
Oggi, gli sviluppatori indipendenti devono utilizzare XNA per accedere a Xbox 360 (e al prossimo Windows Phone); non deve usare XNA per lavorare altrove tranne Windows; fino a poco tempo fa dovevo usare Java su Android; Flash non funziona sui telefoni, HTML5 non funziona su IE. A differenza, ad esempio, di DirectX vs. OpenGL o Windows vs. Unix, si tratta di modifiche alla lingua principale in cui si scrive il codice e che non è possibile documentare senza, fondamentalmente, scrivere un compilatore. Puoi spostare alcune logiche di gioco negli script e includere un interprete, tranne quando non puoi, perché l'SDK di iPhone non lo consente e le prestazioni ne risentono perché nessuno lo consente.
Quindi cosa puoi fare se vuoi un gioco portatile davvero multipiattaforma o anche solo un corpus significativo di motore e codice logico?
Questo non è un problema perché le piattaforme sono sostanzialmente divergenti - è semplicemente inutile cercare di indirizzare sia un iPhone che la Xbox 360 con un codice condiviso perché un gioco del genere sarebbe male? (Lo trovo molto improbabile. Posso facilmente vedere la voglia di condividere un gioco tra un telefono Windows Mobile e un Android, oppure una Xbox 360 e un iPad.) Le interfacce sono così di alto livello ora che il tempo di porting è trascurabile? (Potrei crederci per le applicazioni aziendali, ma non per i giochi con severi requisiti prestazionali.)
Questo diventerà più pronunciato in futuro? La divisione sarà, ancora un po 'spaventata, ancora in ribasso rispetto alle linee di vendita? Faremo affidamento su middleware di alto livello come Flash o Unity per eseguire operazioni multipiattaforma?
tl; dr - Il porting è un problema, sarà un problema più grande in futuro, e se sì come lo risolviamo?