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

Pages: [1]
1
Réseau / Re : Recevoir plusieurs paquets via receive() ?
« le: Mai 14, 2013, 06:50:47 pm »
C'est vrai que le while ne coûte pas grand chose de plus. Et pour ton information, et comme l'a dit Laurent il y a en effet une fille d'attente. C'est d'ailleurs en partie pour ça qu'il y a des problèmes de pertes de paquets en UDP : lorsque la file est trop grande, le protocole "autorise" (si je puis dire ainsi, c'est surtout qu'il n'y a pas de vérifications) d'ignorer certains paquets (ce que le TCP évite). Mais comme dit précédemment c'est transparent, tu ne dois pas t'en soucier ;)

2
Réseau / Re : Performance du module réseau
« le: Mai 13, 2013, 10:30:28 pm »
D'accord, effectivement si je souhaite être plus haut niveau, autant ne pas réinventer la roue ! C'est exactement ce que je cherchais à savoir, merci de ta réponse !

3
Réseau / Performance du module réseau
« le: Mai 12, 2013, 10:30:22 pm »
Bonjour à tous !

J'utilise couramment la SFML, et il y a une question que je me pose depuis quelques temps par rapport au réseau : vaut-il le coup de passer sous une bibliothèque spécialisée comme Raknet 4 ? Serait-ce plus performant, et/ou existe-t-il des benckmarking qui ont été fait comparant les deux ? RakNet est réputée pour être très performantes et très rapide, en est-il de même pour le module réseau de la SFML, qui a l'avantage de très bien s'intégrer avec le reste de la bibliothèque ?

Merci d'avance  :)

4
Projets SFML / [Jeu 2D] Walecsx
« le: Octobre 06, 2012, 01:36:11 pm »
Bonjour à tous !


Je me présente, je suis Odhexan. J'ai 16 ans et programme en C/C++ depuis presque 3 ans, bien qu'il me soit arrivé d'essayer d'autres langages tel que le Basic, l'assembleur, etc... Finalement je me décide à poster une de mes créations les plus abouties, et de voir jusqu'où je pourrais aller en quelques sortes !

En savoir plus sur le projet

Genèse

Je n'ai aucune idée de comment cela m'est passé par la tête. Simplement, j'étais en train de programmer quand d'un coup je me suis dit: « Je veux faire ça ! ». Donc je me suis lancé, et à la fin de cette même après midi, j'avais déjà un prototype jouable et presque amusant. J'ai donc décidé de la continuer. Il s'appelait Gravity Jumper, mais je trouvais ça trop simple. J'ai donc opter pour Walecsx. Ça ne veut rien dire, mais au moins c'est original et ce n'était pas déjà pris ! ;)

Généralités et avancement

Le projet est déjà bien avancé, et c'est d'ailleurs la première fois que j'ai autant ressenti cette fameuse règle des 90%-90%. Le principe du jeu est simple: vous êtes une « entité », matérialisé comme une sorte de fumée. Vous devez sortir d'un labyrinthe et changeant votre gravité vers le haut, le bas, la gauche et la droite. Il n'est pas possible de sauter. C'est donc un gameplay fortement inspiré du célèbre jeu VVVVVV. Bien sûr, il y a plusieurs types de blocs (car les cartes du jeu sont formées de blocs), comme les blocs anti-grav', les blocs mortels, etc...


Un timer est mis en place pour le time attack bien sûr. Il n'est cependant pas possible de mettre le jeu en pause. Je mets personnellement environ 7~8 minutes pour faire une trentaine de niveaux. Je suppose donc que quelqu'un n'y ayant jamais joué aura au moins une durée de vie de 20~25 minutes les premières fois. ;)

Je me suis « amusé » à traduire le programme. Il est pour le moment disponible en français, anglais, et allemand. On ne peut pas encore choisir la langue, car le chemin vers le fichier de traduction est dans l'exécutable pour le moment. Mais c'est une fonctionnalité qui est bien sûr prévue. :)

Il y a un menu principal, où il est possible de choisir entre les niveaux d'apprentissage (des niveaux très très simple, qui montrent tout les blocs disponibles), et les niveaux principaux, présent en une vingtaine pour le moment. Ils sont tous encodés dans un fichier unique, ce qui sera plus facile pour la distribution de nouveaux niveaux à l'avenir (un seul fichier à distribuer à la place de plusieurs dizaines !).

C'est un jeu codé donc en C++, avec la bibliothèque SFML. Pour finir, je suis seul sur le projet et je compte le rester. Je ne suis pas graphistes, donc j’essaie de me débrouiller comme je peux avec GIMP. :)

Objectifs
Ce que je vise, c'est tout d'abord de me faire connaître en quelque sorte en postant une de mes créations. C'est la première fois que j'en poste une. J'aimerais aussi avoir des idées d'améliorations. Après tout, les premiers concernés ne sont autre que vous ! Après en tant que projet rémunéré, j'avoue m'être posé la question. Mais pour le moment je ne sais pas du tout. donc je vais commencer à distribuer des niveaux du jeu gratuitement histoire d'avoir des retours. J'aviserai plus tard si jamais... ;) Mais pour le moment, ce n'est pas décidé.

De plus, pour rajouter une durée de vie non négligeable, je distribuerais un éditeur de cartes pour que les joueurs puissent créer et distribuer !

Le projet et son originalité

Le changement de gravité, c'est un concept qui est rarement utilisé dans les jeux (de nom, je connais donc VVVVVV, Gravity Rush sur PS Vita. Il y en a sûrement d'autres, mais c'est relativement limité). Donc je mise sur le <italique>gameplay</italique> pour attirer du monde. En effet, ce ne seront pas les graphismes qui vont attirer les joueurs. Seulement il a beaucoup était dit que ce ne sont pas que les graphismes qui compte dans un jeu ! :)

Screenshots
http://uploads.siteduzero.com/files/404001_405000/404490.png
http://uploads.siteduzero.com/files/404001_405000/404491.png
http://uploads.siteduzero.com/files/404001_405000/404492.png

Téléchargements et système de versionnage

Ce que j'appelle le système de versionnage, c'est comment sont numérotés les versions du jeu. Il y a donc le nom du jeu, suivi du nombre de « modes ». Par exemple, 2 pour entrainement et niveaux principaux. Le second nombre, c'est le nombre total de niveaux.

Liens de téléchargement
Version 2.24: Lien
Version 2.20: Lien

Commandes

J'ai essayer de faire en sorte que les commandes soient le plus ergonomiques possibles, qu'elles marchent aussi avec tout les claviers:
  • Vous pouvez bouger avec les flèches gauche et droite ;
  • Vous pouvez changer la gravité en appuyant sur Ctrl + une des quatre flèche directionnel. Attention, le changement de gravité est absolu au repère, et ne dépends donc pas de votre gravité actuelle. C'est quelque chose qui sera changé au futur !

Un bug subsiste: lorsque la gravité est changée trop rapidement, il est possible de passer à travers les murs ! Veillez donc pour le moment à ne pas changer trop rapidement votre sens de gravité !


Pour ce qui est de la portabilité, je ferais en sorte que le jeu soit disponible sous Linux, Windows et Mac si je peux en avoir un sous la main. Pour le moment je n'ai que mon Windows, désolé pour l'attente pour les autres OS ! Une version Linux sera bientôt disponible. Disponible ! C'est le même lien de téléchargement que pour Windows. Par contre, tout les so devront être copiés dans /usr/lib, je n'ai pas trouvé pour le moment d'autres moyens...


Mot de la fin

Merci beaucoup de m'avoir lu en espérant que le projet vous plaise. Je posterai dès que possible un lien lorsqu'une nouvelle version sortira. En attendant, j'espère avoir des retours sur le principe du jeu, si les graphismes sont trop/pas assez simpliste, etc...  :)

5
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 29, 2012, 04:15:00 pm »
J'ai fait en sorte qu'on puisse tout voir sur l'image. Mais ça ne me l'avait pas fait, mais quand je quitte le programme, message d'erreur pour 'window', le même que pour les Packets.

[attachment deleted by admin]

6
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 27, 2012, 11:02:13 pm »
Non, j'ai lancé CMake en utilisant le générateur pour Visual C++ 2012, toutes les options était laissé par défaut.

7
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 27, 2012, 10:35:33 pm »
Effectivement, j'avais un peu améliorer. Désolé d'avoir mis le mauvais projet.

Donc voici le code du projet de test:
#include <SFML/Network.hpp>
#include <iostream>
#include <list>
#include <string>

class Info
{
public:
        Info(sf::IpAddress ip, sf::Uint16 port, std::string pseudo)
        {
                mIp = ip;
                mPort = port;
                mPseudo = pseudo;
        }
        sf::IpAddress mIp;
        sf::Uint16 mPort;
        std::string mPseudo;
};


std::list<Info> ip_list;
sf::Packet packet;

void treat(sf::UdpSocket *server)
{
        sf::Packet mPacket;    
        server->setBlocking(true);
        sf::IpAddress ip;
        sf::Uint16 port;
        server->receive(mPacket, ip, port);

        std::string str, pseudo;
        mPacket >> str >> pseudo;

        ip_list.push_back(Info(ip, port, pseudo));

        std::cout << "Recevived from " << ip << ": " << str << std::endl;

        for (Info &i : ip_list)
                std::cout << "Client: " << i.mIp << ":" << i.mPort << " -> " << i.mPseudo << std::endl;
}


int main()
{
        std::cout << "Connecting server..." << std::endl;
        sf::UdpSocket server, client;
        sf::IpAddress address;
        sf::Thread thread(&treat, &server);
        server.bind(5000);

        thread.launch();

        std::cout << "Enter address: ";
        std::cin >> address;

        packet << std::string("Hello World !") << std::string("Odhexan");
        client.send(packet, address, 5000);

        thread.wait();
}

J'ai donc remis la pile du debug, et le message d'erreur. Donc si la variable est static ou globale, l'erreur disparait.

[attachment deleted by admin]

8
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 27, 2012, 09:56:29 pm »
Oui, je suis sûr de bien utiliser les lib' compilés.
En pièce jointe, c'est donc le screen de la pile, et du message d'erreur. J'ai essayer quelque chose, c'est de mettre la variable PingPacket et de la déclarer en static. Ca a complètement fait disparaitre l'erreur. A la limite, je pourrais m'en contenter, ça ne surcharge pas la lecture du code, mais c'est tout de même étrange !
Oui le programme à l'air de s'être arrêter proprement, mais dans le thread principal, car le programme est multi-threadé.

[attachment deleted by admin]

9
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 23, 2012, 12:42:26 pm »
Hmmm, je pensais que vu que le reste marchait alors, pourquoi pas le réseau... Je test et je te tiens au courant ! :)

Edit: Non malheureusement même après avoir compilé, j'ai toujours la même erreur !
J'ai mis une image en pièce jointe pour montrer ce que le paquet donne lors du debug. C'est exactement le même code que dans le premier post.

A noter que si je met le sf::Packet en variable globale, l'erreur disparait.

[attachment deleted by admin]

10
Réseau / Re : [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 23, 2012, 11:36:36 am »
Oui, cette fois ci j'ai fais attention. Link des lib':

sfml-graphics-d.lib
sfml-audio-d.lib
sfml-network-d.lib
sfml-window-d.lib
sfml-system-d.lib

Projet en Debug Win32. Vu que la SFML n'est pas sortie pour Visual C++ 2012, que j'utilise, j'utilise la release de Visual C++ 2010. Et le reste marche, que ce soit les graphismes ou le son.

11
Réseau / [SFML 2.0 RC] Paquets corrompus ?
« le: Septembre 23, 2012, 11:15:43 am »
Bonjour à tous ! :)

Tout d'abord, j'ai ce code:

#include <SFML/Network.hpp>
#include <iostream>


void treat(sf::UdpSocket *server)
{
        server->setBlocking(true);
        sf::IpAddress ip;
        sf::Uint16 port;
        sf::Packet mPacket;    
        server->receive(mPacket, ip, port);

        std::string str;
        mPacket >> str;

        std::cout << "Recevived from " << ip << ": " << str << std::endl;
}


int main()
{
        std::cout << "Connecting server..." << std::endl;
        sf::UdpSocket server, client;
        sf::IpAddress address;
        sf::Thread thread(&treat, &server);
        server.bind(5000);

        thread.launch();

        std::cout << "Enter address: ";
        std::cin >> address;

        sf::Packet packet;
        packet << std::string("Hello World !");
        client.send(packet, address, 5000);
}
 

qui me donne cette sortie:

Connecting server...
Enter address: 127.0.0.1
Recevived from 127.0.0.1: Hello World !
Appuyez sur une touche pour continuer...


Le problème, c'est que au moment de recevoir le message, j'ai le droit à une Message Box qui m'indique:

Run-Time Check Failure #2 - Stack around the variable 'mPacket' was corrupted.

De plus, en regardant le debugger, m_isValid des packets se trouve parfois à false ; et la read_pos se trouve à une nombre absolument immense, comme plus de 3 millions par exemple.

Donc j'ai beau eu chercher sur internet la signification du message, je n'ai rien trouvé. J'utilise Windows 7, SFML 2.0 RC et Visual Studio 2012.

Merci d'avance :)

12
Général / Re : [SFML 2.0 RC] Aucune exécution possible !
« le: Août 06, 2012, 11:12:48 am »
Ah oui ? J'ignorais cela, merci de cette réponse !

13
Général / Re : [SFML 2.0 RC] Aucune exécution possible !
« le: Août 06, 2012, 12:43:34 am »
Merci Laurent, c'est exactement ça ! Mais pourquoi est-ce que cela change selon comment je link ? Il y a des directives spéciales en mode Debug dans les fichiers en tête ?

14
Général / [SFML 2.0 RC] Aucune exécution possible !
« le: Août 05, 2012, 04:28:37 pm »
Bonjour à tous !  :)

Je cherche à développer avec la SFML. Seulement, depuis un certain temps, mes applications ne marchant plus du tout ! Mes loadFromFile des sf::Texture me provoque des erreur de segmentation, dans la console des caractères "aléatoires" défilent, et puis le titre de la fenêtre est précédé par des caractères aléatoires aussi. D'où cela peut il provenir ? Mes pilotes sont à jour.
Mon hardware, au cas où:

Windows 7 x64
Intel i5
4GB de RAM
NVidia GeForce GT 630M, pilotes version 301.42


Merci d'avance !  :)

(le code est celui de l'exemple de la doc. Mais même mes programmes qui marchaient avant, et que je n'ai pas recompilé depuis, ne marchent plus non plus...)

L'erreur dans la console:
http://imageshack.us/f/16/erreurif.png

Pages: [1]