Valve เปิดเผยโค้ดเกม Team Fortress 2
(github.com/ValveSoftware)- คอมมิต
Add Team Fortress 2 SDKในValveSoftware/source-sdk-2013เป็นการเปลี่ยนแปลงขนาดใหญ่ที่เพิ่ม Team Fortress 2 SDK เข้าไปในรีโพซิทอรี Source SDK 2013 โดยมีไฟล์เกม ไคลเอนต์ และเชดเดอร์รวมอยู่เป็นจำนวนมาก - ในผังไฟล์มี คอนฟิกและไฟล์โปรเจกต์เฉพาะของ TF เช่น
game/mod_tf,src/game/client/tf,client_tf.vpc,game_shader_generic_*_tf.vpc - ขอบเขตของโค้ดฝั่งไคลเอนต์ถูกแบ่งกว้าง ๆ ตาม หน่วยของระบบเกม เช่น HUD, อาวุธ, โปรเจกไทล์, บอต NPC, Halloween, Mann vs. Machine, PASS Time, รีเพลย์, UI ของ econ และร้านค้า
- มี Steam API binaries, การตั้งค่างานของ VS Code, สคริปต์บิลด์, การตั้งค่า VPC·Xcode·make, DLL ยูทิลิตีของ DirectX SDK และเครื่องมือบิลด์เชดเดอร์รวมอยู่ด้วย
- เนื้อหาที่ตรวจสอบได้ส่วนใหญ่มาจาก รายการไฟล์และ diff บางส่วน บนหน้า GitHub ของคอมมิตขนาดใหญ่ จึงยากที่จะยืนยันรายละเอียดส่วนใหญ่ของการเปลี่ยนแปลงการใช้งานจริงในแต่ละไฟล์ หรือว่าเป็นการเพิ่ม/แก้ไขไฟล์ใดบ้าง
ขอบเขตที่รวมอยู่ในคอมมิต TF2 SDK
- เป้าหมายคือคอมมิต
Add Team Fortress 2 SDKในรีโพซิทอรีสาธารณะValveSoftware/source-sdk-2013- ชื่อหน้าบน GitHub คือ
Add Team Fortress 2 SDK · ValveSoftware/source-sdk-2013@0759e2e · GitHub - ตัวชี้วัดรีโพซิทอรีที่แสดงคือ Fork 3k, Star 9.8k
- ชื่อหน้าบน GitHub คือ
- ที่ระดับรากและฝั่ง
gameมีไฟล์พื้นฐานและคอนฟิกม็อดที่จำเป็นสำหรับการแจกจ่าย SDK รวมอยู่- ไฟล์ระดับรากที่เห็น ได้แก่
.gitattributes,.gitignore,CONTRIBUTING,LICENSE,README.md,README - ใน
game/binมี Steam API binaries เช่นlinux64/libsteam_api.so,x64/steam_api64.dll - ใน
game/mod_tfมีทรัพยากรคอนฟิกและ UI เช่นgameinfo.txt,steam.inf, โลโก้ TF2,resource/mod_tf_english.txt,MatchMakingDashboard.res
- ไฟล์ระดับรากที่เห็น ได้แก่
- ใต้
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 - มีการทำซ้ำของ เวอร์ชันแยกตาม shader profile เช่น
ps11,ps14,ps20,ps20b,ps30,vs11,vs20,vs30 - มีไฟล์ที่เกี่ยวข้องกับน้ำ, post-processing, bloom, motion blur, cloak, eye, flashlight, lightmapped generic, HDR·tone mapping และ particle
- มีหลายรูปแบบรวมอยู่ เช่น
- รวมไปถึงสภาพแวดล้อมการพัฒนาและบิลด์ด้วย
src/.vscode/tasks.json,src/buildallprojectscreateallprojects,creategameprojects- การตั้งค่า Xcode, POSIX makefile และนิยาม make ของ Source SDK ใน
src/devtools ShaderCompile2.exe,vpc.exe,vpc_linux,vpc_osxและสคริปต์ Perl/Python/PowerShell ในsrc/devtools/bin
ข้อจำกัดที่ตรวจสอบได้และบันทึก diff
- อินพุตปัจจุบันเป็นการสรุป ผังไฟล์และข้อมูล diff บางส่วน จากหน้าคอมมิต และส่วนใหญ่เป็นรายการไฟล์ที่เปลี่ยนแปลง ไม่ใช่เนื้อหาโค้ดจริง
- เนื่องจากเป็นหน้าคอมมิตขนาดใหญ่ของ GitHub เนื้อหาบางส่วนจึงถูกซ่อนไว้ตามค่าเริ่มต้น และมีคำแนะนำว่าสามารถใช้ช่องค้นหาเพื่อค้นหาเนื้อหาที่ซ่อนอยู่ได้
- ในหน้ายังแสดงข้อความผิดพลาด “There was an error while loading. Please reload this page.” ด้วย
- diff ของ
.gitattributesแสดงว่าเพิ่ม 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
นี่เป็นข่าวดีสำหรับการม็อด แต่ต้องไม่สับสนว่านี่ยังคงเป็นโค้ดเฉพาะ TF2 ที่วางอยู่บน เอนจิน Source แบบปิดอยู่
ตัวอย่างเช่น คุณไม่สามารถใช้สิ่งนี้พอร์ต TF2 ไปยังแพลตฟอร์มใหม่ได้ อย่างน้อยก็ต้องรีอิมพลีเมนต์ Source ขึ้นมาใหม่ หรือฝืนทำให้เข้ากับหนึ่งในโค้ดเบส Source ที่รั่วออกมา แล้วรับความเสี่ยงจากผลทางกฎหมายภายหลัง
เมื่อมีคอมมูนิตี้ที่ยังแอ็กทีฟและรู้ข้อเสียของเวิร์กโฟลว์ Source เป็นอย่างดี ถ้าปล่อยออกมาภายใต้ GPL แบบที่ Carmack เคยทำกับ id tech ก็อาจทำให้โปรเจกต์สร้างสรรค์ของสายอินดี้เพิ่มขึ้นแบบก้าวกระโดดได้ โดยไม่ต้องถูกผูกกับสัญญาที่ไม่โปร่งใสอีกต่อไป
หรือจะเปิดออกมาในสักวัน? อาจมีปัญหาเรื่องไลเซนส์ที่ทำให้ไม่สามารถโอเพนซอร์สได้ง่าย ๆ เพราะไม่ได้ถือสิทธิ์ทั้งหมด หรืออาจยังมีเทคโนโลยีลับที่คุ้มจะเก็บไว้ก็ได้
https://www.youtube.com/watch?v=09CvpQrnTEY
ในฐานะคนที่เคยทำม็อด TF2 ฝั่งเซิร์ฟเวอร์ นี่มันยอดเยี่ยมจริง ๆ ผมเสียเวลาไปนับไม่ถ้วนกับการใช้ IDA วิเคราะห์ไบนารี แต่ตอนนี้แค่เปิด GitHub ก็พอ
คอมมูนิตี้น่าจะเพิ่มฟีเจอร์ใหม่และแก้บั๊กได้เร็วขึ้นมาก ที่จริงมันควรเป็นแบบนี้ตั้งนานแล้ว ซอร์สโค้ด TF2 เคยรั่วมาแล้วถึงสองครั้ง และบางกลุ่มก็เคยสร้างเกมโคลนโดยใช้เอนจินเวอร์ชันที่เก่ากว่านั้นด้วย การสนับสนุนจากคอมมูนิตี้ต่อเกมนี้ยังคงมหาศาล
หวังว่านี่จะเป็นข่าวดีสำหรับ TF2 Classic
ตามประกาศใน Discord ของ TF2C เนื่องจากมีการอัปเดต SDK ครั้งใหญ่และการเปิดโค้ด Team Fortress 2 ตัว TF2 Classic อาจเล่นไม่ได้อยู่พักหนึ่ง ตอนนี้พวกเขากำลังเตรียมงานพอร์ตและการวางจำหน่ายบน Steam ที่เป็นไปได้ และบอกว่าสามารถเดินหน้าได้อย่างถูกกฎหมายแล้ว หากยังอยากเล่นต่อในช่วงนี้ ต้องเปลี่ยน Source SDK Base 2013 Multiplayer ไปเป็นเบต้าแบรนช์
previous2021ที่ยังมีไฟล์ SDK เดิมอยู่ดูเหมือนว่าชื่อเกมจะถูกเปลี่ยนเป็น Frog Fortress 2
https://github.com/ValveSoftware/source-sdk-2013/blob/0759e2...
กบกับกราฟิกโปรแกรมมิงเป็นเพื่อนรักกัน
โพสต์บล็อกทางการ: https://www.teamfortress.com/post.php?id=238809
มีลิงก์ไปยังการอัปเดตล่าสุดของเกมอื่น ๆ ที่ใช้ Source engine ด้วย
ว้าว... ว้าว ว้าว ไม่คิดเลยว่าจะได้เห็นเรื่องนี้บน HN รอสิ่งนี้มานานมาก แต่ถ้าผมเป็น Valve ผมคงออกอัปเดตคอนเทนต์ที่ระลึก “ครั้งสุดท้าย” ไปนานแล้ว พอร์ตเกมไป Vulkan แล้วเปิดซอร์สโค้ด โดยยังคงผูกของอย่างเซิร์ฟเวอร์ไอเท็มไว้กับเซิร์ฟเวอร์ของ Valve
ไม่รู้ว่านี่คือจุดเริ่มต้นของจุดจบ หรือจุดจบของจุดเริ่มต้นสำหรับ TF2 กันแน่ ก่อนหน้านี้ก็เคยมีการรั่วไหลมาแล้ว แต่ครั้งนี้เป็นข่าวใหญ่จริง ๆ
ทีม TF2 ตอนนี้น่าจะมีคนอย่างมากก็แค่หลักสิบต้น ๆ และเกมนี้ก็เกือบ 18 ปีแล้ว ถึงเวลาที่จะปล่อยให้การพัฒนาต่อเนื่องอยู่ในมือของคอมมูนิตี้ภายนอก
เรียกได้ว่า Valve กำลังสืบทอดธรรมเนียมที่มีต่อเนื่องมากว่า 25 ปี ทุกวันนี้ผู้คนก็ยังสร้างและเล่นแมปใหม่ของ Doom อยู่ ถ้าอิงจากประวัติศาสตร์ ก็อาจเป็นไปได้ว่าเราจะยังเล่น TF2 กันในรูปแบบใดรูปแบบหนึ่งหลังยุค 2050 ไปแล้ว
แค่นี้ก็บอกอะไรได้หลายอย่างแล้วที่พวกเขาทำแบบนี้ก่อนจะคอมไพล์ใหม่สำหรับ Mac 64 บิตเสียอีก ดูชัดเจนว่า Valve ไม่ได้มองว่า Apple เป็นคู่ค้าที่น่าทำธุรกิจด้วย
พอเห็นว่า Apple พยายามขังนักพัฒนาเกมไว้ใน App Store ก็พอเข้าใจได้
การที่ Apple ภูมิใจนำเสนอกราฟิกระดับ Tomb Raider 2 แบบกลางๆ ก็ไม่ได้ทำให้นักพัฒนาเกมที่ไม่ได้รับการสนับสนุนจากแคมเปญโปรโมตของ Apple รู้สึกมีความหวังเท่าไรนัก แถมยังเป็นแพลตฟอร์มที่เล็กกว่า Linux เสียอีกเมื่อวัดจากจำนวนผู้เล่น
ถ้าไม่มั่นใจว่าจะมีฐานผู้เล่นที่ดีพอ ก็แทบไม่มีเหตุผลทางธุรกิจให้บริษัทเกมต้องมาเพิ่มประสิทธิภาพสำหรับ Mac ผู้ใช้ที่ซื้อ Mac ได้ก็มักมีโอกาสซื้อคอนโซลได้ด้วย
บน Linux ยังพอฝืนรันเกมได้ด้วย wrapper และวิธีอ้อมต่างๆ แต่บน Mac เครื่องมือยังไม่สุกงอมพอจนต้องมาปรับแต่งเองโดยตรง เกมบน Linux ก็มีปัญหาเรื่อง DRM/ระบบป้องกันโกงเข้ากันไม่ได้เยอะอยู่แล้ว และถ้าใช้เครื่องมือที่ยังไม่สมบูรณ์ก็ยิ่งแย่เข้าไปอีก
Apple เองก็ดูไม่ค่อยสนใจเรื่อง backward compatibility เท่าไร ตัด 32 บิตทิ้งไปโดยไม่มีเหตุผลชัดเจนนอกจาก “ไม่อยากรักษาความเข้ากันได้” และก็ไม่มีใครรู้ว่า API ทางเลือกที่มีอยู่ตอนนี้จะถูกเก็บไว้อีกนานแค่ไหน Linux ก็มีปัญหาคล้ายกัน ดังนั้นวิธีพื้นฐานในการเล่นเกมบน Linux จึงมักเป็นการรันในสภาพแวดล้อม Windows ที่จำลองไว้
ดูเหมือนว่าบริษัทเกมน่าจะเลือกคอมไพล์เกมใหม่สำหรับ Snapdragon ก่อน Mac เสียอีก กว่าจะทำให้ไลบรารี x86 แบบ 32 บิตรันบน ARM ได้โดยไม่ต้องจำลอง Apple ก็คงเปลี่ยน API และข้อกำหนดไปอีกหลายรอบแล้ว เลยไม่ค่อยมีเหตุผลให้ทำ
คนชอบล้อคำพูด “devs devs devs” ของ Balmer แต่เขาพูดถูกมากพอสมควร Microsoft ทุ่มเงินมหาศาลเพื่อดึงนักพัฒนาเข้ามา และผลก็คือได้สถานะเกือบผูกขาดในเกมพีซี
อย่างน้อยก็ดูเหมือนว่าจะมาในความหมายที่ว่าเป็น x86-64 ซึ่ง Apple Silicon รองรับผ่าน Rosetta 2 ได้ดีกว่า
ก็ถือว่ามากกว่าที่คิด แต่ถ้าไม่มีเกมที่รองรับก็แทบไม่มีเหตุผลให้ติดตั้ง Steam ด้วยซ้ำ Apple เองก็เพิ่งเริ่มเปลี่ยนมาสนับสนุนเกมมากขึ้นเมื่อไม่นานนี้ ดังนั้นจะพอร์ตเกมอายุ 20 ปีจึงไม่ใช่เรื่องน่าแปลก
มีคำพูดของ Gabe ในปี 2007 ที่ใกล้เคียงที่สุด เวลาพบ Apple คนฝั่งนั้นจะพูดว่า “เกมสำคัญมาก เราต้องทำอะไรสักอย่าง” แล้ว Valve ก็ตอบว่า “ถ้างั้นทำสามอย่างนี้จะดีขึ้น” จากนั้นอีกฝ่ายก็บอกว่ารับทราบแล้วหายไปเลย วนแบบนี้ซ้ำๆ และพอคนภายใน Apple เปลี่ยน วงจรเดิมก็เริ่มใหม่อีกครั้ง
ในรายการความต่างยังมี ไฟล์ HL3 เล็กๆ อยู่ด้วย: https://github.com/ValveSoftware/source-sdk-2013/commit/0759...
Valve ยังชนะอยู่เรื่อยๆ
กลัววันที่ Gaben เสียชีวิตหรือวางมือ หวังว่า Valve จะหาผู้สืบทอดที่ยอดเยี่ยมได้ แต่ก็ไม่ใช่เรื่องแปลกที่บริษัทจะเสียทิศทางหลังคนรุ่นผู้ก่อตั้งหายไป
ถึงอย่างนั้นก็ยังขอบคุณ Steam ไปตลอดกาลที่ทำให้รันเกม Windows บน Linux ได้แบบไม่ทรมาน จนไม่ต้องไปยุ่งกับ Microsoft ในชีวิตส่วนตัวอีก ในฐานะผู้จัดจำหน่ายเกมนั้นยอดเยี่ยมมาก และการจัดจำหน่ายเกมก็คือสิ่งที่ Valve ทำได้ดีที่สุด
รอบการออกเกมของ Valve แทบหยุดนิ่งแล้ว และกำลังพึ่งพา cash cow อยู่ Gabe อายุ 62 แล้ว และดูเหมือนจะสนใจฝั่งคู่แข่งของ Neuralink มากกว่า
คนลืมกันไปว่า TF2 เป็นหนึ่งในตัวอย่างยุคแรกๆ ของเกมฝั่งตะวันตกที่เอา loot box มาใช้ ตั้งแต่ก่อน Overwatch จะออกอีก Portal 2 ก็ยังยัดมันเข้ามาในโหมด co-op แบบไม่จำเป็น นั่นแหละคือเหตุผลที่พวกเขาหยุดออกประสบการณ์แบบซิงเกิลเพลเยอร์ ถ้าไม่นับ Half-Life: Alyx ที่เป็นข้อยกเว้น
CS:GO แย่ที่สุด มีเว็บไซต์บุคคลที่สามให้พนันด้วยสกินปืน และเล็งเป้าไปที่เด็กอย่างเปิดเผย วงการโปรของ CS:GO แทบทั้งหมดก็ได้รับการสนับสนุนจากสิ่งนี้
เว็บไซต์พนันสกินไม่ใช่สิ่งที่ Valve อนุมัติอย่างเป็นทางการ แต่ในทางปฏิบัติก็แทบไม่ได้พยายามหยุดมันเลย
ตอนนี้ก็สงสัยว่าจะเริ่มรับ pull request แล้วหรือยัง มีบั๊กหลายอย่างในเกมที่อยากให้แก้
หงุดหงิดกับปัญหาที่ลำแสงของ Medigun ไม่ตรงกับโมเดลมาแทบ 10 ปีแล้ว
ที่เก็บของ Half-Life ก็เป็นแบบเดียวกัน ตอนที่งานครบรอบ 25 ปีถูกเปิดเผย ก็ถูก push มาเป็นแพตช์ก้อนมหึมาก้อนเดียว