2 points par GN⁺ 2025-02-19 | 2 commentaires | Partager sur WhatsApp
  • Le commit Add Team Fortress 2 SDK de ValveSoftware/source-sdk-2013 est un changement majeur qui ajoute le Team Fortress 2 SDK au dépôt Source SDK 2013, avec une large inclusion de fichiers de jeu, de client et de shaders
  • L’arborescence des fichiers fait apparaître des configurations et fichiers de projet propres à TF, comme game/mod_tf, src/game/client/tf, client_tf.vpc et game_shader_generic_*_tf.vpc
  • Le périmètre du code client est largement découpé par systèmes de jeu : HUD, armes, projectiles, PNJ bots, Halloween, Mann vs. Machine, PASS Time, replays, interface econ et boutique
  • Des binaires Steam API, des configurations de tâches VS Code, des scripts de build, des configurations VPC, Xcode et make, des DLL utilitaires DirectX SDK et des outils de build de shaders sont également inclus
  • Les éléments vérifiables proviennent surtout de la liste de fichiers et de certains diffs sur la page du gros commit GitHub ; il est donc difficile, dans la plupart des cas, de confirmer les changements d’implémentation réels, ou si chaque fichier a été ajouté ou modifié

Périmètre inclus dans le commit du TF2 SDK

  • La cible est le commit Add Team Fortress 2 SDK du dépôt public ValveSoftware/source-sdk-2013
    • Le titre de la page GitHub est Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub
    • Les métriques affichées du dépôt sont 3k forks et 9,8k stars
  • La racine et la partie game incluent les fichiers de base et la configuration de mod nécessaires à la distribution du SDK
    • Au niveau racine, on voit les fichiers .gitattributes, .gitignore, CONTRIBUTING, LICENSE, README.md et README
    • game/bin inclut des binaires Steam API comme linux64/libsteam_api.so et x64/steam_api64.dll
    • game/mod_tf contient des ressources de configuration et d’UI comme gameinfo.txt, steam.inf, le logo TF2, resource/mod_tf_english.txt et MatchMakingDashboard.res
  • Sous src/game/client/tf, un grand nombre de fichiers semblant correspondre au code client de Team Fortress 2 sont listés
    • Joueurs et équipes : c_tf_player.cpp/.h, c_tf_team.cpp/.h, c_tf_playerresource.cpp/.h
    • Armes et projectiles : c_tf_projectile_arrow, c_tf_projectile_rocket, c_tf_stickybolt, c_tf_weapon_builder
    • Bâtiments de l’Engineer : c_obj_dispenser, c_obj_sentrygun, c_obj_teleporter, c_obj_sapper
    • Modes et événements : des fichiers liés à PASS Time, Halloween, Mann vs. Machine et au PvE sont inclus
  • L’UI et les éléments de jeu-service apparaissent aussi largement dans la liste des fichiers
    • Le répertoire econ contient des fichiers d’UI pour l’inventaire, l’équipement, les échanges, le marché et les objets
    • econ/store contient des fichiers liés aux écrans de boutique
    • Les fichiers HUD sont répartis entre compte, succès, notifications, munitions, chat, réticule, indicateurs de dégâts, santé des boss, état Mann vs. Machine, etc.

Shaders et outils de build

  • La liste des changements liés aux shaders est très volumineuse
    • Plusieurs formats sont inclus : .fxc, .psh, .vsh, .inc, .cpp, .h, .bat, .vpc, .pl, etc.
    • Des variantes par profil de shader reviennent régulièrement, comme ps11, ps14, ps20, ps20b, ps30, vs11, vs20 et vs30
    • Des fichiers liés à l’eau, au post-traitement, au bloom, au motion blur, au cloak, aux yeux, à la flashlight, au lightmapped generic, au HDR et tone mapping, ainsi qu’aux particles, sont inclus
  • L’environnement de développement et de build est également fourni
    • src/.vscode/tasks.json, src/buildallprojects
    • createallprojects, creategameprojects
    • Des configurations Xcode, makefile POSIX et définitions make Source SDK dans src/devtools
    • Dans src/devtools/bin, ShaderCompile2.exe, vpc.exe, vpc_linux, vpc_osx, ainsi que des scripts Perl, Python et PowerShell

Limites vérifiables et notes de diff

  • L’entrée actuelle résume l’arborescence des fichiers et certaines informations de diff de la page du commit ; dans la plupart des cas, il s’agit d’une liste de fichiers modifiés plutôt que du contenu réel du code
  • Comme il s’agit d’une page GitHub pour un gros commit, certains contenus sont masqués par défaut, avec une indication suggérant d’utiliser la zone de recherche pour trouver les contenus cachés
  • La page affiche aussi le message d’erreur « There was an error while loading. Please reload this page. »
  • Le diff de .gitattributes indique 5 ajouts et 11 suppressions
    • README text est supprimé et README.md text est ajouté
    • *.dll binary, buildallprojects text et vpc binary sont ajoutés
    • mod_*_english.txt binary est supprimé et *_english.txt binary est ajouté
    • Certains éléments comme creategameprojects, createallprojects, vpc_linux et vpc_osx sont indiqués comme supprimés
  • Les commentaires du commit sont affichés à 0

Périmètre non reflété

  • Selon les notes d’entrée, certains fragments du texte source ont été omis en raison de limites de longueur et de coût
  • Ce résumé ne reflète donc que la liste des fichiers du commit et certains diffs dans le périmètre des notes source fournies, et ne couvre pas tous les fichiers ni toutes les modifications du commit complet

2 commentaires

 
honglu 2025-02-19

Valve est vraiment classe, quand même.

 
GN⁺ 2025-02-19
Avis de Hacker News
  • C’est une bonne nouvelle pour le modding, mais il ne faut pas confondre : il s’agit toujours de code spécifique à TF2 posé sur le moteur Source, qui reste fermé
    Par exemple, cela ne permettra pas de porter TF2 sur une nouvelle plateforme ; il faudrait au minimum réimplémenter Source, ou le faire correspondre de force à l’une des bases de code Source qui ont fuité, avec les retombées juridiques que cela implique

    • J’ai du mal à comprendre la position de Valve, qui garde Source fermé. Ce n’est pas un moteur particulièrement attrayant pour travailler aujourd’hui, et il existe déjà au moins trois grandes alternatives open source bien plus puissantes et faciles à prendre en main, comme O3DE, Godot ou Wicked
      Il existe une communauté active qui connaît bien les défauts du workflow Source ; une publication sous GPL, comme Carmack l’a fait pour id tech, pourrait provoquer une explosion de projets créatifs indés. Ils ne seraient plus liés à des contrats opaques
    • Il y a eu des fuites, plus de dix ans se sont écoulés depuis le dernier gros jeu utilisant Source 1, et dans Source 2 la majeure partie du code de rendu a sans doute été réécrite pour suivre les nouvelles avancées des graphismes de jeux ; je me demande donc s’il y a encore une raison de le garder fermé
      Le publieront-ils un jour ? Il peut y avoir des problèmes de licences qui les empêchent de le rendre facilement open source parce qu’ils n’en détiennent pas tous les droits, ou bien il reste peut-être encore beaucoup de technologies secrètes qu’ils veulent conserver
    • J’espérais que cela permettrait à TF2 de revenir sur Mac, dommage. Depuis qu’Apple a supprimé la prise en charge du 32 bits, on n’a plus pu organiser de vraie LAN party au bureau
    • Je ne comprends toujours pas pourquoi Source reste fermé alors que Valve est passé à Source 2 il y a plus de dix ans. Il peut y avoir un certain chevauchement dans les briques de base, mais ils semblent considérer que publier le code source du jeu ne pose pas problème
    • Bonne nouvelle ! Quelqu’un a déjà réussi à faire pas mal de rétro-ingénierie du moteur Source pour TF2
      https://www.youtube.com/watch?v=09CvpQrnTEY
  • Du point de vue de quelqu’un qui faisait des mods TF2 côté serveur, c’est absolument fantastique. J’ai passé un nombre incalculable d’heures à analyser les binaires avec IDA ; maintenant, il suffit d’ouvrir GitHub
    La communauté pourra créer de nouvelles fonctionnalités et corriger des bugs beaucoup plus vite. En réalité, cela aurait dû arriver depuis longtemps : le code source de TF2 a déjà fuité deux fois, et un groupe avait même créé un clone du jeu avec une version plus ancienne du moteur. Le soutien de la communauté pour ce jeu reste énorme

  • J’espère que c’est une bonne nouvelle pour TF2 Classic
    D’après une annonce sur le Discord de TF2C, il se peut que TF2 Classic ne puisse pas être lancé pendant un certain temps en raison de la grosse mise à jour du SDK et de la publication du code de Team Fortress 2. Ils disent préparer déjà le portage et une éventuelle sortie sur Steam, et que cela peut désormais se faire légalement. Pour continuer à jouer pour l’instant, il faut basculer Source SDK Base 2013 Multiplayer sur la branche bêta previous2021, où se trouvent encore les anciens fichiers du SDK

    • Comme il est explicitement indiqué que les œuvres dérivées du jeu original sont acceptées et qu’elles peuvent être publiées comme de nouveaux jeux sur Steam, la voie est ouverte pour TF2 Classic
    • C’est quoi TF2 Classic ?
  • On dirait que le jeu a été renommé Frog Fortress 2
    https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...

    • Je pense que c’est pour le distinguer du TF2 officiel si on compile et installe le code sans changer le nom
    • Ça ressemble à une blague interne. Il suffit de regarder qui est le committer
      Les grenouilles et la programmation graphique sont de bonnes amies
  • Billet officiel du blog : https://www.teamfortress.com/post.php?id=238809
    Il inclut aussi des liens vers les mises à jour récentes d’autres jeux utilisant le moteur Source

  • Wow… wow, wow. Je ne m’attendais pas à voir ça sur HN. Je l’espérais depuis longtemps, mais si j’avais été Valve, j’aurais sorti une mise à jour de contenu commémorative « finale » bien plus tôt, porté le jeu sur Vulkan, puis publié la base de code en open source tout en gardant des choses comme les serveurs d’objets liées aux serveurs de Valve
    Je ne sais pas si c’est le début de la fin de TF2, ou la fin du commencement. Il y avait déjà eu des fuites, mais cette fois c’est énorme

    • Pour un début de la fin, le jeu était déjà en fin de vie depuis des années. Maintenant, ils le confient à la communauté, et c’est ce qu’il fallait faire
      L’équipe TF2 ne compte probablement plus qu’une dizaine de personnes tout au plus, et le jeu a presque 18 ans ; il est temps de confier le développement continu à la communauté extérieure
    • Dans les années 90, id a gagné de l’argent pendant quelques années avec Doom puis en a publié le code source, et a fait la même chose avec Quake. L’une des raisons pour lesquelles une société comme Valve existe aujourd’hui, c’est aussi que ses premiers jeux utilisaient des moteurs modifiés de Doom et Quake
      Valve s’inscrit donc dans une tradition qui dure depuis plus de 25 ans. Des gens créent et jouent encore de nouvelles cartes Doom. Si l’histoire sert de référence, il se pourrait qu’on joue encore à TF2 sous une forme ou une autre dans les années 2050 et au-delà
    • « Woah... woah WOAH », je vois ce qu’il a voulu faire
    • Je me demande pourquoi il ne s’attendait pas à voir ça sur HN
  • Le fait qu’ils aient fait ça avant même de recompiler pour les Mac 64 bits en dit long. Valve ne voit manifestement pas Apple comme un partenaire avec qui il est facile de faire des affaires
    Ça se comprend quand on voit Apple essayer d’enfermer les développeurs de jeux dans l’App Store

    • Développer des jeux pour Mac semble être un vrai défi. C’est la combinaison d’une architecture CPU relativement non standard, d’une API graphique propriétaire, d’un petit nombre d’appareils, d’écrans intégrés à la résolution excessivement élevée, et de GPU au mieux « suffisants »
      Le fait qu’Apple ait fièrement présenté des graphismes de Tomb Raider 2 de milieu de gamme n’a pas de quoi donner beaucoup d’espoir aux développeurs de jeux qui ne bénéficient pas du soutien des campagnes marketing d’Apple. Et en plus, c’est une plateforme plus petite que Linux en nombre de joueurs
      À moins d’être sûr de pouvoir constituer une base de joueurs correcte, optimiser pour Mac n’a pas vraiment de sens commercial pour un studio de jeux. Les utilisateurs qui peuvent s’acheter un Mac peuvent aussi probablement s’acheter une console
      On peut toujours forcer les jeux à tourner avec les wrappers et contournements utilisés pour jouer sous Linux, mais sur Mac les outils sont moins matures, ce qui impose d’optimiser directement. Le jeu sous Linux a déjà beaucoup de problèmes de compatibilité avec les DRM et les systèmes anti-triche ; avec des outils moins matures, ce ne peut être que pire
      Apple ne semble pas non plus très intéressée par la rétrocompatibilité. Ils ont supprimé le 32 bits sans raison évidente autre que « nous n’avons pas envie de maintenir la compatibilité », et on ne sait pas combien de temps les API de remplacement actuelles seront maintenues. Linux a aussi des problèmes similaires, si bien que la façon par défaut de jouer sous Linux consiste plutôt à lancer les jeux dans un environnement Windows émulé
      Les studios de jeux recompileront probablement leurs jeux pour Snapdragon avant de le faire pour Mac. D’ici à ce qu’on arrive à faire tourner des bibliothèques x86 32 bits sur ARM sans émulation, Apple aura encore changé plusieurs fois ses API et ses exigences, donc il n’y aura pas vraiment de raison de s’y mettre
    • D’après des interviews dans l’industrie du jeu, Apple a historiquement été assez hostile à la collaboration avec les studios de jeux, et semble s’être un peu adoucie depuis l’App Store de l’iPhone
      On se moque du « devs devs devs » de Ballmer, mais il avait en grande partie raison. Microsoft a dépensé énormément d’argent pour attirer les développeurs, et a ainsi obtenu une position dominante dans le jeu PC
    • Selon l’article original, l’annonce a été faite sur le site officiel de TF2, et https://www.teamfortress.com/post.php?id=238809 indique que de nombreuses améliorations seront ajoutées aux anciens jeux multijoueurs du moteur Source comme TF2, DoD:S, HL2:DM, CS:S et HLDM:S, notamment la prise en charge des binaires 64 bits, un HUD/une UI extensibles, des corrections de prédiction, etc.
      Cela semble donc arriver, au moins au sens où Apple Silicon prend mieux en charge le x86-64 via Rosetta 2
    • Les utilisateurs Mac représentent 1,4 %, soit 25 % de moins que Linux
      C’est plus que ce que j’aurais pensé, mais sans jeux compatibles, il n’y a presque aucune raison d’installer Steam. Apple n’a commencé à devenir plus accueillante envers le jeu que récemment, donc il n’est pas surprenant qu’ils essaient de porter un jeu vieux de 20 ans
    • Il y avait une vidéo expliquant pourquoi les jeux Valve n’avaient pas été portés sur Macintosh, mais je n’arrive pas à la retrouver. L’idée principale était qu’Apple ne voulait pas que ses appareils soient utilisés pour jouer, et qu’après avoir fait capoter le travail de portage, elle avait refusé la publication du jeu
      Une déclaration de Gabe en 2007 s’en rapproche. Il disait que lorsqu’ils rencontraient Apple, leurs interlocuteurs disaient que « les jeux sont vraiment importants, il faut faire quelque chose », puis Valve répondait « alors si vous faites ces trois choses, la situation s’améliorera », Apple disait d’accord, puis disparaissait. Ensuite, quand quelqu’un changeait chez Apple, le même cycle recommençait
  • Il y a aussi de petits fichiers HL3 dans le diff : https://github.com/ValveSoftware/source-sdk-2013/commit/0759...

  • Valve continue de gagner
    Je redoute le jour où Gaben mourra ou se retirera. J’espère que Valve trouvera un excellent successeur, mais il n’est pas rare qu’une entreprise perde le nord après la disparition de sa génération fondatrice

    • C’est vraiment une excellente chose, comme beaucoup de choses que fait Valve, mais Valve tire des revenus importants des jeux d’argent et des jeux d’argent pratiqués par des mineurs, donc il est difficile de la considérer comme une entreprise totalement admirable
    • Pour moi, Valve s’est égarée depuis longtemps en tant que studio de développement de jeux. Qu’ont-ils sorti récemment ? CS 2 en 2023 ? Cette propriété intellectuelle vient elle aussi d’un mod acheté il y a 25 ans, comme les autres jeux sortis après Half-Life. La seule chose « nouvelle » dans le pipeline est un MOBA FPS
      Cela dit, je serai éternellement reconnaissant envers Steam de me permettre de lancer des jeux Windows sous Linux sans douleur, au point de ne plus avoir à traiter avec Microsoft dans ma vie personnelle. Comme distributeur de jeux, ils sont excellents, et c’est ce que Valve fait le mieux
    • Au contraire, je pense que Gabe devrait prendre sa retraite. Si possible, j’aimerais que Robin Walker lui succède
      Le rythme de sortie de Valve s’est quasiment arrêté, et l’entreprise s’appuie sur sa vache à lait. Gabe a 62 ans et semble davantage intéressé par un concurrent de Neuralink
    • Je ne vois pas pourquoi on pense que Gabe a l’influence la plus déterminante. La plupart de l’équipe d’origine qui a créé Half-Life est partie, et les gens n’ont pas acheté des produits à cause de Steam, ils ont acheté des jeux
    • Je pense que Valve s’est déjà égarée. Simplement, leur enshittification a pris la forme de loot boxes proches du jeu d’argent
      Les gens oublient que TF2 a été l’un des premiers exemples de jeux occidentaux à introduire les loot boxes, bien avant la sortie d’Overwatch. Portal 2 les a aussi intégrées de force au mode coop. C’est pour ça qu’ils ont arrêté de sortir des expériences solo. Half-Life: Alyx étant une exception
      CS:GO est le pire. Il existe des sites tiers où l’on parie avec des skins d’armes, et ils ciblent ouvertement les enfants. En pratique, toute la scène pro de CS:GO est sponsorisée par eux
      Les sites de paris sur skins ne sont pas officiellement approuvés par Valve, mais l’entreprise ne fait pratiquement aucun effort pour les bloquer
  • Je me demande s’ils vont maintenant commencer à accepter les pull requests. Il y a beaucoup de bugs que j’aimerais voir corrigés dans le jeu
    Ça fait presque 10 ans que le problème du rayon du Medigun qui ne s’aligne pas avec le modèle m’agace

    • Je pense que c’est juste un dump sur GitHub, sans aucun lien avec leur dépôt interne
      C’était pareil pour le dépôt de Half-Life. Même quand les travaux liés au 25e anniversaire ont été rendus publics, ils ont été poussés sous forme d’un énorme patch unique
    • Les bugs du suivi d’issues de GoldSrc sont eux aussi presque tous ignorés depuis des années
    • Il est très, très, très peu probable que ce soit le cas. Cela dit, j’aimerais quand même que quelqu’un prenne la tête d’un fork communautaire du jeu qui fonctionne sur Steam