Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


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

Particule : 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.


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 ··· 7, 8, 9, 10
Ninestars Hors ligne Membre Points: 2449 Défis: 24 Message

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


T'as fait ça comment ???
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

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


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

ça dépend du nombre d'élément à afficher ainsi que la distance de la camera à l'objet.
Plus l'objet est loin, plus il est petit et moins il y a de calcule.

Ninestars a écrit :
T'as fait ça comment ???

Comme Particule est en C++, j'ai adapté certaines certaines partie du moteur avec un patch avec des librairies comme SFML pour l'affichage, puis Visual Studio le compile et c'est tout.
(On peut aussi changer la taille de la fenêtre et qui respecte les dimensions de la calculatrice)
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 22621 Défis: 149 Message

Citer : Posté le 13/01/2022 21:40 | #


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

Je sais pas trop ce que tu veux dire par polygones. Dans ce post c'est des triangles. Oui c'est assez intensif, tu peux d'ailleurs voir la durée des frames varier sur la vidéo selon les cas plus ou moins favorables (0:23 vs 0:50 par exemple).

Ce qui est clair c'est que c'est difficile, mais c'est pas si loin que ça du possible dans les cas simples, donc savoir exactement où est la frontière et qu'est-ce qu'on arrive à faire sous quelles conditions d'overclock est une question subtile, et rien qu'à la formuler j'ai envie de coder des tests moi aussi tant c'est passionnant. x)

Note aussi que "une calto" c'est un peu vague, si tu prends une Graph mono c'est complètement impossible, si tu prends un TI-Nspire CX t'as bien assez de puissance. La gamme est vraiment large
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 18/01/2022 00:47 | #


j'ai réussi à convertir une couleur RGB en Hex avec
#define rgb(r, g, b) ((r << 11) | (g << 5) | b)
mais j'arrive pas à faire le processus inverse c'est à dire Hex to RBG en récupérant le pixel avec gint_vram[index]
"La créativité est contagieuse faites la tourner"
Albert Einstein
Slyvtt Hors ligne Community Manager Points: 838 Défis: 0 Message

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


Farhi a écrit :
j'ai réussi à convertir une couleur RGB en Hex avec
#define rgb(r, g, b) ((r << 11) | (g << 5) | b)
mais j'arrive pas à faire le processus inverse c'est à dire Hex to RBG en récupérant le pixel avec gint_vram[index]


C'est un peu plus complexe, il faut passer par des masques pour récupérer chaque composante puis traiter chaque composante individuellement:

              
uint_16t color =  gint_vram[ index ];
uint8_t R = (((color >> 11 ) & 0b11111 ) << 3);
uint8_t G = (((color >> 5) & 0b111111) << 2);
uint8_t B = ((color & 0b11111) << 3);


tu obtiens alors R, G et B entre 0..255 ... enfin pas tout à fait, car :
- R et B seront au max entre 0b00000000 et 0b11111000
- et G sera entre 0b00000000 et 0b11111100
Les derniers 3ou2 bits étant perdu du fait du passage à un moment en RGB565 et à un pseudo retour vers du RGB888.

------------------------------------------------------------------
Le monde est dangereux à vivre ! Non pas tant à cause de ceux qui font le mal, mais à cause de ceux qui regardent et laissent faire.
-------------------------------------------------------------------
Albert Einstein
Mathématicien, Physicien, Scientifique (1879 - 1955)
Lephenixnoir Hors ligne Administrateur Points: 22621 Défis: 149 Message

Citer : Posté le 18/01/2022 08:50 | #


Note que si tu as fait ça :

#define rgb(r, g, b) ((r << 11) | (g << 5) | b)

Alors les valeurs originales de r/g/b ne sont pas sur 8 bits, sinon g et b dépasseraient sur leurs voisins.

Pour récupérer les valeurs sur 5/6 bits, pareil que Slyvtt mais en enlevant les décalages à gauche finaux :

R = (color >> 11) & 0x1f; # R = 0..31
G = (color >> 5) & 0x3f; # G = 0..63
G = (color >> 6) & 0x1f; # ou bien G = 0..31, si ça t'arrange plus
B = color & 0x1f; # B = 0..31
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

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


Ok merci !
Mais du coup, ma fonction rgb est fausse ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 22621 Défis: 149 Message

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


Ta fonction RGB est correcte si et seulement si ton R vaut 0..31, ton G vaut 0..63 et ton B vaut 0..31.

Si chacun vaut entre 0 et 31, tu peux utiliser la macro C_RGB(R, G, B) de gint ou reprendre sa définition :

#define C_RGB(r,g,b) (((r) << 11) | ((g) << 6) | (b))

Si chacun vaut entre 0 et 255, alors il faut masquer quelques bits :

color = ((R & 0xf8) << 8) | ((G & 0xfc) << 3) | ((R & 0xf8) >> 3);
Slyvtt Hors ligne Community Manager Points: 838 Défis: 0 Message

Citer : Posté le 18/01/2022 14:00 | #


Farhi a écrit :
Ok merci !
Mais du coup, ma fonction rgb est fausse ?


pas forcément,
si tu as chacune des composantes R,G, B qui peut être sur le range 0..255, alors oui tu as un problème "d'écrasement" de bits.

Il te faudrait alors faire
#define rgb(r, g, b) (((r >> 3) << 11) | ((g >> 2) << 5) | (b >> 3))


par contre si R varie entre 0 et 31 ainsi que B et si G varie entre 0..63, alors c'est bon.

Je te conseille d'etre par convention en RGB entre 0..255 et de faire le décalage à droite de ma formule, sinon tu vas passer ton temps à te gratter la tete pour savoir entre quoi et quoi ca varie.

Sly

Ajouté le 18/01/2022 à 14:01 :
Nos réponses se sont croisées ;-)

------------------------------------------------------------------
Le monde est dangereux à vivre ! Non pas tant à cause de ceux qui font le mal, mais à cause de ceux qui regardent et laissent faire.
-------------------------------------------------------------------
Albert Einstein
Mathématicien, Physicien, Scientifique (1879 - 1955)
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 18/01/2022 16:10 | #


Ok parce que en effet je veux que les valeurs soit entre 0 et 255 donc c'est cette fonction qu'il faut :
((R & 0xf8) << 8) | ((G & 0xfc) << 3) | ((R & 0xf8) >> 3)


Mais du coup pour Hexa en RBG avec les valeur qui sont entre 0 et 255 ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 22621 Défis: 149 Message

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


Pour re-séparer une couleur 16-bit en trois composantes RGB entre 0 et 255, utilise le premier code de Slyvtt.
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 18/01/2022 23:58 | #


Ok merci beaucoup !
"La créativité est contagieuse faites la tourner"
Albert Einstein
Mokona59 Hors ligne Membre Points: 2 Défis: 0 Message

Citer : Posté le 30/01/2022 19:24 | # | Fichier joint


Euh...
(Veuillez voir l'image ci-jointe)
Hello world
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 30/01/2022 20:08 | #


Je sais, c'est un faux positif.
En fait c'est à cause du compilateur "Py2exe" qui convertit un .py et exécutable windows, il le convertit mal et du coup les antivirus s'affolent mais en réalité il n'y a rien. C'est un problème récurent avec Py2exe, tu peux le vérifier par toi même en cherchant sur internet.
Dans le pire des cas même si tu me crois pas, tu as les fichiers sources. Il te suffit de d'installer Python et tout le tralala.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Inikiwi Hors ligne Membre Points: 373 Défis: 0 Message

Citer : Posté le 31/01/2022 21:40 | #


Quelles sont tes sources pour faire de la 3d?
Je veux faire du rendu en fil de fer.
9 polygones par frame (ou 15).
20 frames par secondes.
J'ai commencé un gta like plutôt avancé.
Mais pour le rendu de la map je veux me tourner vers de la 3d (comme gta 1).
Farhi Hors ligne Membre Points: 927 Défis: 0 Message

Citer : Posté le 02/02/2022 15:31 | #


Les sources pour la 3D ne sont pas encore ajouté à Particule, elle va arriver progressivement car ça inclus de rendre compatible la 2D déjà présente avec la futur 3D.
Sinon si tu veux le faire de ton côté sans Particule, je me suis basé des sources de ce projet : lien du projet

Ajouté le 02/02/2022 à 15:36 :
Sinon pour information, je vais faire une petite pose sur les projets (Particule, isocraft, Minecraft story Mode, Mario Bros).
Comme certains projets dépendent de Particule et que je suis en train de faire la migration du nouveau système de script pour Particule, ces projets ne pourront pas avancer avant la migration.
Donc ne soyez pas étonné si vous voyez rien de nouveau avant un certains temps.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Précédente 1, 2, 3 ··· 7, 8, 9, 10

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 v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 70 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