Cauldron – plateforme et moteur graphique

J’ai maintenant le sujet et les premiers graphismes : il est temps de commencer à s’amuser à coder !

Je n’ai pas décidé sur quelle plateforme je veux que ça tourne. Je travaille sur Mac, ça serait plus facile pour moi si ça tournait sur Mac mais je n’ai jamais codé un programme Mac de ma vie ! Par contre je sais faire du multiplateformes avec Xamarin Forms et la version Mac de XF est en béta depuis un moment. Allez, je tente cette piste. C’est parti pour la création de mon premier projet Mac en Xamarin Forms ; la version 3.1 pour être précis.

Maintenant il me faut un « moteur » graphique. Chez Xamarin, ça parle de CocoSharp, de Urho et de SkiaSharp. Les deux premiers me sont vaguement connus et très bien documentés avec une forte communauté derrière eux grâce au nombre d’années d’existences. Mais SkiaSharp me tente bien, c’est assez neuf et me semble très prometteur. Je tente donc cette piste ! Un jour il faudra que je me lance dans Unity 3D… mais avec ce que j’ai a faire,  je pense que c’est carrément trop puissant rapport à mon besoin. Jai également hésité avec la lib QT.

Pour me mettre à SkiaSharp, j’ai simplement utilisé cet article de blog : https://blog.xamarin.com/drawing-with-skiasharp/

Et c’est un succès, ça fonctionne sur Android, iOS … et sur mon Mac !

 

Pour information, SkiaSharp est une encapsulation de Skia en dotnet utilisable en C#. Skia est un moteur vectoriel graphique, racheté par Google en 2005, codé en C++ et qui est open source. C’est le moteur graphique de Firefox, Androïd et Chrome. C’est ce qui le rend intéressant à utiliser.

 

Pour mon développement, la phase d’affichage sera déclenchée par un « InvalidateSurface » et la constitution de l’affichage sera lors de l’événement « PaintSurface ». Cette constitution d’affichage se fera sur un « canvas » sur lequel je peux dessiner du bitmap et effectuer du scaling avec plusieurs algorithmes de resizing. Bref, tout ce dont j’ai besoin.

Structure du programme :
– Je charge les divers éléments nécessaires (graphismes par exemple)
– Je planifie un calcul du monde du jeu 60 fois par secondes
– Je dessine et affiche le monde du jeu dès qu’il y a un changement

Cadeau, un webinar sur Skia et SkiaSharp : https://channel9.msdn.com/Events/Xamarin/Xamarin-University-Presents-Webinar-Series/SkiaSharp-Graphics-for-XamarinForms