Mise à jour du 17 février 2017
Les amis,
Cette semaine de travail qui s’achève a été vraiment productive, et ce, sur presque tous les plans (personne n’est parfait). Il y a beaucoup de sujets à aborder, quand bien même cette update ne concerne pas les User Stories (que vous retrouverez bien entendu la semaine prochaine). Sans plus attendre, donc…
Premièrement, figurez-vous que nous avons quelques éléments de la Bêta 1 à cocher comme terminés ! Cela faisait quelque temps que ça n’avait pas été le cas, mais mieux vaut tard que jamais, n’est-ce pas ? Les éléments en question :
- Mise en place d’un système de génération automatique de spots de minéraux – La première version de ce système vient d’être testée. Il reste du travail de finition, mais ça fonctionne et le système connaîtra des évolutions pendant la Bêta 1.
- Première passe sur l’inventaire, avec gestion de pénalités d’encombrement/poids – L’inventaire existe depuis un petit moment déjà ; s’il est certain que nous devons y ajouter la gestion du poids, nous avons décidé de dissocier cette fonctionnalité de la partie proprement « gestion d’inventaire », qui est donc achevée. Les fonctionnalités additionnelles, ainsi que les éventuelles améliorations de performance, viendront après. Le système de gestion du poids a des impacts un peu partout et l’implémenter nous aurait trop ralenti à ce stade, mais ça reste un pré-requis pour la Bêta 1.
- Acquisition de terrain, permissions d’accès, changement de propriétaire – Nous avons volontairement retardé le moment où nous allions cocher ça, le temps de mettre à jour l’ancien code pour y brancher le tout nouveau système de compétences. Par ailleurs, Brad et Rob ont participé à l’effort d’amélioration des bâtiments, et il n’y a que peu de bugs résiduels Ce qui est super, c’est qu’au final, il y a plus de possibilités au niveau de la gestion des terrains que ce nous avions prévu initialement pour la Bêta 1. Quelques exemples : une file d’attente de constructions, la notion de de terrain « contesté » lors d’une tentative pour en devenir propriétaire, l’accélération du rythme de construction quand un allié de votre Royaume se trouve sur le terrain avec vous. Attendez-vous à bien plus de fonctionnalités au global, mais à ce jour, nos objectifs pour la Bêta 1 sont remplis.
Comme toujours, nous tâchons d’être honnêtes vis-à-vis de la progression dans les User Stories. Nous préférons attendre un peu avant de cocher quelque chose, faute de quoi, il faut y revenir. C’est ce qui nous est arrivé avec le système de compétences, et soyez sûrs que nous ne souhaitons pas refaire cette erreur.
Vous avez sans doute remarqué que la taille de notre équipe de programmeurs à presque doublé sur l’année 2016. Le gain brut en productivité peut sembler n’être pas tout à fait en accord avec cette évolution, mais il faut garder quelques éléments à l’esprit :
- La Loi de Brooks (« Ajouter des personnes à un projet en retard accroît son retard »), quoi que caricaturale, a un fond de vérité. Dans notre cas, le fait que nous codions notre propre moteur de jeu nous amène parfois à nous lancer dans des réalisations que je qualifierais de non triviales, il faut plus de temps aux nouveaux venus pour atteindre leur plein régime, plus que si nous utilisions Unity ou Unreal. Mais c’est aussi ce qui nous permet de réaliser des prouesses inédites.
- Coder un moteur de jeu complet, client et serveur, n’est pas tâche aisée ; et qui plus est notre équipe est petite. Loin de nous l’idée de nous plaindre, ne vous méprenez pas : nous savions dans quoi nous nous engagions dès le départ. Reste que, pour une équipe de programmeurs dont la taille vient à peine de dépasser la dizaine de membres, sortir un jeu de cette ampleur en réutilisant des briques pré-existantes serait déjà un beau résultat ; mais ajouter à ça la conception d’un moteur de jeu… si vous demandiez à nombre de nos collègues professionnels, c’est vraiment comme s’engager à pleine vitesse sur les chemins de travers.
- Globalement, le rythme de croisière s’installe toutefois, puisque non seulement nous pouvons désormais compter à temps plein sur deux ingénieurs gameplay, mais un certain nombre d’autres programmeurs travaillent également régulièrement ou ponctuellement sur des problématiques gameplay.
Je ne souhaite pas donner l’impression de commencer à improviser comme au temps de WAR sur la mélodie du « la Bêta 1 arrive très bientôt », mais de fait, il devient clair que ce sera pour cette année. Comme nous l’avons déjà expliqué, une fois que le nouveau système d’animation, porté par Andrew, et les améliorations VFX (effets visuels), portées par George, seront en place dans le jeu, testés et validés, il nous sera bien plus aisé d’estimer la date de sortie.
Lors du développement d’un jeu, certaines choses peuvent bouger un peu, voire pas mal, pour le meilleur et pour le pire. Au niveau des changements inattendus, nous avons décidé d’ajouter deux éléments à la « liste étendue » (extended list) de la Bêta 1, des choses que nous considérons comme importantes et indispensables pour pouvoir sortir une Bêta 1. Ces deux points sont en fait quasiment terminés, de sorte que nous pouvons affirmer qu’ils n’ont introduit aucune espèce de retard. En fait, il est assez probable qu’ils aient plutôt accéléré les choses, parce qu’ils nous ont permis d’anticiper des problèmes que nous n’aurions pas manqué d’avoir à régler plus tard.
- Améliorations du système de rendu des effets visuels – Lors de notre push initial pour sortir la Bêta, Andrew avait mis en place en deux-trois jours un système de rendu viable mais assez rudimentaire. Nous savions qu’un jour viendrait le moment de le remplacer par quelque chose de plus robuste. Quand nous avons commencé à atteindre des charges de 2000 joueurs connectés lors de nos tests avec des bots, il est devenu évident qu’il fallait s’atteler à cette tâche sans attendre, de façon à pouvoir gérer ce même nombre de joueurs, mais avec tous les effets visuels, souhaités et à venir, pour la Bêta 1. Par chance, nous avons pu embaucher dans l’intervalle un excellent programmeur VFX en la personne de George. Non content d’avoir amélioré les graphismes et leurs performances en terme de rendu, il a également retravaillé en profondeur l’architecture du système d’effets visuels pour tenir la charge des batailles prévues dans CU. Ce travail touche à sa fin, George étant occupé à traquer quelques bugs résiduels, ainsi que des crashs exotiques liés à des drivers de cartes graphiques !
- Gestion de calculs physiques sur un serveur dédié – De même, lors du premier gros push vers la Bêta 1, nous avions discuté à plusieurs reprises de la gestion des mises à jour / calculs concernant la physique des bâtiments, notamment la pertinence ou non de gérer les calculs de construction et de destruction directement dans la boucle de mise à jour principale du jeu (main game update thread) [ndt : un thread est un processus d’exécution, avec sa propre pile mémoire, etc. Répartir des calculs sur plusieurs threads peut faire gagner en performance, mais complexifie l’architecture d’un programme, notamment si les threads doivent communiquer et/ou travaillent sur des données partagées ; sans parler des considérations réseau en cas de machines distinctes exécutant ces threads]. L’approche mono-thread nous faisait courir le risque d’avoir du lag durant les phases de destruction massive, ou même simplement lorsque beaucoup de joueurs se mettraient à construire en même temps et au même endroit, ce qui reste un de nos objectifs de gameplay. Avec l’embauche de Colin, un très bon programmeur réseau, nous avons pu mener à terme un chantier de découplage d’un grande partie des calculs physiques, qui sont désormais effectués sur un serveur dédié. Ce travail touche également à sa fin, et devrait passer en phase de test très bientôt. Un gain en performance devrait alors se faire sentir pour nos Backers, surtout au moment de l’ouverture de la Bêta 1.
Pas mal, pas mal, hein ? Trois items cochés, deux autres nouveaux mais pratiquement terminés, et un dernier qui traîne dans le coin et qui devrait bientôt être clôturé également. Comme je le disais sur le forum, étape par étape, fonctionnalité après fonctionnalité, nous avançons doucement mais sûrement vers le jeu que nous avons imaginé et décrit à travers nos promesses du Kickstarter.
Du côté du top 10 de la semaine, voici également quelques bonnes progressions à partager.
Top 10 :
- WIP – Tech – Amélioration du système d’animation : Andrew a branché les animations de mort cette semaine, ainsi que les sursauts/reculs qui sont synchronisés avec le timing client/serveur des compétences. Il s’agit là d’une sacré avancée en terme de ressenti et de fluidité. Andrew travaille désormais à distinguer deux type d’animations, distance vs mêlée, et à donner à Ben la possibilité d’assigner l’un ou l’autre de ces deux types aux compétences sans avoir à passer par un programmeur.
- WIP – Tech – Bâtiments : pour faire court, nous avons rapatrié dans le jeu principal une grosse partie des améliorations qui existaient sur le serveur de construction. Pour le moment, nous sommes en pleine phase de tests pour vérifier que tout tourne toujours correctement suite à cette mise à jour. Bien tester est crucial pour avancer en toute confiance et à un bon rythme vers la Bêta 1, que ce soit en terme de performance ou de stabilité ; d’autant qu’après la sortie de la Bêta 1, nous souhaitons ajouter le support des surfaces courbes. Brad et Rob progressent du coup rapidement sur de la résolution de bugs et de l’amélioration de performances. Il est clair que le fait que cette mise à jour massive se passe aussi bien doit beaucoup à leur professionnalisme.
- WIP – Tech – Ciblage manuel : vous vous souvenez du petit essai que nous avions mené à ce sujet avec l’ancien système de compétences ? Matt est en train de mettre à jour cette partie du code pour profiter du tout nouveau système, qui apporte nombre d’améliorations. Notre objectif pour la Bêta 1 n’a pas changé : un système de ciblage fun mais flexible. En clair, nous savons d’ores et déjà que le ciblage, une fois mis à votre disposition pour test, sera amélioré au fur et à mesure et passera par plusieurs versions successives pour maturation.
- WIP – Tech – Interface graphique des Banes et Boons : nous avons désormais une UI [ndt : User Interface] basique mais correcte pour la Bêta 1, un premier mockup en somme. Le tout est en attente d’une relecture du code pour pouvoir être intégré à l’UI du jeu. Lorsque Matt en aura terminé avec le ciblage des compétences, il reviendra sur ce sujet pour donner un coup de main et travailler sur des fonctionnalités additionnelles, dans le but de gérer des Banes et Boons plus complexes. James K. a par ailleurs commencé à créer des icônes. Aussi bien l’UI que ces icônes ne sont pas représentatives du style final de l’UI du jeu ! Tout ça va nécessairement changer, c’est pourquoi nous partons sur quelque chose de vraiment simple pour la Bêta 1.
- WIP – Tech – UI des guildes : JB attaque les derniers composants du système de guildes, avec une UI fonctionnelle pour la Bêta 1. Suivront une bonne phase de debug, et les tests préliminaires la semaine prochaine.
- WIP – Tech – Fast Entity Reader [ndt : l’Entity Reader est le programme chargé de gérer l’accès mémoire au stock d’éléments présents dans l’aire de jeu, qu’ils soient rendus à l’écran ou non ; le Fast Entity Reader est décrit comme une refacto du programme pour répartir le stockage mémoire des entités sur plusieurs serveurs/db, pour paralléliser donc accélérer les accès en lecture] : Colin a ajouté la semaine dernière le support des joueurs, des items en inventaire et des items déposés au sol. Cette semaine était consacrée à une refacto pour supprimer les redondances inutiles, de façon à améliorer la maintenabilité du code, et statistiquement réduire le nombre de bugs potentiels.
- WIP – Tech – Bots : après avoir permis aux bots (qui ne sont jamais que des clients automatisés) d’utiliser librement des compétences la semaine dernière, et avoir monté le nombre de bots à 350 par serveurs, Marc a poursuivi ses efforts et taquine désormais les 500 bots par serveur ! Pour rappel, nous ne gérions que 120 bots l’année dernière. En quoi est-ce que ça vous concerne ? Et bien, le fait d’avoir 500 bots par serveur va nous permettre de réduire nos coûts de fonctionnement lors des Big Bot Battles et des tests, et plus important encore, cela va nous permettre de réaliser des essais de stabilité de long terme sans dépenser une fortune (on adore AWS, mais ce n’est pas donné). Pour être clairs, ce nombre de 500 bots n’a rien à voir avec le nombre total de joueurs sur un serveur, il s’agit uniquement du nombre de bots qu’un serveur peut gérer de façon automatisée.
- Art – Textures : Tyler a offert un nouveau jouet à Cross : Megascans Studio. Avec ça, il peut créer de super textures de terrains, qui commencent déjà à passer en jeu.
- Art – Animation : Sandra en a terminé avec ses animations de combat offensives et défensives : moulinet, transitions de postures, morts, reculs et repos. Le tout est prêt à être intégré en jeu. Scott a amélioré un certain nombre d’animation de repos, pour coller aux améliorations apportées à la géométrie des mains dans nos modélisations. Ainsi, les mains des Arthuriens ont été affinées ; les autres Royaumes y passeront, mais seulement une fois que les items ci-dessous auront été traités :
- WIP – Art – Personnages : une semaine mouvementée, du fait de toutes les modifications à apporter à notre système de build pour y intégrer le tout nouveau moteur d’animation. De fait, la mise à jour de tous les personnages, qui doivent désormais pouvoir porter une armure multi-couches, a été retardée de quelques jours. Scott, Ben et Tyler travaillent sur ce sujet. Le but est de pouvoir exploiter le code de Christina lors du prochain test “swap-a-thon” dont nous vous parlions la semaine dernière. Terminer ce travail nous permettra alors de cocher la User Story “Première passe sur les armures, boucliers et armes”.
- Art – Armes : à la base, nous ne pensions pas intégrer à la Bêta 1 des armes d’hast uniques pour chaque Royaume, mais finalement, Michelle a pu fournir des esquisses pour les TDD, qui devraient rapidement être modélisées et passer en jeu. Les versions Viking, qui sont déjà terminées, seront ajoutées au même moment.
- Art – Place de pouvoir : l’intégration du nouveau moteur d’animation dans le système de build a eu des conséquences ici aussi. Nous avons profité du temps mort pour améliorer les six statues situées en périphérie de la zone : elles rendent mieux, avec des textures spécifiques. Cross a commencé à concevoir les effets visuels et les textures des cristaux, dont la modélisation s’est achevée cette semaine également.
Note à nos amis Backers Allemands ou germanophones : la mise à jour du site [ndt : en v3] est terminée, mais une relecture finale s’impose. Nous avons dû temporiser un peu, la Bêta 1 était vraiment la priorité cette semaine. Désolé pour ce retard, Tyler va s’efforcer de terminer tout ça le semaine prochaine.
Et voilà, une fois de plus, un bon Top 10. Comme vous pouvez le constater, de plus en plus d’éléments de gameplay intègrent nos priorités de développement et commencent à arriver en jeu. Et ce n’est que le début.
Passons maintenant à l’habituelle revue de détail artistique.
Tout d’abord, un aperçu de l’animation d’une arme d’hast, au travers d’une sélection de poses-clés. Ce type d’arme, qui se différencie fortement des lances et autres épées, devraient apporter un peu de fraîcheur.
https://gallery.mailchimp.com/2b70fd…96e542cbed.jpg
Ensuite, voici une sélection d’icônes temporaires pour les Banes et Boons. Si vous cherchez à agrandir l’image… et bien ce n’est pas possible. Après tout, une icône, c’est censé être petit
https://gallery.mailchimp.com/2b70fd…78fd25e9a9.png
Voici maintenant des statues de corbeaux et lion. Elles faisaient partie de la mise à jour des entités graphiques de la Place de Pouvoir. Ce travail de finition a été mené rapidement, ce qui n’est pas pour nous déplaire : l’ensemble des améliorations à venir sur les entités graphiques, que ce soit celles de la Place de Pouvoir ou de tous les autres éléments du jeu, se fera dans le même esprit. Les captures d’écran viennent directement du l’éditeur d’entité. Tout d’abord, les corbeaux :
https://gallery.mailchimp.com/2b70fd…272280dd6d.jpg
Vues sous l’angle opposé :
https://gallery.mailchimp.com/2b70fd…e1f94716eb.jpg
Et que peut lancer un corbeau averti à un flatteur de lion ? « Pas cette fois ! »
https://gallery.mailchimp.com/2b70fd…7066092b65.jpg
À propos des textures, d’où vient ce nouvel aspect « peau de pierre », façon troll ? D’une toute nouvelle gestion par couches ! Rappelez-vous le Top 10, Mike travaille avec un système de composition de surfaces physiques (dans l’esprit du système PBR) qui lui permet désormais de créer des terrains plus flexibles en terme de rendu, ce qui permettra d’ailleurs de donner plus facilement une « patte » CU. L’image ci-dessous illustre les différentes couches que nous utilisons pour créer textures et terrains. La couche d’albédo (“albedo”), c’est-à-dire la couche colorisée mais dépourvue d’information d’éclairage, est la base du système. La couche normale (“normal”) définie le comportement de la lumière sur l’albédo, ce qui fait apparaître des détails en relief. Rien d’exceptionnel jusque là. Les couches de dureté (“roughness”) et de reflet (“specmask”) font partie du tout nouveau système PBR (Physically Based Rendering, ie. rendu basé sur la physique). Le concept n’est pas nouveau en soi, mais il n’est pas si couramment mis en œuvre dans l’industrie du jeu vidéo. La couche de dureté définie la, hum, rudesse du matériau. Pour faire simple, il s’agit de déterminer la façon dont la lumière s’étale (ou pas) sur la surface [ndt : penser « brillant » vs « mat »], et également les transitions entre zones éclairées et zones ombragées. Par exemple, la terre doit avoir un rendu granuleux, homogène avec peu de reflet, tandis qu’un cristal doit produire des reflets très localisés et très intenses. Le “specmask” détermine l’intensité des reflets. Ces deux couches sont celles qui nous permettent le plus de différencier les textures les unes des autres. La couche finale en noir et blanc est relativement récente. Il s’agit d’une couche d’élévation que nous utilisons comme « réhausseur » [ndt : couche alpha sur l’axe z], le blanc ayant pour effet de faire « monter les détails par rapport au noir. Cette couche nous permet d’affiner l’intégration des textures avec les modélisations. À terme, elle nous permettra aussi peut-être de faire des choses un peu plus poussées coté shader. Dès l’instant où ce nouveau système en couches aura intégré le build, nous vous montrerons des comparatifs avant/après.
https://gallery.mailchimp.com/2b70fd…80f26c62f4.jpg
Rien de plus normal que de vous montrer maintenant des concept arts d’armes d’hast, vu que nous en parlions pour les animations. Michelle nous a confié la délicate tâche de sélectionner nos versions préférées parmi toutes ses idées, illustrées ci-dessous. En général, nous prenons celles qui nous semblent les plus compliquées à modéliser/texturer, de façon à mettre notre processus à l’épreuve. Honnêtement, le-dit processus étant maintenant bien au point, nous allons probablement simplement choisir les plus cools.
https://gallery.mailchimp.com/2b70fd…98b62100ae.jpg
Enfin, pour contrer la nostalgie post-Saint Valentin, voici une hache en essence de bois “Bloodwood”, que Michelle a conçue lors de son stream spécial Saint Valentin (https://www.twitch.tv/videos/122110008). Est-ce que vous la verrez un jour en jeu ? Seul le temps le dira
https://gallery.mailchimp.com/2b70fd…3bd838638f.jpg
Il n’y aura pas de test Alpha la semaine prochaine : nous avons passé cette semaine à travailler à fond sur tout ce dont je viens de parler, et bien que plein de choses aient évolué, le build n’est clairement pas assez stable pour organiser une session. Mais ça devrait s’arranger. Je ne promets rien, mais j’espère que vendredi prochain, nous serons en mesure d’ouvrir les serveurs pour une bonne grosse séance de test.
Au fait, est-ce que vous avez eu l’occasion de jeter un œil au résumé de la semaine, par Tyler et Andrew ? Si ce n’est pas le cas, je vous encourage à aller voir ça (https://www.youtube.com/watch?v=kLpddv0e4W8) : bonne ambiance et en cadeau, un court mais instructif GIF d’Andrew sur le système d’animation. Un pied… après l’autre… On avance…
Passez une bonne semaine, les amis !
-Mark