Publication du code source de Descent 3
(github.com/kevinbentley)- Le moteur open source de Descent 3 a été publié sous licence GPL-3.0, et son utilisation nécessite de fournir séparément les fichiers du jeu
- Cette version publiée inclut le patch « 1.5 » écrit autrefois par Kevin Bentley et Jeff Slutter
- Ce patch a été stabilisé par la communauté Descent
- Pour les détails d’installation, il est indiqué de suivre
USAGE.md, et pour la procédure de compilation,BUILD.md - Les problèmes de compilation ou d’exécution doivent être signalés sur le tracker GitHub, et les correctifs de contribution soumis via GitHub
Le moteur publié et la licence
- Le moteur open source de Descent 3 a été publié
- La licence est GPL-3.0
- Ce moteur inclut le patch « 1.5 » écrit il y a plusieurs années par Kevin Bentley et Jeff Slutter
- Ce patch a été rendu stable par la communauté Descent
Utilisation et compilation
- Pour utiliser le moteur, l’utilisateur doit fournir ses propres fichiers de jeu
- Les détails relatifs à l’installation se trouvent dans
USAGE.md - Pour compiler le jeu, il est indiqué de suivre les instructions de build dans
BUILD.md
Signalement des problèmes et contributions
- Les problèmes rencontrés lors de la compilation ou de l’exécution doivent être signalés sur le tracker GitHub
- Tout le monde peut contribuer
- La communauté de développement se trouve sur Discord, dans le Descent Developer Network
- Les patchs doivent être soumis sur GitHub
1 commentaires
Avis de Hacker News
J’adorais vraiment ce jeu. Je n’ai jamais compris pourquoi ce concept n’a pas réussi à devenir un genre à part entière.
Il n’y avait pas de véritable « haut », on pouvait se déplacer librement à 360 degrés, et les ennemis étaient assez intelligents pour vous sniper. J’y ai passé un temps fou à l’époque, et j’ai vraiment envie d’y rejouer maintenant.
https://store.steampowered.com/app/753640/Outer_Wilds/
En revanche, l’héritier direct de ce sous-genre, c’est Overload.
https://store.steampowered.com/app/448850/Overload/
https://youtu.be/T2-IHgNYaKA
https://old.reddit.com/r/EliteDangerous/comments/16xi20a/dua...
https://youtu.be/9U0KNVQmlcM
Ce jeu me manque.
Quant à l’idée qu’on ne comprend pas pourquoi ce concept n’est jamais devenu un genre, je pense que c’est parce que les simulateurs de vol spatial ont malheureusement toujours été un genre de niche. Encore plus de niche que les simulateurs de vol.
Une fonctionnalité intéressante permettait de couper l’alimentation de la combinaison pour passer en mode furtif ; tous les éléments du HUD s’éteignaient alors, ainsi que la plupart des sons de gameplay, comme les explosions ou les balles qui vous frôlaient.
Dans l’univers du jeu, tous ces sons étaient générés par l’ordinateur de la combinaison, l’espace étant silencieux.
Aujourd’hui, il existe une version moderne avec Elite Dangerous, mais sa mécanique de vol est trop proche de celle d’un avion pour qu’on puisse vraiment la comparer à Descent.
J’ai joué à Descent 1 sur PS1, et je me souviens que la boîte disait que les ennemis s’adaptaient à votre style de jeu. En vieillissant et en étudiant le machine learning et quelques techniques d’IA, je me suis toujours demandé ce que cela voulait dire exactement.
Ma PS1 ne faisait sûrement pas tourner de descente de gradient, alors quelle astuce se cachait derrière cette affirmation selon laquelle les ennemis apprenaient du joueur et s’adaptaient ?
Ma femme et moi nous sommes rencontrés sur les forums Descent, et nos trois fils portent des noms inspirés d’amis de Descent : KoolBear, Jediluke et Mark392. Nous sommes allés aux mariages d’amis de Descent, et malheureusement aussi à des enterrements ; repose en paix, JinX.
Je considérais D3 comme le plus faible de la série Descent, mais cette nouvelle me fait vraiment plaisir. Merci à Kevin.
Cela fait largement plus de 15 ans que j’ai cessé d’être actif dans la communauté Descent. Quand l’e-mail PlanetDescent a disparu, j’ai aussi perdu l’accès à mon compte ICQ, et je n’utilise même plus le pseudo DCrazy en ligne. Il y a aussi des raisons pour lesquelles je veux prendre mes distances avec l’ado du début de l’adolescence que j’étais alors.
Malgré tout, Descent, et surtout D3, a eu une grande influence sur mon entrée dans l’ingénierie logicielle, et je serai toujours reconnaissant pour ces souvenirs.
À 12 ans, en lisant la FAQ de Descent, j’ai découvert IRC, et à 14,4 kbit/s j’essayais de configurer IHHD pour jouer. Je créais aussi des niveaux avec DEVIL.
Aujourd’hui, je suis ingénieur et développeur de jeux. Merci d’avoir donné Descent au monde. Ça a eu une influence énorme sur moi personnellement.
Obtenir le jeu était souvent une aventure en soi.
Aujourd’hui, les enfants ont une infinité de jeux sur leur téléphone. Ils ont rarement l’occasion d’entrer en contact avec le système sous-jacent, et aucun effort n’est nécessaire. Ils téléchargent, puis passent au prochain jeu correct.
Je pense que cette génération passe à côté de quelque chose.
Le système de contrôle de Descent a été ce qui a définitivement ancré chez moi l’inversion de l’axe Y dans les jeux à la première personne.
Mon cerveau s’est parfaitement accordé à cette façon de penser en 6 degrés de liberté, et depuis, tous les FPS ont dû s’y plier, même quand ils ne reposaient pas sur le vol.
On était les seuls à faire ça ?
Descent, avec Flight Simulator 95, a aussi contribué à dérégler mon cerveau. Je ne peux pas jouer sans inversion de l’axe Y.
J’aimerais que l’inversion de l’axe Y soit la valeur par défaut dans tous les jeux. Je ne sais pas quand j’en ai pris l’habitude, mais c’était probablement en jouant à X-Wing ou à Quake.
Ça vient sans doute des commandes d’avion, où tirer fait monter le nez. C’est pareil avec les sticks, joysticks et yokes. Counter-Strike a tout gâché :)
Au bout du compte, j’ai l’impression qu’aucun des deux modes de contrôle n’est vraiment intuitif, et qu’il faudra attendre que quelqu’un fasse fonctionner correctement un Zelda moderne à la souris.
Quelques amis jouaient à Descent de façon compétitive, et j’ai été surpris en découvrant ce qu’on appelait le trichording. Pour maximiser sa vitesse, il fallait appuyer sur plusieurs touches en même temps afin de se déplacer sur trois axes à la fois. Par exemple, la combinaison avant/droite/haut.
Les meilleurs traversaient les cartes en diagonale à toute vitesse.
J’ai toujours considéré ça comme un cas où un bug devient une fonctionnalité, un peu comme le ski dans Tribes. Je viens de parcourir le dépôt à la recherche d’indices, mais je n’ai finalement trouvé aucun commentaire pertinent autour des lignes de code où cela se produit.
https://github.com/kevinbentley/Descent3/blob/142052a67d4318...
Dans Descent, avec l’ajout de l’axe haut/bas, on atteignait environ 1,7 fois la vitesse par rapport à un simple déplacement vers l’avant.
Descent 2 et 3 avaient aussi un afterburner qui augmentait la vitesse vers l’avant ; son énergie était limitée, mais se rechargeait assez vite, et l’effet de boost était maximal à 100 % d’énergie, puis devenait moins efficace à mesure que l’énergie restante descendait vers 0 %.
Les joueurs ont donc appris à l’activer et le désactiver brièvement plusieurs fois par seconde, pour le laisser se recharger entre des utilisations très courtes et rester toujours autour de 95 % au lieu de chuter à des valeurs basses.
Pour aller vraiment vite, il fallait se déplacer en diagonale en 3D tout en faisant pulser l’afterburner plusieurs fois par seconde.
Après sa découverte, certains designers l’ont vu négativement, d’autres positivement, et même des années après avoir quitté Descent, quand l’équipe s’est reformée pour créer Overload, c’était encore un sujet de débat.
Ma femme et moi avons modifié D1 avec un mod pour tester plusieurs alternatives, puis nous avons fait une démo devant Mike/Matt/Luke/Dan et les personnes présentes au studio ce jour-là. Au final, nous sommes arrivés à la conclusion que « l’indépendance vectorielle donne simplement de bonnes sensations », et Overload a donc intégré une option permettant de basculer entre un mode de vol normalisé, avec un vol unidimensionnel plus rapide, et un mode trichording.
Une implémentation naïve qui additionne simplement les vecteurs x et y produit un vecteur résultant dont la longueur correspond à la diagonale, soit 1,41 fois plus rapide. En 3D, l’écart est encore plus grand.
C’est un bug, et en même temps une fonctionnalité, très courant dans beaucoup d’anciens jeux.
Quake tenait compte de ce bug pendant la marche, mais pas pendant les sauts, ce qui a donné naissance à une technique plus complexe pour gagner de la vitesse : le strafe jumping.
var playerX_input = Input.GetHorizontal(); // float in range -1 to 1
var playerY_input = Input.GetVertical(); // float in range -1 to 1
var playerVelocity = new Vector2(playerX_input, playerY_input);
Le joueur peut alors se déplacer de 1 unité/frame en X et de 1 unité/frame en Y, et s’il se déplace en diagonale, la longueur du vecteur de vitesse est celle du vecteur (1,1), soit sqrt(2), environ 1,41.
Pour corriger cela, on peut faire à peu près ceci :
if(playerVelocity.length > 1)
{
playerVelocity = playerVelocity.normalized();
}
Cela les rendait vraiment difficiles à toucher quand on les poursuivait.
J’ai affronté quelques joueurs de ladder, et j’ai été stupéfait par l’écart de niveau : c’était une tout autre dimension.
L’une des raisons pour lesquelles ces jeux originaux me fascinaient autant, c’est qu’ils n’avaient pratiquement pas de plafond de compétence.
Voir de tels matchs sur des plateformes de streaming aurait été vraiment incroyable.
Lien de référence pour la partie « quelqu’un a récemment demandé si le code source de Descent 3 serait publié » : https://news.ycombinator.com/item?id=40009248
Vraiment génial, merci.
À propos de « certaines bibliothèques audio et vidéo propriétaires d’Interplay ont été supprimées. Il s’agit des formats ACM et MVE. Si quelqu’un veut aider à créer un convertisseur pour faire fonctionner les anciennes cinématiques, j’ai ce code. Il faudra un peu de travail pour stubber ce code afin qu’il compile », pour info, FFMPEG semble prendre en charge ces formats.
Je me demande ce qu’il a fallu pour obtenir l’autorisation en coulisses. Tu pourrais expliquer un peu le processus de décision ? C’est une bonne chose, mais de nos jours c’est beaucoup trop rare
À l’époque, il était déjà question de publier le code, mais je voulais d’abord sortir les patchs et trouver un remplaçant au décodeur MVE
Il y a quelques jours, après avoir vu un commentaire dans un autre post ici, j’ai envoyé un mail au propriétaire pour lui demander si je pouvais retirer le code qui ne pouvait pas être publié et simplement aller de l’avant, et il m’a répondu : « vas-y »
J’ai trouvé cette petite pépite sur la page Wikipedia[0]
« Une étude publiée en 2002 a utilisé Descent 3 pour étudier l’activité de vol de sphinx. En utilisant le module d’édition du jeu, les chercheurs ont créé un environnement virtuel composé d’un plan plat avec des piliers rectangulaires, dans lequel l’animal a réussi à naviguer »
[0] https://en.wikipedia.org/wiki/Descent_3#Other_uses
« Cet article décrit la conception d’un nouveau simulateur de vol d’insecte qui combine des environnements visuels réalistes et interactifs avec des stimuli mécanosensoriels et olfactifs, et l’utilise avec des techniques modernes d’enregistrement neurophysiologique multicanal. Ce système exploite les technologies informatiques actuellement disponibles et les techniques de fabrication MEMS, et sert à étudier en parallèle l’activité de plusieurs neurones du système nerveux central pendant un vol réaliste en boucle fermée chez le sphinx Manduca sexta »
https://www.sciencedirect.com/science/article/abs/pii/S01650...
J’ai entendu dire que beaucoup de gens aiment Descent, et visuellement ça avait l’air excellent. On aurait dit une sorte de mélange entre X-Wing et Quake
Mais je n’arrivais pas à y jouer plus de quelques minutes, et c’est peut-être le premier jeu que j’ai abandonné aussi vite dans ma longue carrière de joueur. Il y a quelque chose qui met mal à l’aise, comme si on manipulait des aimants avec des gants de boxe. Même en regardant seulement des vidéos de gameplay, je ressens la même chose