ValveSoftware/source-sdk-2013 の Add Team Fortress 2 SDK コミットは、Team Fortress 2 SDK を Source SDK 2013 リポジトリに追加する大規模な変更で、ゲーム・クライアント・シェーダーファイルが広範に含まれる
- ファイルツリーには
game/mod_tf、src/game/client/tf、client_tf.vpc、game_shader_generic_*_tf.vpc など、TF 専用の構成とプロジェクトファイル が見られる
- クライアントコードの範囲は、HUD、武器、投射物、ボット NPC、Halloween、Mann vs. Machine、PASS Time、リプレイ、econ・ショップ UI など、ゲームシステム単位 で幅広く分かれている
- Steam API バイナリ、VS Code 作業設定、ビルドスクリプト、VPC・Xcode・make 設定、DirectX SDK ユーティリティ DLL、シェーダービルドツールもあわせて含まれる
- 確認できる内容は GitHub の大規模コミットページにある ファイル一覧と一部の diff が中心であり、各ファイルの実際の実装変更や追加・修正の有無は大半が確認しにくい
TF2 SDK コミットに含まれる範囲
- 対象は
ValveSoftware/source-sdk-2013 公開リポジトリの Add Team Fortress 2 SDK コミット
- GitHub ページのタイトルは
Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub
- 表示されているリポジトリ指標は Fork 3k、Star 9.8k
- ルートおよび
game 側には SDK 配布に必要な基本ファイルとモッド構成が含まれる
- ルートレベルのファイルとして
.gitattributes、.gitignore、CONTRIBUTING、LICENSE、README.md、README が見える
game/bin には linux64/libsteam_api.so、x64/steam_api64.dll のような Steam API バイナリ が含まれる
game/mod_tf には gameinfo.txt、steam.inf、TF2 ロゴ、resource/mod_tf_english.txt、MatchMakingDashboard.res などの構成・UI リソースが入っている
src/game/client/tf 配下には Team Fortress 2 クライアントコード と見られるファイルが大量に列挙されている
- プレイヤー・チーム:
c_tf_player.cpp/.h、c_tf_team.cpp/.h、c_tf_playerresource.cpp/.h
- 武器・投射物:
c_tf_projectile_arrow、c_tf_projectile_rocket、c_tf_stickybolt、c_tf_weapon_builder
- Engineer 建築物:
c_obj_dispenser、c_obj_sentrygun、c_obj_teleporter、c_obj_sapper
- モード・イベント: PASS Time、Halloween、Mann vs. Machine、PvE 関連ファイルが含まれる
- UI とサービス型ゲーム要素もファイル一覧に広く含まれる
econ ディレクトリにはインベントリ、装備、取引、マーケット、アイテム UI ファイルがある
econ/store にはショップ画面関連のファイルがある
- HUD ファイルはアカウント、実績、通知、弾薬、チャット、照準、ダメージ表示、ボス体力、Mann vs. Machine 状態などに分かれている
シェーダーとビルドツール
- シェーダー関連の変更一覧は非常に大きい
.fxc、.psh、.vsh、.inc、.cpp、.h、.bat、.vpc、.pl など多様な形式が含まれる
ps11、ps14、ps20、ps20b、ps30、vs11、vs20、vs30 のような シェーダープロファイル別の派生 が繰り返し現れる
- 水、ポストプロセス、bloom、motion blur、cloak、eye、flashlight、lightmapped generic、HDR・トーンマッピング、particle 関連ファイルが含まれる
- 開発・ビルド環境まで一緒に入っている
src/.vscode/tasks.json、src/buildallprojects
createallprojects、creategameprojects
src/devtools の Xcode 設定、POSIX makefile、Source SDK make 定義
src/devtools/bin の ShaderCompile2.exe、vpc.exe、vpc_linux、vpc_osx、Perl/Python/PowerShell スクリプト
確認可能な限界と diff メモ
- 現在の入力はコミットページの ファイルツリーと一部 diff 情報 を要約したものであり、大半は実際のコード内容ではなく変更ファイル一覧
- GitHub の大規模コミットページのため、一部内容はデフォルトで隠されており、隠れた内容を探すために検索ボックスを使えるという案内がある
- ページには “There was an error while loading. Please reload this page.” というエラーメッセージも表示されている
.gitattributes diff は 5 件追加、11 件削除と表示される
README text が削除され、README.md text が追加されている
*.dll binary、buildallprojects text、vpc binary が追加されている
mod_*_english.txt binary が削除され、*_english.txt binary が追加されている
creategameprojects、createallprojects、vpc_linux、vpc_osx など一部項目は削除されたものとして表示される
- コミットコメントは 0 件と表示される
反映されていない範囲
- 入力メモによれば、原文の一部チャンクは長さ・コスト制限により省略されている
- したがってこの要約は、提供されたソースノート範囲のコミットファイル一覧と一部 diff のみを反映しており、コミット全体のすべてのファイル・変更内容を網羅するものではない
2件のコメント
本当にValveはかっこいいですね。
Hacker News のコメント
Modding には良いニュースだが、これは依然として非公開の Source エンジンの上に載った TF2 専用コードだという点を混同してはいけない
例えば、これで TF2 を新しいプラットフォームに移植できるわけではなく、少なくとも Source を再実装するか、流出した Source コードベースのいずれかに無理やり合わせたうえで法的な余波を覚悟しないと不可能だ
Source のワークフローの欠点をよく知る活発なコミュニティがあるのだから、Carmack が id tech でやったように GPL で公開すれば、インディーの創作プロジェクトが爆発的に増える可能性がある。もはや不透明な契約に縛られる必要もない
いつか公開するのだろうか。全権利を持っているわけではなく、簡単にオープンソース化できないライセンス上の問題があるのかもしれないし、あるいはまだ秘匿しておく価値のある技術が多いのかもしれない
https://www.youtube.com/watch?v=09CvpQrnTEY
サーバー側の TF2 Mod を作っていた立場からすると、本当に素晴らしい。IDA でバイナリを解析するのに数え切れないほどの時間を費やしてきたが、これからはただ GitHub を開けばいい
コミュニティは新機能やバグ修正をはるかに速く作れるようになるはずだ。実際、もっと早くこうなっているべきだったし、TF2 のソースコードはすでに 2 回流出しており、あるグループはさらに古いバージョンのエンジンでゲームのクローンまで作っていた。このゲームへのコミュニティの支援はいまも非常に大きい
これが TF2 Classic にとって良いニュースだといい
TF2C Discord の告知によると、大規模な SDK アップデートと Team Fortress 2 のコード公開のため、しばらく TF2 Classic を起動できない可能性がある。すでに移植作業と将来的な Steam リリースの準備を進めており、合法的に進められるようになったという。当面プレイし続けるには、Source SDK Base 2013 Multiplayer を、以前の SDK ファイルが残っている
previous2021ベータブランチに切り替える必要があるゲーム名が Frog Fortress 2 に変わったように見える
https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...
カエルとグラフィックスプログラミングは良い友達だ
公式ブログ記事: https://www.teamfortress.com/post.php?id=238809
最近の他の Source エンジンゲームのアップデートへのリンクも含まれている
うわ……うわ、うわあ。HN でこれを見ることになるとは思わなかった。ずっと前から期待していたが、もし自分が Valve なら、もっと前に「最後」の記念コンテンツアップデートを出し、ゲームを Vulkan に移植し、アイテムサーバーのようなものは Valve のサーバーに紐づけたまま、コードベースをオープンソースとして公開していただろう
これが TF2 にとって終わりの始まりなのか、始まりの終わりなのかは分からない。以前にも流出はあったが、今回はとてつもないニュースだ
TF2 チームはいまや多くても十数人規模の可能性が高く、ゲームもほぼ 18 年になるのだから、継続的な開発を外部コミュニティに任せる時期だ
Valve はいま、25 年以上続く伝統を引き継いでいるわけだ。人々はいまも新しい Doom のマップを作り、プレイしている。歴史を基準にするなら、2050 年代以降も何らかの形で TF2 をプレイしている可能性がある
64ビットMac向けに再コンパイルするより前にこれをやったという事実が、多くを物語っている。Valveは明らかにAppleを、ビジネスをしやすい相手とは見ていないようだ
Appleがゲーム開発者をApp Storeに閉じ込めようとしているのを見ると理解できる
Appleが中級レベルのTomb Raider 2のグラフィックスを誇らしげに発表したことも、Appleの広報キャンペーンの支援を受けないゲーム開発者には大した期待を抱かせない。しかもプレイヤー数ベースではLinuxよりも小さいプラットフォームだ
十分なプレイヤー基盤ができると確信できない限り、ゲーム会社がMac向けに最適化するのはビジネス的にほとんど意味がなさそうだ。Macを買えるユーザーは、コンソールも買える可能性が高い
Linuxでゲームをするときに使うラッパーや回避策で無理やりゲームを動かすことはできるが、Macではツールの成熟度が低く、直接最適化する必要がある。LinuxゲームにもDRM/チート対策の互換性問題は多いが、成熟度の低いツールを使えばさらに悪化するだけだ
Appleは後方互換性にもあまり関心がなさそうだ。「互換性を維持したくない」以外に明確な理由もなく32ビットを廃止したし、現在の代替API群をどれだけ長く維持するのかも分からない。Linuxにも似た問題があるため、Linuxでゲームをする基本的な方法は、エミュレートされたWindows環境で実行する方向になっている
ゲーム会社はMacより先にSnapdragon向けにゲームを再コンパイルしそうだ。32ビットx86ライブラリをエミュレーションなしでARM上で動かせるようになるころには、AppleはAPIと要件をまた何度も変えているだろうから、わざわざやる理由がない
Ballmerの「devs devs devs」はからかわれるが、彼はかなり正しいことを言っていた。Microsoftは開発者を呼び込むために大金を使い、その結果PCゲームで独占的な地位を得た
少なくともApple SiliconがRosetta 2でより適切にサポートするx86-64という意味では、来る予定に見える
思ったよりは多いが、対応ゲームがなければSteamをインストールする理由もほとんどない。Appleがゲームに友好的になり始めたのも最近なので、20年前のゲームを移植しようとしているとしても驚きではない
2007年のGabeの発言がそれに比較的近い。Appleと会うと、向こうの人たちは「ゲームは本当に重要だから何かしなければならない」と言い、Valveが「ではこの3つをやれば改善する」と言うと、分かったと言ったきり二度と現れない、というパターンが繰り返されると言っていた。その後Apple内部の人が変わると、同じサイクルがまた始まるという
差分には小さなHL3ファイルもある: https://github.com/ValveSoftware/source-sdk-2013/commit/0759...
Valveは勝ち続けている
Gabenが亡くなるか退く日が怖い。Valveが優れた後継者を見つけてくれることを願うが、創業世代がいなくなった後に会社が方向を見失うのは珍しくない
それでもSteamのおかげでLinux上でWindowsゲームを苦労なく動かせ、私生活でMicrosoftと再び向き合わずに済んでいる点には永遠に感謝している。ゲーム配信会社としては素晴らしく、Valveが最も得意としていることもゲーム配信だ
Valveのリリースサイクルはほとんど止まっており、金のなる木に頼っている。Gabeは62歳で、Neuralinkの競合のほうにより関心があるように見える
TF2がOverwatchが出るずっと前から、西洋のゲームの中でルートボックスを導入した初期例だったことを人々は忘れている。Portal 2にもわざわざ協力モードにそれを組み込んだ。だからシングルプレイヤー体験のリリースをやめたのだ。Half-Life: Alyxは例外としても
CS:GOが最悪だ。銃器スキンを賭けてギャンブルするサードパーティサイトがあり、子どもを露骨に狙っている。事実上CS:GOのプロシーン全体がこれにスポンサーされている
スキン賭博サイトはValveが公式に承認したものではないが、阻止しようとする努力は実質的にしていない
そろそろプルリクエストを受け付け始めるのか気になる。ゲーム内で直してほしいバグがたくさんある。
Medigun のビームがモデルと合わない問題には、もうほぼ10年イライラしている。
Half-Life のリポジトリも同じだった。25周年関連の作業が公開されたときも、1つの巨大なパッチとしてプッシュされていた。