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.


Sujets - Cpl.Bator

Pages: [1] 2 Suivante »
1
Projets SFML / isokoban
« le: Mai 25, 2016, 09:57:02 pm »
Bonjour à tous, j'ai fait y a quelques semaine un prototype d'un sokoban en isométrique :



Vu les manifs en tout genre , et le boulot que j'abat , j'ai pas le temps de le finir ( save des score / et classement en ligne ) , mais bon, ca ne m’empêche pas de vous le présenter , j'aurais plus de retour que "mon cercle" restreint, enfin j’espère ^^.

C'est comme un sokoban normal, d'ailleurs les levels sont les levels originaux du jeu ( 90 lvl ). le jeu consiste donc à pousser des caisses sur des cases spéciales , on ne peu pas tirer , ni pousser deux caisse , juste pousser caisse par caisse. tout les niveaux excepté le 1° sont bloqués , ils se débloquent au fur & à mesure de l'avancement du joueur. quand le joueur ne bouge pas , une aide apparaît indiquant sur chaque case ou le joueur peu bouger sur quel touche il faut appuyer , j'ai testé avec des polios ^^

- ne faite pas attentions aux graphs , mon perso ressemble à un aspirateur roventa ^^
- j'ai alourdi volontairement le loading pour testé mon resourceManager sous thread.

pour testé c'est ici (win32)

2
Bonjour a toute l'équipe, je voulais savoir si c'est prévu un support "officiel" du raspberry PI avec la prochaine version de la SFML. je suis près à contribuer en envoyant un RPI3 nu à un membre de la team SFML ( idéalement Laurent ^^ ), c'est vraiment une plateforme sympa, j'ai testé un fork de je ne sais plus qui , mais avec mon PI2 , ca ne marche pas correctement, j'ai pas testé avec le 3, mais les résultats devrais être similaire. J'ai codé des petits jeux pour mes enfants ( un jeu via la webcam ou ils doivent effacer l'écran le plus vite possible, un pong, et un sokoban en isométrique ) , et comme je projette dans un futur proche de faire une borne d'arcade à base de raspberry pi 3 , je voulait évidement porté mes jeux dessus & comme j'aime bien la SFML , j'ai pas envie de changé d'API pour le moment.

Si un membre de la team est chaud bouillant , qui me le fasse savoir , je lui envois un rpi3.

Merci.   

3
Projets SFML / OpenCV - détection de cercle
« le: Janvier 06, 2016, 01:49:23 pm »
j'ai fait un petit billet concernant OpenCV & SFML disponible ici :

http://grom.hd.free.fr/index.php/opencv-capture-de-balles/

il se peu que le lien soit hors-ligne de temps en temps, il est hébergé sur mon PI2 au fesses de ma box ( en cas de reboot , ma box vire toute les redirections... )

L'utilisation de la SFML n'est pas obligé , mais je l'utilise tout le temps ^^
le point clé , pour récupérer n'importe quel flux en temps réel est ici :

...
// on récupère la webcam
//
cv::Mat webcam_frame;
        webcam >> webcam_frame;

// on convertit le flux BGR ( format OPENCV) en RGBA ( format SFML )
//
cv::Mat sfml_rgba_frame;
        cv::cvtColor(webcam_frame, sfml_rgba_frame, CV_BGR2RGBA);
       
// on créer la texture a partir des informations de l'objet cv::Mat sfml_rgba_frame;
//
sf::Texture texture;
        texture.create(sfml_rgba_frame.cols,sfml_rgba_frame.rows);
    texture.update(reinterpret_cast<sf::Uint8*>(sfml_rgba_frame.ptr()));
       
...
 



je met le code au cas ou (c++11) :

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <vector>


int iLowH       = 8;
int iHighH      = 13;
int iLowS       = 87;
int iHighS      = 115;
int iLowV       = 192;
int iHighV      = 255;


int main()
{

        cv::VideoCapture        webcam;
               
        if(!webcam.open(0)){
                return 0;
        }

        CvSize capture_size = cvSize(webcam.get(CV_CAP_PROP_FRAME_WIDTH),webcam.get(CV_CAP_PROP_FRAME_HEIGHT));
       
        sf::RenderWindow window(sf::VideoMode::getDesktopMode(), "balltraking");

        sf::View view(sf::FloatRect(0,
                                                                0,
                                                                capture_size.width,
                                                                capture_size.height));
       
        cv::namedWindow("controls", CV_WINDOW_AUTOSIZE);
                cv::createTrackbar( "LowH",  "controls", &iLowH  , 179);
                cv::createTrackbar( "HighH", "controls", &iHighH , 179);
                cv::createTrackbar( "LowS",  "controls", &iLowS  , 255);
                cv::createTrackbar( "HighS", "controls", &iHighS , 255);
                cv::createTrackbar( "LowV",  "controls", &iLowV  , 255);
                cv::createTrackbar( "HighV", "controls", &iHighV , 255);
       

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
             if (event.type == sf::Event::Closed)
                window.close();
        }
               
                // push webcam frame to cv::Mat
                //
                cv::Mat webcam_frame;
                webcam >> webcam_frame;
               
                // detect a color
                //
                cv::Mat hsv_frame;
                cv::Mat threshold_frame;
               
                cv::cvtColor(webcam_frame, hsv_frame, CV_BGR2HSV);

                cv::Scalar hsv_min(iLowH, iLowS, iLowV, 0);
                cv::Scalar hsv_max(iHighH, iHighS, iHighV, 0);
               
                cv::inRange(hsv_frame, hsv_min, hsv_max, threshold_frame);
                cv::blur(threshold_frame,threshold_frame,cv::Size(9,9));

       
                // detect circle with HoughCircles algorithm
                //
                std::vector<cv::Vec3f> circles;
                cv::HoughCircles(threshold_frame, circles, CV_HOUGH_GRADIENT,2, threshold_frame.rows/4, 100, 50, 10, 400);

                // convert webcam frame (bgr) to sfml format texture (rgba)
                //
                cv::Mat sfml_rgba_frame;
        cv::cvtColor(webcam_frame, sfml_rgba_frame, CV_BGR2RGBA);

                        cv::Mat sfml_bgr_thresholded_frame;
                        cv::Mat sfml_rgba_thresholded_frame;
                        cv::cvtColor(threshold_frame, sfml_bgr_thresholded_frame, CV_GRAY2BGR);
                        cv::cvtColor(sfml_bgr_thresholded_frame, sfml_rgba_thresholded_frame, CV_BGR2RGBA);
               
               
                // create sfml texture from sfml_rgba_frame
                //
                sf::Texture texture;
        texture.create(sfml_rgba_frame.cols,sfml_rgba_frame.rows);
        texture.update(reinterpret_cast<sf::Uint8*>(sfml_rgba_frame.ptr()));
               
                sf::Texture thresholded_texture;
        thresholded_texture.create(sfml_rgba_thresholded_frame.cols,sfml_rgba_thresholded_frame.rows);
        thresholded_texture.update(reinterpret_cast<sf::Uint8*>(sfml_rgba_thresholded_frame.ptr()));
               
               
               
                // sfml draw
                //
                window.setView(view);
                        window.clear(sf::Color::Blue);
               
                        sf::Sprite webcam_sprite;
                        webcam_sprite.setTexture(texture);

                        window.draw(webcam_sprite);
                       
                        for(auto & c : circles){
                                sf::CircleShape shape;
                                shape.setPosition(sf::Vector2f(c[0]-c[2],c[1]-c[2]));
                                shape.setRadius(float(c[2]));
                                shape.setFillColor(sf::Color::Transparent);
                                shape.setOutlineColor(sf::Color::Green);
                                shape.setOutlineThickness(2);
                                window.draw(shape);
                        }

           
                        sf::Sprite thresholded_sprite;
                        thresholded_sprite.setTexture(thresholded_texture);
                        thresholded_sprite.setScale(0.25,0.25);
                        window.draw(thresholded_sprite);

                window.display();

               
    }

    return 0;
}



 

4
Site web SFML / sf::BlendMode
« le: Octobre 17, 2015, 01:15:40 pm »
petite coquille ici : http://www.sfml-dev.org/documentation/2.3.2-fr/structsf_1_1BlendMode.php
sf::BlendMultipy au lieu de sf::BlendMultiply;

5
Audio / [Résolu]sf::Listener
« le: Juillet 05, 2015, 02:00:42 am »
Bonjour, j'ai un jeu avec écran splitté , j'utilise la spatialisation des sons , avec l'effet doppler , je gère aussi des camera , une pour chaque vue ( 4 dans mon cas ) , chaque camera possède un deque contenant les instances du son pour géré l'effet doppler lors des scroll ou des mouvement de mes acteurs , jusque là pas de problème , tout marche bien , chaque camera possède donc ses propres sons , chaque camera marche donc impeccablement toute seule , dès lors qu'il y en a 2 , j'ai pensé naïvement changé le listener de position et de "switché" entre les camera , mais c'est la cata , je dois "muté" toutes mes camera et en gardé une seule qui "emet" du son. si je désactive la spatialisation ( plus besoin de listener donc ) , comment je pourrais jouer sur la balance du son , (pour mon rendu stéréo & géré moi même le fadeout) , aucune méthode ne me le permet.

6
Fenêtrage / [Résolu][SFML 2.3] Event keyboard incorrect
« le: Juin 10, 2015, 03:16:05 pm »
Ce code ne marche pas sur Windows 7 x86 avec SFML 2.3 buildé avec MinGW

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

int main()
{
       

sf::RenderWindow window(sf::VideoMode(800, 600), "My window");

// on fait tourner le programme jusqu'à ce que la fenêtre soit fermée
while (window.isOpen())
{
        // on inspecte tous les évènements de la fenêtre qui ont été émis depuis la précédente itération
        sf::Event event;
        while (window.pollEvent(event))
        {

                // évènement "fermeture demandée" : on ferme la fenêtre
                if (event.type == sf::Event::Closed)
                        window.close();
                       
               
                if(event.type == sf::Event::MouseButtonPressed)
                {
                        std::cout << "!!!!!"<< std::endl; // <------------------------ S'AFFICHE PAS
                }
               
                std::cout << sf::Event::MouseButtonPressed << ":" << sf::Event::MouseButtonReleased << ":" << event.type << std::endl;
        }
       
        window.clear();
        window.display();
}

7
Discussions générales / Raspberry PI 2
« le: Juin 07, 2015, 08:03:58 pm »
Bonjour à tous, j'ai remarqué que le PI 2 compile sans problème la SFML , j'ai donc procédé à différents test , notamment affichage, tout fonctionne nickel , cependant, j'ai pris l'habitude sur PC de créer mon programme avec la résolution du bureau de l'utilisateur et de créer une sf::RenderTexture avec la résolution de mon choix ( genre 640x480 , j'aime bien l'effet pixel ^^ ) et de "scaler" ma texture sur ma sf::RenderWindow au moment du rendu , sur PC, aucun problème, les perfs sont là, en revanche du coté du PI 2 , c'est pas la même salade , les perfs dégringole , c'est dû au sf::RenderTexture, mais même sans cela , un programme "vide" (clear() & display() ) tourne au alentours de 10/11 fps avec un pi2 non overclocké.

Y en a t'il parmis vous qui ont programmé sur le PI 2 , et si oui comment avez vous boosté vos programmes ?   

Merci.

8
Projets SFML / Lord Of War [Prototype]
« le: Janvier 03, 2015, 06:41:50 am »


Voici un petit prototype sur lequel je bosse, il s'agit d'un petit jeu de stratégie tout simple ou le but du jeu
est de capturer le drapeau au centre , pour cela vous avez des soldats qui se dirigeront tout seul au centre , plus vous en avez , plus vous capturerez vite le drapeau.
Le jeu est basé sur des points de renforts , vous commencez avec 30 pts , avec ces points vous pourrez appeler 3 types d'unité à des coûts différents :
    Le simple soldat coûte 1 renfort
    Le sniper coûte 5 renfort
    Le gunner coûte 15 renfort

vos unité arrivent par la gauche de la carte, les ennemis à droite.

chaque unité à des caractéristique différentes :

le soldat à un rayon d'action faible et des munitions limité ( 9 cartouches ) et une précision moyenne
le sniper à un rayon d'action élevé et des munitions très faible ( 4 cartouches ) et une précision élevée
le gunner à un rayon d'action moyen et un nombre important de munitions ( 90 cartouches ) et une précision médiocre

Lorsque votre unité n'a plus de munitions ( et qu'il est encore vivant... ) , une petite icône apparaît au dessus avec un 'A' pour "ammo" , vous pouvez lui acheter des munitions , le coût des munitions est débité de votre score , le soldat coûte 10 , le snipper coûte 100 , le gunner coûte 500. vous avez juste à cliquez dessus
et prié pour qu'il ne se prenne pas une balle dans la tête dans la foulée...  :mrgreen:

il faut donc acheter les bonnes unité au bon moment, votre ennemi , les Mujaddid riposterons et tenterons de massacré votre équipe !  :mrgreen:
plus votre équipe perfore l'équipe d'en façe , plus vous marquez des points & des points de renfort.
Tout se joue à la souris ( en vue du portage Android ) , l'interface parle d'elle même.

démo win-x86

démo Linux x64

9
Général / [SFML 2.2 ANDROID] Application en arrière plan
« le: Décembre 21, 2014, 04:49:51 pm »
Je ne trouve pas de solution idéale pour gérer une application en arrière plan.
Admettons que le joueur sans faire exprès appuis sur "retour au bureau" sans fermer l'application ,
comment peut on faire pour gérer correctement le retour dans l'application

si je ne ferme pas la sf::RenderWindow dans l'event lostFocus j'obtiens ce message :
Citer
<DequeueBuffer:606>: dequeue native buffer fail: No such device, buffer=0x0, handle=0x0
<qeglDrvAPI_eglSwapBuffers:3688>: EGL_BAD_SURFACE

si je la ferme , je n'obtiens pas de message d'erreur , mais impossible de recréer la fenêtre dans gainedFocus
sans que l'application plante, j'ai l'impression de cet event n'est pas pris en compte.


J'ai aussi plein d'erreur de ce type lors du déroulement normale de l'application:
Citer
sfml-error Failed to activate the window's context

10
Projets SFML / [SFML 2.2 ANDROID] Bubble Color
« le: Décembre 19, 2014, 12:19:03 pm »
j'ai fait un p'tit jeu pour mon fils à l'occasion du portage pour la SFML.
C'est clairement un test pour moi & la SFML sur android :
le but , eclater des bulles de couleur par la couleur demandée sur le panneau des scores ( si le panneau est rouge on pète les rouges ) :

https://drive.google.com/file/d/0B8rcgU7Aoe-qa2FBUlI3WVF1Um8/view?usp=sharing

Fonctionne sur Galaxy Note 3 & Tablette Asus 10.1

dès fois il plante a la sortie , il faut que je trouve pourquoi. je n'utilise aucun pointeur ou mémoire non désalloué.

11
Général / [RESOLU][SFML 2.2 Android] sf::Touch
« le: Décembre 17, 2014, 11:01:47 pm »
J'arrive sans problème à compiler un programme SFML et à le faire tourner sur mon Galaxy note 3
J'ai fait un petit jeu pour mon fils , le but est d'éclater des bulles de couleurs...
Ca marche nickel sur mon smartphone, en revanche sur ma Tablette (Asus 10.1 ) , j'ai besoin de deux doigts pour les éclater...

la partie ou j'éclate "mes bulles" :

if (sf::Touch::isDown(0) && mTouchFlag == false)
                                {
                                        mTouchFlag = true;
                                        sf::Vector2i position = sf::Touch::getPosition(0,mWindow);
                                        if(explodeBubble(position.x, position.y)==true)
                                        {
                                                for(int p=0; p<99; ++p)
                                                {
                                                        mParticleArray.push_back(Particle(position.x, position.y, mParticleTexture, mTargetColor) );
                                                }
                                                mScore++;
                                        }
                                        else
                                        {
                                                mExplodeSound[5].play();
                                        }
                                }
                               
                                if (!sf::Touch::isDown(0) && mTouchFlag == true)
                                {
                                        mTouchFlag = false;
                                }
là , je sèche...

Sinon , mille merci à la Team pour la version 2.2 , super boulot.

12
Graphique / Utilisé la correction de perspective sur les texture
« le: Août 27, 2014, 04:01:20 pm »
Bonjour, j'ai besoin de simuler la perspective sur le mapping de texture tout en restant en 2D ( maillage isométrique ) , qu'est ce qui existe comme solution la moins lourde possible ?
  Mes tuiles isométrique on des hauteurs variable se qui induit des Quads trapézoïdale , le quad n'ayant pas d'information de hauteur , la texture n'est donc pas corrigée, ce qui donne l'impression que le quad est plié sur l'edge commun.

Merci.

13
Audio / [Résolu]Crash fin d'application
« le: Janvier 26, 2014, 09:27:18 pm »
Comme mentionné ici : https://github.com/SFML/SFML/issues/30
le bug n'est toujours pas résolu sur la 2.1, que ce soit en statique ou dynamique , le bug est présent.
Sous Windows 7, c'est problématique , toutes mes applications qui utilise le module audio reste en tache de fond, obligé de killer le processus manuellement. C'est pas tip-top.
j'ai compris que Laurent devais modifier "en profondeur" ce module, mais en attendant, quelqu'un à t'il réussi à bricolé une béquille en modifiant les sources directement ?

Merci d'avance.

14
Général / Rendu en dehors de la session X
« le: Octobre 18, 2013, 01:47:13 pm »
Bonjour, j'ai une petite question technique, voila , je me suis amusé avec le RaspberryPI & j'ai installé RetroPie, qui permet de jouer avec des jeux oldschool via des émulateurs.
Le PI boot directement sur une "station multimédia" qui permet de choisir sa console & la rom, le pi ne se log pas dans une session quelconque. Je me demandais donc, si cela était faisable avec la SFML, je pense que non vu les dépendance du sf::RenderWindow, mais peu être que quelque chose m'échappe.
L'émulateur Dgen par exemple , est codé avec la SDL , ils arrivent à avoir du plein écran en dehors de toutes sessions, mas question est donc , comment ils font ?

Merci.

15
Général / physFS & Ressource manager
« le: Octobre 03, 2013, 11:12:40 am »
j'adapte mon ressource manager grâce au bouquin dispo sur la SFML
J'utilise en plus le code disponible sur le WIKI pour géré facilement l'ouverture de fichier venant d'archive compressé.

Avant d'aller plus loin , et comme c'est la première fois que j'utilise les "stream" , je me pose la question sur la visibilité de mon PhysFsStream stream, il sera détruit dès lors que je sort du scope, qu'en est il de la ressource chargé ? dans le cadre de texture , je ne risque pas de me retrouvé avec un carré blanc en procédant ainsi avec les stream ?

Merci.

template <typename T, typename ID>
void resource<T, ID>::load(ID identifier, const std::string& filename)
{
       
        std::unique_ptr<T> resource(new T());
       
        if (!resource->loadFromFile(filename)) // try to load file directly
        {
          // try to extract inside physFS
          PhysFsStream stream;

          if(!stream.open(filename)) // try to load from archive
          {
            throw std::runtime_error("resource::load - Failed to load " + filename);
          }
          else
          {
            resource->loadFromStream(stream)
          }
        }
       
}

Pages: [1] 2 Suivante »
anything