rewind a écrit 3425 commentaires

  • [^] # Re: crossroad

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.

    N'hésite donc pas à faire des retours.

    Ha ben, facile : ça fait le boulot, c'est pas dur à utiliser, ça me convient parfaitement. La documentation est suffisante, quand je me suis remis dedans, j'ai relu la manpage et hop, c'était parti.

    j'ai ajouté quelques paradigmes, notamment pour pouvoir travailler sur plusieurs projets en même temps, avec des environnements de cross-compilation indépendants.

    Il n'y a pas déjà ça dans la version actuelle ? En tout cas, je crois qu'il y a une notion de projet et à la fin, on peut avoir un gros zip avec tout ce qu'on a compilé. J'ai bien aimé ça (même si ça n'a pas fonctionné au final).

  • [^] # Re: Non a YAML !

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 5.

    Tu parles sans doute de ça (mais ça va mieux avec un lien). Et ça ne me paraît pas plus lisible que du YAML. C'est une espèce de mix entre du JSON et de l'INI. Super ! Et puis ce n'est même pas packagé dans Debian, ça veut dire qu'il faut se farcir la compilation à la main. Bref, je vais garder mon baril de YAML pour l'instant.

  • [^] # Re: Le plus gros manque ?

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.

    Le jour où il y aura des tas de jeux libres de qualitay,

    Je pense qu'on arrivera pas à ça sans avoir des formats standardisés. Pourquoi ? Parce que le libre ne se construit pas à grand coup de développements intensifs mais sur des briques de bases qu'on empile petit à petit. Et dans les fondations, il y a des standard. C'est une manière de distribuer la charge de travail sans que personne ne se concerte.

    ça plus de 10 ans qu'on peut facilement exporter les modèles 3D de Blender vers Ogre3D

    Quand il y a un bon éditeur avec des fonctions d'export, c'est parfait. C'est aussi le cas avec Tiled, même si tout le monde utilise le format de Tiled. Mais à terme, il se peut qu'il y ait un export vers un format plus générique et/ou plus commun.

    Quand tu auras des milliers de joueurs tu pourras proposer à tes étudiants un projet consistant à régler ce problème

    Hahahaha !

    Les formats standardisés ne vont pas t'apporter de graphiste libriste. A l'inverse un outil de création de jeu accessible à des non codeurs serait un vrai plus

    L'un ne va pas sans l'autre à mon avis.

    le problème est complexe, et la solution pas forcément technique

    Tu as parfaitement raison ! Dans ces cas là, une solution, c'est de faire des propositions, mais c'est aussi le risque de tomber dans le syndrome xkcd.

  • [^] # Re: Non a YAML !

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 3.

    YAML étant un super set de JSON, je suis assez convaincu que la plupart des gens qui émettent du YAML émettent 90% de JSON (évidement, il y a 10% qui font foirer …).

    Je ne crois pas. Parce qu'en YAML, on a plutôt l'habitude d'écrire des trucs comme ça :

    foo:
        bar: 1
        baz:
            - 'toto'
            - 'tata'
        qux: true

    Et ce simple morceau n'est pas du tout du JSON. Le morceau de JSON équivalent serait :

    {
        "foo": {
            "bar": 1,
            "baz": [ "toto", "tata" ],
            "qux": true
        }
    }
  • [^] # Re: formats de données?

    Posté par  (Mastodon) . En réponse à la dépêche Je crée mon jeu vidéo E14 : formats de données. Évalué à 1.

    Je ne comprends pas tes questions. Il s'agit juste de données qui sont lues au démarrage ou dynamiquement pour récupérer des informations. Et ce n'est pas un jeu en ligne, c'est juste un jeu solo.

  • [^] # Re: Métaphore du bureau

    Posté par  (Mastodon) . En réponse au journal Pourquoi on est bloqué, vers où on va peut-être pas. Évalué à 3.

    Si le concept objet ne perce pas, c'est sans doute qu'il est trop complexe. Le concept de fichier est simple, tout le monde le comprend (par analogie avec le monde réel quotidien et immédiat), tout le monde peut l'appréhender facilement. Le concept objet, je pense que tu demandes à 10 personnes, tu auras 15 réponses différentes.

  • # Métaphore du bureau

    Posté par  (Mastodon) . En réponse au journal Pourquoi on est bloqué, vers où on va peut-être pas. Évalué à 5.

    • La hiérarchie d'un système de fichier est peu expressive pour trier ses données
    • Mam Michu ne comprend pas ce que c'est qu'une hiérarchie
    • Beaucoup de logiciels sont des vues de base de données (bibliothèques musicales, photos, … , client courriers électroniques)

    Tes premiers constats sont tout simplement faux. Le fait même que tu utilises le mot fichier indique que tu as intégré un truc tout con apparu il y a plus de 30 ans et qui s'appelle la métaphore du bureau. C'est-à-dire que ton environnement numérique s'apparente à un vrai bureau. Et les fichiers sont bien organisés en dossier, qu'on met dans des classeurs, puis sur des étagères. Bref, une belle hiérarchie pour s'y retrouver. Et ça ne fait pas que faciliter le travail des secrétaires, c'est comme ça que tout le monde fait chez lui pour organiser un grand nombre de documents. Y compris d'ailleurs les documents multimédia ! Une étagère par thème de films, ou par genre musical, ou alors par ordre alphabétique, etc.

    L'avantage de la hiérarchie de dossiers, c'est que chacun peut s'organiser comme bon lui semble à partir des mêmes briques de base. La vue base de données induit forcément une organisation que le développeur impose à ses utilisateurs et qui ne plaira pas à tout le monde. C'est juste un problème humain, pas technique. Il n'y a aucun paradigme connu par le plus grand nombre derrière les bibliothèques musicales. La seule fonctionnalité vraiment utilisée, c'est la fonction recherche, mais ça peut se greffer sur n'importe quelle vue, base de données ou fichiers. C'est juste un problème d'indexation, chose qu'on sait faire depuis pas mal de temps.

  • [^] # Re: Comparaison ?

    Posté par  (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 2.

    Pour faire bref : C++ n'a jamais eu l'intention d'empêcher de faire du mauvais code, au contraire je dirais même. Donc à quoi ça sert de comparer Rust à C++ dans ce cas ? C++ n'est même pas un compétiteur dans la catégorie des langages qui empêche l'utilisateur de faire des bêtises. La seule raison que je vois, c'est que Rust est supposé s'adresser à des gens qui font du C++ d'habitude. Mais c'est complètement raté parce que les gens qui utilisent C++, ils veulent pouvoir faire «n'importe quoi» de temps en temps (par exemple, pour les jeux, avoir des allocateurs mémoire particulier qui s'éloignent de ce que peut offrir le langage, chose quasi impossible à faire en Rust).

  • [^] # Re: Linux power!

    Posté par  (Mastodon) . En réponse à la dépêche Vulnérabilité dans Git et Mercurial sur certains systèmes de fichiers (FAT, NTFS, HFS+, etc.). Évalué à 9.

    Pour ton OS, zUrvan est différent de zurvan, mais j'avoue que je ne fais personnelement pas la différence, je penserai que c'est le même pseudo.

    tU pEnSeS vRaImEnT qUe Ça Ne FaIs AuCuNe DiFféReNcE, zEnItRaM ?

  • [^] # Re: Et dire qu'il suffirait de réfléchir avant...

    Posté par  (Mastodon) . En réponse au journal Google News quitte l'Espagne. Évalué à 3.

    Licence qui n'aurait jamais du être cessible

    Depuis la loi du 1er octobre 2014 (article 6), ce n'est plus le cas. Mais ça ne concerne que les nouvelles licences délivrées.

  • [^] # Re: Et dire qu'il suffirait de réfléchir avant...

    Posté par  (Mastodon) . En réponse au journal Google News quitte l'Espagne. Évalué à 1.

    Ne mélangeons pas tout, le cas des taxis est assez complexe. Les taxis ont raison de gueuler : ils paient une licence très chères (plus que le prix de leur voiture) pour avoir le droit d'exercer un métier et à côté, il y a des gens qui font quasiment le même métier sans avoir besoin de payer une licence. De là, il y a deux possibilités : soit tout le monde paie une licence, soit on rachète les licences des taxis (mais qui et à quelle valeur ?). Dans les deux cas, ça va augmenter le nombre des taxis et donc ça va faire baisser les revenus par taxi. On va se retrouver avec des chauffeurs de taxis obligés de faire beaucoup d'heures pour avoir de quoi vivre dignement. Vous avez envie, vous, d'être emmené par un chauffeur de taxi qui aura déjà travaillé pendant 12 heures d'affilée ? S'il existe des professions régulées, c'est qu'il y a une bonne raison de les réguler, la concurrence libre et non-faussée ne résout pas tous les problèmes magiquement. Et sur le dossier des taxis, je pense que la concurrence tuera la qualité et la sécurité du service.

  • [^] # Re: Comparaison ?

    Posté par  (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 4.

    Ce n'est pas de l'aveuglement, personne ne prétend que C++ est parfait, loin de là. Mais sur les exemples données, les erreurs sont facilement détectables, y compris à la compilation.

    Si je reprends certains des exemples :

    Sur le premier, clang me sort l'erreur suivante (en gras) :

    error: invalid operands to binary expression ('std::vector<int, std::allocator<int> >' and 'int')
        { return *__it == _M_value; }
    

    Je veux dire, c'est difficile d'être plus clair, on ne peut pas comparer un vector et un int.

    D'autant plus que son exemple C++ est moisi. Je propose plutôt ça comme exemple comparable :

    #include <algorithm>
    #include <vector>
    
    struct Foo {
      int i;
    };
    
    int main() {
      std::vector<Foo> foo;
      std::sort(foo.begin(), foo.end());
    }

    Et là, clang sort une erreur en gras :

    error: invalid operands to binary expression ('Foo' and 'Foo')
        { return *__it < __val; }
    

    Là, encore, c'est marqué, on ne peut pas comparer des Foo avec des Foo, bref comme Rust en gros. Et ces diagnostics vont s'améliorer dans la prochaine itération de C++ avec les concepts qui arrivent.

    Sur la variable non-initialisée, ça fait très longtemps que GCC renvoie des warnings. Et sur l'exemple en question, il renvoie :

    warning: ‘currmin’ may be used uninitialized in this function
    

    Bref, comme Rust.

    Sur l'exemple du switch, je trouve que c'est là qu'on atteint la mauvaise foi totale. Il ne respecte même pas la sémantique du langage. S'il faut un break, on met un break. Je ne vais pas décider dans mon coin tout seul que c'est con cette histoire de break et monter un exemple idiot comme ça où je montre que ce que je veux ne marche pas. Ben oui, ça pourrait difficilement être autrement. Surtout que son exemple provoque un warning :

    warning: enumeration value 'UNKNOWN' not handled in switch
    

    Sur l'exemple du for avec le point-virgule, pareil, on a un joli warning :

    warning: for loop has empty body
    

    Bref, dans ces quatre cas (sur dix), un compilateur C++ décent prévient l'utilisateur d'une erreur ou d'un risque d'erreur. Ça réduit son argumentation de 40%.

    Je pourrais parler du constructeur par copie implicite où, si on fait un code isomorphe à celui de Rust, on utilise unique_ptr ou shared_ptr et pas besoin d'implémenter quoi que ce soit hormis le constructeur, tous les trucs par défaut fonctionneront sans problème, avec une sémantique claire. Parce que là, le code en Rust, on a du mal à voir sa sémantique : ça compile, ça fonctionne sans erreur, mais qu'y a-t-il dans a et dans _b à la sortie, je ne saurais le dire.

  • [^] # Re: Comparaison ?

    Posté par  (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 2.

    Le principal reproche qu'on peut faire de cet article c'est qu'il ne dis pas clairement que la comparaison est sous l'angle de la fiabilité des 2 langages.

    Je ne le dirais pas comme ça. Sur le fond, sa comparaison est parfaitement idiote vu qu'il compare des choses pas vraiment comparables, sur tous les aspects. Mais ce qui importe, ce n'est pas ça, c'est que l'intention de l'auteur est de montrer à tous les dev C++ que le Rust c'est mieux et c'est fait pour eux, qu'ils auront une meilleure productivité et que leur vie sera plus belle. Mais je pense qu'avec ce genre de comparaison complètement farfelue, il se goure complètement. Parce qu'un dev C++ expérimenté, il ne fait pas ces erreurs débiles, ou il les détecte très rapidement (pour certaines de ces erreurs, il y a des warning, comme les variables non-initialisées).

  • # Comparaison ?

    Posté par  (Mastodon) . En réponse au journal Journal Bookmark #2. Évalué à 10.

    Une comparaison rapide de Rust et C++ si vous êtes pressé

    Dans le genre comparaison biaisée, je crois que celle-ci fait très fort. Personne ne code comme ça en C++ en 2014 (puisqu'on compare à un langage de 2014). C'est étouffant de mauvaise foi. J'aurais plutôt intitulé l'article : Comparaison entre Rust et un programmeur C++ d'une semaine qui essaie tous les trucs débiles possibles et imaginables. Oui, C++ permet de se tirer dans le pied, c'est marqué dessus, il n'a jamais prétendu que ce n'était pas possible, au contraire, c'est une feature. Alors à quoi ça sert d'en remettre une couche encore et encore et de comparer des choses pas comparables ?

  • [^] # Re: La SDL ne gère pas que le graphisme

    Posté par  (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 3.

    D'un autre côté, cette news sur SFML est dans l'espace de rédaction depuis mai dernier…

  • [^] # Re: La SDL ne gère pas que le graphisme

    Posté par  (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 1.

    Je suis sans doute allé un peu vite mais bon, ce n'est pas faux de dire que SFML est plus complète que SDL.

  • [^] # Re: Tutoriel pour android / cross-plateform

    Posté par  (Mastodon) . En réponse à la dépêche Sortie de SFML 2.2. Évalué à 3.

    Je ne suis pas l'auteur et je ne suis pas impliqué dans le développement, je ne suis qu'un utilisateur. Mais il existe un forum SFML sur lequel tu peux poser ta question. Les dev sont présents et te répondront je pense.

  • [^] # Re: Mauvais outils

    Posté par  (Mastodon) . En réponse au journal A la recherche de contributions pour mon jeu. Évalué à 3.

    à cause de l'absence de gestion des dépendances

    Ok, je m'y mets après Akagoria :P

  • [^] # Re: Mauvais outils

    Posté par  (Mastodon) . En réponse au journal A la recherche de contributions pour mon jeu. Évalué à 4.

    C et C++ sont si improductif au possible que presque tous les studios doivent lui ajouter un langage de script.

    Je dirais plutôt que C/C++ ne sont pas productifs out of the box pour les jeux et qu'il faut développer plein de petits trucs génériques qui servent dans tous les jeux (et qu'on retrouve dans tous les moteurs de jeux).

  • [^] # Re: libretro

    Posté par  (Mastodon) . En réponse au journal Retro 0.1. Évalué à 2.

    Dans ce genre de cas, le C est beaucoup mieux. Parce que les cores sont chargés dynamiquement, donc va trouver le nom de la fonction à appeler en C++ avec le mangling ! Sans compter qu'il faut bien connaître l'objet sur lequel appliquer une méthode donc tu es obligé d'avoir au moins une méthode statique (ou une fonction C). Et ça, c'est sans parler du fait que de nombreux cores sont déjà implémentés en C et que je pense qu'ils n'ont pas envie de passer à C++. De toute façon, si l'API version 2 est bien foutu, ça pourra s'intégrer très bien avec du C++ (pour l'instant, ce n'est pas le cas).

  • [^] # Re: libretro

    Posté par  (Mastodon) . En réponse au journal Retro 0.1. Évalué à 4.

    Bien tenté, mais j'ai parlé de l'API de Retro (mon wrapper), pas de Libretro

    Le nom m'a induit en erreur, mea culpa ! ;)

    J'ai vu ce dépôt ARB récement et l'inclusion d'un pointeur utilisateur était un de mes souhaits les plus chers pour une deuxième version de l'API, je suis content d'apprendre que ça viendra, je pourrai alors abandonner mes gros hacks ! =)

    Ce n'est pas encore parfait. Pour l'instant, ils l'ont mis en dernière position. Or, il est plus intelligent de le mettre en première position de manière à pouvoir appeler directement une méthode d'un objet plutôt que de transférer l'appel en changeant l'ordre des arguments.

    Il y a eu aussi un débat sur ce qui devait faire partie de l'API (donc avec des fonctions ou des callbacks directs) et ce qui devait faire partie d'extensions (donc appelé via la fonction générique retro_environment avec ses multiples constantes). Là dessus je suis assez mitigé.

  • # libretro

    Posté par  (Mastodon) . En réponse au journal Retro 0.1. Évalué à 10.

    Pour ceux qui n'auraient pas compris comment ça fonctionne, je vais essayer d'éclaircir ce point parce que le journal est assez confus. J'ai mis pas mal de temps à bien comprendre comment ça fonctionnait donc je vais en faire profiter tout le monde.

    libretro est une API qui tient dans un .h et on a donc deux côtés à l'API : ceux qui vont implémenter l'API (les backends ou cores) et ceux qui vont l'utiliser (les frontends). Le frontend est chargé de fournir au backend via des callbacks tout un tas de service comme les entrées (clavier, souris, etc), le son, l'image, etc. C'est ce qui est fait dans le projet présenté dans ce journal. Le backend lui est l'implémentation générique d'un émulateur ou même d'un jeu. Il va utiliser les services génériques fournis par le frontend sans avoir à s'occuper de la plateforme sur laquelle il tourne. C'est donc le frontend qui assure la portabilité d'une plateforme à une autre. Comme libretro est orienté émulateur à la base, il y a la notion de rom qui est prise en charge nativement dans l'API. Le frontend de référence s'appelle RetroArch (un peu austère).

    Les possibilités sont énormes puisqu'au delà des émulateurs, il est également possible de demander au frontend un contexte OpenGL et donc, n'importe quel jeu moderne pourrait être implémenté en utilisant libretro. Je crois savoir que certains moteurs de jeu ont implémenté cette API et les jeux utilisant le moteur sont alors vu comme des roms. Il est également possible d'utiliser libretro pour implémenter des visionneurs de vidéo, il y a un portage de FFMPEG pour utiliser libretro. Bref, c'est une API à surveiller, avec beaucoup de projets très actifs qui tournent autour.

    L'API de Retro n'est pas à considérer comme stable pour le moment, mais elle est proche de l'être et ne devrait pas trop changer.

    Raté ! Après avoir freiné des quatre fers pour introduire des changements incompatibles, les auteurs de libretro ont décidé de travailler à une version 2 de l'API pour corriger tout un tas de choses bancales. Le travail se fait dans le dépôt git libretro-arb. Parmi les modifications, l'introduction d'un pointeur utilisateur dans toute l'API (ce qui permettra d'éviter les variables globales comme c'est le cas actuellement quand on implémente un core). Il y a encore du travail mais ça prend forme doucement.

  • [^] # Re: On en parle dans la fonction publique..

    Posté par  (Mastodon) . En réponse au journal Le début de la fin du vote électronique. Évalué à 6.

    Chez nous, il y a une liste spéciale syndicats sur laquelle tout le monde est inscrit (et on peut se désabonner si on veut) et ils envoient quand ils ont envie. Simple, efficace. Mais ça n'empêche pas qu'on reçoit plein de mails.

    Et on ne va pas se plaindre de devoir voter, on ne peut pas vraiment dire qu'on souffre d'un trop plein de démocratie en ce moment, ça serait même plutôt le contraire. Déjà que le gouvernement a supprimé les élections prud’homales…

  • # Complexitude

    Posté par  (Mastodon) . En réponse au journal Le début de la fin du vote électronique. Évalué à 10.

    Apparemment, c'est encore pire que ça, parce qu'il faut des identifiants pour se connecter au bouzin et aussi son numéro d'adhérent d'UMP, et que plein de gens n'ont pas reçu le premier ou ont perdu le second. Bref, ça va être très funky. Je prépare le pop corn. Si ça pouvait éviter à tous les élus UMP de se lancer dans le vote électronique dans leur commune après ça, ça serait déjà ça de gagné.

  • [^] # Re: Boule de cristal

    Posté par  (Mastodon) . En réponse au journal Le réseau dans C++. Évalué à 9.

    Il y a un groupe de travail nommé SG13, dont le but est de travailler à avoir du graphique dans la bibliothèque standard. Certes, ça n'ira sans doute pas jusqu'à une GUI, mais c'est un début. Les spécifications techniques sont issues de ces groupes de travail.

    Bon, pour l'instant, je dois dire que je suis assez déçu par les travaux engagés. Ils sont partis sur définir une API de dessin à partir de cairo. Mais du coup, on ne sait pas à quoi s'applique cette API : écran, fichier ? Et malgré toutes les interventions sur la liste disant que ce n'est pas la bonne direction ni la bonne méthode, ils persistent. Certains avaient même bien fait l'état des lieu : ce qui est difficile actuellement, c'est d'obtenir une fenêtre (et c'est pas là dessus qu'un système se différencie de nos jours, c'est un peu la base), pouvoir ensuite y créer un contexte de dessin (que ce soit pour OpenGL, DirectX ou cairo, peu importe), et pouvoir récupérer les événements sur cette fenêtre.