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

Auteur Sujet: SFML Game Development -- Un livre sur SFML  (Lu 39616 fois)

0 Membres et 1 Invité sur ce sujet

Krozark

  • Newbie
  • *
  • Messages: 36
    • Voir le profil
    • site perso
Re : SFML Game Development -- Un livre sur SFML
« Réponse #30 le: Novembre 16, 2013, 06:38:25 pm »
Récemment, j’ai lu le livre «SFML Game Development»

Voici maintenant ce que j’en ai pensé:

Introduction :
   Ce livre présente des concepts de base pour la création d'un jeu 2D en utilisant la SFML2.0 et le C++11 en technologies de bases.
   Les thèmes abordés vont de l'installation de la SFML à la gestion de réseau, en passant pas la gestion des entités, actions du joueur, création d'une GUI, mais également la gestion des sons, musiques et autres ressources ainsi que la création d'un moteur de particules et «posts effects».

En bref :
   Le livre est très complet parcourant tous les outils de base permettant la création de jeux. Bien que que le jeu créé au fur et à mesure du livre soit un simple jeu 2D vue de haut, les concepts abordés sont applicables à la plupart des jeux actuelles, qu'ils soit en 2D ou 3D.
   Une connaissance de la SFML préalable n'est pas requise, tout étant détaillé pas à pas. Une connaissance du C++ est par contre recommandé.


Plus en détails :
   Biens que les concepts abordés soit bien détaillés, leur implémentations est parfois étrange. Par exemple, une des erreurs qui revient le plus souvent est la mauvaises utilisations des containers de la STL. Très souvent std::vector<T>  est utilisé alors qu'il y a bien plus adapté à la situation (array, list, stack ...). Il est toutefois à noter, que cela ne change en rien la logique du code, mais simplement des soucis d'optimisations.
   Un autre point que j'ai trouvé étrange lors de la lecture de ce livre, est que std::move est utilisé dans les premiers chapitres (abordant donc les rvalue-references) mais que les «move constructors» ne sont jamais abordés, et que std::move n'est plus utilisé par la suite alors que de nombreuse optimisations aurais là aussi pus être faites avec, sans pour autant changer la clarté du code.
   Le dernier points que je détaillerais n'est présent qu'une seul fois dans le code. Une surcharge est faite pour la méthode «load» de «ResourceHolder», dupliquant une partie du code (rompant les concepts  définies au début du livre prohibant la duplication). D’après moi, l'utilisation de «template variadiques» couplé à std::forward aurait été bien plus judicieux, et aurais également permis d'aborder ces ajout au C++ de façon simple et efficace.

        template <typename Resource, typename Identifier>
        template <typename ... Args>
        void ResourceHolder<Resource, Identifier>::load(Identifier id,Args&& ... args)
        {
            std::unique_ptr<Resource> resource(new Resource());
            if (!resource->loadFromFile(std::forward<Args>(args)...))
            throw ...;
            ... // insertion like before
        }
 

Mot de la fin :
   Beaucoup de concepts sont abordés implémenté et utilisé, et bien d'autre sont simplement citées pour les curieux ou pour améliorer le code proposé sans pour autant rentrer dans les détails.
   En claire un très bon livre, que se soit pour les débutants, les curieux ou encore les initiés.

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : SFML Game Development -- Un livre sur SFML
« Réponse #31 le: Novembre 17, 2013, 11:06:01 am »
Merci pour le feedback!

Par exemple, une des erreurs qui revient le plus souvent est la mauvaises utilisations des containers de la STL. Très souvent std::vector<T>  est utilisé alors qu'il y a bien plus adapté à la situation (array, list, stack ...).
On utilise beaucoup des containers spécialisés: vector, deque, list, array, queue, set, map. Mais en général, std::vector est le "défaut", parce qu'il se comporte bien dans la plupart des situations. Où est-ce que tu penses qu'il serait mieux d'utiliser un container différent?

Un autre point que j'ai trouvé étrange lors de la lecture de ce livre, est que std::move est utilisé dans les premiers chapitres (abordant donc les rvalue-references) mais que les «move constructors» ne sont jamais abordés
Il ne faut pas définir les constructeurs move si les objets (comme std::unique_ptr) sont déjà "movables". Aussi les rvalue-references, notre code ne les contient pas. Nous appliquons la sémantique move, mais nous évitons de définir des types movables (les compilateurs sont capables de les définir implicitement).

Le dernier points que je détaillerais n'est présent qu'une seul fois dans le code. Une surcharge est faite pour la méthode «load» de «ResourceHolder», dupliquant une partie du code (rompant les concepts  définies au début du livre prohibant la duplication). D’après moi, l'utilisation de «template variadiques» couplé à std::forward aurait été bien plus judicieux, et aurais également permis d'aborder ces ajout au C++ de façon simple et efficace.
Oui, mais comme nous avons expliqué au début, nous avons fait des compromis pour souténir des compilateurs comme VS 2010. Dans un autre contexte (state stack), nous mentionnons les variadic templates.
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Krozark

  • Newbie
  • *
  • Messages: 36
    • Voir le profil
    • site perso
Re : SFML Game Development -- Un livre sur SFML
« Réponse #32 le: Novembre 17, 2013, 09:14:16 pm »
Pour les containeurs:
Je suis tout à fait d'accord avec toi pour dire que std::vector se comporte bien la plupart du temps, et que c'est celui à utiliser par défaut.
Pour ce qui est de l'emplacement, je sais plus où j'avais vus, mais il me semble que c'était un vector déclarer de taille fixe. Cette taille étant la taille d'une enum. Dans ce cas, un array aurais été préférable.


Templates variadiques:
C'est vrais que je n'ai jamais testé le C++11 sur autre chose que g++, et j’avais pas vraiment pensé au soucis de compatibilité qu'il peut encore avoir.

Un autre point, mais pour celui là, je ne suis vraiment pas sur de moi, d'où le fait que je n'en ai pas parlé.
Je sais que en C, les enum commencent pas forcément à 0, sauf si on spécifie explicitement (ça dépend des compilot).  Pour le C++, je n'ai aucune idée de si la norme définie que les enum commencent à 0. D'où l'habitude que j'ai de mettre "=0" à la fin du premier attribut. Dans le code il n'y à pas de "=0". Du coup je sais pas trop quoi en penser : la norme définie les enums comme commençant à 0 par défaut?

Sinon, au risque de me répéter, très bon livre.
« Modifié: Novembre 17, 2013, 09:26:59 pm par Krozark »

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : SFML Game Development -- Un livre sur SFML
« Réponse #33 le: Novembre 19, 2013, 06:46:18 pm »
Pour ce qui est de l'emplacement, je sais plus où j'avais vus, mais il me semble que c'était un vector déclarer de taille fixe. Cette taille étant la taille d'une enum. Dans ce cas, un array aurais été préférable.
Pas nécessairement. std::array est plus vite parce qu'il n'a pas besoin d'allocation, mais il a le désavantage qu'il faut connaître la taille à la déclaration, que l'objet peut utiliser le mémoire du stack qui est limité, et que l'opération move est lente et pas "exception-safe". D'autre part, std::vector est problematique s'il est contenu de beaucoup des petits objets, alors l'allocation et le mémoire ne valent pas la peine.

Dans beaucoup des cas, particulièrement avec seulement douzaines des elements, il n'y a pas de différence importante.


Je sais que en C, les enum commencent pas forcément à 0, sauf si on spécifie explicitement (ça dépend des compilot). Pour le C++, je n'ai aucune idée de si la norme définie que les enum commencent à 0.
Oui, elle est définie comme ça, donc le = 0 est superflu et pas habituel.

Et je doute fort que c'était différent en C. Selon la norme C89 (c'est la seule version que j'ai trouve maintenant):
Citation de: §3.5.2.2
If the first enumerator has no = , the value of its enumeration constant is 0. Each subsequent enumerator with no = defines its enumeration constant as the value of the constant expression obtained by adding 1 to the value of the previous enumeration constant.
« Modifié: Novembre 19, 2013, 06:48:16 pm par Nexus »
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

Deu sex

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #34 le: Décembre 05, 2013, 03:15:05 pm »
Bonjour, je suis débutant en C++ et j'avoue être très intéressé par le livre, j'ai plusieurs questions pour savoir a quoi m'en tenir.

Si on achète le livre, peut on également avoir accès gratuitement à la version numérique ou c'est un achat à part ?

J’imagine que vu qu'il s'agit d'un shooter en vue de dessus, il doit y avoir au moins un chapitre dédié a la physique (gestion de collisions, forces appliqués, vecteurs...) est elle faite complètement à la main ou a l'aide d'une librairie OpenSource comme Box2D par exemple ?

Est-ce que le code C++ un peu avancé/nouveau est brièvement expliqué ? Pour donner un exemple, imaginons qu'a un moment lors de la création d'une classe on utilise pour une méthode un passage par référence constante au lieu de par référence tout court, est ce qu'on est censé comprendre par nous même pourquoi le choix est judicieux dans ce cas, ou alors c'est brièvement expliqué ? Est ce que les utilisations du C++ 11 sont mises en valeur ou on considère que le lecteur connais déjà le C++11 ?

Merci d'avoir pris le temps de lire tout ca :)

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : SFML Game Development -- Un livre sur SFML
« Réponse #35 le: Décembre 05, 2013, 03:20:05 pm »
Bonjour, je suis débutant en C++ et j'avoue être très intéressé par le livre, j'ai plusieurs questions pour savoir a quoi m'en tenir.

Si on achète le livre, peut on également avoir accès gratuitement à la version numérique ou c'est un achat à part ?

J’imagine que vu qu'il s'agit d'un shooter en vue de dessus, il doit y avoir au moins un chapitre dédié a la physique (gestion de collisions, forces appliqués, vecteurs...) est elle faite complètement à la main ou a l'aide d'une librairie OpenSource comme Box2D par exemple ?

Est-ce que le code C++ un peu avancé/nouveau est brièvement expliqué ? Pour donner un exemple, imaginons qu'a un moment lors de la création d'une classe on utilise pour une méthode un passage par référence constante au lieu de par référence tout court, est ce qu'on est censé comprendre par nous même pourquoi le choix est judicieux dans ce cas, ou alors c'est brièvement expliqué ? Est ce que les utilisations du C++ 11 sont mises en valeur ou on considère que le lecteur connais déjà le C++11 ?

Merci d'avoir pris le temps de lire tout ca :)

Je vais répondre seulement ce à quoi je peux répondre :

- Il n'y a pas vraiment de physique, bien sur une détection de collision basique est faite, mais c'est tout. Donc pas de box2d ni rien d'autre qui va au delà de "est-ce qu'une hitbox en chevauche une autre"
- Il faut avoir des bases en C++, sinon le livre serait une encyclopédie. Il n'y a pas d'explications sur tout ce qui est passage par référence etc. car c'est considéré comme acquis.
- Par contre tout ce qui concerne C++11 est expliqué, le lecteur est considéré comme débutant avec ces nouveautés alors il y a des apartés explicatifs à chaque fois.

Je ne connais pas ton niveau en C++, mais si tu sais te débrouiller un peu, le livre est vraiment plein à craquer de choses à apprendre !

Deu sex

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #36 le: Décembre 05, 2013, 03:30:42 pm »
Ok super :) je connais les concepts de base du C++ et un peu plus mais j'ai juste eu 1 cours théorique (très bien expliqué cela dit) sur le C++ 11, ducoup c'est bien que ce soit expliqué :)

Quel IDE est utilisé dans ce livre ? je compte utiliser Visual Studio 2013 mais je sais que son implémentation du C++ 11 n'est pas totale seulement partielle. Jusqu'a présent je n'ai eu aucun probleme de compilation avec les libs SFML 2.1 pour Vusial 2012 sur Visual 2013 donc je pense que ca devrait aller de ce coté la.

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : SFML Game Development -- Un livre sur SFML
« Réponse #37 le: Décembre 05, 2013, 04:38:18 pm »
Quel IDE est utilisé dans ce livre ?

Aucun, du code C++ reste du code C++ quelque soit l'IDE. Alors tu peux utiliser celui que tu préfère (et qui permet de compiler du C++11 avec les lambdas)

Deu sex

  • Newbie
  • *
  • Messages: 28
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #38 le: Décembre 05, 2013, 05:27:28 pm »
Ok tres bien,  merci pour les reponses :)

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : Re : SFML Game Development -- Un livre sur SFML
« Réponse #39 le: Décembre 08, 2013, 02:06:30 pm »
Si on achète le livre, peut on également avoir accès gratuitement à la version numérique ou c'est un achat à part ?
Oui, tu reçois aussi le e-book si tu achètes le livre (sur la site Packt, tu verra "Print + free eBook + free PacktLib access to the book").

Lo-X à déjà repondu aux autres questions :)
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

PtichapronRouge

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #40 le: Avril 21, 2014, 10:38:13 pm »
Je suis tombé sur ce sujet par hasard et ce livre m'intéresse beaucoup, mais je vois qu' il utilise la version 2.0 de la sfml, tandis que j'utilise la 2.1. Y a-t-il eu entre ces deux version des modifications suffisamment importantes pour rendre le livre obsolète ou cela est-il négligeable ? :)
Un coca, un ordinateur, et un livre SFML Game Development. Elle est pas belle la vie ?

math1992

  • Jr. Member
  • **
  • Messages: 77
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #41 le: Avril 22, 2014, 01:41:08 am »
Il y a quelque différence entre la 2.0 et 2.1, mais extrêmement minime. Alors, ce livre n'est pas désuet, loin de là.

PtichapronRouge

  • Newbie
  • *
  • Messages: 41
    • Voir le profil
    • E-mail
Re : SFML Game Development -- Un livre sur SFML
« Réponse #42 le: Avril 22, 2014, 02:52:13 pm »
Merci beaucoup :)
Un coca, un ordinateur, et un livre SFML Game Development. Elle est pas belle la vie ?

Timidouveg

  • Full Member
  • ***
  • Messages: 164
    • Voir le profil
    • Démiurge - Mon jeu-vidéo en développement
Re : SFML Game Development -- Un livre sur SFML
« Réponse #43 le: Janvier 14, 2015, 05:51:38 pm »
Bonjour :)

J'ai décidé de mettre mon jeu en licence GNU GPL v2 et pour l'instant j'utilise beaucoup de code venant du livre, adapté à ma sauce. Je souhaite savoir ce que je dois préciser au niveau de la licence, car j'écris toujours quelque chose en haut de chaque fichier du projet et je ne voudrais pas qu'il ait conflit de licences et aussi m'approprier la paternité partielle du code fait par les auteurs du livre. Et puis, ça me plairait beaucoup que ça soit l'occasion de faire connaître encore plus votre travail :)

J'ai d'ailleurs la même question pour SFML, soit dit en passant.
C'est simple, c'est rapide, c'est libre et en plus c'est français ? Qu'est-ce que vous attendiez pour m'en parler ?

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : SFML Game Development -- Un livre sur SFML
« Réponse #44 le: Mars 25, 2015, 03:22:58 pm »
Combien du code original est-ce que tu utilises?

La license du code est visible ici. Si tu veux distribuer ton code, il serait bien si tu pourrais ajouter ce fichier et marquer quelles parties sont les tiennes. Malheureusement il n'est pas possible de mettre tout notre code sous un license différente (comme GPL), sinon il ne faudrait pas de license du tout ;)

L'idee est: Si quelqu'un regarde le code (qui descend partiellement du livre), il faut qu'il connait l'origin et la license correspondante, pas seulement la GPL. Merci! :)
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development: