เอกสาร Steamworks
การพัฒนาสำหรับ SteamOS และ Linux

ภาพรวม Linux

ในขณะนี้ Steam สำหรับ Linux พร้อมใช้งานแก่ผู้ใช้งาน Steam ทุกท่านแล้ว ด้วยการมีรายชื่อเกมที่รองรับ Linux เพิ่มขึ้นอย่างต่อเนื่อง กับกลุ่มชุมชน Steam สำหรับ Linux ที่มีความตื่นตัว ก็ถือเป็นเวลาที่ดีที่จะพอร์ตเกมของคุณมาลง Linux แล้ว

การพัฒนาเกมสำหรับ Steam ลงบน Linux นั้นถือเป็นความท้าทายสำหรับผู้พัฒนาที่มาจากระบบปฏิบัติการ Windows หรือ macOS ข้อมูลดังต่อไปนี้จะช่วยให้คุณสามารถพอร์ตเกมของคุณมาลง Steam สำหรับ Linux ได้อย่างประสบความสำเร็จ

การเริ่มต้นใช้งาน

ในการสร้างเกมสำหรับ Linux นั้นจำเป็นจะต้องใช้องค์ประกอบดังต่อไปนี้:

  • เครื่องสำหรับการพัฒนาที่ใช้งาน Linux เวอร์ชันที่ได้อัปเดตล่าสุด โดยจะเป็นเครื่องประเภท dual-boot ก็ได้ เป็นเครื่องสำหรับ Linux โดยเฉพาะก็ได้ หรือจะเป็น Virtual Machine ที่รัน Linux ก็ได้ นอกจากนั้น ก็ยังให้การรองรับการพัฒนาและจัดจำหน่ายบน Linux ทั้ง 32 และ 64 บิต ขอแนะนำให้ใช้ Linux Ubuntu LTS รีลีสล่าสุด เพราะได้รับการทดสอบมากที่สุดจากทาง Valve และชุมชน Linux Ubuntu สามารถติดตั้งได้จากที่นี่
  • Steam สำหรับไคลเอนต์ Linux
  • ชุดเครื่องมือพัฒนา Linux พื้นฐาน (เช่น g++, gcc, และ make utility) จะบรรจุเอาไว้ในแพ็กเกจพื้นฐานสำหรับการบิลด์ ให้ติดตั้งแพ็กเกจดังกล่าวนี้ด้วยการใช้ Ubuntu Software Center หรือเปิดจากหน้าต่างเทอร์มินัลด้วยคำสั่ง apt-get: sudo apt-get install build-essential
  • เวอร์ชันล่าสุดของ Steam Linux Runtime จะบรรจุเอาไว้ด้วยเครื่องมือและชุดไลบรารีครบชุดที่จำเป็นในการนำส่งเกม Linux ผ่านทาง Steam สามารถดูวิธีการใช้งานรันไทม์เหล่านี้ได้ใน README.md ที่บรรจุไว้ภายในเรโพสิทอรี่

ถ้าคุณมีคำถามทั่วไปเกี่ยวกับ Linux Steamworks หรือต้องการจะแจ้งปัญหาเกี่ยวกับรันไทม์ โปรดเข้าร่วม กลุ่มการพัฒนา Steamworks แล้วโพสต์ลงไปบนกระดานสนทนา Linux

เครื่องมือ Linux

There is a vast array of Linux development tools ranging from command-line interfaces to graphical developer IDEs. ข้อมูลดังต่อไปนี้จะอิงตามประสบการณ์การใช้งานของทีม Linux ของ Valve

For those with Windows development tool experience, the easiest route to Linux development is Visual Studio on Windows and WinGDB - a Visual C++ extension that allows debugging of remote Linux processes, using the Visual Studio debugging interface.

สำหรับการพัฒนาบน Linux ทีม Linux ของ Valve ได้ใช้เครื่องมือดังต่อไปนี้:
  • QtCreator - a debugger and IDE with familiar Visual Studio key bindings.
  • SlickEdit - ให้ GUI แบบกำหนดเองพื้นฐานพร้อมการเชื่อมโยงคีย์ที่ผู้ใช้กำหนด
  • gdb - เครื่องมือดีบักแบบบรรทัดคำสั่งที่นิยม
  • cgdb - แรปเปอร์ gdb ที่ให้มุมมองแบบแยกจอของตำแหน่งปัจจุบันในซอร์ซโค้ดในเวลาที่ใช้งาน
  • Eclipse - IDE อีกแบบหนึ่งที่สามารถกำหนดค่าสำหรับการพัฒนา Linux พร้อมใช้งานบน Windows,
    macOS และ Linux
  • vim - a basic command-line text editor.

ทีม Linux ของ Valve จะใช้งานเครื่องมือดีบักและเครื่องมือติดตามต่อไปนี้:
  • QtCreator - โปรดดูด้านบน
  • เซิร์ฟเวอร์สัญลักษณ์
  • PerfStudio - a fully-featured, frame-based debugger with support
    for API-tracing for games running on AMD graphics cards. พร้อมใช้งานบน Windows
  • Telemetry - ตัวสร้างโปรไฟล์ที่มีคุณสมบัติเต็มรูปแบบสำหรับเกมที่ทำงานบนการ์ดกราฟิก พร้อมใช้งานบน
    Linux, Windows, และ macOS
  • gDEBugger - เครื่องมือดีบักที่ดีบัก สร้างโปรไฟล์ และวิเคราะห์รหัส OpenGL การพัฒนาที่ใช้งานอยู่ได้เปลี่ยนไปเป็น
    CodeXL
  • perf - เครื่องมือแบบบรรทัดคำสั่งพร้อมคุณสมบัติประสิทธิภาพต่าง ๆ พร้อมใช้งานบน Linux
  • NVIDIA Nsight - ส่วนขยายสำหรับ Visual Studio สำหรับการดีบักเกมที่ทำงาน
    บนการ์ดกราฟิก Nvidia
  • lTTng - เครื่องมือติดตาม Linux
  • apitrace project - ชุดเครื่องมือติดตามและรีเพลย์การเรียก OpenGL และ OpenGL ES จากเกมของคุณ
  • Zoom - เครื่องสร้างโปรไฟล์ CPU ซึ่งมีอินเตอร์เฟซที่ทรงพลังและใช้งานง่าย

Linux API

Vulkan เป็นไลบรารีที่แนะนำสำหรับการเรนเดอร์กราฟิกประสิทธิภาพสูง เป็นแบบเปิดเทียบเท่า DirectX12 และ Metal

OpenGL เป็นการเรนเดอร์กราฟิกมาตรฐานแบบเก่า เกมส่วนมากจะทำการเรียกไปยัง OpenGL โดยตรง แต่ว่ายังมีเกมอื่นที่ใช้กระบวนการแปลงวิธีการโดยแปลโค้ดเรนเดอร์แบบดั้งเดิมไปเป็นการเรียก OpenGL This is the approach used by older Valve Source games such as Team Fortress 2 and Counter-Strike: Source. ถ้าคุณเลือกใช้ OpenGL เราขอแนะนำให้คุณใช้ฟังก์ชันการใช้งานหลักใน OpenGL 3.0 สำหรับเกมของคุณ

Simple DirectMedia Layer (SDL) เวอร์ชัน 2.0 จะให้การเข้าถึงเสียงและการจัดหน้าต่างระดับต่ำและการใช้งานอื่น ๆ อีกมากมาย ใช้ OpenGL ในการรองรับการเรนเดอร์แบบ 3D คำแนะนำในการติดตั้งสามารถอ่านได้ ที่นี่ For more information and documentation, see the SDL wiki. Valve uses this in Steam and most of our games to handle windowing and it provides the backend which powers the Steam Input API.

คลังต่อไปนี้จะให้การรองรับการพัฒนาเกมในด้านอื่น ๆ:
  • FreeType - การเรนเดอร์ (ทั้งฟอนต์แบบ vector และ bitmap) บน Linux
  • Fontconfig - การกำหนดค่าและการปรับแต่งสิทธิ์การเข้าถึงฟอนต์
  • Miles Sound System - เอนจินเสียงมิดเดิลแวร์สำหรับการพัฒนา Linux
  • Bink Video - a video codec designed for game developers
  • WebM - รูปแบบไฟล์ประเภทโอเพนมีเดียใช้สำหรับบันทึกวิดีโอ Team Fortress 2 แทน QuickTime

เรโพสิทอรี่ของ GitHub

ที่เก็บต่อไปนี้เป็นที่เก็บสาธารณะ และใช้สำหรับงานที่เกี่ยวข้องกับ Steam สำหรับ Linux
  • steam-for-linux - บรรจุไว้ด้วยเนื้อหาสำหรับไคลเอนต์ Steam บน Linux และตัวติดตามบักสำหรับไคลเอนต์ Steam บน Linux
  • steam-runtime - บรรจุไว้ด้วยโปรเจกต์ Steam Linux Runtime โดยมีจุดประสงค์ไว้เพื่อให้สภาพแวดล้อมรันไทม์ที่มีความเสถียรภาพแก่การพัฒนาเกม Steam บน Linux

    คำถามที่พบบ่อย

    ถาม: เกม Linux ของฉันมีการพึ่งพาไลบรารีภายนอกหลายประเภท ฉันจะแก้ปัญหานี้ได้อย่างไร?
    ตอบ: ไลบารียอดนิยมมากมาย เช่น SDL, OpenAL, FreeType และ Fontconfig ทั้งหมดถูกรวมอยู่ใน Steam Linux Runtime เพื่อความสะดวกในการใช้งานของคุณ If you have other external library dependencies which are not in the runtime and are freely redistributable, please bring it up on the Linux & SteamOS Steamworks Development Discussions board.

    ถาม: มี Steam DRM สำหรับ Linux หรือไม่?
    ตอบ: ใช่ เครื่องมือ drmtoolp DRM ใหม่ประกอบด้วยการรองรับ Linux See Steam DRM for more information.

    ถาม: ประสิทธิภาพของไดรเวอร์มีความแตกต่างกันอย่างไรบ้างเมื่อเทียบระหว่าง Ubuntu และ Windows?
    ตอบ: ไดรเวอร์ที่เป็นกรรมสิทธิ์ของ Nvidia จะสามารถเทียบเคียงได้กับ Windows ในด้านของเสถียรภาพ ประสิทธิภาพ และคุณสมบัติ นอกจากนั้น ไดรเวอร์ที่เป็นกรรมสิทธิ์ของทั้ง AMD และ Intel ก็พร้อมใช้งานด้วยเช่นกัน แต่ประสิทธิภาพและเสถียรภาพในปัจจุบันจะต่ำกว่าไดรเวอร์ Windows ที่เทียบเท่ากัน

    ในด้านประสิทธิภาพของ Linux แล้ว จะแตกต่างกันตามการ์ดวิดีโอและประเภทของไดรเวอร์ที่ใช้งาน ตัวอย่างเช่น ระหว่างประเภทโอเพนซอร์ซ และ ประเภทกรรมสิทธิ์ โดยทั่วไปแล้ว ไดร์เวอร์ประเภทกรรมสิทธิ์จะให้ประสิทธิภาพที่ดีกว่าประเภทโอเพนซอร์ซ และมีชุดคุณสมบัติใช้งานที่มากกว่า นอกจากนั้น อายุของไดรเวอร์ระหว่างประเภทกรรมสิทธิ์และประเภทโอเพนซอร์ซก็มีความแตกต่างกันด้วย

    ถาม: โอเวอร์เลย์ Steam จะไม่ทำงานเมื่อเริ่มจากภายนอก Steam
    ตอบ: บน Linux คุณต้องตั้งค่าตัวแปรสภาพแวดล้อม LD_PRELOAD ให้โหลด gameoverlayrenderer.so

    และจะมีลักษณะที่คล้ายคลึงดังต่อไปนี้:
    export LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so;~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so

    ถาม: ฉันควรใช้รันไทม์ใดในการทดสอบบิลด์ Linux ของฉัน?
    ตอบ: ขอแนะนำให้ใช้ Linux Ubuntu LTS รีลีสล่าสุด เพราะได้รับการทดสอบมากที่สุดจากทาง Valve และชุมชน Linux Ubuntu สามารถติดตั้งได้จากที่นี่