SlideShare a Scribd company logo
1 of 61
Download to read offline
Utiliser FireMonkey
comme moteur de
jeux vidéo
Webinaire du 11 décembre 2021
PRÉSENTATEUR
MVP Embarcadero
Prestataire informatique freelance et formateur Delphi
Editeur de Zone-Abo et de nombreux sites accessibles
gratuitement, sur abonnement mensuel ou annuel.
https://zone-abo.fr
CV et contacts :
https://www.linkedin.com/in/patrickpremartin/
Outils Embarcadero
Les meilleurs outils de développement multi-
plateformes. Créez une fois et déployez des
applications modernes sur chaque plateforme.
Support Technique
Nos techniciens sont à votre service à tout
moment pour répondre à vos questions et
vous fournir des informations sûres.
Distributeur Officiel
Partenaire exclusif de Embarcadero
Technologies, largement reconnu pour
ses produits de programmation primés.
B A R N S T E N
QUI
Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
FORMATION
Olf Software est centre de formation référencé sur
Datadock.
Des formations personnalisées ou « clé en main » à
Delphi et d’autres technologies sont dispensées à
distance (sur Zoom).
https://se-former-a-delphi.fr
R E S S O U R C E S D E L P H I
AUTO
Une formation d’initiation à la programmation, Delphi,
VCL et FireMonkey de presque 60 heures disponible
gratuitement.
Des cours plus spécifiques dédiés à Delphi et son
écosystème réservés aux abonnés Zone-Abo.
https://apprendre-delphi.fr
R E S S O U R C E S D E L P H I
DEVELOPPEUR
Blog sur Delphi et le Pascal.
De l’actualité, des articles techniques, des annonces de
conférences, présentations et formations de groupe.
https://developpeur-pascal.fr
R E S S O U R C E S D E L P H I
SERIAL
Rediffusion gratuite de webinaires et conférences liées à
Delphi ou d’autres technologies de développement.
Des vidéos de codage en direct et des ressources
réservées aux abonnés Zone-Abo.
https://serialstreameur.fr
R E S S O U R C E S D E L P H I
DELPHI
Un catalogue de livres techniques en lien avec la
programmation Pascal ou dédiés à Delphi.
Une API donnant accès aux livres publiés depuis 1980 et
servant aussi de bac à sable pour s’exercer avec REST.
https://delphi-books.com
R E S S O U R C E S D E L P H I
AU
• Qu’est-ce qu’un moteur de jeux vidéo ?
• Qu’est-ce que FireMonkey ?
• Pourquoi développer des jeux avec FMX ?
• Vraiment ? Des jeux en Delphi ?
• Musique d’ambiance et effets sonores
• Les écrans et scènes du jeu
• L’interface utilisateur
• Sprites, animations et collisions
• Et pour la 3D ?
© Patrick Prémartin / developpeur-pascal.fr
INTROD
Développer des jeux vidéos est utile et instructif
sur bien des points :
- apprendre à optimiser son code,
- apprendre la programmation,
- faire des maths et utiliser ce qu’on a appris à
l’école,
- plaisir de coder pour s’amuser ensuite avec
ses créations
© Patrick Prémartin / developpeur-pascal.fr
INTROD
Bien entendu, les développeurs en entreprise ou
prestataires ont peu l’occasion de s’y adonner
durant leurs heures de travail, mais certaines
connaissances apportées par les jeux pourraient
pourtant leur être utiles…
© Patrick Prémartin / developpeur-pascal.fr
INTROD
Le Pascal et Delphi se prêtent très bien au
développement de jeux, pour le fun ou pour la
diffusion sur les plateformes spécialisées.
Aujourd’hui je vous propose de découvrir en quoi
FireMonkey est génial pour cette activité.
© Patrick Prémartin / developpeur-pascal.fr
MOTEUR DE JEUX VIDEO
Un moteur de jeux vidéo est un ensemble
d’outils, de librairies et de modules pour créer
des jeux.
Ca peut être un SDK, un IDE ou un mélange.
Il donne accès aux graphiques, sons et
périphériques.
© Patrick Prémartin / developpeur-pascal.fr
MOTEUR DE JEUX VIDEO
Il existe des centaines de moteurs et outils de
création de jeux.
Les plus connus en ce moment : Unreal Engine et
Unity.
Cf Wikipédia (liste loin d’être exhaustive) :
https://fr.wikipedia.org/wiki/Liste_de_moteurs_d
e_jeu
© Patrick Prémartin / developpeur-pascal.fr
MOTEUR DE JEUX VIDEO
Certains logiciels de développement de jeux
vidéo sont développés en Pascal.
D’autres sont disponibles sous forme de
composants ou d’unités permettant de se greffer
à Free Pascal, Lazarus et bien entendu Delphi.
Dans les plus réputés il y a Castle Game Engine.
https://castle-engine.io
© Patrick Prémartin / developpeur-pascal.fr
MOTEUR DE JEUX VIDEO
Il y a aussi :
- Gorilla 3D Framework
https://www.gorilla3d.de
- Apus Game Engine
https://github.com/Cooler2/ApusGameEngine
- SDL2 for Pascal
https://github.com/PascalGameDevelopment/
SDL2-for-Pascal
© Patrick Prémartin / developpeur-pascal.fr
MOTEUR DE JEUX VIDEO
Et plein d’autres : Andorra 2D, Turbu, Asphyre,
DelphiX, Rage3D, …
https://wiki.freepascal.org/Game_Engine
© Patrick Prémartin / developpeur-pascal.fr
FIREMONKEY
FireMonkey est le framework multiplateforme
livré avec Delphi depuis la version XE2.
Il est inspiré de la VCL pour Windows mais prend
en charge Windows, macOS, iOS, Linux et Android
(selon la version de Delphi et les compilateurs
disponibles).
© Patrick Prémartin / developpeur-pascal.fr
FIREMONKEY
FireMonkey sert d’intermédiaire entre le
développeur Pascal et les API ou SDK du système
d’exploitation.
Embarcadero fournit un ensemble de
compilateurs pour les systèmes d’exploitation et
processeurs ciblés, la RTL, des composants visuels
et non visuels.
© Patrick Prémartin / developpeur-pascal.fr
FIREMONKEY
On reste sous Delphi et on a accès aux
commandes, API et SDK de chaque système, mais
pas besoin de se les taper dans d’autres langages.
Une équipe de développeurs Pascal peut tout
faire sans avoir à apprendre Flutter, Kotlin, C#,
.Net, C, C++, Objective-C, Swift, … selon les
modes et besoins du moment.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI DEVELOPPER
La première réponse qui me vient est simplement
« pourquoi pas ? » mais il y en a plein d’autres :
- FireMonkey dessine tout plutôt qu’utiliser les
composants natifs par défaut.
- Les éléments visuels sont des ensembles de
formes graphiques qui peuvent être adaptés
sans programmation.
- On peut faire de la 2D, de la 3D et mélanger
les deux.
© Patrick Prémartin / developpeur-pascal.fr
POURQUOI DEVELOPPER
La première réponse qui me vient est simplement
« pourquoi pas ? » mais il y en a plein d’autres :
- Interface tactile, souris, clavier sont gérés par
Delphi. Ca fonctionne sur les logiciels
classiques et donc pour les jeux.
- On peut utiliser des événements, propriétés,
horloges, déclencheurs, animations,
processus, images, …
© Patrick Prémartin / developpeur-pascal.fr
VRAIMENT ?
Utiliser Delphi et plus particulièrement FMX pour
faire du game coding n’est pas une simple lubie
de ma part… Nous sommes nombreux à le faire !
On trouve beaucoup d’exemples de jeux vidéos
développés en Pascal sur Internet et notamment
en open source sur GitHub :
https://github.com/topics/delphi-game
© Patrick Prémartin / developpeur-pascal.fr
VRAIMENT ?
J’en ai développé en direct sur Twitch en 2021. La
plupart est disponible sur https://gamolf.itch.io
Vous retrouverez les sources de certains sur
https://github.com/DeveloppeurPascal/DevPas-
Games-Pack
Les rediffusions des sessions de codage sont sur
https://serialstreameur.fr/jeux-video.php
© Patrick Prémartin / developpeur-pascal.fr
VRAIMENT ?
Vous pourrez aussi trouver des exemples sur la
rubrique showcase du blog d’Embarcadero :
https://blogs.embarcadero.com/category/showca
se/
© Patrick Prémartin / developpeur-pascal.fr
VRAIMENT ?
Ou faire un tour sur le Play Store de Google :
https://www.google.com/search?q=%22com.emb
arcadero.%22+game+site%3Aplay.google.com
Avant de publier vos logiciels, changez le
packagename de vos applications pour ne pas
vous retrouver dans cette liste…
© Patrick Prémartin / developpeur-pascal.fr
DEVELOPPER
En pratique, ça marche comment ?
Comme pour n’importe quel logiciel, sauf qu’on
se préoccupe pour du look et de l’interface
graphique.
Plusieurs projets GitHub pourront vous mettre le
pied à l’étrier.
© Patrick Prémartin / developpeur-pascal.fr
DEVELOPPER
Delphi FMX Game Snippets :
https://github.com/DeveloppeurPascal/DelphiFM
XGameSnippets
Des exemples de fonctionnalités classiques dans
les jeux vidéo, codées en Delphi, parfois
disponibles avec des explications en vidéo.
© Patrick Prémartin / developpeur-pascal.fr
DEVELOPPER
FMX Game Engine :
https://github.com/DeveloppeurPascal/FMXGam
eEngine
Un projet en développement qui regroupera les
unités développées pour mes jeux et des
composants afin de simplifier encore plus
l’utilisation de FMX comme moteur de jeux.
© Patrick Prémartin / developpeur-pascal.fr
MUSIQUES
Delphi avec le composant TMediaPlayer qui
permet de lire des fichiers sons pris en charge par
les différentes plateformes.
Utiliser du MP3 pour des boucles musicales
d’ambiance et du WAV pour des bruitages
ponctuels passe très bien.
© Patrick Prémartin / developpeur-pascal.fr
MUSIQUES
Regardons par exemple l’unité uMusicLoop.pas
proposée avec DelphiFMXGameSnippets et
comment je l’utilise dans un cas réel.
Þ Démos de « Delphi FMX Game Snippets »
Þ Revue de code du jeu « Egg Hunter »
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Pour les différents écrans de jeux j’utilise des
TForm, TFrame ou TLayout selon mes besoins,
comme je le fais pour des applications mobiles en
FMX.
Ca évite les problèmes de multi fenêtrage dont on
a rarement (= jamais ?) besoin dans un jeu vidéo.
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
FireMonkey a un gros avantage par rapport à la
VCL : tout composant visuel est un conteneur.
On peut facilement empiler des composants les
uns dans les autres sans programmer quoi que ce
soit pour obtenir le rendu visuel qu’on désire.
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Avec les nombreux alignements proposés, la
possibilité de changer l’opacité, l’échelle et l’angle
de rotation de tout composants visuel, FMX rend
la vie du développeur de jeux plus simple.
Pour les éléments de jeu je passe par les formes
(TRectangle, TCircle), les dessins vectoriels
(TPath) et les images (TBitmap, TImage, TGlyph).
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
FireMonkey propose aussi des animations
(TFloatAnimation) gérées directement sous forme
de composants non visuels à appliquer sur les
propriétés des autres composants et des effets
graphiques (TShadowEffect, TGlowEffect, …).
A part pour les tests de collisions, coder un jeu
sans coder est quasiment possible.
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
On peut soit utiliser des composants relookés
directement sur l’écran de jeu comme on peut
tout faire en background selon nos besoins.
Pour un casse briques, pas beaucoup
d’interactions sont à gérer, on peut tout faire sous
forme de composants classiques.
Þ Démo « casse briques » dispo sur Github
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Pour un jeu plus complexe il peut être nécessaire
de développer notre propre moteur d’affichage.
Ca a été le cas avec « Egg Hunter » où j’avais
envie d’avoir un affichage à 60 FPS.
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Je l’ai codé avec un TTimer, une TImage à l’écran,
un TBitmap géré ailleurs et une copie régulière de
son contenu verrouillé par un TMutex.
Þ Revue de code « Egg Hunter »
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Dans Delphi nous n’avons pas accès au Z-Index
des éléments à l’écran (la profondeur d’affichage).
Il dépend de l’ordre d’affichage et de
l’empilement parent / enfants.
On doit utiliser BringToFront pour le modifier par
code.
© Patrick Prémartin / developpeur-pascal.fr
ECRANS
Ca ne veut pas dire qu’on ne peut pas gérer le Z-
Index dans nos programmes.
Þ Démo « vagues » de DelphiFMXGameSnippets
Þ Démo du jeu « Ok Ducky ! »
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
Delphi est idéal pour développer des interfaces
utilisateurs à l’aide du système de composants et
de ses concepteurs de fiches.
Une fois encore ce qui fonctionne dans les
logiciels classiques est utilisable pour les jeux
vidéo (là où d’autres moteurs ont du mal).
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
Utilisez les formes descendantes de TShape, des
images, des TText ou TLabel, des champs de
saisie, des boutons, …
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
FireMonkey bénéficie d’un système de styles qui
permet de relooker les composants habituels aux
couleurs du jeu sur lequel on travaille mais on
peut aussi très simplement développer nos
propres éléments d’interface.
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
J’ai développé le jeu « Christmas Game » à
l’occasion de la conférence Code Rage 2018 où je
montrais comment personnaliser certains
éléments à partir d’un mélange d’images et de
formes.
Vous pouvez vous en inspirer facilement dans vos
logiciels (jeux vidéo ou pas d’ailleurs).
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
Deux vidéos sur « Christmas Game » vous
attendent sur https://serialstreameur.fr/jv-
christmas-game.php
Les sources du jeu sont sur
https://github.com/DeveloppeurPascal/CodeRag
e2018-ChristmasGame
© Patrick Prémartin / developpeur-pascal.fr
INTERFACE
Autre exemple avec le jeu vidéo « Egg Hunter »
dans lequel j’ai personnalisé des boutons, des
boites de dialogue, des barres de progression et
des trackbar à l’aide d’éléments graphiques, de
formes, de cadres et d’un peu de codage.
Þ Revue de code « Egg Hunter »
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
FMX est graphique.
Les sprites sont juste des images qu’on bouge à
l’écran (ou en dehors).
Rien de plus simple que de coller ces images sur
des formes graphiques approchantes et les
déplacer à l’écran.
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
Chaque descendant de TShape a une propriété
Fill qui permet d’y mettre un TBitmap en fond.
TRectangle et TCircle collent à la majorité des
éléments de jeux.
Pour le stockage des images, on peut utiliser les
TImageList ou les mettre directement dans le
composant.
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
L’animation de sprites se fait par programmation
si on le désire, mais on peut aussi utiliser le
TBitmapListAnimation qui permet d’enchainer
des images sur un TBitmap à partir d’une
spritesheet sur une durée spécifiée.
=> Démo « anim sprite explosion » et « anim
sprite personnage » de DelphiFMXGameSnippets
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
Concernant les collisions, une partie est déjà
disponible dans Delphi car le moteur s’en sert
pour tester où on clique.
Entre rectangles j’utilise IntersectRect() qui est là
depuis le début !
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
Pour les cercles, c’est simplement la distance
entre leur centre et la somme de leur rayon.
Entre un cercle et un rectangle il faut calculer la
distance par rapport aux angles.
Un peu de maths avec des formules qu’on
retrouve sur Internet en cherchant un peu.
© Patrick Prémartin / developpeur-pascal.fr
SPRITES
Exemple avec le jeu « Soap Bubbles » disponible
sur https://gamolf.itch.io/soap-bubbles et dont
une version light avait d’abord été développée et
intégrée à la librairie « Delphi FMX Game
Snippets » dispo sur GitHub.
Þ Revue de code « jeu des cercles »
© Patrick Prémartin / developpeur-pascal.fr
JEUX VIDEO
FireMonkey propose aussi tout ce qu’il faut pour
faire de la 3D. Regardez ce que fait Grégory
Bersegeay sur son compte GitHub :
- 3D Pong
https://github.com/gbegreg/FMXPong
- FMX Corridor
https://github.com/gbegreg/FMXCorridor
- FMX Island
https://github.com/gbegreg/FMXISland
© Patrick Prémartin / developpeur-pascal.fr
CONCL
© Patrick Prémartin / developpeur-pascal.fr
Avec tout ça j’espère vous avoir démontré que
FireMonkey est à la fois pratique et simple
d’utilisation pour développer des jeux vidéo
(petits comme plus complexes).
Les capacités multiplateforme de Delphi et FMX
permettent de diffuser nos créations un peu
partout.
(RE)VOIR
© Patrick Prémartin / developpeur-pascal.fr
La rediffusion de ce webinaire sera disponible
dans quelques jours sur la chaîne YouTube de
Barnsten :
https://www.youtube.com/c/BarnstenFrance/vid
eos
et dès demain dans la rubrique « webinaires
Delphi » de Serial Streameur sur
https://serialstreameur.fr/webinaire-
20211211.php
PLUS SUR
© Patrick Prémartin / developpeur-pascal.fr
Pour des ressources complémentaires et accéder
aux exemples rendez-vous sur le blog
Développeur Pascal :
https://developpeur-pascal.fr/p/_200p-
webinaire-du-11-decembre-2021-utiliser-
firemonkey-comme-moteur-de-jeu-video.html
PROCHAINS
© Patrick Prémartin / developpeur-pascal.fr
Stream Delphi sur l’Advent of Code dimanche de
10 heures à midi tout le mois de décembre.
Du développement web en soirée la semaine.
Planning de directs sur Twitch :
https://www.twitch.tv/patrickpremartin/schedule
Planning de webinaires :
https://developpeur-pascal.fr/p/_6007-
webinaires.html
DELPHI
© Patrick Prémartin / developpeur-pascal.fr
Grégory Bersegeay a rédigé plusieurs articles sur
le développement de jeux vidéo pour le magazine
Programmez! (d’autres arrivent) :
- Créer son jeu 2D avec Delphi
https://www.programmez.com/magazine/progra
mmez-247-pdf
- Labyrinthe en 3D avec Delphi
https://www.programmez.com/magazine/progra
mmez-248-pdf
LIVRES
© Patrick Prémartin / developpeur-pascal.fr
Ces livres sont sortis ce trimestre,
retrouvez-les sur https://delphi-books.com
QUESTIONS
© Patrick Prémartin / developpeur-pascal.fr
CONTACTEZ NOUS

More Related Content

Similar to Utiliser FireMonkey comme moteur de jeux vidéo

Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphipprem
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMXpprem
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitairespprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Androidpprem
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distancepprem
 
Boite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyBoite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyGeoffrey SpeachMe
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilespprem
 
Rapport de stage genie logiciel awoufack tedem adeline encadreur kamleu nou...
Rapport de stage genie logiciel awoufack tedem adeline encadreur   kamleu nou...Rapport de stage genie logiciel awoufack tedem adeline encadreur   kamleu nou...
Rapport de stage genie logiciel awoufack tedem adeline encadreur kamleu nou...Emeric Kamleu Noumi
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobileMartin Arvisais
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilespprem
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLpprem
 
Introduction à flash - session 1
Introduction à flash - session 1Introduction à flash - session 1
Introduction à flash - session 1saeraphin
 
Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Yannick Comte
 
RPG : Développez des applications graphiques avec Silverdev
RPG : Développez des applications graphiques avec SilverdevRPG : Développez des applications graphiques avec Silverdev
RPG : Développez des applications graphiques avec SilverdevSilverDev by Experia
 

Similar to Utiliser FireMonkey comme moteur de jeux vidéo (20)

Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Déploiement et débogage à distance
Déploiement et débogage à distanceDéploiement et débogage à distance
Déploiement et débogage à distance
 
Boite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe AcademyBoite à outil du formateur sur SpeachMe Academy
Boite à outil du formateur sur SpeachMe Academy
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Rapport de stage genie logiciel awoufack tedem adeline encadreur kamleu nou...
Rapport de stage genie logiciel awoufack tedem adeline encadreur   kamleu nou...Rapport de stage genie logiciel awoufack tedem adeline encadreur   kamleu nou...
Rapport de stage genie logiciel awoufack tedem adeline encadreur kamleu nou...
 
Logiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufcLogiciels 3d-112-ktcufc
Logiciels 3d-112-ktcufc
 
Actionscript: du web au mobile
Actionscript: du web au mobileActionscript: du web au mobile
Actionscript: du web au mobile
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
 
titre
titretitre
titre
 
Apache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéroApache Cordova 3.3 de zéro
Apache Cordova 3.3 de zéro
 
Plugins Xcode
Plugins XcodePlugins Xcode
Plugins Xcode
 
Introduction à flash - session 1
Introduction à flash - session 1Introduction à flash - session 1
Introduction à flash - session 1
 
Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3Réalité virtuelle + Open source = <3
Réalité virtuelle + Open source = <3
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
RPG : Développez des applications graphiques avec Silverdev
RPG : Développez des applications graphiques avec SilverdevRPG : Développez des applications graphiques avec Silverdev
RPG : Développez des applications graphiques avec Silverdev
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 

More from pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game enginepprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environmentpprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeypprem
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphipprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLpprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeypprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphipprem
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de donnéespprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de fraispprem
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...pprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succèspprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internetpprem
 
Trafic
TraficTrafic
Traficpprem
 

More from pprem (14)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4...
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Utiliser FireMonkey comme moteur de jeux vidéo

  • 1. Utiliser FireMonkey comme moteur de jeux vidéo Webinaire du 11 décembre 2021
  • 2. PRÉSENTATEUR MVP Embarcadero Prestataire informatique freelance et formateur Delphi Editeur de Zone-Abo et de nombreux sites accessibles gratuitement, sur abonnement mensuel ou annuel. https://zone-abo.fr CV et contacts : https://www.linkedin.com/in/patrickpremartin/
  • 3. Outils Embarcadero Les meilleurs outils de développement multi- plateformes. Créez une fois et déployez des applications modernes sur chaque plateforme. Support Technique Nos techniciens sont à votre service à tout moment pour répondre à vos questions et vous fournir des informations sûres. Distributeur Officiel Partenaire exclusif de Embarcadero Technologies, largement reconnu pour ses produits de programmation primés. B A R N S T E N QUI Site : https://www.barnsten.com – Contacts FR : equipe@barnsten.com
  • 4. FORMATION Olf Software est centre de formation référencé sur Datadock. Des formations personnalisées ou « clé en main » à Delphi et d’autres technologies sont dispensées à distance (sur Zoom). https://se-former-a-delphi.fr R E S S O U R C E S D E L P H I
  • 5. AUTO Une formation d’initiation à la programmation, Delphi, VCL et FireMonkey de presque 60 heures disponible gratuitement. Des cours plus spécifiques dédiés à Delphi et son écosystème réservés aux abonnés Zone-Abo. https://apprendre-delphi.fr R E S S O U R C E S D E L P H I
  • 6. DEVELOPPEUR Blog sur Delphi et le Pascal. De l’actualité, des articles techniques, des annonces de conférences, présentations et formations de groupe. https://developpeur-pascal.fr R E S S O U R C E S D E L P H I
  • 7. SERIAL Rediffusion gratuite de webinaires et conférences liées à Delphi ou d’autres technologies de développement. Des vidéos de codage en direct et des ressources réservées aux abonnés Zone-Abo. https://serialstreameur.fr R E S S O U R C E S D E L P H I
  • 8. DELPHI Un catalogue de livres techniques en lien avec la programmation Pascal ou dédiés à Delphi. Une API donnant accès aux livres publiés depuis 1980 et servant aussi de bac à sable pour s’exercer avec REST. https://delphi-books.com R E S S O U R C E S D E L P H I
  • 9. AU • Qu’est-ce qu’un moteur de jeux vidéo ? • Qu’est-ce que FireMonkey ? • Pourquoi développer des jeux avec FMX ? • Vraiment ? Des jeux en Delphi ? • Musique d’ambiance et effets sonores • Les écrans et scènes du jeu • L’interface utilisateur • Sprites, animations et collisions • Et pour la 3D ? © Patrick Prémartin / developpeur-pascal.fr
  • 10. INTROD Développer des jeux vidéos est utile et instructif sur bien des points : - apprendre à optimiser son code, - apprendre la programmation, - faire des maths et utiliser ce qu’on a appris à l’école, - plaisir de coder pour s’amuser ensuite avec ses créations © Patrick Prémartin / developpeur-pascal.fr
  • 11. INTROD Bien entendu, les développeurs en entreprise ou prestataires ont peu l’occasion de s’y adonner durant leurs heures de travail, mais certaines connaissances apportées par les jeux pourraient pourtant leur être utiles… © Patrick Prémartin / developpeur-pascal.fr
  • 12. INTROD Le Pascal et Delphi se prêtent très bien au développement de jeux, pour le fun ou pour la diffusion sur les plateformes spécialisées. Aujourd’hui je vous propose de découvrir en quoi FireMonkey est génial pour cette activité. © Patrick Prémartin / developpeur-pascal.fr
  • 13. MOTEUR DE JEUX VIDEO Un moteur de jeux vidéo est un ensemble d’outils, de librairies et de modules pour créer des jeux. Ca peut être un SDK, un IDE ou un mélange. Il donne accès aux graphiques, sons et périphériques. © Patrick Prémartin / developpeur-pascal.fr
  • 14. MOTEUR DE JEUX VIDEO Il existe des centaines de moteurs et outils de création de jeux. Les plus connus en ce moment : Unreal Engine et Unity. Cf Wikipédia (liste loin d’être exhaustive) : https://fr.wikipedia.org/wiki/Liste_de_moteurs_d e_jeu © Patrick Prémartin / developpeur-pascal.fr
  • 15. MOTEUR DE JEUX VIDEO Certains logiciels de développement de jeux vidéo sont développés en Pascal. D’autres sont disponibles sous forme de composants ou d’unités permettant de se greffer à Free Pascal, Lazarus et bien entendu Delphi. Dans les plus réputés il y a Castle Game Engine. https://castle-engine.io © Patrick Prémartin / developpeur-pascal.fr
  • 16. MOTEUR DE JEUX VIDEO Il y a aussi : - Gorilla 3D Framework https://www.gorilla3d.de - Apus Game Engine https://github.com/Cooler2/ApusGameEngine - SDL2 for Pascal https://github.com/PascalGameDevelopment/ SDL2-for-Pascal © Patrick Prémartin / developpeur-pascal.fr
  • 17. MOTEUR DE JEUX VIDEO Et plein d’autres : Andorra 2D, Turbu, Asphyre, DelphiX, Rage3D, … https://wiki.freepascal.org/Game_Engine © Patrick Prémartin / developpeur-pascal.fr
  • 18. FIREMONKEY FireMonkey est le framework multiplateforme livré avec Delphi depuis la version XE2. Il est inspiré de la VCL pour Windows mais prend en charge Windows, macOS, iOS, Linux et Android (selon la version de Delphi et les compilateurs disponibles). © Patrick Prémartin / developpeur-pascal.fr
  • 19. FIREMONKEY FireMonkey sert d’intermédiaire entre le développeur Pascal et les API ou SDK du système d’exploitation. Embarcadero fournit un ensemble de compilateurs pour les systèmes d’exploitation et processeurs ciblés, la RTL, des composants visuels et non visuels. © Patrick Prémartin / developpeur-pascal.fr
  • 20. FIREMONKEY On reste sous Delphi et on a accès aux commandes, API et SDK de chaque système, mais pas besoin de se les taper dans d’autres langages. Une équipe de développeurs Pascal peut tout faire sans avoir à apprendre Flutter, Kotlin, C#, .Net, C, C++, Objective-C, Swift, … selon les modes et besoins du moment. © Patrick Prémartin / developpeur-pascal.fr
  • 21. POURQUOI DEVELOPPER La première réponse qui me vient est simplement « pourquoi pas ? » mais il y en a plein d’autres : - FireMonkey dessine tout plutôt qu’utiliser les composants natifs par défaut. - Les éléments visuels sont des ensembles de formes graphiques qui peuvent être adaptés sans programmation. - On peut faire de la 2D, de la 3D et mélanger les deux. © Patrick Prémartin / developpeur-pascal.fr
  • 22. POURQUOI DEVELOPPER La première réponse qui me vient est simplement « pourquoi pas ? » mais il y en a plein d’autres : - Interface tactile, souris, clavier sont gérés par Delphi. Ca fonctionne sur les logiciels classiques et donc pour les jeux. - On peut utiliser des événements, propriétés, horloges, déclencheurs, animations, processus, images, … © Patrick Prémartin / developpeur-pascal.fr
  • 23. VRAIMENT ? Utiliser Delphi et plus particulièrement FMX pour faire du game coding n’est pas une simple lubie de ma part… Nous sommes nombreux à le faire ! On trouve beaucoup d’exemples de jeux vidéos développés en Pascal sur Internet et notamment en open source sur GitHub : https://github.com/topics/delphi-game © Patrick Prémartin / developpeur-pascal.fr
  • 24. VRAIMENT ? J’en ai développé en direct sur Twitch en 2021. La plupart est disponible sur https://gamolf.itch.io Vous retrouverez les sources de certains sur https://github.com/DeveloppeurPascal/DevPas- Games-Pack Les rediffusions des sessions de codage sont sur https://serialstreameur.fr/jeux-video.php © Patrick Prémartin / developpeur-pascal.fr
  • 25. VRAIMENT ? Vous pourrez aussi trouver des exemples sur la rubrique showcase du blog d’Embarcadero : https://blogs.embarcadero.com/category/showca se/ © Patrick Prémartin / developpeur-pascal.fr
  • 26. VRAIMENT ? Ou faire un tour sur le Play Store de Google : https://www.google.com/search?q=%22com.emb arcadero.%22+game+site%3Aplay.google.com Avant de publier vos logiciels, changez le packagename de vos applications pour ne pas vous retrouver dans cette liste… © Patrick Prémartin / developpeur-pascal.fr
  • 27. DEVELOPPER En pratique, ça marche comment ? Comme pour n’importe quel logiciel, sauf qu’on se préoccupe pour du look et de l’interface graphique. Plusieurs projets GitHub pourront vous mettre le pied à l’étrier. © Patrick Prémartin / developpeur-pascal.fr
  • 28. DEVELOPPER Delphi FMX Game Snippets : https://github.com/DeveloppeurPascal/DelphiFM XGameSnippets Des exemples de fonctionnalités classiques dans les jeux vidéo, codées en Delphi, parfois disponibles avec des explications en vidéo. © Patrick Prémartin / developpeur-pascal.fr
  • 29. DEVELOPPER FMX Game Engine : https://github.com/DeveloppeurPascal/FMXGam eEngine Un projet en développement qui regroupera les unités développées pour mes jeux et des composants afin de simplifier encore plus l’utilisation de FMX comme moteur de jeux. © Patrick Prémartin / developpeur-pascal.fr
  • 30. MUSIQUES Delphi avec le composant TMediaPlayer qui permet de lire des fichiers sons pris en charge par les différentes plateformes. Utiliser du MP3 pour des boucles musicales d’ambiance et du WAV pour des bruitages ponctuels passe très bien. © Patrick Prémartin / developpeur-pascal.fr
  • 31. MUSIQUES Regardons par exemple l’unité uMusicLoop.pas proposée avec DelphiFMXGameSnippets et comment je l’utilise dans un cas réel. Þ Démos de « Delphi FMX Game Snippets » Þ Revue de code du jeu « Egg Hunter » © Patrick Prémartin / developpeur-pascal.fr
  • 32. ECRANS Pour les différents écrans de jeux j’utilise des TForm, TFrame ou TLayout selon mes besoins, comme je le fais pour des applications mobiles en FMX. Ca évite les problèmes de multi fenêtrage dont on a rarement (= jamais ?) besoin dans un jeu vidéo. © Patrick Prémartin / developpeur-pascal.fr
  • 33. ECRANS FireMonkey a un gros avantage par rapport à la VCL : tout composant visuel est un conteneur. On peut facilement empiler des composants les uns dans les autres sans programmer quoi que ce soit pour obtenir le rendu visuel qu’on désire. © Patrick Prémartin / developpeur-pascal.fr
  • 34. ECRANS Avec les nombreux alignements proposés, la possibilité de changer l’opacité, l’échelle et l’angle de rotation de tout composants visuel, FMX rend la vie du développeur de jeux plus simple. Pour les éléments de jeu je passe par les formes (TRectangle, TCircle), les dessins vectoriels (TPath) et les images (TBitmap, TImage, TGlyph). © Patrick Prémartin / developpeur-pascal.fr
  • 35. ECRANS FireMonkey propose aussi des animations (TFloatAnimation) gérées directement sous forme de composants non visuels à appliquer sur les propriétés des autres composants et des effets graphiques (TShadowEffect, TGlowEffect, …). A part pour les tests de collisions, coder un jeu sans coder est quasiment possible. © Patrick Prémartin / developpeur-pascal.fr
  • 36. ECRANS On peut soit utiliser des composants relookés directement sur l’écran de jeu comme on peut tout faire en background selon nos besoins. Pour un casse briques, pas beaucoup d’interactions sont à gérer, on peut tout faire sous forme de composants classiques. Þ Démo « casse briques » dispo sur Github © Patrick Prémartin / developpeur-pascal.fr
  • 37. ECRANS Pour un jeu plus complexe il peut être nécessaire de développer notre propre moteur d’affichage. Ca a été le cas avec « Egg Hunter » où j’avais envie d’avoir un affichage à 60 FPS. © Patrick Prémartin / developpeur-pascal.fr
  • 38. ECRANS Je l’ai codé avec un TTimer, une TImage à l’écran, un TBitmap géré ailleurs et une copie régulière de son contenu verrouillé par un TMutex. Þ Revue de code « Egg Hunter » © Patrick Prémartin / developpeur-pascal.fr
  • 39. ECRANS Dans Delphi nous n’avons pas accès au Z-Index des éléments à l’écran (la profondeur d’affichage). Il dépend de l’ordre d’affichage et de l’empilement parent / enfants. On doit utiliser BringToFront pour le modifier par code. © Patrick Prémartin / developpeur-pascal.fr
  • 40. ECRANS Ca ne veut pas dire qu’on ne peut pas gérer le Z- Index dans nos programmes. Þ Démo « vagues » de DelphiFMXGameSnippets Þ Démo du jeu « Ok Ducky ! » © Patrick Prémartin / developpeur-pascal.fr
  • 41. INTERFACE Delphi est idéal pour développer des interfaces utilisateurs à l’aide du système de composants et de ses concepteurs de fiches. Une fois encore ce qui fonctionne dans les logiciels classiques est utilisable pour les jeux vidéo (là où d’autres moteurs ont du mal). © Patrick Prémartin / developpeur-pascal.fr
  • 42. INTERFACE Utilisez les formes descendantes de TShape, des images, des TText ou TLabel, des champs de saisie, des boutons, … © Patrick Prémartin / developpeur-pascal.fr
  • 43. INTERFACE FireMonkey bénéficie d’un système de styles qui permet de relooker les composants habituels aux couleurs du jeu sur lequel on travaille mais on peut aussi très simplement développer nos propres éléments d’interface. © Patrick Prémartin / developpeur-pascal.fr
  • 44. INTERFACE J’ai développé le jeu « Christmas Game » à l’occasion de la conférence Code Rage 2018 où je montrais comment personnaliser certains éléments à partir d’un mélange d’images et de formes. Vous pouvez vous en inspirer facilement dans vos logiciels (jeux vidéo ou pas d’ailleurs). © Patrick Prémartin / developpeur-pascal.fr
  • 45. INTERFACE Deux vidéos sur « Christmas Game » vous attendent sur https://serialstreameur.fr/jv- christmas-game.php Les sources du jeu sont sur https://github.com/DeveloppeurPascal/CodeRag e2018-ChristmasGame © Patrick Prémartin / developpeur-pascal.fr
  • 46. INTERFACE Autre exemple avec le jeu vidéo « Egg Hunter » dans lequel j’ai personnalisé des boutons, des boites de dialogue, des barres de progression et des trackbar à l’aide d’éléments graphiques, de formes, de cadres et d’un peu de codage. Þ Revue de code « Egg Hunter » © Patrick Prémartin / developpeur-pascal.fr
  • 47. SPRITES FMX est graphique. Les sprites sont juste des images qu’on bouge à l’écran (ou en dehors). Rien de plus simple que de coller ces images sur des formes graphiques approchantes et les déplacer à l’écran. © Patrick Prémartin / developpeur-pascal.fr
  • 48. SPRITES Chaque descendant de TShape a une propriété Fill qui permet d’y mettre un TBitmap en fond. TRectangle et TCircle collent à la majorité des éléments de jeux. Pour le stockage des images, on peut utiliser les TImageList ou les mettre directement dans le composant. © Patrick Prémartin / developpeur-pascal.fr
  • 49. SPRITES L’animation de sprites se fait par programmation si on le désire, mais on peut aussi utiliser le TBitmapListAnimation qui permet d’enchainer des images sur un TBitmap à partir d’une spritesheet sur une durée spécifiée. => Démo « anim sprite explosion » et « anim sprite personnage » de DelphiFMXGameSnippets © Patrick Prémartin / developpeur-pascal.fr
  • 50. SPRITES Concernant les collisions, une partie est déjà disponible dans Delphi car le moteur s’en sert pour tester où on clique. Entre rectangles j’utilise IntersectRect() qui est là depuis le début ! © Patrick Prémartin / developpeur-pascal.fr
  • 51. SPRITES Pour les cercles, c’est simplement la distance entre leur centre et la somme de leur rayon. Entre un cercle et un rectangle il faut calculer la distance par rapport aux angles. Un peu de maths avec des formules qu’on retrouve sur Internet en cherchant un peu. © Patrick Prémartin / developpeur-pascal.fr
  • 52. SPRITES Exemple avec le jeu « Soap Bubbles » disponible sur https://gamolf.itch.io/soap-bubbles et dont une version light avait d’abord été développée et intégrée à la librairie « Delphi FMX Game Snippets » dispo sur GitHub. Þ Revue de code « jeu des cercles » © Patrick Prémartin / developpeur-pascal.fr
  • 53. JEUX VIDEO FireMonkey propose aussi tout ce qu’il faut pour faire de la 3D. Regardez ce que fait Grégory Bersegeay sur son compte GitHub : - 3D Pong https://github.com/gbegreg/FMXPong - FMX Corridor https://github.com/gbegreg/FMXCorridor - FMX Island https://github.com/gbegreg/FMXISland © Patrick Prémartin / developpeur-pascal.fr
  • 54. CONCL © Patrick Prémartin / developpeur-pascal.fr Avec tout ça j’espère vous avoir démontré que FireMonkey est à la fois pratique et simple d’utilisation pour développer des jeux vidéo (petits comme plus complexes). Les capacités multiplateforme de Delphi et FMX permettent de diffuser nos créations un peu partout.
  • 55. (RE)VOIR © Patrick Prémartin / developpeur-pascal.fr La rediffusion de ce webinaire sera disponible dans quelques jours sur la chaîne YouTube de Barnsten : https://www.youtube.com/c/BarnstenFrance/vid eos et dès demain dans la rubrique « webinaires Delphi » de Serial Streameur sur https://serialstreameur.fr/webinaire- 20211211.php
  • 56. PLUS SUR © Patrick Prémartin / developpeur-pascal.fr Pour des ressources complémentaires et accéder aux exemples rendez-vous sur le blog Développeur Pascal : https://developpeur-pascal.fr/p/_200p- webinaire-du-11-decembre-2021-utiliser- firemonkey-comme-moteur-de-jeu-video.html
  • 57. PROCHAINS © Patrick Prémartin / developpeur-pascal.fr Stream Delphi sur l’Advent of Code dimanche de 10 heures à midi tout le mois de décembre. Du développement web en soirée la semaine. Planning de directs sur Twitch : https://www.twitch.tv/patrickpremartin/schedule Planning de webinaires : https://developpeur-pascal.fr/p/_6007- webinaires.html
  • 58. DELPHI © Patrick Prémartin / developpeur-pascal.fr Grégory Bersegeay a rédigé plusieurs articles sur le développement de jeux vidéo pour le magazine Programmez! (d’autres arrivent) : - Créer son jeu 2D avec Delphi https://www.programmez.com/magazine/progra mmez-247-pdf - Labyrinthe en 3D avec Delphi https://www.programmez.com/magazine/progra mmez-248-pdf
  • 59. LIVRES © Patrick Prémartin / developpeur-pascal.fr Ces livres sont sortis ce trimestre, retrouvez-les sur https://delphi-books.com
  • 60. QUESTIONS © Patrick Prémartin / developpeur-pascal.fr