Quale linguaggio di programmazione è buono per creare giochi mobili (Android e iOS, entrambi)? Xamarin C# è una buona scelta?
Dipende davvero da quale livello di astrazione sei a tuo agio. Potresti scegliere un approccio completamente nativo, o andare con una soluzione ibrida multipiattaforma. La mia raccomandazione TLDR è Unity, ma se volete sapere perché continuate a leggere.
Android
Per implementare giochi con grafica 2D o 3D in Android potete scegliere OpenGL ES 3.1 (disponibile su API 21 e superiori) Vulkan (API 24 e superiori), o Unity. Se scegliete di andare con Vulkan allora preparatevi a scrivere molto codice C++ oltre al tradizionale codice Android Java/Kotlin. Scrivere la vostra grafica in OpenGL può essere un'esperienza educativa, ma non è terribilmente pragmatica, dato che non gode né dei vantaggi in termini di prestazioni di una soluzione Vulkan, né dei vantaggi write-once-run-anywhere di Unity.
È possibile esportare un progetto Unity in Android Studio, ma è necessario utilizzare BuildTools versione '27.0.3' e gradle versione '3.1.3' per il vostro progetto Android. Il progetto esportato ha un componente di visualizzazione Unity che si incorpora nel layout dell'attività/frammento e attorno al quale si costruisce il resto della tua app Android. Tieni presente che l'API 28 non era supportata da Unity quando l'ho usato l'ultima volta (fine 2018) e l'utilizzo dell'ultima versione di gradle ti costringe a utilizzare l'API 28, da qui il requisito della versione di gradle '3.1.3'. Unity per Android richiede anche che tu abbia installato NDK (Native Development Kit) e CMake. Questi possono essere aggiunti più facilmente aprendo Android Studio e installandoli dalla barra dei menu sotto File > Preferenze > Aspetto e Comportamento > Impostazioni di Sistema > Android SDK > SDK Tools.
iOS
Per implementare giochi con grafica 2D o 3D in iOS è possibile utilizzare SpriteKit (2D), SceneKit (3D), OpenGL (deprecato in iOS 12 e successivi), Metal (supportato solo su iOS 9.0 e successivi), o Unity. Non ho pasticciato molto con Metal, ma come Vulkan fa un uso pesante di C++. Di nuovo, usare OpenGL è estremamente educativo, ma in definitiva non è raccomandato perché non sarà performante come una soluzione Metal e ha l'ulteriore svantaggio di essere deprecato su iOS e MacOS da Apple.
Esportare progetti Unity in un progetto iOS Xcode è abbastanza simile a esportarli in un progetto Android Studio, con due eccezioni. La prima è che non sarete in grado di eseguire l'applicazione in un simulatore, quindi avrete bisogno di un dispositivo fisico per vedere il prodotto finito. La seconda è che la logica della vista è esportata come ObjectiveC, quindi dovrete essere a vostro agio nello scrivere l'intero progetto in ObjectiveC, o accettare che nessuno del vostro codice esportato da Unity sarà in grado di fare riferimento a qualcosa dal resto dell'app iOS, poiché Objective C non può chiamare il codice nativo Swift (per progettazione).
Xamarin
Non ho mai usato Xamarin specificamente per lo sviluppo di giochi, ma questo non significa che non si possa fare. Xamarin stesso non risolve la questione dello stack tecnologico da utilizzare per il vostro gioco, con MonoGame, Sprite Kit, Scene Kit e OpenTK, tutti disponibili come opzioni. MonoGame in particolare è stato utilizzato dagli sviluppatori di Fez e Bastion. Le applicazioni sviluppate utilizzando MonoGame possono essere destinate a iOS, MacOS, Android, Windows, PS4, Xbox One e Nintendo Switch. Potete leggere di più qui se siete curiosi: Introduzione allo sviluppo di giochi con Xamarin - Xamarin
Articoli simili
- In quale linguaggio di programmazione è codificato Netflix? Come si usa questo linguaggio?
- Qual è la differenza tra linguaggio macchina, linguaggio assembly e linguaggio di alto livello nei computer?
- Posso fare un'app come Snapchat con C#/Xamarin.forms ed eseguirla su iOS e Android? Come?
- Se voglio sviluppare applicazioni per Android e iOS, quale linguaggio di programmazione dovrei imparare?