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

Pages: [1] 2 3 ... 53 Suivante »
1
Réseau / [Résolu] Re : Le client ne reçoit pas ma std::string
« le: Novembre 09, 2016, 09:14:26 pm »
C'est bon j'ai trouvé le problème et la solution : le serveur envoie un message vide au client entre temps, donc, j'ai fais précédé mes messages par un identifiant unique que je rajoute à l'envoi et à la réception je fais un test pour savoir si c'est le message que j'attendais qui est reçu ou un autre et enfin je retire l'identifiant.

2
Réseau / Le client ne reçoit pas ma std::string
« le: Novembre 06, 2016, 02:49:14 pm »
Salut, j'essaye d'extraire un certificat d'openssl :

int Rsa::ossl_getCertificate (unsigned char** out) {
        return i2d_X509(x, out);
}
 

Pour l'envoyer à mon client.

void Network::sendPbKeyRsa(User &user) {
            unsigned char* out = nullptr;
            int length = EncryptedPacket::getCertificate(&out);
            std::string response (reinterpret_cast<char*>(out), length);
            Packet packet;
            packet<<response;
            user.getTcpSocket().send(packet);
            user.setHasPbKeyRsa(true);
        }
 

Mais à la réception ma chaîne de caractère est vide, le paquet est invalide car la taille de la chaîne est trop longue par rapport à la taille initiale du paquet.

if (clientTCP.receive(packet) == Socket::Done) {
                        packet>>message;
                        Network::setPbKey(message);
                        pbKeyRsaReceived = true;
 

De ce fait je n'ai pas de message et mon programme plante.
Pourtant cela marchait bien auparavant, y a t'il eu des changements ?
Faut il rajouter un \0 manuellement à la fin du tableau d'unsigned char ?
Bref je ne comprends plus rien car au départ ça fonctionnait bien et ici tout à coup ça ne fonctionne plus.


3
Houlalala, la taille est beaucoup trop grande :

Packet& Packet::operator >>(std::string& data)
{
    // First extract st
    Uint32 length = 0;
    *this >> length;
    std::cout<<"length : "<<length<<std::endl;
 

La chaine que je mets dans le paquet à l'envoi fait 360 de longueur et là il m'indique qu'elle fait plus de 1 million dans le paquet à la réception.

Il y a donc un problème là :

Packet& Packet::operator >>(Uint32& data)
{
    if (checkSize(sizeof(data)))
    {
        data = ntohl(*reinterpret_cast<const Uint32*>(&m_data[m_readPos]));
        m_readPos += sizeof(data);
    }
    return *this;
}
 

elle fait quoi la fonction ntohl ?



4
Le framework à un site web, n'hésitez pas à aller lire la documentation :

Ici

5
J'ai réinstallé SFML et maintenant je reçois le message deux fois, mais je remarque que mon PC commence à se faire vieux..., le disque dur à mon avis commence à déconner. :/

Par contre plus moyen de refaire fonctionner mon plus gros projet. :/

packet>>message;
 

Il y a des données dans le paquet mais pas moyen de les extraire, checkSize renvoie faux...(le paquet n'est pas valide)

Hors que il y a une semaine ça fonctionnait à merveille, bref, c'est mon PC qui doit commencer à déconner. Je vais juste m'en servir pour aller sur internet, pour ce qui est du développement, je compte arrêter et consacrer ma vie à d'autres activités.

Là ou je vais aller loger ils vont ouvrir une salle multimédia et je vais pouvoir partager mes connaissances et me régaler.

6
Salut, j'ai ça depuis pas longtemps; ça n'affiche pas le message du serveur.

Code source du serveur :

#include <SFML/Network.hpp>
#include <iostream>
int main (int argv, char* argc[]) {
    sf::TcpListener listener;
    if (listener.listen(10000) != sf::Socket::Done)
        std::cerr<<"Error while listening to the port"<<std::endl;
    sf::SocketSelector selector;
    selector.add(listener);
    std::vector<sf::TcpSocket*> clients;
    while (true) {
        if (selector.wait(sf::milliseconds(10))) {
            if (selector.isReady(listener)) {
                sf::TcpSocket *client = new sf::TcpSocket();
                if (listener.accept(*client) == sf::Socket::Done) {
                    std::cout<<"client connected"<<std::endl;
                    selector.add(*client);
                    clients.push_back(client);
                }
            }
            for (unsigned int i = 0; i < clients.size(); i++) {
                if (selector.isReady(*clients[i])) {
                    sf::Packet packet;
                    if (clients[i]->receive(packet) == sf::Socket::Done) {
                        std::string message;
                        packet>>message;
                        std::cout<<"message : "<<message<<std::endl;
                        message = "I'm fine thanks";
                        packet.clear();
                        packet<<message;
                        clients[i]->send(packet);
                    } else {
                        std::cout<<"client disconnected"<<std::endl;
                        selector.remove(*clients[i]);
                        delete clients[i];
                    }
                }
            }
        }
    }
    return 0;
}

Code source du client :

#include <SFML/Network.hpp>
#include <iostream>
int main (int argv, char* argc[]) {
    sf::TcpSocket socket;
    if (socket.connect(sf::IpAddress::LocalHost, 10000) != sf::Socket::Done)
        std::cerr<<"Server not running"<<std::endl;
    std::string message = "Hello server";
    std::string message2 = "how are you";
    sf::Packet packet;
    packet<<message;
    socket.send(packet);
    packet.clear();
    packet<<message2;
    socket.send(packet);
    packet.clear();
    sf::SocketSelector selector;
    selector.add(socket);
    while (true) {
        if (socket.receive(packet) == sf::Socket::Done) {
            packet>>message;
            std::cout<<"message : "<<message<<std::endl;
        }
    }
    return 0;
}

Pourtant avant ça marchait.

Rien à voir mais j'ai aussi ce soucis :

static bool startCli (int portTCP, int portUDP, sf::IpAddress, bool useSecuredConnexion = true);

Lorsue j'appelle la méthode sans passer le troisième paramètre, la variable booléenne vaut false hors u'elle devrait valoi true.

Bref, je ne parviens plus à travailler, tout cela est vraiment instable, ce ui marchait hier ne marche plus aujourd'hui.

7
Général / Re : Undefined reference.
« le: Octobre 03, 2016, 12:57:50 pm »
C'est bizarre les liens pointent bien vers la bonne destination (libsfml-network.so -> libsfml-network.so.2.2.0, etc...) mais code::block me renvoie des erreurs de référence indéfinie vers sf::IpAddress::Any, TcpListener, etc...

8
Général / Undefined reference.
« le: Octobre 03, 2016, 11:07:41 am »
Salut, j'ai installé SFML 2.4, je voudrais remettre la 2.2 mais j'ai des erreurs de référence indéfinie, en fait le lien symbolique (libsfml-network.so) pointe toujours vers libsfml-network.so.2.4 et non vers libsfml-network.so.2.2

Comment puis je changer la destionation du lien symbolique ?

Merci.

9
Réseau / Re : Serveur UDP ne reçoit rien
« le: Octobre 03, 2016, 10:56:15 am »
J'ai aussi ce problème depuis que j'ai installé SFML-2.4.

Mon serveur ne reçoit plus aucun message.  :(

10
Malgré cela :
Citer
Dans le cas improbable où un jour quelqu'un utilise ta bouse, il utilisera tes interfaces et pas la SFML ou la SDL non ?

Oui, il pourra utiliser mes interfaces, mais il ne sera pas obligé de le faire!

Cela dépend à quel niveau il veut travailler. (Au niveau du framework lui même ou bien seulement au niveau de SFML ou bien de la SDL, ou bien tout autre librairie)

Car pour créer des plus petits jeux la couche d'abstraction n'est pas nécessaire.

M'enfin de toute façon, cela ne regarde que moi, vu que personne d'autre à ma connaissance n'utilise mon framework, je le fais juste pour me simplifier la vie...

Mais je pense que il y en a quand même qui me suivent vu que j'ai quelque visite sur ma page facebook, bref...

11
Je ne suis pas sûr que SDL soit faîtes pour faire du c++, ni optimisée pour, car, dès que j'essaye d'encapsuler les fonctions de la SDL dans des classes je me retrouve avec une fenêtre qui ne s’efface pas.

SFML marche bien à partir du moment ou tu n'as pas trop de fenêtre et surtout de fenêtre invisible. :/ (Avec X11 en tout cas)

Je galère à faire mon jeux à cause de ça. :/

Si je dois recoder un module fenêtre j'en ferai un mais vraiment très simple, avec juste la création de fenêtre x11.

PS : et oui au niveau de la communauté aussi c'est cela qui m'a fait vraiment hésiter plusieurs fois entre SFML et SDL et comme le dis Laurent ça fait trois fois que je dis que je vais passer à la SDL. XD

Et encore, ce n'est que des petits libs SDL et SFML pour faire des applications basique donc imagine ce que ça doit être lorsque j'utilise des frameworks plus conséquent. XD

12
Citer
Dans ce cas quel est l'intérêt de garder SFML ? Ca fait au moins 3 fois que tu dis que tu vas passer à SDL, fais le une bonne fois pour toute et tu seras tranquille...

Il y a encore des développeurs qui adore SFML car il la trouve plus simple à prendre en main que la SDL, donc, je pense que pouvoir choisir entre les deux, n'est pas une si mauvaise idée.


13
Pour cause de bugs SFML (bien que il y en avec SDL2 aussi), j'ai décidé de faire une interface qui permettra de choisir entre SDL ou bien SFML pour le fenêtrage.

SDL_Init(SDL_INIT_VIDEO);
    SDLRenderWindow window(800, 600, "SDL Render window", sf::ContextSettings(0, 0, 4, 3, 0));
    RectangleShape shape(Vec2f(100, 50));
    while (window.isOpen()) {
        window.clear();
        window.draw(shape);
        window.display();
        SDL_Event event;
        while (window.pollEvent(event)) {
            if (event.type == SDL_QUIT) {
                window.close();
            }
        }
    }
    SDL_Quit();
    return 0;
 

Bien sûr, au niveau de l'application il faudra choisir quel librairie utiliser.

SDL s'en sort mieux également au niveau du multi-threading et de la gestion multi-fenêtre/multi-écran, mais je n'ai pas encore testé avec les textures de rendus et les shaders.

PS : Les events ne seront plus de type sf::Event mais de type IEvent, et lors de la création de l'application il y aura une interface commune de type IRenderWindow quis ervira pour les fenêtres SFML et SDL.

14
Je peux en mettre plus ça ne changera rien, le moteur est en "biased raytracing", donc, j'effectue tout les calculs au niveau du GPU.
A partir du moment ou j'utilise des shaders le FPS descend, mais le driver opensource est plus lent..., d'après ce que j'ai lu, sur un driver propriétaire peut être que cela tournerais à 60 FPS surtout que j'effectue du dereffered shading. (C'est à dire que je calcule la lumière seulement dans la zone d'influence de la lumière)

C'est à dire en jouant avec les coordonnées de texture et en projetant des rayons entre le centre de mes lumières et les fragments de la scene.

PS : maintenant un rendu basique de lumière sans shaders avec juste du blending ça aura un FPS plus élevé oui, et pour la 2D je peux comprendre qu'un tel FPS paraisse nul, par contre pour le bumpmapping, le normalmapping, la réfraction et la composante spéculaire, un shader c'est obligatoire. :/


15
Projets SFML / Re : [ODFAEG] Version 1.1 Sortie!
« le: Janvier 27, 2015, 04:53:24 pm »
Oui, c'est trop lent avec le CPU, mais pour la version pro je vais quand même faire un système de raytracing au niveau du CPU mais cela servira juste pour créer des logiciels d'imageries. (Car c'est trop lent pour les jeux vidéos)

Par contre j'ai effectué toutes les transformations au niveau du CPU (avec du batching) et désormais je n'effectue qu'un seul appel à draw pour un ensemble de tiles utilisant les même matériaux!
J'ai également optimisé mon algorithme de frustrum culling.

Je passe donc d'un FPS de 15-20 à 30-40 avec les shaders, et 60 sans shaders.

Bref c'est beaucoup plus rapide que avec SFML qui effectue les transformations au niveau du GPU.

Bref mon FPS double je passe de 15-20 à 30-40 FPS :

Ici

Pages: [1] 2 3 ... 53 Suivante »