Delphi Boot Camp
Quatre jeux d'arcade pour tester l'App tethering et les capteurs de mouvement

Le , par gvasseur58, Responsable Delphi


Présentée par Elie M. de FMXExpress.com, la quatrième journée du Delphi Boot Camp 2016 a été entièrement dédiée à la création de jeux d'arcade classiques. En fait, par-delà les quatre réalisations complètes qui pourront intéresser les nostalgiques, il s'agissait surtout de montrer en quoi Delphi et son framework FireMonkey pouvaient être utilisés là où on les attend sans doute le moins, tout en introduisant un certain nombre de techniques et concepts modernes.

Le premier jeu proposé, une invasion d'extra-terrestres (Alien Invasion), a été l'occasion d'illustrer la grande polyvalence d'un composant bien plus léger qu'un TImage, à savoir TRectangle, ainsi que la pertinence d'employer TFrame pour réaliser l'interface afin de pouvoir réutiliser des blocs entiers de fonctionnalités. Comme FireMonkey est multiplateforme, le code source a généré aussi bien une application Windows (32 ou 64 bits) qu'une application Apple ou Android .

Après cette mise en bouche, le deuxième jeu proposé a été un exemple d'atterrissage (?) sur Mars (Mars Rocket). Les deux objectifs de la démonstration étaient d'une part d’intégrer un afficheur des meilleurs scores géré par une base SQLite et LiveBindings, et d'autre part d'accéder au capteur de mouvement d'une tablette ou d'un smartphone.



Suivant la découverte progressive de la richesse de FireMonkey, la démonstration s'est poursuivie par un troisième jeu tout aussi classique de destruction de vaisseaux ennemis lors d'un voyage fictif à bord d'une fusée (Rocket Ship Delta). Ce sont les techniques d'animation qui ont alors prévalu (object pooling et sprite sheet animation).


Le dernier jeu dont l'objectif essentiel est de détruire des météores menaçant un vaisseau (Space Rocks) a servi de support à l'emploi de l'App tethering, c'est-à-dire la capacité à interagir avec d'autres applications se trouvant sur la même machine ou sur une machine distante. Ici, les commandes (gamepad) ont été prises en charge par une machine alors que le jeu était affiché sur une autre. On a donc vu un smartphone sous Android ou un iPad piloter un PC sous Windows, sachant que d'autres combinaisons étaient possibles .




Si certains ont regretté de ne pas disposer à l'issue de cette formation d'une application 3D qui aurait démontré l'excellence du produit, il faut reconnaître que les exemples étaient malgré tout intéressants, et bien au-delà de la réalisation de jeux. Il n'est d'ailleurs pas certain que Delphi dispose en ce domaine de compléments tiers à la hauteur des attentes du public des développeurs de jeux. La génération d'applications multiplateformes à partir d'une seule base de code est certainement l'atout majeur de cet EDI aujourd'hui et son utilisation dans les applications mobiles le prouve.

Vous trouverez le code source complet des jeux ici.

Le film de la formation est accessible ici :


Que pensez-vous de cette journée de formation ?
Quel champ d'application reconnaissez-vous à Delphi et à son framework FireMonkey ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Papy214 Papy214 - Membre émérite https://www.developpez.com
le 09/09/2016 à 14:07
Manquant de temps pour voir ça en semaine, je regarderai le tout ce w-e.

FMX est une bonne avancée mais le soit-disant code unique pour du multi-os reste encore incomplet. C'est dommage mais gageons que ça va évoluer.
Avatar de ShaiLeTroll ShaiLeTroll - Expert éminent sénior https://www.developpez.com
le 09/09/2016 à 15:06
J'ai pu lancé AlienInvasionStarter
les autres (MarsRocketStarter, RocketShipDeltaStarter et SpaceRocksStarter ), tous provoques "EReadError - Ancêtre de 'Rectangle2' non trouvé."
Il faut ouvrir les fenêtres et si Delphi est de bonne humeur c'est à dire ne surtout pas utiliser le groupe de projet * mais ouvrir les projets un par un sans groupe de projet
il propose le renommage de 'Rectangle2' en 'CenterPiece'/'AsteroidRect' ou 'Rectangle1', j'ai pris l'un des deux au pif

Une fois avoir corriger chaque projet, ils fonctionnent très bien,
je jetterais un œil au code, je pourrais comparer avec mes vieux code D5 du même genre mais tout moche (juste des carrés )

Curieux, j'ai ré-ouvert le groupe de projet,
et boom, de nouveau Delphi confond les fenêtres qui ont le même nom et le massacre des noms recommence !

Alors un travail très fun de FMXExpress
Mais un à Embarcadero qui ne corrige pas des bugs historiques !
Franchement ce bug du groupe de projet (déjà présent en BCB2007 et DXE2) avec plusieurs projets ayant le même nom de fenêtre plusieurs fois, un classique, qui n'a pas eu la flemme de choisir un nom plus original que MainForm, MainDataModule
Là ou je travaille, on a fait un refactoring de masse pour tout renommer (DFM, PAS ...) en ProjectName_FormName pour éviter tous les doublons et que Delphi se plante de fichier ressource en DesignTime ce qui nuit à la compilation
Avatar de Paul TOTH Paul TOTH - Expert éminent sénior https://www.developpez.com
le 10/09/2016 à 21:44
Bonsoir,

alors je viens de tester sous Berlin les projets AlienAttack et MarsRocket

pour éviter les surprises, j'ai ouvert directement "AlienInvasion.dproj" dans la branche "Full"...et ça compile sans erreur sous Windows.
sous Android (SONY Tablette Z2) ça fonctionne...par contre l'écran est trop grand pour ce jeu, comme on ne peut tirer qu'une roquette à la fois, le temps qu'elle traverse l'écran on s'ennuie

MarsRocket fait une erreur d'accès au démarrage qui ne plante pas le jeu (c'est le MotionSensor qui retourne cette erreur), et j'ai un écran noir sous Android...ce doit être lié, car en effet dans LoadSettings, GyroEnabled est par défaut actif alors qu'il ne l'est pas dans le premier projet....par contre après avoir enregistrer la modif au rechargement j'ai une erreur étrange...


j'ai récupéré les sources d'origine et je ne parviens pas à reproduire ce bug...par contre, en effet en désactivant le gyro le jeu se lance sous Android...et si j'active le gyro, la fusée part droit dans le décors

j'ai compilé rapidement les autres projets sans soucis sous Windows

tient, en faisant un Drag&Drop de AlienInvasion sur Delphi ouvert sur SpaceRocks je retombe sur l'erreur Rectangle1 de Shai...c'est donc bien un problème de confusion entre les différentes unités des différents projets

on pourra reprocher à FMXExpress de ne pas avoir créé un groupe de projets ni d'avoir partagé ce qui est commun entre ces jeux...d'ailleurs ce sont des jeux très similaires, personnellement j'aurai cherché à extraire la logique du jeu de la partie interface pour avoir une sorte de moteur de jeu réutilisable, et pourquoi pas compatible FMX/VCL avec Graphis32, DirectX ou OpenGL pour la partie UI.

mais bon soyons positif, c'est bien de publier des petits jeux Delphi, de montrer ce qu'il est possible de faire, on est encore loin de WoW ou même Minecraft, mais c'est sympa
Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -