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

Pages: [1]
1
Fenêtrage / Re : PB Keyboard vs Joystick latence !
« le: Décembre 04, 2016, 02:03:51 pm »
Merci pour la réponse,

Ok , je viens de retester , je me suis embrouillé tout seul je crois , fausse alerte ! ;)

il me reste plus qu'a implémenter le module sfml-system dans mon moteur. il à l'air de gérer beaucoup mieux les input joystick que Allegro5 (apparement). je vais tester ça!


2
Fenêtrage / PB Keyboard vs Joystick latence !
« le: Décembre 04, 2016, 11:53:43 am »
Bonjour,
je voulais tester quelque chose qui semble assez problématique dans les bibliothèques que j'utilise (Allegro5 et SFML).

Je voulais voir si y a bien un problème de latence dans les entrée joystick/gamepad, j'ai écris ce petit bout de code, pour tester la différence de réactivité entre les touches du clavier et les boutons du joystick :
#include <SFML/Graphics.hpp>
#include <SFML/Network.hpp>
#include <iostream>
#include <vector>

int main()
{
    sf::RenderWindow winRender(sf::VideoMode(1280,720), "Input TEST");
    sf::View view(winRender.getDefaultView());
    winRender.setMouseCursorVisible(true);

    if (sf::Joystick::isConnected(0))
    {
        std::cout << " Gamapad 0 connected ! \n";

        unsigned int nbButton = sf::Joystick::getButtonCount(0);

        std::cout << " nb Buttons : " << nbButton << " \n";

        if (sf::Joystick::hasAxis(0, sf::Joystick::Z))
            std::cout << " Has Z axis ! \n" ;
    }

    winRender.setFramerateLimit(60);

    struct Player
    {
        float _px;
        float _py;
        float _radius;
        float _speed;
        sf::Color _color;
        sf::CircleShape _circle;

        Player(float px, float py, float radius, float speed, sf::Color color):
            _px(px),
            _py(py),
            _radius(radius),
            _speed(speed),
            _color(color)
        {
            _circle.setPosition(_px,_py);
            _circle.setRadius(_radius);
            _circle.setOrigin(_radius,_radius);
            _circle.setFillColor(_color);
            _circle.setOutlineThickness(2);
            _circle.setOutlineColor(sf::Color(255,255,0));
        }
        void update(float px, float py)
        {
            _px = px;
            _py = py;
            _circle.setPosition(_px,_py);
        }
        void draw(sf::RenderWindow * renderWindow)
        {
            renderWindow->draw(_circle);
        }
        void move(float vx, float vy)
        {
            _px += vx * _speed;
            _py += vy * _speed;
            if (_px < 0)    _px = 0;
            if (_px > 1280) _px = 1280;
            if (_py < 0)    _py = 0;
            if (_py > 720)  _py = 720;
        }
    };

    std::vector<Player> vecPlayer;

    vecPlayer.push_back(Player(640,360,32,4,sf::Color(255,20,10)));
    vecPlayer.push_back(Player(640,360,32,4,sf::Color(55,220,10)));

    while (winRender.isOpen())
    {
//        sf::Event event;
//
//        while (winRender.pollEvent(event))
//        {
//            if (event.type == sf::Event::Closed)
//                winRender.close();
//
//            if ((event.type == sf::Event::KeyPressed) && (event.key.code == sf::Keyboard::Escape))
//                winRender.close();
//        }
    // Update
        sf::Joystick::update();
        // GamePAD input !
        float joyX = sf::Joystick::getAxisPosition(0, sf::Joystick::PovX);
        float joyY = sf::Joystick::getAxisPosition(0, sf::Joystick::PovY);

        if (joyX > 10) vecPlayer[0].move( 1, 0); // RIGHT
        if (joyX <-10) vecPlayer[0].move(-1, 0); // LEFT
        if (joyY > 10) vecPlayer[0].move( 0,-1); // UP
        if (joyY <-10) vecPlayer[0].move( 0, 1); // DOWN

        // KeyBoard Input !
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))    vecPlayer[1].move( 0, -1);
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))  vecPlayer[1].move( 0,  1);
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))  vecPlayer[1].move(-1,  0);
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right)) vecPlayer[1].move( 1,  0);

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape))
            winRender.close();

        //std::cout << x << "\n";
        for (unsigned i(0); i<vecPlayer.size(); i++)
        {
            vecPlayer[i].update(vecPlayer[i]._px, vecPlayer[i]._py);
        }

    // Render

        winRender.clear();

        for (unsigned i(0); i<vecPlayer.size(); i++)
        {
            vecPlayer[i].draw(&winRender);
        }

        winRender.display();
    }

    vecPlayer.clear();
    return 0;
}

 

Pour ce faire j’utilise le petit soft "joyToKey": http://joytokey.net/en/download pour simuler la frappe sur le clavier afin de tester la synchro avec les boutons du Gamepad.

Il s'avère qu'il existe bien une différence de réactivité entre les 2 périphériques, ce qui est assez gênant si on veux faire un gameplay assez nerveux !

Vous pouvez tester de votre côté, on vois que les 2 cercles se désynchronise petit à petit quand je fais bouger avec la manette et "joyTokey" parametré avec les touches direction du clavier.



3
Général / Re : PB CodeBlocks : smart pointer->code completion !
« le: Novembre 19, 2016, 11:09:57 pm »
C'était plus ou moins une question déguisé, si quelqu'un a pu résoudre ce pb d'auto complétion manquant dans CodeBlocks.

C'est vrai, cela concerne pas SFML, pas de soucis ;)

4
Général / PB CodeBlocks : smart pointer->code completion !
« le: Novembre 19, 2016, 09:57:20 pm »
Je ne sais pas si vous avez remarqué , quand on utilise les smart pointer dans CodeBlocks , l'auto complétion ne fonctionne pas mais ça marche toujours avec les raw pointers à la C et pas avec les unique_ptr,  shared_ptr, etc.

J'ai fais des recherches, mais je n'ai pas trouver de réponses très satisfaisante, moi qui comptais les utiliser plus souvent qu'avant.
J'ai testé avec Visual Studio ça marche y a pas de soucis, mais pas sous codeBlocks qui reste mon IDE de choix (léger, rapide et assez stable).


5
Général / Re : Erreur Execution du programme manque [ libjpeg-62.dll ]
« le: Octobre 26, 2016, 02:05:26 pm »
Voila ce que j'ai dans le fichier CmakeCahe.txt :

...

//Path to a file.
JPEG_INCLUDE_DIR:PATH=P:/SDK/SFML-2.4.0/extlibs/headers/jpeg

//Path to a library.
JPEG_LIBRARY:FILEPATH=P:/SDK/SFML-2.4.0/extlibs/libs-mingw/x86/libjpeg.a

...

//Details about finding JPEG
FIND_PACKAGE_MESSAGE_DETAILS_JPEG:INTERNAL=[P:/SDK/SFML-2.4.0/extlibs/libs-mingw/x86/libjpeg.a][P:/SDK/SFML-2.4.0/extlibs/headers/jpeg][v()]

..

//ADVANCED property for variable: JPEG_LIBRARY
JPEG_LIBRARY-ADVANCED:INTERNAL=1


EDIT : Ok je viens de corriger la configuration du compilateur, y a bien eu un conflit de linkage, il a prit le libjpeg.a de Allegro5.11 et non celui générer avec SFML2.4, ça marche nickel maintenant ;) !

Merci beaucoup Laurent pour ta disponibilité et ton aide ! ;)

6
Général / Re : Erreur Execution du programme manque [ libjpeg-62.dll ]
« le: Octobre 26, 2016, 01:46:23 pm »
Oui j'ai essayer ça marche avec les versions précompilé, ça marche pour moi, mais j'ai voulu créer une version avec une autre version de gcc (5.2).
dans les options CMake j'ai juste coché SFML_USE_STATIC_STD_LIBS et SFML_BUILD_EXAMPLES, tout les exemples fonctionnent correctement.

Effectivement la piste d'un autre libjpeg qui trainnent quelque part pourrait être la solution, vu que j'utilise d'autre librairie (Allegro5 etc) configurer dans mon CodeBlocks par defaut.

7
Bonjour,

Voila ayant recompiler correctement la SFML 2.4.0 (cmake etc) je voulais tester un programme simple, la compilation marche nickel mais lors de l’exécution j'ai directe une erreur, comme quoi il manque une dll :

libjpeg-62.dll

Serait-ce un oublie dans le package ou bien autre chose ? ou pourrait-on la trouver ?

Merci.

Pages: [1]