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

Auteur Sujet: Blog de développement - sfml  (Lu 9217 fois)

0 Membres et 1 Invité sur ce sujet

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Blog de développement - sfml
« le: Avril 23, 2012, 08:06:02 pm »
Salut,

Je suis actuellement en train de me créer un framework pour la création de petits jeux vidéos avec SFML et je tiens un blog de développement en parallèle. Ce blog à pour but de mettre au clair mes idées, éventuellement d'en discuter avec les quelques personnes qui me lisent puis de les implémenter (ou pas). Le second but est d'informer voire d'apprendre aux éventuelles personnes qui passent par là comment faire faire telle ou telle chose.

J'ai écris un article sur la gestion du temps, la création de Timers ou autres horloges, donc si ça intéresse quelqu'un, suivez le lien ci dessous :

Gestion du temps avec SFML 2

blog : http://blog.monstruosor.com/

Merci à Nexus et à sa librairie Thor, j'avoue m'être inspiré de quelques parties de son module temps.

PS1 : Je sais pas si ce post à sa place ici ou dans la section wiki
PS2 : N'hésitez pas à me corriger si j'ai dis une bêtise dans l'article
« Modifié: Septembre 01, 2012, 12:05:22 pm par Lo-X »

lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Blog de développement - sfml
« Réponse #1 le: Avril 23, 2012, 09:24:48 pm »
C'est une très bonne idée je trouve, ça me donne presque envie de faire de même...
Je te dirai si je vois des trucs qui me paraissent erronés

Bigz

  • Full Member
  • ***
  • Messages: 154
    • Voir le profil
    • Bigz.fr
Re : Blog de développement - sfml
« Réponse #2 le: Avril 23, 2012, 10:12:07 pm »
Intéressant en effet, étant moi aussi en plein dev d'un moteur je me confronte souvent à passer une semaine dans mon coin à penser et repenser des éléments pour une conception des plus justes. J'irai donc jeter un oeil à ton blog, il est toujours sympa de débattre avec d'autres sur les différentes façons de faire et les points de vue de chacun.

Nexus

  • SFML Team
  • Hero Member
  • *****
  • Messages: 6287
  • Thor Developer
    • Voir le profil
    • Bromeon
Re : Blog de développement - sfml
« Réponse #3 le: Avril 27, 2012, 10:27:06 pm »
Merci à Nexus et à sa librairie Thor, j'avoue m'être inspiré de quelques parties de son module temps.
De rien, c'est bien que Thor peut t'inspirer :)

Merci pour la référence à mon projet!
Zloxx II: action platformer
Thor Library: particle systems, animations, dot products, ...
SFML Game Development:

L01man

  • Jr. Member
  • **
  • Messages: 69
    • Voir le profil
Re : Blog de développement - sfml
« Réponse #4 le: Mai 01, 2012, 04:17:58 pm »
Ces tutos sont complets, bien illustés, aussi bien en codes qu'en couverture, proposent même d'aller au-delà et sont simples. En bref, c'est très intéressant. Mais pourquoi ne pas les mettre sur le wiki de la SFML ? M'autorises-tu au moins à ajouter un lien vers ton blog sur la partie "projets" et "ressources" du wiki ?
http://metroidprime4.xooit.fr/

Un même visage, un même passé, deux destins différents ?
Metroid Prime : Némésis, fangame de la suite du célèbre Metroid Prime 3 : Corruption.

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Blog de développement - sfml
« Réponse #5 le: Mai 01, 2012, 05:14:11 pm »
Ces tutos sont complets, bien illustés, aussi bien en codes qu'en couverture, proposent même d'aller au-delà et sont simples. En bref, c'est très intéressant. Mais pourquoi ne pas les mettre sur le wiki de la SFML ? M'autorises-tu au moins à ajouter un lien vers ton blog sur la partie "projets" et "ressources" du wiki ?

Parce que (en tout cas pour le moment) je ne pense pas que l'un de mes articles soit susceptible d'aller sur le wiki. De plus il faudrait les traduire et les retravailler avant.

Mais merci pour ton commentaire :D

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Blog de développement - sfml
« Réponse #6 le: Septembre 01, 2012, 12:05:09 pm »
Je up un peu le sujet en disant qu'il y a de nouveaux articles (pas forcément SFML spécifques, mais je compte en publier, peut être même dans la journée). Comme les avis des autres m'aident beaucoup, n'hésitez pas à commenter (si vous avez du temps à perdre pour venir me lire :p)

blog : http://blog.monstruosor.com/

Flaco

  • Newbie
  • *
  • Messages: 36
  • Glory to Arztotzka!
    • Voir le profil
    • Core Unit
    • E-mail
Re : Blog de développement - sfml
« Réponse #7 le: Septembre 04, 2012, 03:27:29 am »
Génial, c'est vrai que c'est toujours intéressant de tomber sur un devBlog, histoire de discuter son point de vue et surtout d'en apprendre plus! :D

Super initiative en tout cas, au plaisir! :)

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Blog de développement - sfml
« Réponse #8 le: Septembre 12, 2012, 01:18:05 pm »
Salut,

J'ai mis en ligne le framework ( engenesis ) que j'ai créé pour simplifier certains aspects de la création d'un jeu vidéo.
Ce framework est susceptible de changer assez régulièrement, tout n'est pas entièrement documenté, mais y'a les bases.

Je suis pour tout avis constructif sur l'architecture/le code/autre ...

Lien : http://code.google.com/p/engenesis/

Merci à vous !

Dono

  • Newbie
  • *
  • Messages: 1
    • Voir le profil
    • Sybrix
Re : Blog de développement - sfml
« Réponse #9 le: Septembre 13, 2012, 11:46:21 pm »
Salut,

Je me présente vite fait, je travaille sur un "moteur de jeu" multi-plateformes : une sorte de SFML mais compatible IOS/Android/Windows phone, je compte d'ailleurs mettre en place le principe de l'entity-system dans mon "moteur". Plus d'informations au sujet du moteur ici.

Je suis tombé sur ton blog l'autre jour et l'article sur l'entity system est très interessant. Du coup je me suis aussi penché sur cette architecture et après de nombreuses lectures d'articles, je pense avoir correctement saisie le principe c'est pourquoi je pense qu'une approche commune pourrait nous permettre d'obtenir un résultat plus interessant, certains points étant encore obscurs à mes yeux :).

Je me suis penché sur les sources de ton projet et j'ai relevé quelques détails qui ont attirés mon attention :
  • Il manque la classe System dans les sources c'est normal ?;
  • Une entité possède un ensemble de composants et de systèmes, cela va à l'encontre de l'Entity System;
  • Le nom des System et l'ID des Component sont des chaines pas terrible la comparaison de chaines niveau performances du coup;
(Il y a peut être d'autres choses j'ai parcouru les sources assez vite)

Maintenant que j'ai soulevé certains points voici ce que j'ai de mon côté (je vire tout les commentaires) :

Entity :

class Entity
{
public:
    Entity( World& world );
    void addComponent( Component* component );

private:
    World* world;
};
 

Rien de bien interessant concernant cette classe, elle ne contient rien, passons à la classe Component :

Component :

class Component
{
public:
        Component();
        static Bitset key() const;

private:
       Entity* parent;

};

Comme tu peux le voir un composant dispose d'une méthode statique contenant une "clé" (Bitset = Sur-couche perso au type std::bitset). Cette clé est un nombre binaire unique : Mon objectif est d'avoir une clé unique par type de Component.

Cela va me permettre d'identifier un Component de façon très rapide mais aussi retrouver les types de Component utilisé par un System.

Je compte ainsi calculer le masque binaire d'un System en indiquant lors de son initialisation le type de Component que mon System utilise à l'aide d'une "formule" assez simple :

Exemple :
J'ai un System : SpriteRenderer qui a besoin de deux Components pour fonctionner : SpriteComponent et TransformableComponent (position, rotation, scale, ...). Lors de l'initialisation de mon SpriteRenderer je vais calculer son masque en faisant : mask = SpriteComponent::key() | TransformableComponent::key();
Je peux ainsi savoir si une entité est traité par un System en faisant quelque chose du genre if ( entity.getComponentsKey() == system.mask) mais aussi savoir si une entité à le Component Transformable à l'aide d'un OU logique.

System :
Un System contient une liste de Component sur lequel le system travaille.
Les Component sont ajoutés aux System adéquat lors du "AddComponent" (grace à sa clé on sait si le composant en question doit insérer une reference dans tel ou tel System). (Un System n'a pas besoin de connaitre une entity)

World :
La classe World contient la liste des Component, la liste des System et la liste des Entity.

Je pense avoir fait le tour de l'architecture que je compte mettre en place, je ne vois pas l'utilité de connaitre les Component d'une Entity à part lors ce que l'on souhaite supprimer une Entity (On supprime donc ses Components liés).

Voilà :).
(Désolé pour le pavé)

Lo-X

  • Hero Member
  • *****
  • Messages: 618
    • Voir le profil
    • My personal website, with CV, portfolio and projects
Re : Re : Blog de développement - sfml
« Réponse #10 le: Septembre 14, 2012, 12:31:45 pm »
Tout d'abord, merci pour le temps que tu as passé à regarder ça et à me répondre, ça fait vraiment plaisir =)

Il manque la classe System dans les sources c'est normal ?
Elle se trouve en dernière position dans la liste, il faut sans doute faire un bon scroll down, mais elle y est à l'heure ou j'écris ces mots.

Une entité possède un ensemble de composants et de systèmes, cela va à l'encontre de l'Entity System
Oui mais je voulais qelque chose de pratique, je suis de toutes façon encore en train de revoir (pour la 20e fois) l'architecture de cet entity-system

Le nom des System et l'ID des Component sont des chaines pas terrible la comparaison de chaines niveau performances du coup
Peut-être, mais y'a pas plus pratique. Je veux ajouter un système de scripting (GameMonkey) à ce framework et les chaines de caractères seront bien pratiques. Mais je suis interessé par ce que tu dis après


Comme tu peux le voir un composant dispose d'une méthode statique contenant une "clé" (Bitset = Sur-couche perso au type std::bitset). Cette clé est un nombre binaire unique : Mon objectif est d'avoir une clé unique par type de Component.

Cela va me permettre d'identifier un Component de façon très rapide mais aussi retrouver les types de Component utilisé par un System.

Je compte ainsi calculer le masque binaire d'un System en indiquant lors de son initialisation le type de Component que mon System utilise à l'aide d'une "formule" assez simple :

Je ne connaissais pas ces bitset, je vais étudier ça parce que c'est une approche à laquelle je n'avais pas du tout pensé. Et ça semble assez pratique ET rapide.


lezebulon

  • Full Member
  • ***
  • Messages: 235
    • Voir le profil
Re : Blog de développement - sfml
« Réponse #11 le: Septembre 14, 2012, 06:32:57 pm »
 SpriteComponent::key() | TransformableComponent::key();
Là tu vas toujours appeller la même méthod component::key() non? Enfin y'a pas de statique virtuelle en C++