Présentation du projet
Début du projet : octobre 2024
Je suis en train de construire un petit moteur de jeu (ou plutôt un framework pour être précis) avec Processing et P5js
Il s'agit d'en avoir 2 versions : en Java avec Processing et en Javascript avec P5js.
L'idée de ce projet est, d'une part, de pouvoir créer de petits jeux en 2D en pouvant comprendre et accéder au code du moteur sans avoir besoin de comprendre le C++ et d'autre part, notamment pour la version JAVA, de pouvoir utiliser des bibliothèques auxquelles les moteurs de jeux n'ont pas accès en général (comme pour faire du FTP par exemple) et de l'utiliser dans des applications en maîtrisant complètement son interface graphique. JavaFX est une bibliothèque formidable mais si l'on veut créer une interface complètement différente de ce qui est prévu il faudra vraiment comprendre son code ce qui est encore plus compliqué, à mon avis, que de tout recommencer à zéro.
Tout est fait en utilisant l'éditeur de Processing qui est bien plus accessible que les programmes
utilisés par les professionnels (voir ci-dessous).
L'utilisation de concepts de programmation relativement avancés comme de nombreux patrons de conception (design pattern)
peux aussi être formateur pour beaucoup de personnes (me semble-t-il) qui pourraient trouver utile d'étudier son code.
Concepts d'interfaces graphiques
L'éditeur de code de Processing (et P5js)
Un éditeur simple à maîtriser et contenant tout ce qui est véritablement nécessaire pour se concentrer sur le code et pas sur les fonctions... de l'éditeur .
... et l'installer est simplissime : juste, téléchargez Processing, ajouter P5js (si vous en avez besoin) en cliquant sur le menu déroulant en haut à droite (marqué Java sur l'image) et tout s'installe automatiquement en quelques secondes.
De plus, vous aurez avec, plein d'exemples de codes. C'est un must pour débuter en Java ou en Javascript !
Et l'on peut faire des choses avancées avec (si on veut) !
(C'est le code que l'on écrit qui compte, pas la complexité de l'éditeur !)
Roadmap
PstarEngine
Ce que j'ai fait jusqu'ici...
J'ai écrit plusieurs versions à partir de zéro du coeur du programme jusqu'à passer du temps à approfondir la question des Design Patterns.
J'ai aussi regardé l'organisation de 2 excellents moteurs de jeux vidéo existants : Godot Engine et Defold.
Suite à cela, j'ai à nouveau tout repris à partir de zéro et j'ai commencé à utiliser GIT en local tout en écrivant en parrallèle la version Java et javascript.
Je veille à ce que les deux versions soient le plus identique possible pour l'utilisateur afin de faciliter la traduction du code d'une version à l'autre.
L'organisation de mon code me semble cohérente maintenant avec ce que je souhaite mettre en place.
J'essaie vraiment d'avoir un code modulaire et cohérent pour pouvoir l'étendre sans que cela devienne incompréhensible !
C'est pour cela que j'ai passé autant de temps à faire et à refaire le coeur du programme !
N.B. Je m'attends à devoir faire pas mal de refactorisations quand je m'occuperai du moteur physique mais... chaque choses en son temps ! :)
En cours de réalisation
pLoad functions (or methods)
(wait for files to load with a slider)
Gestion des entrées claviers avec modifications possibles pendant le déroulement du programme
(notamment pour gérer les différents claviers / langues).
Détection de la langue de l'utilisateur (Javascript)
Mouvements avec vélocité, accélérations...
Gestion simplifiée de collisions (1° version)
Gestion d'animations
Interface graphique classique version BASIC
(Vite fait graphiquement pour tester les fonctions / GUI)
Gestion de plusieurs langues (français et anglais en particulier) pour tous les textes.
Effets sonores et gestion des textes audio en plusieurs langues.
Dans un second temps
Interfaces graphiques FLAT et SF (graphismes soignés)
Un système de transition pour l'apparition et la disparition des éléments d'interface.
Interface circulaire
Pour plus tard
Import/Export d'informations en utilisant d'une façon transparente pour l'utilisateur du framework du XML et du JSON.
(l'utilisation de fichiers externes sera indispensable à mon projet d'éditeur de site internet (quasi) statiques par exemple)
Widget d'éditeur de texte "riche" genre tinyHTML
(bbcode en interne, autre système... ?)
FTP
(depuis Processing ou en utilisant Processing dans un environnmenent Java classique)
Moteur physique
Fonctionnalités 3D
... et la documentation !
(sauf si on me le demande avant ! :) )
Projets
Le programme de démonstration
Une application de création de sites internet statiques
(avec un aspect dynamique dedans !)
et d'autres choses...
Démo
Un programme de démonstration est en cours de réalisation pour montrer les possibilités du moteur et donner un exemple de code.
Ce programme sera régulièrement mis à jour au fur et à mesure de l'écriture de PstarEngine.
Démo temporaire à la version 0.21.3.
Code source
Git en local est utilisé.
Le code sera bientôt en ligne dans une forge logicielle.
J'hésite toujours entre la license GPL et la license MIT !
N'hésitez pas à me dire ce que vous en pensez
(voir à m'indiquer une autre license !).
Aperçu du code source
Version 0.21.5. JAVA
(21 avril)
Version 0.21.3. Javascript
(18 avril)
Liens
Principaux
Processing
(pour la version JAVA et pour l'éditeur de code que j'utilise)
P5js
(pour la version Javascript)
Q5js
(qui sera probablement utilisé aussi dans quelques temps)
py5
(une version en Python de Processsing qui sera peutêtre utilisée plus tard)
En plus...
PixelPhysics
(une chaîne Youtube pour la création d'un moteur physique)
Contact
Attention à bien enlever la partie en majuscules, nécessaire pour éviter les SPAM !
PstarEngineENLEVER-CECI-AVANT-D'ENVOYER@proton.me