Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - Légulysse Des Bois

Pages: [1]
1
Projets SFML / Molyjam 2013 - Black and White and Colors
« le: Juillet 16, 2013, 09:39:24 pm »
Bonjour tout le monde !

Lors de la Molyjam, j'ai travaillé pendant 48h avec 3 collègues sur un jeu basé sur la SFML, nommé Black and White and Colors.

> http://www.molyjam.com/games/124 <  (Windows uniquement)

Il s'agit d'un puzzle-game assez court, où le but est de traverser une douzaine de salles. Pour cela, vous devez changer la couleur de votre personnage pour pouvoir interagir avec divers éléments de décor, chacun étant connecté à une couleur précise.

Le jeu est court, mais très stable et plutôt bien finalisé. Le seul problème majeur peut surgir au niveau de l'effet de glow, qui selon les machines donne un rendu bizarre/très agressif.
Nous étions 3 programmeurs avec un game/level designer. Nous avons créé la majorité des assets nous mêmes : le programmeur graphique a dessiné les sprites, et je me suis occupé de la musique. Les effets sonores ont été récupérés sur le net.
Nous avons utilisé la SFML pour le rendu, avec une surcouche perso bénéficient d'une arborescence de composants (positionnement relatif, texte multi-ligne...), avec plusieurs passes de rendu, afin d'élargir les possibilités des shaders.
Les niveaux sont configurés en xml.

Nous avons passé environ 30 heures sur l'architecture du jeu et du pipeline de rendu, avant de créer les levels et d'implémenter les règles du gameplay. Les dernières heures ont été dédiées à du test et de la correction de bugs.

En espérant que le jeu vous plaise ;)






2
Projets SFML / Re : Thor 2.0
« le: Juin 29, 2012, 02:38:10 pm »
Effectivement.
Bah, au final j'essayais de trouver un compromis qui marche pour toutes les utilisations possibles, justement pour ne plus avoir à retaper les déclarations de boucle, mais c'est peut être un peu illusoire de ma part^^
A moins de faire encore plus de sous-versions du même define...  :P

3
Projets SFML / Re : Re : Re : Thor 2.0
« le: Juin 29, 2012, 02:15:24 am »
Je projète de modifier ton code un peu: Sauvegarder le resultat de end(), parce que c'est possible que CONTAINER est une expression chère à évaluer. Peut-être même sauvegarder CONTAINER (sinon il y a toujours deux evaluations).
Le soucis si tu fais ça, comme j'essayais de l'expliquer, c'est que si tu modifies le contenu de ton CONTAINER à l'interieur de la boucle, t'auras des soucis (le end() que t'as stocké se retrouve invalidé). Solution possible : split FOR_EACH_SAFE + FOR_EACH_FAST :D
Par contre je comprends pas trop le but de stocker CONTAINER qqpart, c'est pas comme si c’était un pointeur vers qqchose (vu que c'est le container lui même).

À propos, car ça concerne plutôt Aurora, il y a aussi un autre thread ;)
J'y penserais pour les prochaines fois :p

4
Projets SFML / Re : Thor 2.0
« le: Juin 26, 2012, 12:11:16 am »
Salut !
Je me permets un très léger apport pour ton projet^^
En cherchant à améliorer mon implémentation de FOR_EACH, je suis tombé sur ta version qui m'a aiguillé sur un truc plus simple que ma première version, ce qui m'a amené à une nouvelle version encore plus robuste. Du coup, juste retour des choses, voici mon résultat (vu qu'il me semble que Thor utilise c++11) :

#define FOR_EACH(CONTAINER, ITERATOR)       \
    for (auto ITERATOR = CONTAINER.begin();  ITERATOR != CONTAINER.end();  ++ITERATOR)

   
#define FOR_EACH_CONST(CONTAINER, ITERATOR) \
    for (auto ITERATOR = CONTAINER.cbegin(); ITERATOR != CONTAINER.cend(); ++ITERATOR)

L’intérêt par rapport à ta version est de virer un paramètre (le type de conteneur), ainsi que d'éviter un crash si le contenu de la boucle erase des elements (en ne stockant pas le end()).

genre :
std::vector<std::string> vecTest;
vecTest.push_back("A");
vecTest.push_back("B");
vecTest.push_back("C");
     
FOR_EACH(vecTest, iteCurrent)
{
    if ("B" == *iteCurrent)
        iteCurrent = vecTest.erase(iteCurrent);
}

En attendant le "vrai" ForEach de C++11  ;D

Pages: [1]