Je viens de terminer un projet de développement simultané/portable. Pour 4 de mes 5 plateformes, j'utilise Monogame comme base de rendu (ma 5ème est HTML5 Canvas). Vous pouvez voir mes résultats à http://unseenu.wikispaces.com/AnyGUI .
Mes expériences sont ainsi :
Le bon :
J'ai commencé par la version C#/JSIL pour Canvas, car c'était la plus grande inconnue. Mon premier portage après cela a été pour OSX et Monogame.
Le portage OSX s'est déroulé sans problème. J'avais déjà travaillé avec Monogame auparavant et il m'a fallu environ une semaine pour porter ma couche de rendu.
Après cela, il n'a fallu que quelques heures pour faire fonctionner le portage Windows OGL.
Il a fallu environ 2 jours pour faire fonctionner le port iOS. La moitié de ce temps a été consacrée aux problèmes de construction et aux outils iOS. L'autre moitié a consisté à faire fonctionner l'entrée tactile car c'était ma première plateforme mobile.
Je travaille sur Android en ce moment, et c'est le premier endroit où je vois ce qui semble être des problèmes de portabilité de Monogame. L'écrêtage semble être désactivé. En dehors de cela, c'était une question d'heures pour le mettre en place et encore une fois la plupart de ce temps ws obtenir l'environnement de construction droit. Je n'ai pas eu besoin de modifier le code. (Bien que cette chose clipping est un problème de stylo).
Le mauvais :
Je suis sur OSX et les outils peuvent être un peu funky. Le plus gros problème est que le support Monogame pour Xamarin Studio/Monodevelop ne fonctionne pas sur le Mac. Ce n'est pas un problème aussi important qu'il n'y paraît. Les modèles fonctionnent très bien, ce qui ne fonctionne pas, ce sont les références de la bibliothèque. J'ai donc téléchargé Monogame séparément et j'ai modifié les références des bibliothèques dans chaque projet pour qu'elles correspondent aux bibliothèques téléchargées après avoir créé le projet. Une fois que j'ai appris à faire cela, j'ai eu peu de problèmes d'outils.
En général, le C# gère assez mal le contrôle de version. Il est très pointilleux sur les versions des bibliothèques, en partie parce que Microsoft ne voulait pas se soucier de la rétrocompatibilité de .NET.
Cela se manifeste lorsqu'on essaie de faire des choses monogames multiplateformes. J'ai eu beaucoup d'ennuis avec cela dans le passé. Même si l'API monogame est identique, lorsque vous compilez du code à partir de celle-ci, une référence aux bibliothèques de la plate-forme particulière pour Monogame est intégrée à votre code. Ce n'est pas si grave si c'est du code d'application, puisque les applications ont besoin de leur propre construction pour chaque plate-forme de toute façon, mais si vous voulez des bibliothèques intermédiaires, cela signifie que vous avez besoin d'une construction séparée de chaque bibliothèque intermédiaire pour chaque plate-forme, ce qui est inacceptable.
La solution que j'ai trouvée dans ce projet a été de définir ma propre interface qui se situe entre mon jeu et le monogame, de façon à pouvoir injecter le code réel du monogame par injection de dépendance au moment de l'exécution. J'écrirai plus en détail à ce sujet sur mon site.
L'autre problème, bien sûr, c'est que vous avez besoin de Xamarin Mono pour iOS et Android pour développer pour ces plates-formes et cela coûte de l'argent.
La réponse courte est donc la suivante. En général, c'est une bonne API et les implémentations sont pour la plupart fidèles entre les plateformes. La forme sous laquelle elle est présentée et les outils avec lesquels vous devez travailler sont encore un peu rudes et peuvent vous donner du fil à retordre. En fin de compte, ce n'est pas si différent de toutes les autres plateformes de jeu sur lesquelles j'ai travaillé.
0 votes
Mise à jour de septembre 2014 : je l'ai récemment installé et j'obtiens toute une liste horrible d'erreurs basées sur les DLL. Prenez-en ce que vous voulez.