Quoi ? Un jour de retard dans le post de l'article hebdomadaire !? Ça doit être pour marquer le fait qu'on est *légèrement* à la bourre !
Quoiqu'il en soit, il nous reste une grosse semaine pour finir ce qu'on voulait apporter à Paris pour le Festival du Jeu Vidéo.
En plus de ça, on aimerait bien avoir fini d'assembler les éléments (éléments finaux ou "placeholders") pour la fin de semaine, afin de pouvoir faire "playtester" quelques gens (oui j'aime bien les anglicisme ou plus exactement j'ai du mal à les traduire).
Bref, je vous laisse avec le récapitulatif et je retourne programmer !
Côté programmation
Cette semaine, j'ai principalement écrit des scripts pour intégrer les objets conçus par William. William vous parle plus en détail des objets en question dans sa section, donc je fais l'impasse ! Mais il reste quand même quelques trucs dont je peux parler.
Modifications sur le système de particules
J'ai ajouté quelques effets 'à l'arrache' : la pluie (qui n'avait pas été implémentée avec la neige) et une sorte de fumée noirâtre.

Fumée, 1ère version

Pluie, 1ère version (0ème version ?)
Ces effets sont particulièrement non travaillés (et un peu moche, on peut le dire), mais ils feront l'affaire pour la démo.
J'ai aussi modifié l'effet de vent. Maintenant l'effet peut produire plusieurs trainées pour accentuer l'effet et le rendre plus visible.

Amélioration vent
Intégration gameplay
J'ai implémenté des scripts durant la majeure partie de la semaine. Le fichier où j'écris toutes les implémentations des scripts commence à être gros puisqu'il a passé les 4000 lignes cette semaine. J'aurais du faire un fichier par implémentation de script, mais j'ai eu trop la flemme pour ça. Le fichier est bien aéré quand même et les quelques 20 classes implémentées ne sont pas trop illisibles.
Sinon, à part ces anecdotes pourries, la chose la plus amusante que j'ai codé cette semaine est un script pour les lumières. Je ne révèlerai pas les tenants et aboutissants de l'utilisation des lumières dans le jeu (je laisse votre imagination travailler). A la place, voici juste une séquence d'images pour illustrer.

Lumière scriptée
Bug marrant
Le bug le plus marrant que nous ayons rencontré cette semaine est un bug de filtrage de texture. Voici le problème visuellement parlant présenté dans l'image suivante (à gauche c'est une fois corrigé, à droite c'est quand c'est cassé) :

Filtrage OK (gauche) / filtrage KO (droite)
On utilise le format Png pour les textures. C'est peut être une erreur, peut être aurions nous du choisir autre chose, mais le Png supporte la transparence et fait des fichiers plutôt petit sur le disque.
Le problème de traces blanches sur l'arbre à droite de l'image précédente provient du fait que l'exporteur Png de Photoshop ne prend pas en compte les canaux alpha personnalisés et modifie également les couleurs des pixels qui sont censés être transparent s(alpha = 0).
Voici l'exemple par l'image avec la texture de notre arbre. De gauche à droite : le canal alpha personnalisé que l'on veut, les canaux de couleurs RGB que l'on souhaite voir exporté dans le Png, les canaux de couleurs RGB réellement exportés par Photoshop Png Exporter, et le résultat final dans les deux cas.

Masque alpha / canaux RGB voulus / canaux RGB exporté / résultat du masque
Alors, pourquoi ces trainées blanches apparaissent ?
Et bien car les canaux de couleurs RGB ne sont pas conservés lors de l'export, et Photoshop les réécrit comme il lui semble avec des assemblages de rectangles. Dès lors, dans le moteur de jeu, lorsque l'on affiche une texture, celle-ci est filtrée. Qui dit filtrage dit que l'on prend plusieurs pixels de l'image et qu'on en fait une moyenne. Or les pixel visibles en bordure du masque alpha vont aller se mélanger (se filtrer) avec des pixels blancs non visibles car contenus sous le masque alpha (où l'alpha indique une transparence totale). D'où la présence des trainées blanches. Alors que si nos canaux RGB étaient pris en compte, les pixels en bordure seraient filtrés avec des pixels non visibles ayant une couleur similaire à eux.
Pour résoudre le problème, on aurait pu changer de format de fichier pour un format incluant un canal alpha customisé, avec les formats TGA ou DDS, mais on a comme qui dirait pas le temps pour ça tout de suite.
Dès lors notre ami google nous donne une solution sur les forums de Torque, avec un plugin d'export SuperPng qui écrit bien les canaux RBG que nous voulons dans le fichier Png. (lien direct pour les intéressés).
-----
Côté GD / LD / ART
> Art
Et une nouvelle semaine dédiée à l'animation ! Avec cette fois-ci un programme plutôt varié : champignons, moulins à vent, geysers et sapins. J'ai également posé le sol et une ébauche de background dans les écrans de type "grotte".
Chacun de ces objets est intéractif et possède un comportement unique lié aux saisons. Il est facile d'imaginer le fonctionnement du moulin à vent, mais qu'en est-il des champignons et des sapins ? Pour l'instant, je vous laisse deviner.

Concept animé du champignon et son comportement
Trouver un design satisfaisant pour les champignons s'est avéré relativement difficile. Je n'avais en fait aucune idée de la forme que je voulais leur donner.
Au départ, l'idée a été de faire un seul champignon, suffisamment gros pour permettre au renard de sauter dessus, mais il me semblait que ça lui donnait un aspect un peu trop fantasy / conte de fée. D'autant qu'avec son chapeau rond et ses points colorés le champignon était vraiment trop caricatural.

Premier design
En consultant mes bouquins de référence sur les champignons, je trouvais qu'un chapeau plus plat serait déjà plus joli, mais ça ne changeait pas le fait qu'on aurait eu un seul et unique champignon là où au contraire je souhaitais plus de vie !
Donc j'ai pris un crayon et j'ai gribouillé, encore et encore, pour finalement obtenir...plein de champignons. Un bouquet de champignons !

Design pour la démo
Ca m'a bien plu, alors je suis passé à Blender (encore et toujours) pour animer tout ça. Les gros champignons au centre m'ont pris 2 heures à animer, mais c'est complètement ma faute. J'ai pinaillé et voulu mettre trop de détails dans l'animation (détails qui finalement sont imperceptibles). Quand j'ai commencé à réalisé que ce n'était pas très efficace, j'ai décidé de procéder de manière plus simple pour les petits, et ça a marché ! C'est bon à savoir pour la suite, quand je devrais refaire les champignons pour la version finale du jeu.

Animé dans Blender
Car oui, tous les objets que nous créons aujourd'hui sont d'abord destinés à la démo. En les créant dans un temps aussi réduit, nous apprenons énormément et nous serons donc plus efficaces à l'avenir. Comme on dit chez nous : c'est en forgeant qu'on devient forgeron.
> Level Design
Pas grand-chose à dire sur le LD cette semaine, si ce n'est que j'ai du faire quelques ajustements dans les écrans 05, 10 et 11 de sorte qu'on ait suffisamment de place pour poser les moulins dans le monde. L'écran 11 est toujours un peu bancal : il faudra que je le repense une nouvelle fois afin de le rendre plus intéressant. Et si je n'y arrive pas, il finira par être écarté de la démo.
26/08/2010, 13:55
26/08/2010, 14:03
PS : ça y est j'ai mes places pour le FJV, je passerai surement vous voir dimanche
26/08/2010, 14:03
En effet ça va être court mais on désespère pas
Guillaume (qui y retourne)
26/08/2010, 14:04
On se voit le dimanche alors (je pense qu'on aura bien des têtes de zombis ^^)
Guillaume
26/08/2010, 16:18
Mais sinon un projet pas à la bourre c'est plus un projet c'est une utopie. Je suis un peu dans le même cas que vous donc je compatis^^
Bon courage pour la suite !
26/08/2010, 16:26
En espérant pouvoir se croiser là-bas !
Guillaume
27/08/2010, 18:19
29/08/2010, 16:11
En effet, si y'a pas de problème, c'est pas drôle
Guillaume
30/08/2010, 14:11
(Desole pour ce message un peu vide d'interet. Bon courage pour les longues journées de travail à venir, en tout cas !)
30/08/2010, 14:41
Ne sois pas désolé, parce que ton post est pas dénué d'intérêt. C'est toujours bon de savoir que des gens viennent lire par ici
Donc merci pour ton post et ton support !
Guillaume
30/08/2010, 15:16
Et puis, sincèrement, à force de voir de près les effets graphiques, les jeux sur les lumières, les promesses de gameplay et de game design disséminées dans ces posts, ca donne envie.
"Il est parfois frustrant pour moi de ne dessiner que ce que je peux et non ce que je veux."
J'ai longtemps cru être le seul au monde à souffrir de ca ...
Bref, je vous souhaite bon courage, j'ai personnellement hâte de pouvoir essayer cette démo que vous nous mitonnez avec amour (et qui nous permet d'avoir plein de posts !), et peut-être même de vous croiser au FJV (j'ai la contremarque avec le prix réduit, je peux pré-acheter mon billet avec à la Fnac ?)
(Et dire qu'il y a quelques heures, j'étais encore dans mes belles illusions d'ordre et de clarté ou je croyais que chaque classe demandait deux fichiers, et non pas un fichier pour 20 classes ... Enfin, il doit y avoir des moyens de s'y retrouver. Numéro de ligne ? Commentaires ? Petits schémas faits à la main ?)
30/08/2010, 17:03
Merci pour l'intérêt que tu portes à nos posts :] En espérant pas trop te décevoir au FJV ^^
Pour la contremarque et le prix réduit, je sais pas si tu peux préacheter ton billets à la FNAC... à vrai dire je doute, à la lecture de certains commentaires dans la news GB sur les bons de réduc FJV
Sinon pour ce fameux fichier de 4000 lignes, il est assez aéré avec des séparateurs entres les méthodes, du genre:
//---------------------------------------------------------
et entres les diverses implémentation classes (qui hérite tous de notre classe abstraite "Script"), je mets une lignée comme ça:
//---------------------------------------------------------
//////////////////////////////////////////////////////////////////////////////
Mais pour m'y retrouver, c'est surtout Visual Studio qui m'aide beaucoup, parce que t'as un sélecteur de méthodes par classe (ou par scope de manière plus générale) en haut de la zone de texte, du coup ça t'amène sur les lignes qu'il faut (ou sinon je fais ça avec une recherche dans le fichier courant). (Cf. Une image de Visual Studio avec des annotations, c'est intitulé "Code navigation").
Guillaume
30/08/2010, 18:59
Surtout en sachant que votre demo se precise. Monde cruel.
Ceci dit, courage car j'imagine que vous etes a fond dans le "crunch"...
30/08/2010, 19:32
Oué c'est du Crunch de Nestlé en ce moment
On sera surement pas une grosse attraction du salon hein
Peut-être pour une prochaine occasion.
Guillaume
30/08/2010, 19:36
En relisant ton commentaire, j'ai pas percuté tout de suite, mais quand je parle d'un fichier, je parle d'un couple .cpp/.h. Le gros fichier de 4000 ligne, c'est le cpp. Je respecte quand même l'encapsulation et la non exposition des implémentations scripts au clients des scripts.
(mais c'est du chipotage, ce que je fais c'est mal de toute façon ^^)
Guillaume