Journal de bord

Journal de bord

Par Swing Swing Submarine Blog créé le 08/01/10 Mis à jour le 05/04/15 à 22h03

Ajouter aux favoris
Signaler
Seasons after Fall

Salut,

Nous revoilà pour la 2ème semaine de récapitulatifs des travaux effectués sur la démo de Seasons qui sera jouable sur notre stand lors du prochain Festival du Jeu Vidéo.

Côté Programmation

Path (chemin)

La semaine a commencé par l'implémentation du support des "Path" de Blender dans le moteur du jeu.

Un Path est une courbe positionnée dans un espace 3D que l'on peut parcourir grâce à l'utilisation d'une autre courbe dite paramétrique (en l'occurrence on l'appellera courbe de vitesse).

Exemple depuis Blender :


Path (gauche) et courbe paramétrique de parcours (droite)


Sur la gauche, dans la vue 3D, un Path est positionné, ainsi qu'un cube suivant ce Path.

A droite, on aperçoit une autre courbe, la fameuse courbe paramétrique "speed" pour parcourir le Path. Cette courbe est modifiable par nos soins (tout comme celle du Path), et dans le cas présent elle nous indique que tout objet suivant le Path va le parcourir entièrement entre les images 1 et 100 de l'animation, puis revenir sur ses pas jusqu'au milieu du Path entre les images 100 et 150 de l'animation, pour finir par repartir vers la fin du Path entre les images 150 et 250 de l'animation.

Cette courbe de "speed" permet aussi de gérer l'accélération des objets en fonction de la courbure qu'on lui donne.

Les Paths vont nous être très utiles dans le jeu car on va pouvoir accrocher toute sorte de chose dessus : des objets visuels, des effets ou encore la caméra (pour faire des cinématiques).

Émetteurs de particules

Jusqu'à présent, nous n'avions pas d'effet de particules dans le moteur. Cette semaine fut l'occasion d'implémenter un système embryonnaire. On a donc 2 types d'émetteur de particules à l'heure actuelle :

- Trail (trainée)


Les trainées vont utiliser les Paths présentés au paragraphe précédent pour faire apparaitre des effets longiligne. Petit exemple d'une map de test (désolé pas le temps de faire des vidéos pour le moment) :


Une particule de type trainée au cours du temps


- Spawn (soit l'émetteur de particules classique)


L'émetteur de particules le plus courant est un émetteur qui va créer des particules de tailles, de vitesses, de durées de vie, et de positions de départ diverses (et un peu aléatoires) pour générer des effets comme de la pluie ou de la neige.

Chaque effet demande un réglage des paramètres (avec un peu d'aléatoires dedans). Avec la neige, la taille des particules est plutôt grande et la vitesse lente, alors que pour de la pluie ce serait plutôt l'inverse : une taille étroite et une vitesse élevée.

Voici quelques tests préliminaires avec un seul plan de particules :



Divers tests de particules (de gauche à droite : statique, forte vitesse vers le sud-ouest, vitesse lente vers le nord et fade avant la mort de la particule)

Pour qu'un effet de pluie ou de neige reste toujours à l'écran, il faut que l'émetteur de particules bouge avec la caméra et qu'il émette des particules sur une largeur assez importante pour couvrir tout l'écran. On a donc deux types d'émetteurs : 'local' ou 'full screen'.

Si on se contente de bouger un émetteur 'local', on va rencontrer quelques problèmes de "trous", des endroits où il n'y aura pas de particule à l'écran. Ceci car les particules nouvellement créées le seront dans un rectangle de la taille de l'écran mais rien ne garantit que les particules apparaitront sur le bord de l'écran (dans la direction où nous allons) ou en plein milieu.

Pour palier à ce problème, on déplace les particules vivantes qui viennent de sortir d'un côté de l'écran pour les remettre de l'autre côté. On effectue alors du "Wrapping" de particules, uniquement pour les émetteurs 'full screen'.

Exemple en image :


Wrap de particules pour couvrir l'écran en permanence

Les particules sont colorées en fonction de la position où elles sont nées pour mettre en évidence le phénomène. Ainsi on voit que les bords gauche/droit de l'écran ont des particules de même couleurs car certaines particules ont été déplacées de la droite de l'écran vers la gauche. Elles poursuivront leur périple jusqu'à ce qu'elles meurent.

Voici ce que donne la neige dans le décor neigeux de la semaine dernière :


It's snowing men!

Il reste encore des réglages à faire, mais l'effet est pas trop mal pour un premier jet. On reviendra dessus plus tard quand tous les éléments de gameplay seront implémentés.

Les restes

D'autres choses en vrac :

Écriture d'un script générique pour effectuer des déplacements de caméra lorsque le renard entre dans certaines zones (en utilisant les Paths fraichement disponibles :)).

Correction de quelques bugs (vitesses de déroulements des timelines d'animation qui ne concordaient pas entre le moteur et Blender, rotation en Z des instances de prefabs ne marchait pas).


Côté LD/GD/Art

Graphisme :

Après avoir travaillé à la première passe d'habillage des premiers écrans de jeu, mon cerveau de non-graphiste n'arrivant pas parfaitement à imaginer chaque ambiance, couleur et élément de décor, j'ai senti qu'il était préférable de revenir à un travail papier. C'est pourquoi j'ai imprimé l'ensemble des maps de collisions afin de pouvoir gribouiller dessus.

Certains dessins ont été scannés puis colorisés afin de mieux me rendre compte du travail à accomplir ensuite, et puis aussi un peu pour me rassurer.
Une fois mes doutes dissipés, je suis revenu à la création d'assets, dont une cascade qui ondule magnifiquement ses vertex à l'écran.


Du gribouillis à la colorisation


Intégration de la cascade animée in game


Level Design :

En imprimant les maps de collision, je me suis aperçu que certaines sections de jeux devaient être ajoutées et (beaucoup) d'autres déplacées. Les écrans 10 et 11 (les plus bancals) ont été totalement réagencés de sorte que la succession d'obstacles proposée soit plus naturelle, force le changement des saisons et surtout aide au bon apprentissage des différents éléments de jeu.


Modification LD après tests

Ajouter à mes favoris Commenter (9)

Commentaires

SeeDreeks
Signaler
SeeDreeks
Merci encore pour toutes ces infos partagées, c'est une réel plaisir de vous suivre.
Pour les path je pense avoir compris le principe. C'est un peu comme les guides couplé à l'accélération sur flash, il me semble ?
Swing Swing Submarine
Signaler
Swing Swing Submarine
Merci Druss :)

Mais non, tu n'es pas masochiste, juste curieux ;)

Blender c'est pas mal, on devient vite "accro" (enfin moins que la coke, d'où les parenthèses).
Nous on aura pas l'occasion de tester la 2.5 de Blender (on a trop de trucs à faire pour switcher d'outil en cours de route). Mais pour ceux qui on jamais touché à Blender, essayé la 2.5 (même si elle est encore en bêta, elle en vaut la peine).
Comme ça vous aurez une belle interface "black-style" à la mode. Avec quand même quelques refontes dans l'interface (même si celle de Blender 2.49 est parfaite hein... :D).

Guillaume
Druss
Signaler
Druss
C'est toujours aussi interessant de visiter votre blog.
Plus vos billets sont technique et plus je trouve ça passionnant (masochisme?).
Ca me donne envie de me remettre a blender, tiens... lol
Swing Swing Submarine
Signaler
Swing Swing Submarine
Bienvenue à toi Valpokbest :)

J'ai relu le truc de Path et c'est pas très clair, tu dois être un peu 'matheux' si tu as compris avec le charabia du post :)

Guillaume
Valpokbest
Signaler
Valpokbest
Un billet technique!
Je ne connaissais pas votre blog, mais je risque d'y revenir souvent maintenant.
La création d'un jeu vidéo m'a toujours passionné (et j'ai compris le Path moi xD)!
Swing Swing Submarine
Signaler
Swing Swing Submarine
Merci à toi de venir nous lire TinyToony :]
En espérant que tu ne seras pas déçu une fois au festival (genre on a fait de la merde et du coup c'est super moisi).

En tous les cas, une chose est sûre, on sera pas déçu de vous voir :)

Guillaume
TinyToony
Signaler
TinyToony
Je suis vraiment impatient de voir le résultat au Festival.
Merci de nous tenir au courant de vos avancées. C'est très intéressant !
Swing Swing Submarine
Signaler
Swing Swing Submarine
Salut Enimal,

En effet, les Path j'ai un peu abusé sur l'explication. Mais en gros, on dessine une courbe en 3D dans le monde, ça c'est le path à proprement parler. Et pour dire comment les objets vont suivre ce path, on utilise une 2ème courbe (une courbe 2D).

Grâce à cette 2ème courbe 2D, les objets ne seront pas obligé de parcourir le path uniquement du début à la fin, ils pourront faire des allers retours, avec des vitesses et accélération diverses. Si la courbe 2D est plate, l'objet n'avance pas. Si la courbe 2D varie rapidement, l'objet accélère fortement. Si la courbe 2D monte ou descend, l'objet qui suit le path avance ou recule.

Sinon merci pour tes retours !

Guillaume
Enimal
Signaler
Enimal
Je vous avoue qu'en ce qui concerne le path j'ai pas tout compris :)
Sinon pour le reste ça va, j'arrive à suivre, et je constate que vous avancez.

Édito

Grâce à ce mini-devblog en français, vous pourrez suivre l'activité de notre minuscule studio de développement indépendant Swing Swing Submarine.

Nous sommes une petite équipe d'hommes et de chats passionnés qui souhaitent partager de nouvelles expériences interactives avec les joueurs du monde entier, et ceux de Gameblog en font bien évidemment partie !

--------------------------------------------------------

Quelques liens utiles :

> Site officiel <

> Twitter <

> Facebook <

Archives

Favoris