2 Punkte von GN⁺ 2025-02-19 | 2 Kommentare | Auf WhatsApp teilen
  • Der Commit Add Team Fortress 2 SDK in ValveSoftware/source-sdk-2013 ist eine umfangreiche Änderung, die das Team Fortress 2 SDK zum Repository Source SDK 2013 hinzufügt und dabei in großem Umfang Spiel-, Client- und Shader-Dateien umfasst
  • Im Dateibaum erscheinen TF-spezifische Konfigurationen und Projektdateien wie game/mod_tf, src/game/client/tf, client_tf.vpc und game_shader_generic_*_tf.vpc
  • Der Umfang des Client-Codes ist breit nach Spielsystemen gegliedert, etwa in HUD, Waffen, Projektile, Bot-NPCs, Halloween, Mann vs. Machine, PASS Time, Replay sowie econ- und Shop-UI
  • Ebenfalls enthalten sind Steam-API-Binärdateien, VS-Code-Arbeitseinstellungen, Build-Skripte, Konfigurationen für VPC, Xcode und make, Utility-DLLs des DirectX SDK sowie Shader-Build-Tools
  • Verifizierbar sind vor allem die Dateiliste und einige Teile des Diff auf der großen GitHub-Commit-Seite; tatsächliche Implementierungsänderungen in den einzelnen Dateien oder ob sie hinzugefügt bzw. geändert wurden, lassen sich meist schwer feststellen

Umfang des TF2-SDK-Commits

  • Gegenstand ist der Commit Add Team Fortress 2 SDK im öffentlichen Repository ValveSoftware/source-sdk-2013
    • Der GitHub-Seitentitel lautet Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub
    • Angezeigt werden die Repository-Kennzahlen Fork 3k und Star 9.8k
  • Im Root-Verzeichnis und im Bereich game sind die grundlegenden Dateien und Mod-Konfigurationen für die SDK-Auslieferung enthalten
    • Auf Root-Ebene sind Dateien wie .gitattributes, .gitignore, CONTRIBUTING, LICENSE, README.md und README sichtbar
    • In game/bin liegen Steam-API-Binärdateien wie linux64/libsteam_api.so und x64/steam_api64.dll
    • game/mod_tf enthält Konfigurations- und UI-Ressourcen wie gameinfo.txt, steam.inf, das TF2-Logo, resource/mod_tf_english.txt und MatchMakingDashboard.res
  • Unter src/game/client/tf ist eine große Menge an Dateien aufgelistet, die wie Team-Fortress-2-Client-Code wirken
    • Spieler und Teams: c_tf_player.cpp/.h, c_tf_team.cpp/.h, c_tf_playerresource.cpp/.h
    • Waffen und Projektile: c_tf_projectile_arrow, c_tf_projectile_rocket, c_tf_stickybolt, c_tf_weapon_builder
    • Engineer-Gebäude: c_obj_dispenser, c_obj_sentrygun, c_obj_teleporter, c_obj_sapper
    • Modi und Events: Dateien zu PASS Time, Halloween, Mann vs. Machine und PvE sind enthalten
  • Auch UI- und Live-Service-Elemente des Spiels sind breit in der Dateiliste vertreten
    • Im Verzeichnis econ finden sich Dateien für Inventar, Ausrüstung, Handel, Markt und Item-UI
    • econ/store enthält Dateien für die Shop-Oberfläche
    • HUD-Dateien sind in Bereiche wie Konto, Erfolge, Benachrichtigungen, Munition, Chat, Fadenkreuz, Schadensanzeige, Boss-Lebensleiste und Mann-vs.-Machine-Status aufgeteilt

Shader und Build-Tools

  • Die Liste der Shader-bezogenen Änderungen ist sehr umfangreich
    • Enthalten sind viele Formate wie .fxc, .psh, .vsh, .inc, .cpp, .h, .bat, .vpc und .pl
    • Varianten nach Shader-Profilen wie ps11, ps14, ps20, ps20b, ps30, vs11, vs20 und vs30 wiederholen sich fortlaufend
    • Enthalten sind Dateien zu Wasser, Post-Processing, Bloom, Motion Blur, Cloak, Eye, Flashlight, Lightmapped Generic, HDR- und Tonemapping sowie Partikeleffekten
  • Auch die Entwicklungs- und Build-Umgebung ist enthalten
    • src/.vscode/tasks.json, src/buildallprojects
    • createallprojects, creategameprojects
    • Xcode-Einstellungen in src/devtools, POSIX-Makefiles und Source-SDK-Make-Definitionen
    • In src/devtools/bin liegen ShaderCompile2.exe, vpc.exe, vpc_linux, vpc_osx sowie Perl-, Python- und PowerShell-Skripte

Verifizierbare Grenzen und Diff-Notizen

  • Die aktuelle Eingabe ist eine Zusammenfassung der Dateibaum- und teilweisen Diff-Informationen der Commit-Seite; in den meisten Fällen handelt es sich also um Listen geänderter Dateien und nicht um den tatsächlichen Codeinhalt
  • Da es sich um eine große GitHub-Commit-Seite handelt, sind einige Inhalte standardmäßig ausgeblendet, mit dem Hinweis, dass sich verborgene Inhalte über das Suchfeld finden lassen
  • Auf der Seite erscheint außerdem die Fehlermeldung „There was an error while loading. Please reload this page.”
  • Das Diff von .gitattributes wird mit 5 Ergänzungen und 11 Löschungen angezeigt
    • README text wird entfernt und README.md text wird hinzugefügt
    • *.dll binary, buildallprojects text und vpc binary werden hinzugefügt
    • mod_*_english.txt binary wird entfernt und *_english.txt binary wird hinzugefügt
    • Einige Einträge wie creategameprojects, createallprojects, vpc_linux und vpc_osx werden als entfernt angezeigt
  • Für den Commit werden 0 Kommentare angezeigt

Nicht abgedeckter Umfang

  • Laut der Eingabenotiz wurden einige Original-Chunks wegen Längen- und Kostenlimits ausgelassen
  • Diese Zusammenfassung bildet daher nur die Dateiliste des Commits und einige Diff-Ausschnitte aus dem Bereich der bereitgestellten Quellnotizen ab und deckt nicht sämtliche Dateien oder Änderungen des gesamten Commits ab

2 Kommentare

 
honglu 2025-02-19

Valve ist wirklich cool.

 
GN⁺ 2025-02-19
Meinungen auf Hacker News
  • Gute Nachrichten fürs Modding, aber man darf nicht durcheinanderbringen, dass das weiterhin TF2-spezifischer Code ist, der auf der nach wie vor proprietären Source Engine aufsetzt.
    Man kann TF2 damit zum Beispiel nicht auf neue Plattformen portieren – das ginge höchstens, wenn man Source neu implementiert oder es irgendwie mit einer der geleakten Source-Codebasen zusammenzwingt und dann die rechtlichen Folgen in Kauf nimmt.

    • Valves Haltung, Source proprietär zu halten, ist schwer nachzuvollziehen. Es ist heute kein besonders attraktiver Engine, mit dem man arbeiten möchte, und es gibt bereits mindestens drei große Open-Source-Alternativen, die deutlich leistungsfähiger und einfacher zu handhaben sind, etwa O3DE, Godot und Wicked.
      Es gibt eine aktive Community, die die Schwächen des Source-Workflows gut kennt; wenn Valve ihn wie Carmack bei id tech unter GPL veröffentlichen würde, könnte das eine Explosion kreativer Indie-Projekte auslösen. Man wäre nicht länger an undurchsichtige Verträge gebunden.
    • Es gab Leaks, das letzte große Spiel mit Source 1 ist vor über zehn Jahren erschienen, und bei Source 2 dürfte der Großteil des Rendering-Codes ohnehin neu geschrieben worden sein, um mit den neuen Entwicklungen bei Spielgrafik mitzuhalten. Daher frage ich mich, ob es noch einen Grund gibt, Source nicht zu veröffentlichen.
      Ob sie es irgendwann tun? Vielleicht gibt es Lizenzprobleme, weil sie nicht alle Rechte besitzen und es daher nicht einfach als Open Source freigeben können, oder es steckt noch genug geheime Technologie darin, die sie behalten wollen.
    • Schade, ich hatte gehofft, TF2 würde damit auf den Mac zurückkehren. Seit Apple die 32-Bit-Unterstützung gestrichen hat, konnten wir im Büro keine ordentliche LAN-Party mehr machen.
    • Ich verstehe immer noch nicht, warum Source proprietär ist, obwohl Valve schon vor über zehn Jahren zu Source 2 gewechselt ist. Es könnte sein, dass sich einige Grundbausteine überschneiden, aber den Spiele-Quellcode scheinen sie ja problemlos veröffentlichen zu können.
    • Gute Nachrichten! Jemand hat es bereits geschafft, die Source Engine für TF2 bis zu einem gewissen Grad per Reverse Engineering nachzubauen.
      https://www.youtube.com/watch?v=09CvpQrnTEY
  • Aus Sicht von jemandem, der serverseitige TF2-Mods gebaut hat, ist das wirklich fantastisch. Ich habe unzählige Stunden damit verbracht, Binaries in IDA zu analysieren; jetzt muss ich einfach nur GitHub öffnen.
    Die Community wird neue Funktionen und Bugfixes viel schneller umsetzen können. Eigentlich hätte das schon längst passieren sollen: Der TF2-Quellcode ist bereits zweimal geleakt, und eine Gruppe hat mit einer früheren Engine-Version sogar einen Klon des Spiels gebaut. Die Unterstützung der Community für dieses Spiel ist immer noch enorm.

  • Ich hoffe, dass das gute Nachrichten für TF2 Classic sind.
    Laut einer Ankündigung im TF2C-Discord kann es wegen des großen SDK-Updates und der Veröffentlichung des Team-Fortress-2-Codes eine Weile dauern, bis TF2 Classic wieder lauffähig ist. Die Portierung und ein möglicher Steam-Release werden bereits vorbereitet, und das Ganze soll nun legal vorangetrieben werden können. Wer vorerst weiterspielen möchte, muss Source SDK Base 2013 Multiplayer auf den Beta-Branch previous2021 umstellen, in dem die alten SDK-Dateien noch vorhanden sind.

    • Da ausdrücklich gesagt wurde, dass abgeleitete Werke des Originalspiels in Ordnung sind und solche Werke als neue Spiele auf Steam veröffentlicht werden können, ist der Weg für TF2 Classic im Grunde frei.
    • Was ist TF2 Classic?
  • Es sieht so aus, als wäre der Name des Spiels in Frog Fortress 2 geändert worden.
    https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...

    • Vermutlich, damit man es vom offiziellen TF2 unterscheiden kann, wenn man den Code baut und installiert, ohne den Namen zu ändern.
    • Sieht nach einer Art internem Witz aus. Man muss nur schauen, wer der Committer ist.
      Frösche und Grafikprogrammierung sind gute Freunde.
  • Offizieller Blogpost: https://www.teamfortress.com/post.php?id=238809
    Enthält auch Links zu den jüngsten Updates anderer Spiele mit Source Engine.

  • Wow … wow, wow. Ich hätte nicht gedacht, das auf HN zu sehen. Ich habe lange darauf gehofft, aber wenn ich Valve wäre, hätte ich schon viel früher ein „letztes“ Jubiläums-Content-Update veröffentlicht, das Spiel auf Vulkan portiert und die Codebasis als Open Source freigegeben, während Dinge wie Item-Server weiter an Valve-Server gebunden bleiben.
    Ich weiß nicht, ob das der Anfang vom Ende von TF2 ist oder das Ende des Anfangs. Leaks gab es schon früher, aber das hier ist eine riesige Nachricht.

    • Für den Anfang vom Ende ist es schon seit Jahren praktisch am Ende. Jetzt wird es an die Community übergeben, und das ist die richtige Entscheidung.
      Das TF2-Team dürfte inzwischen höchstens noch aus einem Dutzend Leuten bestehen, und das Spiel ist fast 18 Jahre alt; es ist an der Zeit, die weitere Entwicklung der externen Community zu überlassen.
    • In den 90ern hat id mit Doom ein paar Jahre lang Geld verdient und dann den Quellcode veröffentlicht; mit Quake haben sie dasselbe gemacht. Einer der Gründe, warum es ein Unternehmen wie Valve heute gibt, ist, dass ihre frühen Spiele modifizierte Engines von Doom und Quake nutzten.
      Valve führt damit eine Tradition fort, die nun seit über 25 Jahren besteht. Leute bauen und spielen immer noch neue Doom-Maps. Wenn die Geschichte ein Maßstab ist, könnten wir TF2 in irgendeiner Form noch in den 2050ern und darüber hinaus spielen.
    • „Woah... woah WOAH“ – ich sehe, worauf das hinausläuft.
    • Ich frage mich, warum du nicht erwartet hast, das auf HN zu sehen.
  • Dass sie das getan haben, noch bevor sie es für 64-Bit-Macs neu kompiliert haben, sagt einiges aus. Valve sieht Apple offenbar nicht gerade als angenehmen Geschäftspartner
    Wenn man sieht, wie Apple Spieleentwickler in den App Store einsperren will, ist das verständlich

    • Spiele für den Mac zu entwickeln wirkt wie eine große Herausforderung. Eine Kombination aus einer vergleichsweise nicht standardmäßigen CPU-Architektur, einer proprietären Grafik-API, wenigen Geräten, übertrieben hochauflösenden eingebauten Displays und GPUs, die bestenfalls „ausreichend“ sind
      Dass Apple stolz Grafik auf dem Niveau eines mittelmäßigen Tomb Raider 2 vorführt, macht Spieleentwicklern, die nicht von Apples PR-Kampagne unterstützt werden, auch nicht gerade Hoffnung. Außerdem ist es gemessen an der Spielerzahl eine Plattform, die sogar kleiner ist als Linux
      Solange man nicht sicher ist, dass eine ordentliche Spielerbasis entsteht, ergibt es aus Geschäftssicht für Spielefirmen wenig Sinn, für den Mac zu optimieren. Nutzer, die sich einen Mac leisten können, können sich wahrscheinlich auch eine Konsole leisten
      Mit den Wrappern und Workarounds, die man unter Linux fürs Gaming nutzt, kann man Spiele irgendwie zum Laufen bringen, aber auf dem Mac sind die Tools weniger ausgereift, sodass man direkt optimieren muss. Linux-Gaming hat schon viele Kompatibilitätsprobleme mit DRM/Anti-Cheat; mit weniger ausgereiften Tools wird das nur schlimmer
      Apple scheint auch wenig Interesse an Abwärtskompatibilität zu haben. 32-Bit wurde ohne erkennbaren Grund außer „wir wollen die Kompatibilität nicht pflegen“ abgeschafft, und niemand weiß, wie lange die aktuellen Ersatz-APIs bestehen bleiben. Linux hat ähnliche Probleme, weshalb der Standardweg fürs Gaming unter Linux darin besteht, es in einer emulierten Windows-Umgebung auszuführen
      Spielefirmen werden ihre Spiele wohl eher für Snapdragon neu kompilieren als für den Mac. Bis man 32-Bit-x86-Bibliotheken ohne Emulation auf ARM zum Laufen bringt, wird Apple seine APIs und Anforderungen wieder ein paar Mal geändert haben, also gibt es keinen Grund, sich das anzutun
    • Wenn man Interviews aus der Spielebranche liest, war Apple historisch ziemlich feindselig gegenüber der Zusammenarbeit mit Spielefirmen und scheint seit dem iPhone App Store etwas nachgelassen zu haben
      Man macht sich über Balmers „devs devs devs“ lustig, aber er hatte damit ziemlich recht. Microsoft gab viel Geld aus, um Entwickler anzuziehen, und bekam dadurch eine monopolartige Stellung bei PC-Spielen
    • Laut Original wurde es auf der offiziellen TF2-Website angekündigt, und https://www.teamfortress.com/post.php?id=238809 sagt, dass für ältere Multiplayer-Titel auf der Source-Engine wie TF2, DoD:S, HL2:DM, CS:S und HLDM:S zahlreiche Verbesserungen hinzukommen, darunter 64-Bit-Binary-Support, skalierbares HUD/UI und Prediction-Fixes
      Zumindest in dem Sinne, dass es x86-64 ist, das Apple Silicon über Rosetta 2 besser unterstützt, scheint es zu kommen
    • Mac-Nutzer machen 1,4 % aus, 25 % weniger als Linux
      Mehr, als ich gedacht hätte, aber ohne kompatible Spiele gibt es auch kaum einen Grund, Steam zu installieren. Dass Apple erst seit Kurzem anfängt, spielefreundlicher zu werden, macht es nicht überraschend, dass man versucht, ein 20 Jahre altes Spiel zu portieren
    • Es gab ein Video, das erklärte, warum Valve-Spiele nicht auf Macintosh portiert wurden, aber ich finde es nicht mehr. Der Kern war, dass Apple nicht wollte, dass seine Geräte fürs Gaming genutzt werden, und nach getaner Portierungsarbeit die Veröffentlichung des Spiels verweigerte
      Eine Aussage von Gabe aus dem Jahr 2007 kommt dem noch am nächsten. Er sagte, wenn man sich mit Apple treffe, sagten die Leute dort: „Spiele sind wirklich wichtig, wir müssen etwas tun“, und wenn Valve dann sage: „Wenn ihr diese drei Dinge tut, wird es besser“, nickten sie, und dann sehe man sie nie wieder. Wenn sich anschließend intern bei Apple jemand ändere, beginne derselbe Zyklus von vorn
  • In der Diff-Historie gibt es auch kleine HL3-Dateien: https://github.com/ValveSoftware/source-sdk-2013/commit/0759...

  • Valve gewinnt einfach weiter
    Ich fürchte den Tag, an dem Gaben stirbt oder zurücktritt. Ich hoffe, Valve findet einen großartigen Nachfolger, aber es ist nicht selten, dass ein Unternehmen nach dem Wegfall der Gründergeneration die Orientierung verliert

    • Das ist wirklich großartig, wie vieles, was Valve tut, aber Valve verdient viel Geld mit Glücksspiel und Glücksspiel von Minderjährigen, daher fällt es schwer, das Unternehmen als rundum großartig zu betrachten
    • Für mich hat Valve als Spieleentwickler schon vor langer Zeit den Weg verloren. Was haben sie zuletzt veröffentlicht? CS 2 im Jahr 2023? Auch diese IP stammt aus einer Mod, die sie vor 25 Jahren gekauft haben, und dasselbe gilt für die anderen Spiele, die sie nach Half-Life veröffentlicht haben. Das einzige wirklich „Neue“ in der Pipeline ist ein MOBA-FPS
      Trotzdem bin ich ihnen für immer dankbar, dass ich dank Steam Windows-Spiele unter Linux schmerzfrei nutzen kann und Microsoft im Privatleben nicht wieder anfassen muss. Als Spielevertrieb sind sie großartig, und Spielevertrieb ist auch das, was Valve am besten kann
    • Ich finde eher, Gabe sollte in den Ruhestand gehen. Wenn möglich, wäre Robin Walker als Nachfolger gut
      Valves Release-Zyklus ist fast zum Stillstand gekommen, und sie stützen sich auf ihre Cashcows. Gabe ist 62 und scheint sich mehr für einen Neuralink-Konkurrenten zu interessieren
    • Ich verstehe nicht, warum man glaubt, Gabe habe den größten Einfluss. Die meisten aus dem ursprünglichen Team, das Half-Life gemacht hat, sind gegangen, und die Leute haben nicht wegen Steam ein Produkt gekauft, sondern Spiele
    • Meiner Ansicht nach hat Valve bereits den Weg verloren. Ihre Enshittification kam nur in Form von Lootboxen, also quasi Glücksspiel
      Die Leute vergessen, dass TF2 lange vor Overwatch eines der frühen westlichen Spiele mit Lootboxen war. Selbst in Portal 2 haben sie das unnötigerweise in den Koop-Modus gepackt. Deshalb haben sie aufgehört, Singleplayer-Erlebnisse zu veröffentlichen. Half-Life: Alyx einmal ausgenommen
      CS:GO ist am schlimmsten. Es gibt Drittanbieter-Websites, auf denen mit Waffenskins gezockt wird, und sie zielen unverhohlen auf Kinder ab. Praktisch die gesamte CS:GO-Pro-Szene wird davon gesponsert
      Skin-Glücksspielseiten sind zwar nicht offiziell von Valve genehmigt, aber Valve unternimmt praktisch nichts, um sie zu stoppen
  • Ich frage mich, ob sie jetzt anfangen werden, Pull Requests anzunehmen. Es gibt viele Bugs im Spiel, die ich gern behoben sähe
    Dass der Medigun-Strahl nicht zum Modell passt, nervt mich seit fast zehn Jahren

    • Das dürfte einfach nur ein Dump auf GitHub sein und keinerlei Verbindung zum internen Repository haben
      Beim Half-Life-Repository war es genauso. Auch als die Arbeiten zum 25-jährigen Jubiläum veröffentlicht wurden, wurden sie als ein einziger riesiger Patch gepusht
    • Die Bugs im GoldSrc-Issue-Tracker werden ebenfalls seit Jahren fast alle ignoriert
    • Sehr, sehr, sehr wahrscheinlich nicht. Trotzdem wäre es schön, wenn jemand einen Community-Fork des auf Steam laufenden Spiels vorantreiben würde