PstarEngine





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 !)

L'éditeur de Processing et P5js




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)

Mon site internet personnel

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