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 » Unity 2D pour Casio, faciliter la création de jeux vidéo
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Unity 2D pour Casio, faciliter la création de jeux vidéo

Posté le 12/05/2020 15:05

Le projet a été renommé en "Particule" et l'interface a beaucoup évolué voici le nouveau lien de l'éditeur de jeu

Ancien Messages :
Cliquez pour découvrir
Cliquez pour recouvrir
Bonjour à tous,
Actuellement, je suis en train de programmer un éditeur pour faciliter la création de jeux vidéo et aussi rendre accessible à tous le développement, même à ceux qui ne savent pas programmer.
Le Moteur de jeux sur la calculatrice sera en C.Basic.
Malheureusement j'ai un souci, l'affichage des sprites est trop lent car ils sont affichés avec la fonction : _Line x1,y1,x2 ,y2 et les coordonnées sont stockées dans des listes.
Auriez - vous une idée pour rendre l'affichage des Sprites quasiment instantané ?
Merci d'avance.





Lephenixnoir Hors ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 21/05/2020 12:56 | #


Aucune chance que ça marche... ça n'a même pas vraiment de sens. Tu voudrais que ça renvoie quoi le code ci-dessous ?

10→A
10→B
Mat 10

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 21/05/2020 13:03 | #


Yes!
It is possible.

10->A
[[1,13,8]]->Mat @A
Mat @A    // same as Mat J
Mat @10   // same as Mat J

If A is 10, then Mat @A is the same as Mat J in the 10th Matrix.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 21/05/2020 13:09 | #


@Sentaro21
Thank you ! This is exactly what I was looking for !
I have one last question before I release the software beta, how we do to return a bitmap (horizontal flip).
For example Mario turns to the right and to the left but using only one image.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 21/05/2020 13:31 | #


Sorry, C.Basic doesn't have a horizontal/vertical flip function.
Currently, it's best way to have both patterns, right and left facing.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 21/05/2020 15:20 | #


Sentaro21 a écrit :
Sorry, C.Basic doesn't have a horizontal/vertical flip function.
Currently, it's best way to have both patterns, right and left facing.

Ok, thank you.

Ajouté le 21/05/2020 à 15:41 :
Malgré tous vos conseils, j'ai essayé d'optimiser au maximum le programme, il est toujours lent !
Je ne comprends pas, je vais devenir fou, ça fait une semaine que j'essaye de le rendre fluide et je n'y parviens pas
Si quelqu'un peut m'aider à résoudre ce problème.
Je vous transmet les fichier pour casio et voici un descriptif de comment le programme fonctionne:
Nous avons plusieurs fichier dont Unity2D.g1m qui est celui qui faut lancer pour faire fonctionner le programme.
BoxColi,RigdBoby,CtrlPlat sont des Components, en gros c'est des attributs.
Par exemple le perso principal possède BoxColi,RigdBoby,CtrlPlat car il a une collision, il est soumis a la gravité et on peut le controller.
Mais tous les éléments du décor ne possèdent pas CtrlPlat car on les contrôle pas.

Les éléments sont stockés dans des Listes de la 11ème jusqu'à la fin.
Chaque éléments quand ils sont chargé est stocké dans la Liste 2 que l'ont peut modifier.
Voici comment est stocké une Liste:

Liste 2
Cliquer pour enrouler
List 2 : Données de l'élément selecionnée
[1]=nombre total de paramètre de l'élément
[2]=ind Type
[3]=Image
[4]=ind name
[5]=show
[6]=x
[7]=y
[8]=w
[9]=h
[10]=rotation de l'image
[11]=L'objet est Static
+nb total de component
+Position début d'un component
[...] fait pour chaque component
+données des component
[...]fait pour chaque component
Component:
[1]:actif
[2]:name
[..]


La Liste 1 sert au fonctionnement du système général
Liste 1
Cliquer pour enrouler
List 1 : Parametre
[1]=splash screens
[2]=Scene
[3]=nb d'élément sur la scene
[4]=CamX
[5]=CamY
[6] = selection de l'element
[7] = selection de l'image à afficher
[8] = numéro de la liste où commence les éléments
[9] = numéro où commence les parametres du Component selectionné
[10]= numéro où termine les parametres du Component selectionné
[11] = numéro où commence les parametres du Component qu'on a voulu chercher
[12] = numéro où termine les parametres du Component qu'on a voulu chercher
[13] = nom du Component qu'on a voulu chercher
[14] = en train de chercher
[15] = Tick de chargement
[16] = le Component qu'on a voulu chercher est trouvé
[17] = élément au quel on cherche le Component que lui aussi on cherche
[18] = Début de stockage des images dans des matrices


FndCompo sert à chercher les paramètre d'un Component

Et voici d'autres variables utilisés:

List 3 : Données du Component sélectionnée
List 4 : Données de l'élément ou du Component qu'on a voulu chercher
List 5 : Element actuellement chargé
List 6 : ordre des élément à afficher
List 7 : liste poubelle
Str 1 : nom de l'élément
Str 2 : Type de l'élément
Str 3 : nom du Component
Str 4 : nom de l'élément ou du Component qu'on a voulu chercher
str 5 : variable poubelle

Je pense avoir fini sur l'explication du fonctionnement du programme.
Merci d'avance a ceux qui voudront bien m'aider à résoudre le problème de la lenteur du programme.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 21/05/2020 15:43 | # | Fichier joint


voici les fichiers
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 22/05/2020 09:47 | #


Bonjour Farhi ! J'ai testé ton programme pour Casio, et en effet on voit le souci en termes de performances. Pour cela, je te propose ce guide non-exhaustif de....

Roh mais pourquoi c'est leennnnt ???


1) La boucle de jeu trop chargée

Oui, je suis Captain Obvious, mais je soupçonne ton jeu d'avoir trop d'instructions exécutées à chaque frame alors qu'on pourrait procéder autrement. Si j'ai bien compris, ton moteur charge la frame suivante élément par élément en lui affectant ses caractéristiques. Or je pense qu'il serait possible d'élargir tout cela en chargeant ensemble tous les éléments qui ont les mêmes caractéristiques (genre les plateformes immobiles).

2) Le BmpLoad() est lent

Oui ! La fonction BmpLoad reste lente, et déjà ca se sentait pour mon Pokémon Obsidienne, pour lequel Sentaro21 m'a fait changer de méthode pour gagner des fps. En effet, je te conseille, au lancement d'une nouvelle partie, de charger tous les sprites de ton jeu (ou du niveau en cours) dans des matrices en faisant :

BmpLoad("image.bmp")->Mat A


Et puis pour afficher les sprites, tu utilises la fonction DrawMat :

DrawMat Mat A, x, y, w, h


Normalement, on devrait avoir de bien meilleures performances.

3) Le jeu est exigeant

Avec un platformer aussi poussé, tu places la barre assez haut. En effet, le jeu nécessite des fonctions très gourmandes en termes de puissance (comme le scrolling). Même JTMM de KikooDX (qui est codé en C pour Graph 90) n'a pas de scrolling. Je pense donc qu'il ne faudra pas s'attendre à un miracle.
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 22/05/2020 10:01 | #


Lightmare a écrit :
Même JTMM de KikooDX (qui est codé en C pour Graph 90) n'a pas de scrolling. Je pense donc qu'il ne faudra pas s'attendre à un miracle.

Je t'arrête ici, JTMM n'a pas de scrolling mais tournerait à la même vitesse s'il en avait.
Mais le jeu redessine tout l'écran à chaque frame, et c'est sur 90+E. Lephé avait dit qu'il n'y a aucun problème de vitesse là dessus sur monochrome, donc s'il optimise bien je pense que c'est possible
Cela dit tu as raison sur le reste, il ne faut pas s'attendre à un miracle. Il faudra une très bonne optimisation de code et de moteur pour le scrolling.
Très bonne explication

C'était donc mon intervention
ouais ouais
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 22/05/2020 11:39 | #


Bonjour Lightmare
J'ai lu attentivement tes explication mais il y a plusieurs points qui posent problème par exemple les caractéristiques des éléments :
Vu que c'est un éditeur de jeu, on ne peut pas savoir à l'avance combien il y a d'éléments et quels seront ses caractéristiques (Component), certains bloc sont soumis à la gravité ( dans la démo que j'ai mis, si on reste immobile on voit à gauche un bloc qui tombe cela signifie que lui aussi doit faire le calcule de collision ). Je pense que ce qui prend le plus de performance c'est le calcule de collision et la recherche des données de component avec FndCompo.g1m . Mais le problème c'est que je ne voit pas vraiment comment je peux l'améliorer.
Pour ce qui en est de BmpLoad("image.bmp")->Mat A c'est aussi compliquer car on ne sait pas à l'avance combien d'image il y aura, vu que c'est l'éditeur qui décide de combien il veut en mettre.
Et comme dit @Kikoodx le scrolling ne changerai rien car l'écran est rafraîchis à chaque fois.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 22/05/2020 13:33 | #


Sur Graph mono, j'ai déjà fait du 500 FPS avec scrolling alors que le moteur de gris de gint était actif. Le benchmark par défaut de FTune2 monte à 600 FPS, et avec overclock tu peux balancer du 2400 FPS.

Il n'y a donc aucun problème fondamental à faire des trucs pétés *et* fluides sur cette plateforme.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 22/05/2020 13:57 | #


Donc si j'ai bien compris on peut garder le même Moteur tout en augmentant le nombre de fps ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir Hors ligne Administrateur Points: 24678 Défis: 170 Message

Citer : Posté le 22/05/2020 14:02 | #


Tout ce que je dis c'est que tu peux certainement optimiser le truc pour que ça atteigne la vitesse dont tu as besoin. Je pense que C.Basic est assez puissant pour ça aussi.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 22/05/2020 14:05 | #


D'accord je vais voir où je peux gratter des fps
"La créativité est contagieuse faites la tourner"
Albert Einstein
Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 23/05/2020 08:44 | #


BmpLoad is not suitable for real-time drawing.
This is due to the slow loading of files from storage memory.

How much does the performance change if you omit the collision calculation?
I think it's a good idea to start with the simplest program and see how fast it works.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 23/05/2020 11:37 | #


I do not know if there is a function that allows to know the number of fps, but at first glance I would say that it is 4 times faster without collision and having put the bitmap in matrices.
"La créativité est contagieuse faites la tourner"
Albert Einstein
Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 24/05/2020 11:55 | # | Fichier joint


Unity2DA.g1m
This is the version with the FPS display added at the bottom left.

Unity2DB.g1m
This is the version that displays the bitmap with the _Bmp command.
There is a bug that the part that goes out of the screen is not displayed.

It won't run smoothly without overclocking, but I'm sure there is a solution.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 24/05/2020 12:46 | #


Thank you very much, I will test that.
I also managed to reduce the program, I will try to combine the different programs between them.

Ajouté le 24/05/2020 à 15:31 :
il y a un moyen de savoir si un élément est dans la liste du genre :
{5,8,9,4,6} -> List 1
4 in List 1 //true

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

Citer : Posté le 24/05/2020 16:03 | #


Toujours le bon vieux trick de "calcul listique" pour compter le nombre d'occurences

{5,8,9,4,6}→List 1
Sum(List 1=4) > 0 // true
{5,8,9,6}→List 1
Sum(List 1=4) > 0 // false

Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 24/05/2020 18:20 | #


@Lephenixnoir
Merci
"La créativité est contagieuse faites la tourner"
Albert Einstein
Farhi Hors ligne Membre Points: 1380 Défis: 0 Message

Citer : Posté le 25/05/2020 15:56 | # | Fichier joint


J'ai fait pas mal de modification et je voulais savoir d'après vous si le jeu est suffisamment fluide pour que je me concentre moins sur l'optimisation et plus sur le système lui même.
Voici les fichiers
Merci d'avance pour vos retours
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 25/05/2020 17:03 | #


Bien joué ! j'ai testé le programme en mode double précision, et les performances sont vraiment meilleures que la première version !
Cependant j'ai encore réussi à avoir des perfs supplémentaires en basculant en mode #INT.

Je pense que le test ultime est de savoir si le nombre d'objets fait gravement chuter les fps ou si ça a peu d'importance. Tu pourrais faire passer ton code python pour des tests ?
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher

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 100 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