2 điểm bởi GN⁺ 2025-02-19 | 2 bình luận | Chia sẻ qua WhatsApp
  • Commit Add Team Fortress 2 SDK trong ValveSoftware/source-sdk-2013 là một thay đổi lớn bổ sung Team Fortress 2 SDK vào kho Source SDK 2013, bao gồm rộng rãi các tệp game, client và shader
  • Cây tệp xuất hiện các cấu hình và tệp dự án dành riêng cho TF như game/mod_tf, src/game/client/tf, client_tf.vpc, game_shader_generic_*_tf.vpc
  • Phạm vi mã client được chia rộng theo từng hệ thống game như HUD, vũ khí, vật thể phóng, bot NPC, Halloween, Mann vs. Machine, PASS Time, replay, giao diện econ và cửa hàng
  • Đi kèm còn có binary Steam API, cấu hình task cho VS Code, script build, cấu hình VPC·Xcode·make, DLL tiện ích DirectX SDK và công cụ build shader
  • Nội dung có thể xác nhận chủ yếu là danh sách tệp và một phần diff trên trang commit lớn của GitHub, nên phần lớn khó xác định thay đổi triển khai thực tế trong từng tệp hoặc việc tệp được thêm/sửa ra sao

Phạm vi được đưa vào commit TF2 SDK

  • Đối tượng là commit Add Team Fortress 2 SDK trong kho công khai ValveSoftware/source-sdk-2013
    • Tiêu đề trang GitHub là Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub
    • Chỉ số kho hiển thị là Fork 3k, Star 9.8k
  • Ở thư mục gốc và phía game có các tệp cơ bản và cấu hình mod cần cho bản phân phối SDK
    • Ở cấp gốc thấy các tệp .gitattributes, .gitignore, CONTRIBUTING, LICENSE, README.md, README
    • game/bin chứa binary Steam API như linux64/libsteam_api.so, x64/steam_api64.dll
    • game/mod_tf chứa tài nguyên cấu hình và UI như gameinfo.txt, steam.inf, logo TF2, resource/mod_tf_english.txt, MatchMakingDashboard.res
  • Bên dưới src/game/client/tf có lượng lớn tệp trông như mã client Team Fortress 2
    • Người chơi·đội: c_tf_player.cpp/.h, c_tf_team.cpp/.h, c_tf_playerresource.cpp/.h
    • Vũ khí·vật thể phóng: c_tf_projectile_arrow, c_tf_projectile_rocket, c_tf_stickybolt, c_tf_weapon_builder
    • Công trình Engineer: c_obj_dispenser, c_obj_sentrygun, c_obj_teleporter, c_obj_sapper
    • Chế độ·sự kiện: bao gồm các tệp liên quan đến PASS Time, Halloween, Mann vs. Machine, PvE
  • Các thành phần UI và game dạng dịch vụ cũng được đưa vào rộng rãi trong danh sách tệp
    • Thư mục econ có các tệp UI cho kho đồ, trang bị, giao dịch, chợ và vật phẩm
    • econ/store có các tệp liên quan đến màn hình cửa hàng
    • Các tệp HUD được chia theo tài khoản, thành tích, thông báo, đạn, chat, tâm ngắm, hiển thị sát thương, máu boss, trạng thái Mann vs. Machine, v.v.

Shader và công cụ build

  • Danh sách thay đổi liên quan đến shader rất lớn
    • Bao gồm nhiều định dạng như .fxc, .psh, .vsh, .inc, .cpp, .h, .bat, .vpc, .pl
    • Lặp lại các biến thể theo hồ sơ shader như ps11, ps14, ps20, ps20b, ps30, vs11, vs20, vs30
    • Bao gồm các tệp liên quan đến nước, hậu kỳ, bloom, motion blur, cloak, eye, flashlight, lightmapped generic, HDR·tone mapping, particle
  • Môi trường phát triển và build cũng được đưa vào cùng
    • src/.vscode/tasks.json, src/buildallprojects
    • createallprojects, creategameprojects
    • Cấu hình Xcode, POSIX makefile, định nghĩa make của Source SDK trong src/devtools
    • ShaderCompile2.exe, vpc.exe, vpc_linux, vpc_osx và các script Perl/Python/PowerShell trong src/devtools/bin

Giới hạn có thể xác nhận và ghi chú diff

  • Dữ liệu đầu vào hiện tại là phần tóm tắt cây tệp và một phần thông tin diff trên trang commit, phần lớn là danh sách tệp thay đổi chứ không phải nội dung mã thực tế
  • Vì đây là trang commit lớn của GitHub nên một số nội dung mặc định bị ẩn, và có hướng dẫn có thể dùng ô tìm kiếm để tìm nội dung bị ẩn
  • Trang cũng hiển thị thông báo lỗi “There was an error while loading. Please reload this page.”
  • Diff của .gitattributes hiển thị 5 dòng thêm và 11 dòng xóa
    • README text bị xóa và README.md text được thêm
    • *.dll binary, buildallprojects text, vpc binary được thêm
    • mod_*_english.txt binary bị xóa và *_english.txt binary được thêm
    • Một số mục như creategameprojects, createallprojects, vpc_linux, vpc_osx hiển thị là đã bị xóa
  • Bình luận commit hiển thị là 0

Phạm vi chưa được phản ánh

  • Theo ghi chú đầu vào, một số chunk của nguyên văn đã bị lược bỏ do giới hạn độ dài và chi phí
  • Vì vậy, bản tóm tắt này chỉ phản ánh danh sách tệp commit và một phần diff trong phạm vi ghi chú nguồn được cung cấp, không bao quát mọi tệp và thay đổi của toàn bộ commit

2 bình luận

 
honglu 2025-02-19

Valve đúng là rất ngầu.

 
GN⁺ 2025-02-19
Ý kiến trên Hacker News
  • Đây là tin tốt cho modding, nhưng đừng nhầm lẫn rằng đây vẫn chỉ là mã riêng cho TF2 đặt bên trên Source engine vốn vẫn đóng
    Ví dụ, bạn không thể dùng thứ này để port TF2 sang nền tảng mới; ít nhất phải tái triển khai Source hoặc cố gắng khớp nó với một trong các codebase Source từng bị rò rỉ rồi chấp nhận hệ quả pháp lý

    • Khó hiểu lập trường của Valve khi vẫn giữ Source đóng. Hiện nay nó cũng không phải engine đặc biệt hấp dẫn để làm việc, trong khi đã có ít nhất 3 lựa chọn mã nguồn mở lớn mạnh hơn và dễ dùng hơn nhiều như O3DE, Godot, Wicked
      Có một cộng đồng năng động hiểu rõ các nhược điểm trong workflow của Source, nên nếu công bố theo GPL như Carmack từng làm với id tech, các dự án sáng tạo của indie có thể bùng nổ. Họ cũng không còn phải bị ràng buộc bởi các hợp đồng mập mờ nữa
    • Đã từng có rò rỉ, hơn 10 năm đã trôi qua kể từ khi game lớn cuối cùng dùng Source 1 ra mắt, và với Source 2 thì phần lớn mã rendering hẳn đã được viết lại để theo kịp những tiến bộ mới về đồ họa game, nên tôi tự hỏi liệu còn lý do gì để tiếp tục giữ kín không
      Liệu một ngày nào đó họ có công bố không? Có thể có vấn đề giấy phép khiến họ không thể dễ dàng mở nguồn vì không nắm toàn bộ quyền, hoặc có lẽ vẫn còn nhiều công nghệ bí mật đáng giữ lại
    • Tôi đã kỳ vọng điều này sẽ giúp TF2 quay lại Mac, nên khá tiếc. Kể từ khi Apple bỏ hỗ trợ 32-bit, chúng tôi không còn tổ chức được LAN party đúng nghĩa ở văn phòng nữa
    • Tôi vẫn thấy khó hiểu vì sao Source vẫn đóng dù Valve đã chuyển sang Source 2 hơn 10 năm trước. Có thể một số thành phần nền tảng bị trùng lặp, nhưng có vẻ họ cho rằng công bố mã nguồn game thì vẫn ổn
    • Tin tốt! Đã có người thành công ở một mức độ nào đó trong việc reverse engineering Source engine cho TF2
      https://www.youtube.com/watch?v=09CvpQrnTEY
  • Với tư cách người từng làm mod TF2 phía server, chuyện này thật tuyệt vời. Tôi đã mất vô số giờ phân tích binary bằng IDA, giờ thì chỉ cần mở GitHub là xong
    Cộng đồng sẽ có thể tạo tính năng mới và sửa lỗi nhanh hơn nhiều. Thực ra đáng lẽ việc này nên diễn ra từ lâu rồi; mã nguồn TF2 đã bị rò rỉ hai lần, và một nhóm thậm chí đã làm cả bản clone của game trên một phiên bản engine cũ hơn. Sự hỗ trợ của cộng đồng dành cho game này đến giờ vẫn rất lớn

  • Hy vọng đây là tin tốt cho TF2 Classic
    Theo thông báo trên Discord của TF2C, do bản cập nhật SDK quy mô lớn và việc công bố mã Team Fortress 2, có thể trong một thời gian sẽ không chạy được TF2 Classic. Họ nói rằng đã chuẩn bị cho công việc port và khả năng phát hành trên Steam, và giờ có thể tiến hành một cách hợp pháp. Nếu muốn tiếp tục chơi trong thời gian này, cần đổi Source SDK Base 2013 Multiplayer sang nhánh beta previous2021, nơi vẫn còn các file SDK cũ

    • Họ đã nói rõ rằng tác phẩm phái sinh từ game gốc là được phép, và có thể phát hành những tác phẩm đó như game mới trên Steam, nên có thể xem như con đường cho TF2 Classic đã được mở
    • TF2 Classic là gì vậy?
  • Có vẻ tên game đã được đổi thành Frog Fortress 2
    https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...

    • Có lẽ là để phân biệt với TF2 chính thức nếu bạn build mã rồi cài mà không đổi tên
    • Trông giống một trò đùa nội bộ. Nhìn xem committer là ai là biết
      Ếch và lập trình đồ họa là bạn tốt của nhau
  • Bài blog chính thức: https://www.teamfortress.com/post.php?id=238809
    Cũng bao gồm các liên kết tới những bản cập nhật gần đây của các game dùng Source engine khác

  • Ôi… ôi, wow. Không ngờ lại thấy chuyện này trên HN. Tôi đã mong đợi từ lâu, nhưng nếu là Valve thì tôi đã tung một bản cập nhật nội dung kỷ niệm “cuối cùng” từ lâu rồi, port game sang Vulkan, giữ những thứ như server vật phẩm gắn với server của Valve, rồi mở nguồn codebase
    Không biết đây là khởi đầu của hồi kết TF2, hay là kết thúc của phần mở đầu. Trước đây đã từng có rò rỉ, nhưng lần này là tin cực lớn

    • Nói là khởi đầu của hồi kết thì hơi sai, vì nó đã ở trạng thái kết thúc suốt mấy năm rồi. Giờ là chuyển giao cho cộng đồng, và đó là điều nên làm
      Đội TF2 giờ có lẽ nhiều lắm cũng chỉ tầm hơn chục người, còn game thì gần 18 năm tuổi rồi, nên đã đến lúc giao việc phát triển tiếp cho cộng đồng bên ngoài
    • Vào thập niên 90, id kiếm tiền từ Doom trong vài năm rồi công bố mã nguồn, và họ cũng làm như vậy với Quake. Một trong những lý do các công ty như Valve tồn tại ngày nay là vì các game thời đầu của họ dùng engine đã chỉnh sửa từ Doom và Quake
      Giờ Valve đang tiếp nối một truyền thống đã kéo dài hơn 25 năm. Người ta đến nay vẫn tạo và chơi các bản đồ Doom mới. Nếu lịch sử là chuẩn tham chiếu, thì sau thập niên 2050 chúng ta vẫn có thể đang chơi TF2 dưới một hình thức nào đó
    • “Woah... woah WOAH” à, tôi hiểu họ đang nhắm tới gì rồi
    • Tôi tò mò vì sao bạn lại không ngờ sẽ thấy chuyện này trên HN
  • Việc họ làm điều này ngay cả trước khi biên dịch lại cho Mac 64-bit nói lên rất nhiều. Rõ ràng Valve không xem Apple là một đối tác dễ làm ăn
    Nhìn cách Apple cố nhốt các nhà phát triển game trong App Store thì cũng dễ hiểu

    • Làm game cho Mac có vẻ là một thách thức lớn. Đó là sự kết hợp của kiến trúc CPU tương đối không chuẩn, API đồ họa độc quyền, số lượng thiết bị ít, màn hình tích hợp có độ phân giải quá cao, và GPU cùng lắm chỉ ở mức “đủ dùng”
      Việc Apple tự hào công bố đồ họa tầm trung kiểu Tomb Raider 2 cũng không tạo nhiều kỳ vọng cho các nhà phát triển game không được chiến dịch PR của Apple hỗ trợ. Hơn nữa, xét theo số lượng người chơi thì đây còn là nền tảng nhỏ hơn cả Linux
      Trừ khi chắc chắn sẽ có một cộng đồng người chơi đủ tốt, việc một công ty game tối ưu cho Mac dường như không có nhiều ý nghĩa về mặt kinh doanh. Người dùng đủ tiền mua Mac nhiều khả năng cũng mua được console
      Có thể ép game chạy bằng các wrapper và cách đi đường vòng như khi chơi game trên Linux, nhưng trên Mac các công cụ kém trưởng thành hơn nên phải tự tối ưu trực tiếp. Game trên Linux vốn đã gặp nhiều vấn đề tương thích DRM/chống gian lận, dùng công cụ kém trưởng thành hơn chỉ làm mọi thứ tệ thêm
      Apple dường như cũng không mấy quan tâm đến tương thích ngược. Họ loại bỏ 32-bit mà không có lý do rõ ràng nào ngoài “không muốn duy trì tương thích”, và cũng không ai biết họ sẽ giữ các API thay thế hiện tại trong bao lâu. Linux cũng có vấn đề tương tự, nên cách cơ bản để chơi game trên Linux là chạy trong môi trường Windows được giả lập
      Các công ty game có lẽ sẽ biên dịch lại game cho Snapdragon trước cả Mac. Đến lúc làm cho các thư viện x86 32-bit chạy được trên ARM mà không cần giả lập, Apple hẳn đã đổi API và yêu cầu thêm vài lần nữa, nên chẳng có lý do gì để làm
    • Nhìn vào các cuộc phỏng vấn trong ngành game, Apple trong lịch sử khá thù địch với việc hợp tác cùng các công ty game, và có vẻ đã mềm hơn một chút sau iPhone App Store
      Người ta chế giễu câu “devs devs devs” của Ballmer, nhưng ông ấy nói khá đúng. Microsoft đã chi rất nhiều tiền để thu hút nhà phát triển, và kết quả là họ giành được vị thế độc tôn trong mảng game PC
    • Theo bài gốc, thông báo được đăng trên trang web TF2 chính thức, và https://www.teamfortress.com/post.php?id=238809 nói rằng họ sẽ bổ sung nhiều cải tiến cho các game Source engine multiplayer đời cũ như TF2, DoD:S, HL2:DM, CS:S, HLDM:S, gồm hỗ trợ binary 64-bit, HUD/UI có thể mở rộng, sửa phần dự đoán, v.v.
      Ít nhất thì có vẻ nó sẽ đến, theo nghĩa x86-64 được Apple Silicon hỗ trợ tốt hơn qua Rosetta 2
    • Người dùng Mac chiếm 1,4%, ít hơn Linux 25%
      Nhiều hơn tôi nghĩ, nhưng nếu không có game tương thích thì cũng gần như không có lý do để cài Steam. Việc Apple chỉ mới bắt đầu trở nên thân thiện với game gần đây cũng khiến chuyện họ muốn port một game 20 năm tuổi không có gì đáng ngạc nhiên
    • Có một video giải thích vì sao game của Valve không được port sang Macintosh nhưng tôi không tìm thấy. Ý chính là Apple không muốn thiết bị của họ được dùng để chơi game, và sau khi làm hỏng công sức port thì từ chối cho phát hành game
      Phát biểu năm 2007 của Gabe là thứ gần giống nhất. Ông nói rằng mỗi khi gặp Apple, phía họ bảo “game thật sự rất quan trọng nên chúng ta phải làm gì đó”, rồi khi Valve nói “vậy nếu làm ba việc này thì sẽ tốt hơn”, họ bảo đã hiểu rồi sau đó biến mất không bao giờ thấy nữa. Sau đó khi người trong nội bộ Apple thay đổi, cùng một chu kỳ lại bắt đầu
  • Trong lịch sử thay đổi cũng có vài file HL3 nhỏ: https://github.com/ValveSoftware/source-sdk-2013/commit/0759...

  • Valve vẫn đang tiếp tục thắng
    Tôi sợ ngày Gaben qua đời hoặc rút lui. Hy vọng Valve tìm được người kế nhiệm xuất sắc, nhưng chuyện một công ty mất phương hướng sau khi thế hệ sáng lập biến mất không hề hiếm

    • Đây thật sự là một việc rất hay, và nhiều việc Valve làm cũng vậy, nhưng vì Valve kiếm được khoản đáng kể từ cờ bạc và cờ bạc ở trẻ vị thành niên nên khó có thể xem họ là một công ty hoàn toàn tuyệt vời
    • Với tôi, Valve với tư cách nhà phát triển game đã lạc lối từ lâu. Gần đây họ đã ra mắt gì? CS 2 năm 2023? IP đó cũng đến từ một bản mod họ mua 25 năm trước, và các game khác họ phát hành sau Half-Life cũng vậy. Thứ “mới” duy nhất trong pipeline là một MOBA FPS
      Dù vậy, tôi sẽ mãi biết ơn Steam vì nhờ nó tôi có thể chạy game Windows trên Linux một cách ít đau đớn, để trong đời sống cá nhân không phải quay lại đối mặt với Microsoft. Với tư cách nhà phân phối game thì họ rất tuyệt, và phân phối game cũng là việc Valve làm tốt nhất
    • Ngược lại, tôi nghĩ Gabe nên nghỉ hưu. Nếu được thì Robin Walker tiếp quản sẽ tốt
      Chu kỳ phát hành của Valve gần như đã dừng lại, và họ đang dựa vào những con bò sữa hái ra tiền. Gabe đã 62 tuổi và có vẻ quan tâm hơn đến công ty cạnh tranh với Neuralink
    • Tôi không hiểu vì sao lại cho rằng Gabe có ảnh hưởng lớn nhất. Phần lớn đội ngũ ban đầu làm Half-Life đã rời đi, và mọi người mua sản phẩm vì game chứ không phải vì Steam
    • Tôi nghĩ Valve đã lạc lối rồi. Chỉ là quá trình enshittification của họ diễn ra dưới dạng loot box gần với cờ bạc
      Mọi người quên rằng TF2 là một trong những ví dụ sớm ở phương Tây đưa loot box vào game, từ rất lâu trước khi Overwatch ra mắt. Portal 2 cũng không cần thiết mà vẫn nhét thứ đó vào chế độ co-op. Đó là lý do họ ngừng phát hành trải nghiệm chơi đơn. Dù có thể xem Half-Life: Alyx là ngoại lệ
      CS:GO là tệ nhất. Có các trang bên thứ ba cho phép đánh bạc bằng skin súng, và chúng nhắm thẳng vào trẻ em. Thực tế gần như toàn bộ scene chuyên nghiệp CS:GO đều được những trang này tài trợ
      Các trang đánh bạc skin không được Valve chính thức phê duyệt, nhưng họ hầu như không nỗ lực ngăn chặn
  • Giờ thì tò mò liệu họ có bắt đầu nhận pull request không. Có rất nhiều bug mình muốn được sửa trong game
    Mình đã bực bội gần 10 năm vì vấn đề tia của Medigun không khớp với model

    • Chắc đây chỉ là bản dump lên GitHub và hoàn toàn không liên kết gì với repo nội bộ
      Repo Half-Life cũng vậy. Ngay cả khi phần việc liên quan đến kỷ niệm 25 năm được công khai, nó cũng được push dưới dạng một patch khổng lồ
    • Các bug trong trình theo dõi issue của GoldSrc cũng hầu như bị phớt lờ suốt mấy năm nay
    • Khả năng là thật sự, thật sự, thật sự không phải đâu. Dù vậy, mình vẫn mong có ai đó dẫn dắt một community fork của game chạy được trên Steam