samedi 28 février 2009

Fondu au noir

Entre deux niveaux de World of Goo, j'essaie quand même de coder un petit peu. Après beaucoup de frustration à sortir des shaders potables, je suis revenu sur des bases plus saines, et j'ai essayé de faire une interface de chat (de messagerie instantanée, hein, aucun rapport avec les félins) qui ressemble à quelque chose.



Comme l'on peut le voir ou du moins le deviner sur la capture d'écran, un message nouvellement tapé va d'abord s'afficher en très intense, puis diminuer d'intensité pour devenir semi-transparent. Après un certain temps, le texte va se fondre dans l'arrière plan et disparaître.

mercredi 25 février 2009

64 bits!

Une grande image valant mieux qu'un petit discours...



La version la plus récente du code d'AdH compile également gentiment en 64 bits, bien que des bugs ultérieurs soient toujours possibles.

vendredi 20 février 2009

boost::timer m'a eu

#include <iostream>
#include <boost/timer.hpp>

int main()
{
boost::timer t;
usleep(1000000);
std::cout << t.elapsed() << std::endl;
return 0;
}
Que renvoie ce programme? Sous Windows, probablement 1.0. Sous Linux, probablement 0.

C'est parce que boost::timer utilise clock(), qui sous Linux renvoie le temps CPU écoulé. Quand on dort, rien ne se passe, donc zéro.

Il va donc me falloir écrire ma propre classe de timer à partir de boost::posix_time. Bof.

lundi 16 février 2009

Black & White II

Malheureusement, on ne peut pas dire que j'aie avancé beaucoup pendant la semaine. La raison en est que j'ai mis la main sur Black & White II, et que je suis accro! J'avais beaucoup aimé le 1, dont les quelques défauts ont été gommés dans le 2. Cependant, j'ai trouvé certains changements moins heureux... Voyons le détail.

Black & White 2, donc, est une sorte de super-Populous. Prenant le rôle d'un Dieu, il va falloir mener son peuple à la victoire contre les méchants aztèques qui ont failli les éradiquer, en prenant le contrôle d'un certain nombre d'îles occupées par les vikings, les japonais, et enfin les aztèques. Pour gagner, l'on peut soit écraser ses ennemis sous le poids de ses armées, ou développer une ville suffisamment impressionnante pour que tous les villages de l'île nous rejoignent, ou encore panacher entre les deux.



La création de ville est agréable, et les bâtiments assez variés, bien que cependant à chaque île il faille recréer une ville souvent sur le même modèle que la précédente. La partie militaire est également intéressante, l'on peut créer des soldats, des archers, et des catapultes, qui deviennent plus forts au fur et à mesure des combats. Les combats sont d'ailleurs assez difficiles, car l'ennemi prend rapidement l'avantage par le nombre, et il est généralement bien plus facile de se réfugier derrière de bons gros murs bien défendus par des archers, et de gagner en jouant l'attractivité (qui chantera les ravages de l'exode rural!).

En tant que Dieu, l'on est doté de tous un tas de pouvoirs bien bourrins, eau, feu, éclair, et tout le toutim. Quel plaisir de balancer de belles boules de feu bien senties sur un régiment ennemi! Notre conscience, personnifiée par un diablotin rouge pour le Mal et un vieil homme à barbe blanche pour le Bien, fournit indications, tutoriels et conseils divers. Notre divine intervention pourra également résoudre des énigmes qui parsèment le jeu et qui permettent de gagner des pouvoirs supplémentaires, pendant que le chef de guerre ennemi commente chacune de nos actions.



Enfin, la parte la plus intéressante du jeu, l'on guide une Créature. Je parle de guide, car la bestiole a une volonté propre, qui sera façonnée par nos ordres, caresses et baffes. Non, on ne mange pas de villageois! Oui, on aide à fabriquer cette villa! La créature réagit très intelligemment, aidant à l'expansion de la ville et combattant les régiments ennemis. L'on peut soit l'assigner à des tâches précises, soit lui laisser la liberté d'agir comme elle le sent.

La créature est de fait notre meilleur atout, et, bien dressée, se révèle d'une efficacité foudroyante. Elle permet de se décharger des activités répétitives pour se concentrer sur le côté plus intéressant du jeu, et rend les combats beaucoup plus stratégiques, tout en réduisant les temps morts, car elle est toujours en train de faire quelque chose.



Par rapport au 1, la création de ville a été améliorée, et il est plus facile d'atteindre l'équilibre (mes sujets se plaignaient toujours d'avoir faim dans le 1). Par contre, et c'est un peu dommage, la créature est maintenant dotée d'infobulles, qui indiquent ce qu'elle pense, et il est ainsi beaucoup plus facile de la corriger, ce qui réduit sa spontanéité.

Heureusement qu'il n'y a que 15 à 20 heures de jeu tout au plus, sinon je n'aurais jamais émergé!

lundi 9 février 2009

Cel shading

Combinant mon mini-client, mon ULM, et l'effet cartoon dans OSG, j'obtiens un résultat qui me plait plutôt bien! L'effet prend correctement en compte la couleur de l'objet et la couleur de la lumière, ce qui devrait permettre un rendu plutôt décapant (dans les captures, c'est un objet gris sous une lumière rosée).

Hélas, l'affichage des contours ne fonctionne pas tout à fait comme je l'aurais souhaité. La plupart du temps, l'objet ressemble à ce que je veux.



Mais sous certains angles d'observation et de lumière, ce ne sont pas seulement les contours de l'objet, mais les contours de chaque polygone, qui apparaissent:



Je ne suis pas sûr d'arriver à résoudre le problème, et je pourrais avoir à contourner, avec potentiellement des résultats moindre.

lundi 2 février 2009

Tapis volant

Je viens d'implémenter une version extrêmement simple d'un modèle de vol, pour lequel l'engin correspondant le plus proche est sans doute le tapis volant: vol stationnaire, avancer, reculer, tourner, monter, descendre, et enfin, indépendamment de la position du tapis, regarder autour de soi. Après un peu de Blender et de Gimp, me voilà donc explorant Brumaire en temps réel sur mon tapis volant aux couleurs criardes.