Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » ParticuleEngine : l'éditeur de jeu pour calculatrice
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

ParticuleEngine : l'éditeur de jeu pour calculatrice

Posté le 27/05/2020 21:50

Vos retours seront cruciaux pour son amélioration,
merci d'avance pour une éventuelle suggestion de votre part.


Lien de serveur discord de ParticuleEngine : https://discord.gg/pQgRuEtdRA

Particule est un moteur de jeu pour calculatrice casio inspiré du logiciel Unity.
Il est capable d'importer de nombreux formats d'image et il peut transformer une image en couleur en .bmp compatible pour la casio.
On peut faire toutes sortes de jeux (RPG, aventure, arcade, plateforme, MMO, etc.).
Vous avez la possibilité de créer vos propres images et lignes de code (une documentation détaillée sera bientôt mise à disposition)
Pour l'instant il est possible de créer des jeux uniquement en 2D.

Je tiens à remercier les personnes suivantes pour m'avoir aidé: Lightmare, Sentaro21, Lephenixnoir, Zezombye, Kbd2
Des vidéos explicatives sont jointes.
Bon amusement !

Liens de téléchargement : Particule
Lien des vidéos Tuto : Playlist
Signaler un bug

Anciennes versions
Cliquer pour enrouler

Download : https://drive.google.com/drive/folders/1W3IiTccQw9a7GLTil6_Kff9-saHyjr5B?usp=sharing

Version 1.1 :


Vidéo présentant la création d'un Component (Partie 1):


Version 2.0 Beta




Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11, 12 Suivante
Inikiwi Hors ligne Membre Points: 594 Défis: 8 Message

Citer : Posté le 09/01/2022 01:28 | #


Potter360 a écrit :
il est impossible de créer des jeux sous Particule avec les bugs de VisualScratch
farhi a écrit :
Avec Visual Scratch il y a une limite de block à ne pas dépasser sinon ça ram
farhi a écrit :
j'ai pas fait de gestion d'erreur sur Visual Scratch ce qui fait que si on fait n'importe quoi et bah le logiciel lui aussi fera n'importe quoi
Potter360 a écrit :
La limite doit être de un bloc
Visual Scratch = merde

farhi a écrit :
Je suis pas d'accord, chaque langage a des avantages et des inconvénients.
Mais j'ai décidé de rendre le système moins buggé et plus lisible.


Gladosse a écrit :
est-ce qu'il y aura une option pour avoir un language ecrit dans le futur?
les languages en bloc devient presque illisibles pour les grands projets
Voila une bonne idée! Ça serait tellement mieux de faire de C++ et d'utiliser l'api Particule, comme Irrlicht .

Potter360 a écrit :
(ça doit être parceque il voit ekiwi se faire dépasser
c'est en cours, je crée le moteur avant le gui, je fait un moteur avec du rendu a base de point a relier si tu veux un exemple je fait un gta1 en demo, c'est obsolète mais ça marche et ça montre les capacités. j'ai publié la demo sur #projets
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 09/01/2022 02:24 | #


Alors Inikiwi, je vais te faire revenir sur terre.
Primo, tu as peut-être raison sur certains points mais ce n'est pas une raison pour parler de cette manière.
Deuxio, la "syntaxe merdique" comme tu dis c'est pour Particule, il a besoin de récupérer les variables et autres données pour les afficher sur le logiciel. Donc il a besoin de délimiteurs pour savoir où se situe ces informations.
Tertio, j'ai fait une erreur en pensant que ça serait bien de faire du codage en Block, du coup je change en C++ et t'es pas content, faut savoir.
Quarto, le but de Particule c'est de rendre la création de jeu vidéo accessible à tous, même a ceux qui ne connaissent pas le C++, donc forcement il y aura des ajouts qui ne conviendront pas à tout le monde. Donc sur ça, si t'es pas content, je m'en fous, parce que c'est sur ce principe que Particule a été conçu.
Parmi toute tes interventions, là seule qui a vraiment eu de l'intérêt c'est :
Inikiwi a écrit :
Ça serait tellement mieux de faire de C++ et d'utiliser l'api Particule, comme Irrlicht

Donc la prochaine fois que tu interviens penses a être moins sec et développe tes propos.
Parce que les "c'est de la merde" etc.. ça me dis pas où est le problème.
Avoir des retours négatifs n'est pas le problème, mais ils doivent être construits, sinon je n'en tiendrais juste pas compte.
Voilà.

Sinon,
Potter360 a écrit :
je pense aider Fahri en lui faisant part de mes bugs

Totalement, du reste j'encourage cette action
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 09/01/2022 10:27 | #


Inikiwi a écrit :
Potter360 a écrit :
il est impossible de créer des jeux sous Particule avec les bugs de VisualScratch
farhi a écrit :
Avec Visual Scratch il y a une limite de block à ne pas dépasser sinon ça ram
farhi a écrit :
j'ai pas fait de gestion d'erreur sur Visual Scratch ce qui fait que si on fait n'importe quoi et bah le logiciel lui aussi fera n'importe quoi
Potter360 a écrit :
La limite doit être de un bloc
Visual Scratch = merde

Pardon ?! Ce qui est vraiment de la merde c'est ce jugement immédiat et de moindre effort. Insulter un projet comme ça n'est pas toléré sur Planète Casio. Si tu as une mauvaise expérience avec Visual Scratch, fais-en un retour constructif.

Tu n'es pas en train de snober qu'un bout de logiciel mais aussi le travail de Farhi sur plus d'un an, ce qui très méchant et dégradant. Respire un peu et essaie de comprendre l'intention originale de Farhi avant de juger.

Farhi a écrit :
Tertio, j'ai fait une erreur en pensant que ça serait bien de faire du codage en Block, du coup je change en C++ et t'es pas content, faut savoir.

Je crois que j'ai raté un chapitre - après Visual Scratch tu avais un prototype qui m'évoquait pas mal AlgoBox. Ça me paraissait être sympa, avec un mélange correct d'accessibilité pour les non-programmeurs et un format plus puissant que Scratch. Qu'est-ce qui n'allait pas avec ça ?

Étant donné que tu as toujours l'option d'avoir (ou d'ajouter) un bloc/une ligne appelant une fonction C++ par son nom, si j'ai bien suivi, programmer directement en C++ a toujours été possible. J'ai l'impression que si tu forces à coder en C++, même avec des marqueurs, ça va être sensiblement moins abordable pour les débutants, un aspect auquel tu tenais. Ou est-ce que j'ai raté un bout là aussi ?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 09/01/2022 20:58 | #


Lephenixnoir a écrit :
Qu'est-ce qui n'allait pas avec ça ?

Si si c'est ça, mais je voulais sauvegarder le code dans un fichier hpp mais finalement je vais le sauvegarder en json car il n'y aura pas de problème de parsing, de toute manière actuellement je suis en train de faire des tests donc tant que je n'ai pas publié, rien n'est officiel.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 09/01/2022 20:59 | #


D'accord, donc en fait la syntaxe avec balises/etc que tu présentais c'était juste le format interne, et l'utilisateur ne l'aurait pas écrit directement ? (Et maintenant c'est du JSON direct et tu exportes en C++ que tout à la fin ?)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 09/01/2022 21:43 | #


Je passe par là pour te dire, Inkiwi, que ce que tu dis est inadmissible, je pense que tu n'accepterais pas que l'on parle comme ça de l'un de tes projets.

Et ne me cite pas s'il te plait, ou en tous cas pas dans ce contexte, tu me prends à partie et cela laisse faussement penser que je suis d'accord avec toi, c'est tout le contraire, je ne fais que reporter des bugs contrairement à toi, je pense que dire "c'est de la merde" n'a jamais aidé personne.

Pour Ekiwi, si tu as un endroit où en parler c'est dans le topic de ton projet, pas dans celui de quelqu'un d'autre qui a un projet similaire, et encore moins dans celui de quelqu'un que tu viens d'insulter.



Pour Fahri,je comprends un peu mieux les intentions du nouveau système du coup, je pense que ça va être mieux et plus utilisable pour des "vrais" projets, en fait le problème majeur de Visual Scratch en dehors des bugs je pense que c'était de ne pas pouvoir "dézoomer" et donc pour les gros blocs de code on était limité.

Hâte de voir cette nouvelle syntaxe !
Globalement, coder. Mal, mais coder.
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 09/01/2022 21:45 | #


Lephenixnoir a écrit :
D'accord, donc en fait la syntaxe avec balises/etc que tu présentais c'était juste le format interne, et l'utilisateur ne l'aurait pas écrit directement ? (Et maintenant c'est du JSON direct et tu exportes en C++ que tout à la fin ?)

C'est tout à fait ça

Ajouté le 09/01/2022 à 21:52 :
Voici un aperçu de l'interface, elle n'est pas terminé évidement. Mais c'est ce que j'ai fais aujourd'hui :

Si on compare à RPG Maker :

"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 09/01/2022 21:53 | #


Farhi a écrit :
C'est tout à fait ça

Ooooook, j'avais pas du tout compris. Comme tu étais en train de parler de modifications au système j'ai cru que c'était la partie publique/visible ! N'hésite pas à préciser dans ce genre de cas.

Dès que tu as des images du nouveau système, je suis curieux de voir

Edit : Propre. Je pense que tu ne peux pas te planter en t'inspirant de RPG Maker !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Potter360 Hors ligne Rédacteur Points: 1254 Défis: 2 Message

Citer : Posté le 09/01/2022 21:54 | #


Wow, j'aime beaucoup !
Bravo !
Globalement, coder. Mal, mais coder.
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 09/01/2022 22:31 | #


Lephenixnoir a écrit :
Ooooook, j'avais pas du tout compris. Comme tu étais en train de parler de modifications au système j'ai cru que c'était la partie publique/visible ! N'hésite pas à préciser dans ce genre de cas.

Désolé pour le quiproquo, mais je dois dire que je m'efforce de rendre ce nouveau système plus ergonomique, donc c'est normal que je fasse pas mal de modifications.

Lephenixnoir a écrit :
Dès que tu as des images du nouveau système, je suis curieux de voir

Je t'ai devancé

Potter360 a écrit :
Wow, j'aime beaucoup !
Bravo !

Merci !
Tout cette interface a été faite aujourd'hui, donc je vous laisse imaginer comment ça rendra dans quelques jours

Sinon j'annonce un nouveau type que j'ai créé pour Particule : le ParticuleEvent
Le ParticuleEvent est juste surpuissant, car il permet de stocker une fonction en tant que paramètre d'un component et peut être exécuté à tout moment en une seul ligne :

fonctionEvent.Invoke();

Imaginons que nous avons un Component nommé "Interrupteur" et un autre Component nommé "Porte".
Interrupteur a en paramètre une variable nommé "testEvent" de type ParticuleEvent.
Porte a une fonction telle que :

void OpenDoor(){
etc...
};

il suffit que je sélectionne le component Porte depuis le ParticuleEvent et lui indiquer la fonction et celui ci est attribué.
Mais supposons qu'on a aussi un Component "Light" et qu'on veut que la lumière s'allume quand on active un autre interrupteur.
(Donc deux interrupteur mais qui n'ont pas la même fonction)
Vous l'avez compris, on sélectionne le component Light et sa fonction et hop, c'est attribué.
Donc au lieux de faire un truc du style :

class Interrupteur : public MonoBehaviour {
    public:
    Porte* porte;
    Light* light;
.....
.....
.....

void Update(){
            if (IsKeyDown(KEY_CTRL_EXE)) {
                if (porte!=NULL){
                    porte->OpenDoor();
                }
                if (light!=NULL){
                    light->Active();
                }
            }
        };

};

On peut faire ça :

template <class T>
class Interrupteur : public MonoBehaviour {
    public:
    ParticuleEvent<T> testEvent
.....
.....
.....

void Update(){
            if (IsKeyDown(KEY_CTRL_EXE)) {
               testEvent.Invoke();
            }
        };

};

et ça comme paramètre sur Particule :

Bref ça réduit le code et c'est plus agréable a utiliser
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 10/01/2022 11:43 | #


Ok, excellent !! Les événements comme ça je suis d'accord c'est super important de les avoir axiomatisés. Je pense même à ce qu'on fait dans les GUI (eg. Qt), où tu pourrais même depuis la GUI dire « connecter l'événement "gros bouton rouge déclenché" à l'événement "ouvrir la porte" », ce genre de trucs.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Slyvtt Hors ligne Maître du Puzzle Points: 2389 Défis: 17 Message

Citer : Posté le 10/01/2022 13:31 | #


Oui c'est génial ces connections. Dans mon GUI Toolkit, j'utilise des pointeurs sur fonctions qui sont la version de base de ce mécanisme.
On code une fonction à lancer, puis l'objet à connecter à cette fonction doit juste pointer vers cette fonction qu'il déclenche le moment venu.
On a alors juste un test au niveau de l'objet : si le pointeur du trigger est NULL, alors rien à faire sinon lancer la fonction pointée. Pour la programmation évènementielle ca marche hyper bien.
There are only 10 types of people in the world: Those who understand binary, and those who don't ...
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 11/01/2022 00:02 | #


Lephenixnoir a écrit :
Les événements comme ça je suis d'accord c'est super important de les avoir axiomatisés. Je pense même à ce qu'on fait dans les GUI (eg. Qt), où tu pourrais même depuis la GUI dire « connecter l'événement "gros bouton rouge déclenché" à l'événement "ouvrir la porte" », ce genre de trucs.

C'est déjà fait, il est même présent dans la version actuel avec le component ButtonUI (sauf que l'interface d'avant n'était pas pratique).
Maintenant c'est extrêmement simple et intuitif.
En plus, Particule se charge automatiquement de la syntaxe des template.
Sinon Slyvtt, c'est exactement ça.
Voici le code du ParticuleEvent, le principe est plutôt simple mais quant à son automatisation c'était une autre histoire.
template <class Event>
class ParticuleEvent {
public:
    void (Event::* function)();
    Event* self;

    ParticuleEvent() {
        function = NULL;
        self = NULL;
    }

    void Set(void (Event::* func)(), Event* obj) {
        function = func;
        self = obj;
    }

    void Invoke()
    {
        if (self!=NULL && function!=NULL)
            (self->*function)();
    };
};


Ajouté le 11/01/2022 à 00:10 :
Sinon j'annonce aussi un nouveau Component : Le Particule Système !
Bah oui ! ça paraît logique, que serai Particule sans particules ?
Pour l'instant je n'ai pas d'image à vous montrer vu que j'y travaille, mais en gros l'objectif serai de pouvoir faire des trucs comme ça :

En évitant de faire une image pour chaque frame mais plus que ça soit des fonctions mathématiques et logiques qui fassent le rendu, comme le pour le Particule Système d'Unity 3D, exemple :

Voilà c'est dit, bonne soirée
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 11/01/2022 18:01 | #


Intéressant ! Tu penses vraiment à tout. Attention à un seul point quand même, des particules calculées par des fonctions mathématiques sur la Graph 90+E ça va te coûter très cher en perfs, c'est probablement presque infaisable
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 12/01/2022 16:48 | #


Lephenixnoir a écrit :
Intéressant ! Tu penses vraiment à tout. Attention à un seul point quand même, des particules calculées par des fonctions mathématiques sur la Graph 90+E ça va te coûter très cher en perfs, c'est probablement presque infaisable

On verra bien
Si j'échoue tant pis fallait s'y attendre, si je réussis ça sera un exploit et on pourra que s'en réjouir.
Quelle que soit l'issue, le principe est que j'aurais au moins essayé.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 12/01/2022 17:52 | #


J'y connais rien, mais y a peut-être moyen de faire des effets de particules sans utiliser de fonctions mathématiques particulière ? (diffusion pseudo-aléatoire dans une zone ?)
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 12/01/2022 18:38 | #


Il y a de l'aléatoire, mais quand je dit formule mathématique c'est par exemple le calcul de gravité
"La créativité est contagieuse faites la tourner"
Albert Einstein
Shadow15510 Hors ligne Administrateur Points: 5503 Défis: 18 Message

Citer : Posté le 12/01/2022 19:59 | #


Ah ok J'y connais vraiment rien xD

Ajouté le 12/01/2022 à 20:08 :
Quelques tutos sur le site qui explorent les effets de particules :
en C : https://www.planet-casio.com/Fr/programmation/tutoriels.php?id=38
en Basic : https://www.planet-casio.com/Fr/forums/topic11967-1-tutorial-effet-de-particule-en-basic.html (les techniques essayent d'économiser au max les calculs à cause de la faible puissance, si ça peut te donner des idées )
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 12/01/2022 23:29 | #


D'ac Merci beaucoup, je vais y jeter un œil, mais je penses que je vais utiliser le RigidBody que j'ai déjà créé. Dans tout les cas je ferais pas mal de test pour voir lequel est le plus optimisé.

Ajouté le 12/01/2022 à 23:34 :
Sinon, je ne sais pas si vous vous en rappelez, mais j'avais dit que j'allais faire une distribution pour ordinateur afin d'éviter de faire des allers-retours entre pc et calto constamment pour tester son jeu.
bah... voilà quoi :

"La créativité est contagieuse faites la tourner"
Albert Einstein
Gladosse Hors ligne Membre Points: 229 Défis: 2 Message

Citer : Posté le 13/01/2022 18:03 | #


pour le systeme de 3d un systeme de polygones c'est pas trop a calculer pour une calto?

double message oups
Ninestars Hors ligne Membre Points: 2462 Défis: 24 Message

Citer : Posté le 13/01/2022 19:19 | #


T'as fait ça comment ???
Précédente 1, 2, 3 ··· 6, 7, 8, 9, 10, 11, 12 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 198 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd