Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - kimci86

Pages: « Précédente 1 2 [3] 4 5 ... 7 Suivante »
31
Projets SFML / Re : Lord Of War [Prototype]
« le: Janvier 03, 2015, 06:57:04 pm »
Voilà qui est mieux :)

C'est assez amusant, mais je pense que c'est trop facile. En liquidant les points de renfort de n'importe quelle façon, on arrive à gagner.
J'aime bien les graphismes et les sons.

Sinon, je trouve un peu étrange que les animations des personnages continuent lorsqu'on a gagné. Les personnages courent sur place.
J'ai remarqué un petit problème d'affichage des lettres avec ma carte Intel qui ne se produit pas avec ma carte nvidia. Je joins un bout de capture d'écran.

Edit: Il ne me semble pas pertinent d'afficher les flottants avec 6 décimales ;)

32
Projets SFML / Re : Lord Of War [Prototype]
« le: Janvier 03, 2015, 04:54:14 pm »
C'est peut être à cause de wine, mais chez moi le jeu est très saccadé dès qu'on commence à avoir beaucoup de personnages.
Peut-on avoir une version pour linux ?

33
Graphique / Re : Collison Tileset
« le: Janvier 02, 2015, 03:35:47 pm »
Citer
Donc j'aimerais bien si possible que vous jetiez un oeil sur mon code (très peut simplifié et aussi pas très "propre")

Si tu veux que quelqu'un regarde ton code, pense au moins à l'indenter...

34
Fenêtrage / Re : problème avec fullscreen
« le: Novembre 04, 2014, 04:58:22 pm »
Bonjour,
Citation de: Tutoriels SFML
Une erreur que les gens font souvent est d'oublier de mettre une boucle d'évènements, car ils n'en ont pas besoin (ils utilisent les entrées temps réel à la place, typiquement). Mais sans gestion d'évènement la fenêtre ne sera pas réactive ; en effet, la boucle d'évènement a deux rôles : en plus de fournir les évènements à l'utilisateur, elle permet à la fenêtre de traiter ses évènements internes, ce qui est impératif a son bon fonctionnement.

http://sfml-dev.org/tutorials/2.1/window-window-fr.php#rendre-la-fenetre-un-peu-plus-vivante

35
Je crois comprendre que tu cherches à faire un barycentre de tes deux images (barycentre pixel par pixel).

En supposant que tes images n'ont que des pixels opaques, tu peux simplement afficher la première totalement opaque et la seconde par dessus avec une opacité choisie.

Dans les cas où tes images ont des pixels transparents, tu peux faire ce que tu veux avec un fragment shader qui calcule les barycentres pour chaque pixel.

36
Quel est ton problème précisément ?

37
Graphique / Re : Pointeur "RenderTexture" : possible?
« le: Octobre 14, 2014, 10:23:10 pm »
Bonsoir,
L'opérateur . est prioritaire par rapport au *.
http://fr.cppreference.com/w/cpp/language/operator_precedence

Soit on rajoute des parenthèses, soit on utilise l'opérateur -> qui est fait pour ça.

38
Système / Re : Problème avec sf::Time
« le: Octobre 08, 2014, 08:43:28 pm »
Une division entre des entiers donne un entier.

39
Graphique / Re : Texture mapping ! Oui, mais... *tousse*
« le: Juillet 31, 2014, 11:48:38 am »
En effet gl_TexCoord[0].xy donne la position normalisée du pixel en cours de traitement dans la texture de sable. Pour avoir la position correspondante dans la texture de l'alphamap, on peut multiplier ce vecteur par le rapport des tailles des textures. Ce n'est peut être pas la meilleure façon de procéder, je ne suis pas expert, mais ça marche bien.

uniform sampler2D texture;
uniform vec2 textureSize;

uniform sampler2D alpha;
uniform vec2 alphaSize;

void main(void)
{
    gl_FragColor = gl_Color * texture2D(texture, gl_TexCoord[0].xy);
    gl_FragColor.w *= texture2D(alpha, gl_TexCoord[0].xy * textureSize / alphaSize).x;
}

Il ne faut pas oublier de donner les valeurs correspondantes aux vecteurs textureSize et alphaSize à l'aide de la méthode setParameter du sf::Shader.

40
Graphique / Re : Texture mapping ! Oui, mais... *tousse*
« le: Juillet 30, 2014, 07:34:41 pm »
Vous avez une idée du pourquoi ?

Le pourquoi de quoi ? Quel est le problème ?

41
Graphique / Re : Image de plus de 1Go pixels
« le: Juillet 26, 2014, 07:33:53 pm »
Bonjour,
Je pense que le format png est plus approprié que le jpeg pour stocker une image de labyrinthe. Ça mérite de faire de tests.

42
Graphique / Re : Texture mapping ! Oui, mais... *tousse*
« le: Juillet 25, 2014, 11:21:23 am »
Mais donc, du coup, avec ce shader que tu proposes, ci je comprends bien, il faut que l'alphamap soit transparente, avec des tâches plus ou moins opaques de blanc, ou alors on conserve la nuance de gris avec le code Noir = Rien, Blanc = Plein comme ce que j'ai ?

On utilise des nuances de gris. D'ailleurs je vois que j'ai oublié quelque chose dans mon shader: Il faut multiplier la transparence du pixel par un scalaire bien sûr, pas par un vec4.
Pour obtenir ce scalaire, on peut choisir n'importe quel canal de l'alphamap entre rouge, vert et bleu puisqu'elle est composée de nuances de gris. J'ai choisi ici le rouge.

uniform sampler2D texture;
uniform sampler2D alpha;

void main(void)
{
    gl_FragColor = gl_Color * texture2D(texture, gl_TexCoord[0].xy);
    gl_FragColor.w *= texture2D(alpha, gl_TexCoord[0].xy).x;
}

43
Graphique / Re : Texture mapping ! Oui, mais... *tousse*
« le: Juillet 24, 2014, 05:35:34 pm »
Bonjour,

Il n'est pas utile d'appliquer l'alphamap en négatif sur l'herbe, cela crée une couronne grise autour du sable.

Il me semble plus approprié d'utiliser l'alpha map en tant que calque alpha pour le sable. On peut le faire au début du programme grâce une sf::Image dans laquelle on change l'alpha des pixels et que l'on charge ensuite dans une sf::Texture mais c'est probablement un peu lent et ça demande de faire une Texture par alpha map et par terrain.
Avec un sf::Shader, je ne suis pas expert mais ça devrait ressembler à ça :
uniform sampler2D texture;
uniform sampler2D alpha;

void main(void)
{
    gl_FragColor = gl_Color * texture2D(texture, gl_TexCoord[0].xy);
    gl_FragColor.w *= texture2D(alpha, gl_TexCoord[0].xy).x;
}
(edit: code corrigé)

Pour chaque pixel, on multiplie l'alpha du sable avec la nuance de gris de l'alpha map.

Du code pour le tester :
#include <SFML/Graphics.hpp>

int main()
{
    sf::Texture sandTex, grassTex, alphaTex;
    sandTex.loadFromFile("sand.jpg");
    grassTex.loadFromFile("grass.jpg");
    alphaTex.loadFromFile("alpha.png");

    sf::Sprite sand(sandTex), grass(grassTex);

    sf::Shader alpha;
    alpha.loadFromFile("alpha.frag", sf::Shader::Fragment);
    alpha.setParameter("texture", sf::Shader::CurrentTexture);
    alpha.setParameter("alpha", alphaTex);

    sf::RenderWindow window(sf::VideoMode(256, 256), "sfml window");

    while(window.isOpen())
    {
        sf::Event event;
        while(window.pollEvent(event))
            if(event.type == sf::Event::Closed)
                window.close();

        window.clear();
        window.draw(grass);
        window.draw(sand, &alpha);
        window.display();
    }

    return 0;
}

44
Graphique / Re : Collision Tilemap
« le: Mai 11, 2014, 11:13:54 am »
Bonjour,
Citer
1)
Comment et ou je pourrais ajoutez ses lignes de codes

Même si le plus sage serait de tout recommencer proprement (faire des classes, ne pas utiliser de variables globales, etc), avec ton code actuel, tu peux ajouter la gestion des collisions dans la fonction gestion_bloque, après le code qui replace le personnage dans l'écran s'il en sortait.

Citer
2)
après avoir ajouter ses lignes de codes...comment je fait pour faire le test(if)

par exemple "joueur.y = obstacle.y - joueur.h;" si c'est a 0 ou plus petit je block le perso, mais ou et comment vuc il peut être de tous le côté svp? ???

Je ne suis pas sûr d'avoir bien compris ta question, mais il me semble que tu veux savoir si la gestion des collisions avec l'obstacle ne va pas faire sortir le personnage de l'écran.

En effet, si tu prends ton personnage en sandwich entre le bord de l'écran et l'obstacle et que l'obstacle est déplacé vers le bord de l'écran, le personnage va finir par se trouver "écrasé" entre les deux... On pourrait alors choisir dans ce cas de faire perdre la partie.

Pour gérer ça, tu pourrais vérifier à nouveau que le personnage est dans l'écran après la gestion des collisions.

45
Graphique / Re : Collision Tilemap
« le: Mai 10, 2014, 08:14:36 pm »
Bonjour,
Pour "bloquer" ton personnage, tu peux le repositionner à la limite de obstacle lorsqu'il y a une collision.
Pour savoir où est cette limite, tu peux utiliser la direction dans laquelle se déplace le personnage pour savoir de quel coté il vient et en déduire de quel coté de l'obstacle il doit être repositionné. Après, il faut utiliser les tailles de l'obstacle et du personnage.

Voilà un exemple simplifié. (Il faudrait aussi tenir compte de l'origine des objets, comme tu utilises des objets dérivant de sf::Transformable)
Je ne sais pas comment est structuré ton programme et si c'est directement applicable mais j'espère que ça te donnera des idées.

if(collision(joueur, obstacle))
{
    switch(joueur.direction)
    {
        case UP: // le joueur vient d'en bas
            joueur.y = obstacle.y + obstacle.h; // on le place en bas de l'obstacle
            break;
        case DOWN:
            joueur.y = obstacle.y - joueur.h;
            break;
        case LEFT:
            joueur.x = obstacle.x + obstacle.w;
            break;
        case RIGHT:
            joueur.x = obstacle.x - joueur.w;
            break;
    }
}

Pages: « Précédente 1 2 [3] 4 5 ... 7 Suivante »