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

Auteur Sujet: Framework  (Lu 57083 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #105 le: Décembre 12, 2013, 10:37:59 pm »
Voilà j'ai tout remis à jour sur git-hub, je pense que je vais mettre un paramètre facultatif comme nom pour le ResourceManager, ainsi si le développeur ne veut pas utiliser de string, il n'aura qu'à faire ceci :


TextureManager grass;
grass.load("path");
TextureManager rock;
rock.load("path");
app.addResourceManager<Texture>(grass);
app.addResourceManager<Texture>(rock);
 

Je pense que je vais aussi simplifier cela en renommant la classe ResourceManager en ResourceCache, créer une classe ResourceMultiCache qui fera une itération sur tout les ResourceCache pour récupérer la bonne ressource.
Un ResourceCache pourra contenir une ou plusieurs ressource du même type. (Si le développeur ne veut pas utiliser de string comme identifiant, il pourra utilise un resourceCache par ressource et le cache servira alors d'identifiant, je n'aurai qu'à redéfinir l'operateur== pour comparé les id (de type int) pour le cache.)

Je pense que c'est le meilleur moyen d'offrir au développeur un compromis entre flexibilité et robustesse.

Donc en gros une ressource pourra avoir un alias ou pas, si il n'en a pas, alors c'est le nom du cache qui servira d'identifiant. (Et je parle bien du nom de la variable cette fois)
« Modifié: Décembre 12, 2013, 10:43:23 pm par Lolilolight »

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : Framework
« Réponse #106 le: Décembre 12, 2013, 11:00:42 pm »
Je pense que je vais aussi simplifier cela en renommant la classe ResourceManager en ResourceCache
Je ne sais pas si c'est un bon nom. J'ai appellé la classe comme ça en Thor exactement à cause des choses que ton implementation n'offre pas: Les shared_ptr et la résolution des duplicates.

Ton système les resources contient les resources, alors je crois qu'il y a des meilleurs noms. ResourceManager est peut-être général, mais ce n'est pas une description mauvaise ;)
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Framework
« Réponse #107 le: Décembre 13, 2013, 08:59:07 am »
les pointeurs sur les fonctions et les shared pointeurs n'est pas quelque chose que je maîtrise vraiment très bien. :/ (Vu que à l'université j'ai appris à m'en passer)

Plutôt que d'apprendre à t'en passer, tu devrais apprendre à les utiliser. Ce sont des outils très puissants et qui deviennent indispensables (avec l'arrivée de C++11, la RAII, ...)


Et ce code me permet d'éviter de devoir passer par divers foncteurs.
C'est ce qui fait d'ailleurs la force des langages compiler contrairement au langage interprêtés (principalement ceux des scripts) ou là, la seconde méthode avec les pointeurs de fonction est à privilégié.

Je ne sais pas d'où tu sors que les langages de scripts "sont prioritaire" sur les langages compilés pour les foncteurs, mais les foncteurs sont l'un des outils les plus puissants et les plus utiles de la programmation et ont été tellement simplifiés en C++11 que ça en devient de la rigolade (à utiliser). Franchement, dans un jeu, c'est juste impossible de faire sans. Alors je ferai le même commentaire qu'au dessus : au lieu de les éviter, utilise les, ça te simplifiera la vie.


Sinon je crois que c'est mon dernier message ici, je suis un peu découragé de tenter de t'aider et que tu refuses toute aide (de moi ou de n'importe quel intervenant dans ce thread). Non pas qu'on détient la vérité absolue, mais certaines personnes ici ont plus d'expérience et c'est dommage de ne pas écouter (au cas où les choses ne sont pas claires : je ne parle pas de moi).

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #108 le: Décembre 13, 2013, 10:14:01 am »
Je crois que tu n'as rien compris, c'est pas que je ne veux pas écouter les autres, hein, c'est que chacun utilise des techniques +/- complexe en fonction de leur besoin, le but de SFGL est de faire un système simple pour développeurs débutant. (Pour être plus expérimenté que moi il faut déjà y aller, j'espère que tu te rend comptes de ce que tu dis, excuse moi mais ce n'est pas un développeur qui fait ça en tant que passionné qui va m'apprendre à développer)

En java, les pointeurs de fonction n'existent pas, j'ai commencé par apprendre ce langage avant de passez au c++, et bien, je peux te dire qu'il  bien fallut se débrouiller sans et ça marche très bien.

Et puis il y a moyen de faire vachement plus simple dans mon cas que le système utilisé dans thor ou bien d'utiliser une enum ou une clé comme identifier, autant utiliser le nom de la ressource (ou du manager) lui même : (Car dans mon cas le manager contient la ressource)

ResourceManager<Texture> herbe;
herbe.load("path");
multCache.add(herbe);
Texture* herbe = multCache<Texture>.get(herbe);
 

Alors oui, les pointeurs de fonctions sont plus utiliser dans les langages comme le javascript par exemple que dans les langages compilés ou semi-compilé comme le java ou bien le c++ .

Bref je vais m'arrêter de te répondre, nexus avoue lui même que son système est trop complexe dans mon cas.
Je pense que c'est plutôt toi qui pense détenir la vérité absolue.

Le c++11 est plus un ajout qu'autre chose selon moi, un gadget non négligeable certes mais pas indispensable. (D'ailleurs le c++11 se base beaucoup sur boost et certaines librairies qui utilisaient déjà des concepts avancé du langages c++ bien avant qu'apparaissent le c++11.)

J'ai commencé à coder SFGL avant l'arrivée du c++11, il a donc bien fallut que je me débrouiller sans.

Donc oui il y a quelques nouvelles fonctionnalités utile avec le c++11 qui simplifie le code source, mais, ce n'est pas indispensable.

Mon système n'utilise en effet pas de shared-pointer ni la résolution de duplicate, il applique juste le principe du RAII qui supprime toutes les ressources dans les destructeurs de ResourceManager et de Application.

« Modifié: Décembre 13, 2013, 10:25:47 am par Lolilolight »

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Framework
« Réponse #109 le: Décembre 13, 2013, 10:25:46 am »
Okay...

Je ne vais pas m'amuser à montrer que tu as tort sur la plupart des points de ton dernier post parce que tu en referai un identique, et je ne vais pas m'engager dans une discussion qui va partir en vrille.

Si je t'ai offensé, excuse moi, mais c'était pas voulu. J'ai juste partagé mon expérience ainsi que mon ressenti. Que tu le prennes en compte ou non n'appartient qu'à toi.

Bref, je ne participe plus à ce sujet. Bonne chance pour ton framework.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #110 le: Décembre 13, 2013, 10:27:01 am »
Citer
Okay...

Je ne vais pas m'amuser à montrer que tu as tord sur la plupart des points de ton dernier post parce que tu en referai un identique, et je ne vais pas m'engager dans une discussion qui va partir en vrille.

Si je t'ai offensé, excuse moi, mais c'était pas voulu. J'ai juste partagé mon expérience ainsi que mon ressenti. Que tu le prennes en compte ou non n'appartient qu'à toi.

Bref, je ne participe plus à ce sujet. Bonne chance pour ton framework.

Ok, merci quand même.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Re : Framework
« Réponse #111 le: Décembre 13, 2013, 10:33:47 am »
Pour être plus expérimenté que moi il faut déjà y aller, j'espère que tu te rend comptes de ce que tu dis, excuse moi mais ce n'est pas un développeur qui fait ça en tant que passionné qui va m'apprendre à développer
Magique !!!  :D :D :D

Excellium

  • Jr. Member
  • **
  • Messages: 70
    • Voir le profil
Re : Framework
« Réponse #112 le: Décembre 13, 2013, 03:16:40 pm »
Pinaise, ça exsude la modestie ici :D
Tu es peut être chevronné niveau théorie avec les cours que tu as fait à la fac, mais quand bien même tu obtiendras ton diplôme tu auras très peu de pratique en situation réelle, tu n'auras peu ou prou bossé sur un projet d'envergure. J'ai un peu l'impression que tu as été formaté sur certains trucs par tes profs, comme la non utilisation des pointeurs intelligents, car tu a appris a bien gérer la mémoire. Si ça marche pour de petits projets , c'est loin d'être évident dans de gros.
Si tu viens poser des questions ici c'est que quand même il te reste des trucs à apprendre, tu n'es pas au summum programmatiquement parlant. D'ailleurs, qui pourrait l'être ?
Y'a de bons conseils sur ce forum, avec des gens passionnés comme tu dis qui tentent de répondre à tes questionnements sur la meilleure façon de faire. Je te conseille d'écouter et de puiser un maximum de ressources, toi qui souhaite en faire ton boulot plus tard, sinon en monde professionnel tu seras vite concurrencé par de simples '42' sans diplôme (comprenne qui pourra) parce qu’ils seront plus productifs et innovants que toi, ou tout simplement car "tu te la ramèneras devant ton supérieur".
Tu arrêtes pas de parler du Java, tu as l'air vachement nostalgique de sa simplicité, mais en C++ il y a des subtilités qu'il faut prendre le temps d'assimiler et des innovations qu'il faut appréhender car elles simplifient grandement le code. Les pointeurs de fonction en sont une, et le temps que tu investiras en ouverture d'esprit tu le gagneras en pratique par la suite. Tu veux faire un framework simple, mais simple pour toi ou simple pour l'utilisateur ? Je te laisse le soin de répondre toi même à cette question.
A bon entendeur...  ::)
« Modifié: Décembre 13, 2013, 09:28:04 pm par Excellium »
"Everything should be made as simple as possible, but not simpler."

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #113 le: Décembre 13, 2013, 04:58:38 pm »
Oui et il m'arrivera encore de poser des questions sur des techniques de programmation que je n'ai pas pratiquée et que d'autres ont pratiquées. (Car je ne connais pas la vérité absolue, si tel était cas je n'aurai pas besoin de venir ici sur le forum)

Mais mes compétences suffisent largement à traduire les idées en code source et à savoir lesquelles il est bon de m'en inspirer, je ne copie donc rien. (A vrai dire je ne fais que de regarder les idées de chacun. (et pas le code source) afin de choisir la ou lesquelles sont les meilleures dans mon cas)
Innover c'est bien mais le faire de façon intelligente c'est mieux.

Je veux faire un famework simple d'utilisation pour le développeur. (Et pas un framework qui utilise de la technologie de pointe)

Et je n'ai jamais eu l'occasion de travailler dans le monde professionnel, que je n'aime pas car on privilégie plus souvent l'innovation mauvaise, l'escroquerie et la médisance (à moins de tomber vraiment dans la bonne boîte mais ce n'est pas si simple que cela surtout en ce moment)
Donc, il faut bien que je me démerde, car, il n'y a personne du monde professionnel qui va faire sa pour moi. (Et maintenant vu la difficulté à trouver un job dans le domaine cela ne va pas s'arranger au niveau de mes capacités dans le domaine du monde professionnel)

Mais bon il y a certains projets qui s'en sortent très bien même en ayant aucune connaissance du monde professionnel.
Donc il faut bien que je me batte, j'ai quand même des qualités malgré mes difficultés dans certains domaines, donc, je ne vais pas changer ma façon de faire juste à cause de 2-3 mecs qui sont dans le monde professionnels depuis des années et qui n'ont pas eu les problèmes que moi j'ai.
Mais je voudrais pas parler de ça ici car c'est de ma vie privée.
« Modifié: Décembre 13, 2013, 05:06:34 pm par Lolilolight »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Re : Re : Framework
« Réponse #114 le: Décembre 13, 2013, 05:57:46 pm »
Pour être plus expérimenté que moi il faut déjà y aller, j'espère que tu te rend comptes de ce que tu dis, excuse moi mais ce n'est pas un développeur qui fait ça en tant que passionné qui va m'apprendre à développer
Magique !!!  :D :D :D
Je la garde pour le bêtisier de Noël ;D
Laurent Gomila - SFML developer

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #115 le: Décembre 13, 2013, 06:43:51 pm »
Oui garde là pour le bêtisier de Noël si tu veux mais tu riras moins quand j'aurai un truc complet à présenter.  :) (Et encore moins si un jour je te concurrence)

Donc ne remet pas en cause mes compétences à chaque fois à cause de ma personnalité parce que ça commence largement à me gaver et puis je pense que je vais arrêter de te répondre...

Mais bon quand le moment sera venu tu verras de toute façon mais évite tes propos offensants.


Excellium

  • Jr. Member
  • **
  • Messages: 70
    • Voir le profil
Re : Framework
« Réponse #116 le: Décembre 13, 2013, 07:17:31 pm »
Okay messieurs, gardons notre sérieux et laissons de côté le caractère récréatif de certaines réponses (on enfonce pas une porte ouverte). Un framework réalisé en commun est une très bonne idée en-soi, le forum pulule de projets de membres isolés, mais ou sont les grands projets communautaires qui feraient du bien à la SFML ?!  ;)
"Everything should be made as simple as possible, but not simpler."

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #117 le: Décembre 14, 2013, 09:34:09 am »
La dernière fois que j'ai fais un projet communautaire (lorsque j'ai commencé Sorrok) et je ne l'avais pas commencé tout seul d'ailleurs.

L'ex second chef de projet n'a fait que de faire preuve d'un manque total de sérieux puis à fini par quitté le projet en rejetant la faut sur moi hors qu'il n'a fait que de m'influencer depuis le début.
Bref ceci est du passé mais ça explique pourquoi je me méfie des projets communautaire et que beaucoup de membres font des projets plutôt isolé.

Plutôt que un gros projet communautaire ou l'on se fait influencé par des gens bizarre d'un peu partout sur internet qu'on ne connait même pas et qui ont pour seul but de faire tomber notre projet à l'eau. (Prétendant s'y connaitre, avoir fait des études et même avoir travaillé dans le milieu professionnel)

Bref un peu de fun dans le projet, je n'ai rien contre ça mais à partir du moment ou ça commence à partir sur du langage offensif et de la nuisance là, je ne peux plus accepter de collaborer avec certaines personne.

Donc bon pour ceux qui essayent de nuire je leur dirai, je ne cesserai pas le projet pour vous, et pour ceux qui rejoignent bah je ne collaborerai avec eux que si ils sont sérieux et qui ils ne prennent pas leur idées pour des vérités absolue. (Il y a souvent plusieurs approches possible en programmation, certaines sont à éviter certes, mais pas toutes)

Voilà ceci dit,
« Modifié: Décembre 14, 2013, 09:35:51 am par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #118 le: Décembre 18, 2013, 12:42:10 pm »
Re, j'ai commencer à faire un petit générateur de map (pour le contour (les murs) et le sol).

Ceci me servira pour le tutoriel :

TextureManager &tm =  resourceManager<Texture>("TextureManager");
        tm.load("tilesets/herbe.png", "GRASS");
        tm.load("tilesets/murs.png", "WALLS");
        View view = getWindow().getDefaultView();
        Vec2f pos (view.getCenter().x - view.getSize().x * 0.5f, view.getCenter().y - view.getSize().y * 0.5f);
        BoundingRectangle br (pos.x, pos.y, view.getSize().x, view.getSize().y);
        theMap = new Map (100, 50, 30, "Map test");
        std::vector<Tile*> tiles;
        std::vector<Tile*> walls;
        tiles.push_back(new Tile(tm.getResourceByAlias("GRASS"), Vec2f(0, 0), Vec2f(120, 60),IntRect(0, 0, 100, 50), 0));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 0, 100, 100), 1));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 100, 100, 100), 1));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 200, 100, 100), 1));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 300, 100, 100), 1));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 400, 100, 100), 1));
        walls.push_back(new Tile(tm.getResourceByAlias("WALLS"), Vec2f(0, 0), Vec2f(100, 100), IntRect(100, 500, 100, 100), 1));
        BoundingRectangle rect(0, 0, 1000, 1000);
        theMap->generate_map(tiles, walls, rect);
        theMap->checkVisibleEntities(br);
 

Je pense que je vais donc continuer les tutoriels sur les entités de haut niveau de SFGL ainsi que les entity managers. :P

Je vais même faire un générateur de donjon plus tard pour SFGL. :P

Mais en ce moment je dois surtout finir les tutoriels et faire en sorte que le code source soit au top pour la version 1.

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : Framework
« Réponse #119 le: Décembre 19, 2013, 11:24:38 am »
Salut,

J'ai améliorer le resource holder de SFGL, il offre maintenant plus de façons de gérer les ressources : (Via un alias ou via un pointeur)

http://www.jeux-libres.com/tutoriaux/tuto-679-chapitre-introduction-et-installation-de-sfgl.php

J'ai corriger aussi quelques erreurs dans le code source, je dois encore finir d'améliorer quelque petites chose et je remet tout ça sur git-hub ce soir. ;)

PS : Pour ceux qui utilise thor : Resource correspond à la classe Key de thor, ResourceManager à la classe cache et ResourceCache à la classe MultiCache.

Plus tard je rajouterai peut être un pointeur sur fonction dans la classe Resource pour le load et un shared_pointer à la place du pointeur classique mais je n'en vois pas trop l'intérêt. (A part allourdir le code)

Par contre je pense que je vais faire un système qui associe un sf::Event à un pointeur de fonction pour les actions, pour plus tard. :) (Dans ce cadre là, les pointeurs de fonctions me semble plus utile)

Ps 2 : je dois encore combiner la puissance des scene node à celle de l'entity manager et je pense que ça sera bon, je vais également combiner les transformations sur les entités enfants directement dans la méthode draw de la classe Entity. ^^

Donc en gros ça ressemblera à une grille qui peut contenir des hiérarchie d'entités, après, je ferai la même chose avec un quadtree et un bsp-tree mais ça, ce n'est que prévu dans la version 2.

Dans la version 2 je pense aussi ajouter des hiérarchies de volumes englobant pour améliorer mon système de collision, et je pense que se sera parfait pour la 2D.

Pour la 3D par contre, il y a encore du boulot. (Je dois faire des générateurs de sol (heightmap), un chargeur de fichier (je pense que je vais choisir le format le plus standart, le .obj, et charger plusieurs fichier .obj en faisant une interpolation linéaires entre les positions des vertex pour les animations)
Il faut aussi refaire le système d'éclairage pour la 3D....

Il y a aussi le moteur de particule que je dois encore faire..., ainsi que le système de gui IG. :/

Mais je ne pense pas que je vais pouvoir tout inclure dans la version un surtout si je n'ai personne pour faire le site web.

Donc je pense que je ferai le système de particules dans la version 2, je vais me contenter de reprendre celui du tutoriel SFML pour la version un je pense.



« Modifié: Décembre 19, 2013, 01:04:47 pm par Lolilolight »