CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Un énorme bug dans la librairie SDL ???

e-nis
e-nis
Niveau 10
30 mars 2005 à 14:18:18

Bonjour à tous.
Nous sommes en train de concevoir un jeu d´aventure style Zelda, en C++.
Jusqu´à maintenant, ça avance plutôt bien, grâce surtout aux conseils et tutoriaux de notre cher modérateur.
Mais nous avons remarqué un bug insoluble : en essayant d´afficher une tile qui figure sur la 2ème ligne ( ou colonne) du chipset sur notre map, pleins de bugs d´affichage surgissent...
Nous ne comprenons pas l´origine de ce bug.
Toute autre tile s´affiche parfaitement.
Si quelqu´un a un jeu qui marche, peut-il essayer d´afficher la tile n°1 ( la deuxième donc) et nous dire si ça bugge ou pas?
Merci d´avance.

Vengeur41
Vengeur41
Niveau 10
30 mars 2005 à 15:51:36

J´ai pas tout a fait compris ton problème.

Peut-tu mieux expliquer ?

Sinon, voici un exemple d´affichage de tiles :
http://membres.lycos.fr/vengeurstock/TILETEST.zip

Quintoff
Quintoff
Niveau 10
30 mars 2005 à 15:56:39

Vengeur tu veux pas mettre un lien pour dl ton SDL.dll qui sert pour TILETEST stp.

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:05:10

En fait, avec Tile Editor, j´ai réussi à créer une map, ensuite il génère tout seul une matrice et un chipset.
On a réussi à tout incorporer dans notre projet.
Pour afficher une tile, on procède au découpage du chipset carré par carré ( 16*16 ou 32*32), le premier en haut à gauche est le numéro 0 ( 1ère ligne et colonne), la deuxième tile est la n°1 ( 1ére ligne, 2ème colonnne dans le chipset).
Là où ça coince, c´est quand on demande l´affichage d´une tile qui se trouve sur la 2ème colonne ou la 2ème ligne du fichier chipset ( qui contient les tiles à utiliser pour les maps).
Ca ne s´affiche pas, ou alors ca affiche autre chose, et ca bugge complètement ( genre quand le perso passe dessus, ca affiche autre chose).

On a essayé l´autre méthode ( créer un fichier pixel par pixel et demander le remplacement des pixels d´une couleur donnée par une tile donnée) et ça a toujours pas marché.
Mais les autres tiles s´affichent parfaitement.

Au fait, ton lien ne marche pas chez moi.

Vengeur41
Vengeur41
Niveau 10
30 mars 2005 à 16:09:01

Jte lavais dja donné Quintoff :)
http://membres.lycos.fr/vengeurstock/SDL.zip

A mon avis, tu devrais coder ton propre programme de génération de map. Tu verras, au moins tu aura le " controle" lol.

Sinon, le lien fonctionne avec FireFox et Konqueror, j´ai pas essayé avec autre chose...

Quintoff
Quintoff
Niveau 10
30 mars 2005 à 16:12:00

A merci c´est juste je t´avais dja posé la question mais je ne retrouvais plus le topic :D

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:30:12

Je ne pense pas que ça soit à cause de ça.
De toute façon, on a essayé l´autre méthode, à savoir créer un fichier pixel par pixel et remplacer chaque pixel d´une couleur donnée par une tile.
Ca marche toujours, sauf pour ces fichus tiles de la 2ème ligne ou colonne.
Peux-tu essayer dans ton programme de demander l´affichage de la tile n°1? ( deuxième en partant de la gauche)

Vengeur41
Vengeur41
Niveau 10
30 mars 2005 à 16:34:55

En tout cas ca vient pas de la SDL...

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:44:00

C´est la seule explication que j´ai trouvée...
Notre code n´est certainement pas buggé, sinon pourquoi afficherait-il les autres tiles?
Nous avons même essayé un code donné par le modérateur, qui n´affiche que 2 tiles!
Ca marche quand on affiche la tile n°10 ou 7, mais ça foire avec la n°1.

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:47:11

Essaye de faire le test avec un de tes jeux, s´il te plait...

jejej
jejej
Niveau 9
30 mars 2005 à 16:52:49

Et bah redessines ton tile numero 2 a une autre position :ok:
sinon , je t´assure que ca vient pas de la SDL , sois en sur , c´est trop simple de se dire ça quand son jeu bug :)

montre un bout de code peut etre ? ( affichage + collisions ) enfin , tu as pris celui de JYY non ?

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:55:16

Oui, je l´ai essayé.
J´ai remplacé map[k]=10 par map[k]=1, et là, ca bugge!!!

e-nis
e-nis
Niveau 10
30 mars 2005 à 16:55:51

JYY nous a donné un code qui marchait chez lui, ça marchait chez nous aussi, mais pas quand on appelle les tiles en question.

jejej
jejej
Niveau 9
30 mars 2005 à 16:59:57

peut etre qu´il s´agit de tile avec des information de transparance ( tga ? ) qui ne fonctionnent pas avec le format des bmps ? doute . .. :) enfin , gl

JeanYvesYves
JeanYvesYves
Niveau 10
30 mars 2005 à 22:33:17

désolé, pour le moment, pas eu le temps de regarder mieux : je suis assez débordé.

Mais toujours se remettre en question avant d´accuser la SDL :)

Décompose l´appel de ton Blit :
controle la valeur calculée de chaque parametre, en mode débug : y´en a surement un qui explose les limites.

Ptival
Ptival
Niveau 10
30 mars 2005 à 22:52:57

Surtout que c´est idiot de dire que la SDL ne veut pas afficher les tiles de la 2° ligne ou colonne, vu que la SDL ne sait pas que tu as découpé ton truc en lignes et en colonnes de 16x16 pixels...Elle se contente de prendre le carré décrit et de le coller, après si elle colle autre chose il ya un problème, mais venant de l´utilisateur :)

Le truc c´est que tu as pitêtre un problème lorsque la valeur est 1x16 en x ou y...Faudrait nous montrer le code de la boucle d´affichage pour voir ça...

e-nis
e-nis
Niveau 10
31 mars 2005 à 13:15:15

Re!
J´ai pas de connexion chez moi donc je ne peux pas toujours répondre.
En fait, pour les sources, vous pouvez essayer avec le code de JYY, encore disponible ici :
http://perso.numericable.e.fr/~fvirtman/promenade32.zip

Après, il faut aller dans le fichier fmap.c ( enfin, de mémoire), là où on demande l´affichage des tiles.
On en affiche deux, la tile n°10 et la tile n°7.
Essayez de remplacer l´une d´elles par la tile n°1.
( mettre map[k]=1)
Compilez, et dites-moi si ca marche ou pas.
Ca ne marche pas chez moi et chez un pote, que ce soit sur Visual Studio . NET ou 6.0.
L´affichge est tout simplement buggé, parfois aléatoire, et le passage du perso sur les tiles en question en fait parfois apparaitre d´autres, ou fait apparaitre des " trainées".

J´ai dit que c´était un bug dans SDL car je n´arrive pas à voir le problème dans le code de JYY, qui est à priori bon.
Je ne comprends pas qu´on n´arrive pas à blitter les tiles en question ( que ce soit en 16*16 ou en 32*32)

LGV
LGV
Niveau 28
31 mars 2005 à 14:09:54

" je n´arrive pas à voir le problème"

d´ou l´utilite du mode debug...

e-nis
e-nis
Niveau 10
31 mars 2005 à 14:13:54

J´essaye justement de voir les valeurs des variables, et tjrs pas trouvé de valeurs bizarres...
Sinon, quelqu´un a essayé ?

e-nis
e-nis
Niveau 10
31 mars 2005 à 17:04:59

Effectivement, SDL n´est pas buggé, l´erreur semble provenir de la fonction Blit ( et pas SDL_Blit) au moment de créer la surface S.
Pour la 1ère colonne, x2=x1, donc le paramètre sera -1, et là, ca bugge.
Pareil pour la 1ère ligne, avec y2=y1.
___________________________

void Blit(SDL_Surface* source,int x1,int y1,int x2,int y2,SDL_Surface* dest,int x3,int y3)
{
SDL_Rect S=Rect(x1,y1,x2-x1+1,y2-y1+1);
SDL_Rect D=Rect(x3,y3,0,0);
SDL_Rect* pS=&
if ( x1 == 16) S=Rect(x1,y1,-1,y2-y1+1);
if ( y1 == 16) S=Rect(x1,y1,x2-x1+1,-1);
if ( x1==16 && y1==16) S=Rect(x1,y1,-1,-1);
if ( x1<0)
pS=NULL;
SDL_BlitSurface(source,pS,dest,&);
}
__________________

Une facon débile de corriger ca en partie a été de faire des if ( comme vous le voyez dans le code, à la fin)
Mais après, on essaye de plancher pour trouver la vraie solution.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment