Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Framework  (Lu 49044 fois)

0 Membres et 1 Invité sur ce sujet

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Re : Framework
« Réponse #60 le: Décembre 05, 2013, 10:44:47 am »
Bon okay dessiner un State c'est pas vraiment bien choisi, mais faut plus voir ça comme le fait dessiner tout ce qui représente ce State par exemple le système de Gui, le monde ou n'importe quoi d'autres que l'utilisateur va rajouter  tant qu'objet de son State.

N'hésite pas à aller voir mon projet GameTest sur Github qui justement utilise ce système,  tu vas voir que la fonction draw s'y prête très très bien.

Et je ne comprends pas ce que tu as voulu dire, la classe Application va dessiner juste le StateManager qui dessine ensuite tous les States chargés ça t'évite d'avoir trop d'objets dans l'Application et de pouvoir gérer les States un par un pour l'affichage

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #61 le: Décembre 05, 2013, 11:16:31 am »
Ha, ok, je comprend mieux ce que tu veux faire maintenant. ^^

Bah moi en fait moi ce que je voulais faire c'est quelque chose comme ceci : (A part que je ne dessine que avec le state courant car je ne vois pas l'intérêt de dessiner plusieurs states, je sais pas, je trouve que ça complique un peu les choses)

void Application::render()  {
Map *currentMap = World::getCurrentMap();
    View view = getContext().window.getView();
    Vector2f v2 (view.getCenter().x - view.getSize().x * 0.5f, view.getCenter().y - view.getSize().y * 0.5f);
    if (getContext().renderShadows) {
        renderTextShadows.setView(view);
        renderTextShadows.clear(Color::White);
        RectangleShape rect;
        rect.setPosition(Vector2f(v2.x, v2.y));
        rect.setFillColor((Color(100, 100, 100, 128)));
        rect.setSize(Vector2f (view.getSize().x, view.getSize().y));

        vector<Shadow*> visibleShadows = currentMap->getVisibleShadows();

        for (unsigned int i = 0; i < visibleShadows.size(); i++) {
                renderTextShadows.draw(*visibleShadows[i]);
        }

        renderTextShadows.draw(rect, RenderStates(BlendAdd));
        renderTextShadows.display();
    }
    if (getContext().renderLights) {
        vector<DrawableEntity*> visibleLights = currentMap->getVisibleEntities("E_LIGHT");

        for (unsigned int i = 0; i < visibleLights.size(); i++) {

            renderTextLights.draw(*visibleLights[i], RenderStates(BlendAdd));
        }
        renderTextLights.display();
    }
    vector<DrawableEntity*> visibleTilesGround = currentMap->getVisibleEntities("E_GROUND");
    for (unsigned int i = 0; i < visibleTilesGround.size(); i++) {
         getContext().window.draw(*visibleTilesGround[i]);
    }
    if (getContext().renderShadows) {
         Sprite shadows (renderTextShadows.getTexture());
         shadows.setPosition(v2.x, v2.y);
         getContext().window.draw (shadows, RenderStates(BlendMultiply));

    }
    vector<DrawableEntity*> visibleTilesDecor = currentMap->getVisibleEntities("E_DECOR");
    for (unsigned int i = 0; i < visibleTilesGround.size(); i++) {
         getContext().window.draw(*visibleTilesGround[i]);
    }
    if (getContext().renderLights) {
        Sprite lights (renderTextLights.getTexture());
        lights.setPosition(v2.x, v2.y);
        getContext().window.draw (lights, RenderStates(BlendMultiply));
    }
}
 

En gros dans la fonction render on récupère le state courant et en fonction des paramètres du state courant, on affiche ce qu'on veut. dans la renderwindow de l'application.  :)
On pourra à tout moment changer le state courant avec pushState et popState du statemanager.

Bref, je ne sais pas pour toi mais moi je trouve ça, plus simple.

PS : ou alors encore plus simple on ne fait qu'un seul state qu'on modifie en fonction de ce qu'on veut chargé, par exemple, le states contient un vector de variable booléennes qui définisse si il faut afficher une gui ou pas.

Bon, maintenant, définir toutes les guis dans la classe application n'est peut être pas top non plus, mais bon..., au final peut être que je vais opter pour ton système avec un state dans lequel on rajoute les guis à dessiner pour ce state.

Ouais non oublie ce que j'ai dis je crois que je vais opter pour ton système.




« Modifié: Décembre 05, 2013, 11:28:18 am par Lolilolight »

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Framework
« Réponse #62 le: Décembre 05, 2013, 11:53:18 am »
(A part que je ne dessine que avec le state courant car je ne vois pas l'intérêt de dessiner plusieurs states, je sais pas, je trouve que ça complique un peu les choses)

Alors comment tu fais pour dessiner un menu pause en transparence par dessus ton jeu ?
Comment tu fais dans un jeu en réseau pour que le menu pause n’empêche pas le state du jeu de continuer de tourner ?

Ensuite, c'est pas à Application de connaître World, Map, les entités, et tout le reste à dessiner (car pour un menu par exempe, y'a pas de Map)

Citer
Bon, maintenant, définir toutes les guis dans la classe application n'est peut être pas top non plus, mais bon..., au final peut être que je vais opter pour ton système avec un state dans lequel on rajoute les guis à dessiner pour ce state.

ça c'est une meilleure piste. il suffira de définir un State par état (ce qui semble logique, tiens) et chacun de ces State sait ce qu'il doit contenir (le state MenuPrincipal sait qu'il doit afficher une GUI pour le menu, le state Game sait qu'il faut afficher et faire tourner le jeu [logique, dessin], etc...)

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #63 le: Décembre 05, 2013, 12:44:34 pm »
Ok, expliqué de cette façon là, je comprend mieux. :)



Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #64 le: Décembre 05, 2013, 10:35:46 pm »
Voila un shéma et une liste des classes ont été ajouté sur github, il ne reste plus qu'à lier nos 2 code sources, pour ma part je vais rajouté aussi la partie réseau.

Une fois ça de fais je pense qu'il serait bon de faire un site web avec quelques tutoriels et sortir une 1ère version stable.

Je ne compte pas implémenter toutes la partie 3D dans la 1ère version par contre. (Car il me faudrait déjà pouvoir faire une version stable pour les jeux en 2D là, en ce moment.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #65 le: Décembre 06, 2013, 10:10:55 am »
Bon aujourd'hui je vais essayer de réorganiser les différents modules (je vais regroupé tout ce qu'il y a dans lighting et world et les mettre dans le module graphique)

Et je vais améliorer mon système de resource holder pour qu'il puisse gérer n'importe quel type de ressource (son, texture, font, shader, etc...) et si j'ai encore du temps (si pas je le ferai demain), je vais relier le système de states de Cmdu76 à mon framework.


Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Framework
« Réponse #66 le: Décembre 06, 2013, 10:19:32 am »
Si je peux me permettre un conseil, vous devriez avant toute chose nettoyer votre dépôt. Le répertoire de build, les fichiers Code::Blocks, les bibliothèques compilées : tout ça n'a rien à y faire.
Laurent Gomila - SFML developer

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Framework
« Réponse #67 le: Décembre 06, 2013, 10:37:44 am »
Si je peux me permettre un conseil, vous devriez avant toute chose nettoyer votre dépôt. Le répertoire de build, les fichiers Code::Blocks, les bibliothèques compilées : tout ça n'a rien à y faire.

Et il serait bien que vous adoptiez une convention de codage, là y'a des choses en français, d'autres en anglais, des conventions différentes pour les attributs, etc...

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #68 le: Décembre 06, 2013, 10:47:31 am »
Ha oui ça je le savais déjà pour les choses en français et en Anglais, il faut juste que je mette tout en Anglais.

Bref je vais nettoyer tout ça déjà.

Cmdu76

  • Full Member
  • ***
  • Messages: 194
    • Voir le profil
Re : Framework
« Réponse #69 le: Décembre 06, 2013, 02:36:34 pm »
Ouais je suis d'accord le dépôt sur github est très mal organisé... Jai ajouté le fichier .gitignore après que tu es ajouté les fichiers "inutiles"
Je pense qu'on pourrait virer tou ce qui est fichiers Cmake tant qu'on sort pas une version "stable"

Ensuite il a pas vraiment besoin de lier nos fichiers, c'est l'utilisateur qui va utiliser nos classes comme il veut nous on propose un "pack" après les utilisateurs en font ce qu'ils veulent

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #70 le: Décembre 06, 2013, 03:04:47 pm »
J'ai virer les fichiers et dossiers inutiles dans le dossier github sur mon pc mais lorsque je fais un git add, git commit et puis un git pull il ne me les vire pas du repository sur git-hub, comment ça se fait ?

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Framework
« Réponse #71 le: Décembre 06, 2013, 03:15:18 pm »
git rm

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #72 le: Décembre 06, 2013, 05:07:03 pm »
J'ai retiré les fichiers code::block et le dossier de build avec les lib, je vais aussi retirer les autres fichiers cmake je pense ça sert à rien de les laisser tant que je n'ai pas de version stable.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #73 le: Décembre 06, 2013, 08:03:08 pm »
J'ai rajouté un peu aussi la partie réseau (partie client, la partie serveur viendra après je dois juste réorganiser un peu le code source pour ne mettre que la partie commune à tout les jeux) mais il faut avoir openssl d'installé. (Là, c'est obligé d'avoir une lib car les grands nombres et le chiffrement c'est vraiment ce qui a de plus casse tête, encore plus que la 3D et la physique. :/
Et au moins ainsi c'est sûr que se seras sécurisé contrairement à mes propres algorithme qui risquent d'être moins sûr que ceux d'un projet opensource)

Bref demain j'améliore mon système de chargement de ressource et j'essayerai de commencer à tester ce système de state et d'input pour afficher des menus.
Et une première version stable devrait arriver dans +/- un mois le temps de faire le site-web, les tutoriels et de générer la doc avec doxygen.
« Modifié: Décembre 06, 2013, 08:06:44 pm par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #74 le: Décembre 06, 2013, 11:04:29 pm »
Erf je viens de voir que ça n'a rien remis à jour, bref, je viens de refaire le repository.

 

anything