Posté le 05/10/2013 11:25
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 246 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
Citer : Posté le 05/10/2013 11:47 | #
Les deux fonctionnent bien, mais une seule Str réduit énormément la taille d'un niveau/d'une map, quand tu penses que ça fait "seulement" 255 caractères maximum, et que ton écran fait 21*7 (147) caractères, tu n'as même pas de quoi faire deux écrans entiers !
Si tu comptes faire un jeu de plateforme type Mario, je te conseille une Str par ligne affichée, comme ça tu auras une longueur totale maximale de 255 caractères, ce qui allonges considérablement la durée d'un niveau, et étant donné que tu as 9 Str à ta disposition, tu peux en garder une ou deux pour tes menus/options etc.
Citer : Posté le 05/10/2013 12:05 | #
@THomatos Il y a 20 Str et non 9
Et certains caractères sont codé sur 2 octets au lieu d'un, tu ne peux par exemple mettre que 127 fois le caractère "■" dans une Str ;-)
Citer : Posté le 05/10/2013 12:21 | #
Ok, j'avais peur pour la taille du programme, mais en fait ça aurait pu être pire : 300 octets pour une Str.
Et j'aurais préféré rester en une seule Str par écran et non une par ligne car j'ai créé un moteur de jeu il y a longtemps et j'aimerais le réutiliser sur des niveaux en scrolling, or je devrais tout recoder si je fais une Str par ligne.
Bon merci, et donc comment serait-il possible de faire un vrai scrolling ? C'est à dire que je ne veux pas que l'image change quand mon personnage est arrivé en fin d'écran, mais qu'elle change par exemple quand mon personnage est sur la 2e colonne de l'écran !
Citer : Posté le 05/10/2013 12:52 | #
Tu m'apprends quelque chose Remiweb !
Moi qui pensais être limité à 9 pour mon RPG, et ça me posait plein de problèmes, je saurai maintenant...
Et oui tu peux Drakalex, c'est juste un réglage de variable, tu peux faire commencer le scrolling à partir de n'importe quelle "rangée", et faire en sorte qu'au bout le scrolling stoppe pour que tu ailles au bout de la map sans avoir de l'espace vide affiché ! Ça demande 5mn de réflexion, donc ça je te laisse y penser par toi-même, c'est tout bête !
Citer : Posté le 05/10/2013 12:58 | #
Je vois vite fait comment faire, mais ca me parait compliqué !
Par exemple j'ai une Str 1 qui comporte les 21*7 premiers caractères de la map, quand je franchis la 2e colonne, la première colonne de la Str 1 disparait et la première colonne de la Str 2 (qui contient aussi 21*7 caractères) s'affiche, et ainsi de suite jusqu'à la fin du niveau, mais je ne vois pas comment faire pour sélectionner la première colonne, car quand on y pense, le premier caractère est le 1, celui d'en dessous est le 22, en dessous le 43, en dessous le 64 etc... Je ne vois pas comment faire pour remplacer tous les 21 caractères d'une Str par tous les 21 caractères d'une autres x)
Je sais pas si je suis clair mais je bloque vraiment
Citer : Posté le 05/10/2013 13:14 | #
Ouhla tu penses trop compliqué, fait comme je disais plus haut, une Str par ligne !
Comme ça à chaque déplacement, tu incrémentes ta variable qui donne le premier caractère des chaines à afficher
Citer : Posté le 05/10/2013 13:17 | # | Fichier joint
Non je ne peux vraiment pas, j'ai créé mon moteur de jeu y'a très longtemps, j'ai galéré pendant des semaines à le faire, je n'y comprends plus rien maintenant :'(, où alors je fais ce que tu dis, sauf que une fois toutes les Str incrémentées, je les regroupes toutes en une seule Str ! Ca ralentira un peu mais ce sera plus simple pour moi je pense.
Edit : Merci, j'ai réussi à faire du scrolling sur une ligne, je sais donc comment le faire pour 7 lignes, par contre je viens de me rendre compte que le plus compliqué en fait c'est pas le scrolling, mais le map making x
Re-Edit : Je suis en rage totale, je ne retrouve mon programme. Je vais devoir tout recoder. ><
Re-Re-Edit : J'ai mis en pièce jointe mon travail (jusque le scrolling d'un petit truc), pourrais-t-on me dire si c'est optimisé ? Car j'ai peur que ce soit très lent dès que je rajouterais le moteur de jeu :/
Re-Re-Re-Edit (ca commence à faire beaucoup xD) : Il y a un problème, sachant que je dois tester par exemple le bloc qui se trouve à ma droite, il faudrait que je mette Str X où X est la position de mon joueur, sauf qu'on ne peut pas mettre des variables pour afficher des Str !
Ajouté le 05/10/2013 à 16:17 :
Bon je vais arrêter de faire des edit x)
Alors voici la solution que j'ai trouvé :
[gray]""[/gray][b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]7[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]6[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]5[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]4[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]3[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]2[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
StrJoin(StrLeft(StrRight(Str [maroon]1[/maroon],S),[maroon]21[/maroon]),Str [maroon]8[/maroon])[b]->[/b]Str [maroon]8[/maroon]
// on crée une Str 8 de 21*7 qui contient toutes les Str, ce qui servira plus tard pour les tests de collision
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]1[/maroon],StrLeft(StrRight(Str [maroon]1[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]2[/maroon],StrLeft(StrRight(Str [maroon]2[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]3[/maroon],StrLeft(StrRight(Str [maroon]3[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]4[/maroon],StrLeft(StrRight(Str [maroon]4[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]5[/maroon],StrLeft(StrRight(Str [maroon]5[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]6[/maroon],StrLeft(StrRight(Str [maroon]6[/maroon],S),[maroon]21[/maroon])
[b][brown]Locate[/brown][/b] [maroon]1[/maroon],[maroon]7[/maroon],StrLeft(StrRight(Str [maroon]7[/maroon],S),[maroon]21[/maroon])
//On affiche toutes les Str une par une ce qui va plus vite qu'afficher la Str 8, mais ça revient au même.
Voilà, est-ce la bonne technique ?
Citer : Posté le 05/10/2013 17:27 | #
J'ai pas tout lu mais tu as l'air d'être parti sur la bonne voie!
Cf mon Super Run & Jump qui a un scrolling dans ce style, si tu veux t'en inspirer...
(il est pas ultra-fluide mais c'est dû à l'affichage Locate qui est trop lent...)
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 05/10/2013 17:30 | #
personnellement, j'avais essayé de faire un run and jump il y a très longtemps, et pour le moteur physique, j'avais mis tous les niveaux dans une matrice, que je décompressais ensuite dans la str, et je testait les collision avec la matrice. cela donnait des temps de chargement plutôt long au début, mais cela accélérait grandement la vitesse du jeu, et cela rend plus simple la compression des niveaux.
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 17:39 | #
Oui je pense aussi. Moi j'avais pas fait de compression, j'avais stocké direct les Str, mais je pense qu'on peut s'arranger pour les compresser énormément en base 8 (8 symboles possibles).
Mais elle fait quelle taille ta matrice???
Moi elle aurait pris toute la mémoire!
C'est vrai il y a peut-être aussi que
je teste les collision avec des StrCmp... (cf plus bas) C'est peut-être ça aussi qui est lent, même si en général je fais plein de tests de rapidité des fonctions avant...Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 05/10/2013 17:47 | #
C'est pas dur de faire du scrolling horizontale mais faut vraiment mettre 1 Str par ligne et comme dit plus haut enregistrer la map dans une matrice pour les collision. C'est la méthode la plus simple et la plus efficace, et je peux t'assurer qu'il ne faut pas des semaines pour créer un moteur de ce type à la limite un jour
Projet de combat au tour par tour type DOFUS mais totalement orienté sur le PvP. Le projet va demander un peu de temps mais soyons patient...
Le titre (laby3D) en dit long sur son contenu : il s'agit d'un simple moteur de labyrinthe en "3D" (enfin on va dire juste un effet de profondeur ). il aura la particularité d'être aggrémenté de superbes petites animations sur les rotations d'angles de vue ! j'y bosse pas mal et j'espère bien le réussir !
Le jeu devrait sortir bientôt
Citer : Posté le 05/10/2013 17:51 | #
Attend non je crois que c'était bien avec les matrices mes tests de collision!
Oui c'est sûr c'est pas super compliqué, maintenant j'aimerais juste voir genre si je peux pas faire un SRJ2 avec du scrolling vertical, mais ça va être plus chaud...
(Enfin Remiweb l'a déjà fait avec Calcraft donc ça devrait le faire!)
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 05/10/2013 17:53 | #
ben en soit, le moteur physique ne change pas beaucoup, c'est juste que pour l'affichage des str, il faut recalculer a chaque frame leur hauteur, ce qui n'est pas hyper long, mais comme on ne peut pas faire locate 1,1,str A, ca prendra plus de lignes de code
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 17:54 | #
En fait j'avais créé le moteur assez vite, mais j'ai vraiment galéré pendant une semaine pour implémenter un double saut
Donc pour avoir le plus de rapidité possible, il vaut mieux tester les collisions avec une matrice ? Mais je transforme la matrice en Str ou la Str en Matrice ?
Sinon merci pour vos réponses !
Citer : Posté le 05/10/2013 17:57 | #
tu transforme la matrice en str (je pense que c'est le plus simple)
un exemple (fait rapidement, mais dans l'idée c'est ca)
mat[a,1] == 0 => strJoin(str1,"F")->str1
mat[a,2] == 0 => strJoin(str2,"F")->str2
mat[a,3] == 0 => strJoin(str3,"F")->str3
mat[a,4] == 0 => strJoin(str4,"F")->str4
mat[a,5] == 0 => strJoin(str5,"F")->str5
mat[a,6] == 0 => strJoin(str6,"F")->str6
mat[a,7] == 0 => strJoin(str7,"F")->str7
next
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 18:04 | #
Oui tu gardes une matrice quand même pour faire les collisions sans passer par les Str!
(Dodormeur Tu penses que c'est plus court que de transformer des Str en matrice? Moi je pense que ça se vaut, après c'est plus le stockage qui importe...)
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 05/10/2013 18:11 | #
Ca voudrait dire que je transforme la matrice en str à chaque tour ? Mais ca va être super lent non ? oO
Ajouté le 05/10/2013 à 18:15 :
Et surtout une matrice de 21*7 fais 1800 octets ! Je vais donc devoir définir le niveau en faisant [[0,3,7][5,2,4]]->Dim Mat A !
Remarque, définir une matrice de 21*7 ne prend (que) 340 octets. Un bon niveau fera donc environ 1500-2000 octets à définir ! C'est énorme !
Je me vois vraiment pas définir tout un niveau en chiffres en plus :/
Citer : Posté le 05/10/2013 18:31 | #
bon après, j'ai fait ça assez rapidement, mais si tu change de base, il y a moyen de bien compresser le tout (et même plus qu'en enregistrant dans les str) mais par contre, c'est vrai que les temps de chargement sont plutôt long (mais tu peut en profiter pour faire 2 lignes de scénar, ou une petite animation où on voit le perso qui se deplace)
envie de plonger dans la mer pour ramasser des tresors? => ballon sea
envie de sauver l'univers dans un jeu avec une longue durée de vie? => saviors of the future
un add-in addictif avec plein de secret et de trophées => evasion survival
un shmup bien dur et sadique => saviors 2
merci a tout le monde pour son soutien
zelda prizm de smashmaster (en esperant qu'il puisse le finir)
les tests de marmotti
un RPG de dark storm
(dont je connais le nom, mais pas vous )Arcuz !Citer : Posté le 05/10/2013 18:33 | #
Bah moi par exemple je me suis créé un éditeur vite fait qui renvoie les 7 Str (une par ligne), qui font genre 150 de long, voire plus je me souviens plus, et je les mets directement dans le programme.
Après non tu charges ta matrice au début, tu crées tes Str, à la rigueur tu coupes en plusieurs si tu veux faire un niveau long, et tu te sers de tes Str pendant tout le niveau.
Après oui tu peux stocker dans une matrice, mais là faut absolument compresser! Tu pourrais par exemple avoir tes matrices compressées qui ne bougent jamais, et pour le niveau en cours tu décompresses la matrice correspondante et tu t'en sers pour les collisions et tout. Comme ça tu n'as qu'une seule "grosse" matrice à chaque fois.
Après pour la décompression... Faut ruser!
Pour Timeless Remix je suis passé de 14300 octets à 1620 octets pour les 33 niveaux du jeu de base! Et encore je peux faire mieux, j'ai eu une révélation en lisant l'article wikipédia sur l'entropie de Shannon!
Tu peux même compresser les chiffres de la matrice dans une Str (ironie du sort) et tu appliques plein de transformations via les bases numériques, pour compresser et re-compresser le tout!
Un long temps de chargement au début n'est pas un problème, et ça permet de stocker plus de niveaux!
Timeless Remix
Super Run & Jump
Timeless
Les tests vidéo de Marmotti
Timeless Remix Airwolf
Citer : Posté le 05/10/2013 18:42 | #
xD On est pas dans Inception non plus !
Bon la compression je pense pas que ce soit trop mon truc, mais en gros si j'ai bien compris, je mets mon niveau sous forme [[x,x][x,x]]->Mat A, et ensuite je fais une boucle comme a dit Dodormeur qui retranscrit les chiffres de la matrice en une Str !