Tài liệu Steamworks
Tổng quát về các khái niệm

Steam Input

"Steam Input" là thuật ngữ chung để chỉ tổng thể bộ sưu tập phần mềm, phần cứng và các thiết lập tiện ích mà Steam dùng để giao tiếp với trò chơi.

Thiết lập Steam Input

Bộ thiết lập Steam Input (Steam Input Configurator - SIC) được tích hợp vào phần mềm Steam và là cầu nối giữa người chơi với trò chơi/ứng dụng. SIC nhận tương tác từ thiết bị đầu vào của bạn, và dịch chúng thành dữ liệu phù hợp tùy vào thiết lập của người chơi trước khi truyền tới trò chơi.

SIC có thể dùng theo hai cách chính: chế độ legacynative.

Chế độ Legacy

Chế độ legacy là chế độ tương thích được thiết kế cho trò chơi chưa triển khai API Steam Input. Trong trường hợp này, SIC đóng vai trò là bộ công cụ gán nút cầu kỳ mà bất kỳ người chơi nào cũng có thể dùng cho bất kỳ trò chơi nào trên Steam.

Người chơi có thể gán bất kỳ tương tác vật lý nào thành một tương tác vật lý khác -- ví dụ như biến nút "A" thành phím "Enter" trên bàn phím, hay kéo hết nút cò trái để giả lập nhấp chuột v.v. Chế độ này hoạt động với bất kỳ thiết bị đầu vào nào được hỗ trợ, chứ không chỉ Steam Controller.

Chế độ legacy hoạt động tốt với trò chơi chưa bao giờ hỗ trợ API, nhưng cũng có hạn chế riêng của nó. Ví dụ, trò chơi được lập trình theo cách để giả định rằng tay cầm lẫn tương tác chuột sẽ không bao giờ được đồng thời dùng chung. Các trò chơi này sẽ gặp nhiều sự cố khác nhau khi thiết lập của bạn vi phạm giả định đó. Hơn nữa, trò chơi sẽ không biết bạn đang dùng bộ công cụ thiết lập (nó chỉ nhận được tín hiệu phần cứng đầu vào cấp độ thấp mà bộ thiết lập đang giả lập) vậy nên các ký hiệu trên màn hình cho tay cầm sẽ nhiều khả năng không khớp.

Chế độ Native

Trong chế độ Native, trò chơi nhận dữ liệu trực tiếp từ bộ thiết lập theo khái niệm "hành động." Ý tưởng ở đây là trò chơi không biết tương tác đầu vào nào đang diễn đạt hành động đấy, nó chỉ biết hành động đó đang diễn ra. Toàn bộ thiết lập của bộ thiết lập và cơ chế điều khiển được thiết lập Steam Input quản lý. Tuy vậy, trò chơi có thể yêu cầu thông tin qua một call API đặc biệt về loại điều khiển vật lý nào được gán với hành động nào, với mục đích thuần túy là hiện đúng biểu tượng nút trên màn hình.

API Steam Input

API Steam Input là giao diện ứng dụng lập trình để nhà phát triển đối thoại trực tiếp với SIC trong chế độ Native. Không cần phải có API này để hỗ trợ chế độ Legacy.

Bạn có thể tìm thấy toàn bộ tài liệu của chủ đề này tại đây: ISteamInput.

Thiết lập tay cầm

Người chơi có thể gán phím cho bất kỳ trò chơi nào trong thư viện của họ, dùng chế độ native, legacy hoặc thậm chí pha trộn giữa cả hai. Việc gán phím này gọi chung là "thiết lập tay cầm" và người chơi có thể thực hiệu nhiều lần cho cùng một trò chơi, thậm chí chia sẻ cách gán phím lên trên mạng.

Phân cấp đầu vào

Tương tác vật lý

"Tương tác vật lý" là hành động thực tương tác lên bất kỳ thiết bị đầu vào nào mà người dùng thực hiện để tạo dữ liệu đầu vào cho máy tính. Các tương tác vật lý này có thể ở cả hai kiểu kỹ thuật số và cơ học, ví dụ như: nút ấn, cần trỏ, Dpad, nút đệm, nút cò, công tắc, các nút hat, bi lăn, bàn rê, gyro v.v...

Chúng ta sẽ sớm nói về các khái niệm trừu tượng vậy nên hãy nhớ "tương tác vật lý" là những phần trên thiết bị đầu vào bạn cần vung tay múa chân để dùng.

Nguồn đầu vào

"Nguồn đầu vào" là vùng của thiết bị có thể được coi như là một đơn vị mô đun lớn hơn với khả năng được áp dụng nhiều chế độ khác nhau, từ đó chuyển đổi cách nó xuất dữ liệu ra.

Thấy trừu tượng chưa nào!

Giờ nói thế này cho dễ hiểu: điều khác biệt giữa Dpad với bốn nút mặt được đặt theo hình đông tây nam bắc là gì?

input_dpad.pnginput_bpad.png

Cả hai đều có bốn "nút" kỹ thuật số, nhưng đa phần Dpad là thiết kế vật lý nên không thể ấn cùng lúc Lên+Xuống hoặc Trái+Phải, trong khi đó bốn nút mặt kia có thể ấn độc lập. Tuy nhiên, Steam Input cho phép bạn áp đặt các hạn chế của Dpad lên trên nút hướng mặt.

Vậy nên dù Dpad và nhóm nút hướng mặt đều gồm bốn "tương tác vật lý" riêng biệt, sẽ tiện hơn khi nghĩ rằng "Dpad" và "nút hướng mặt" là một đơn vị riêng, vậy nên ta có thể thay đổi hành vi của tất cả đầu vào.

Danh sách đầy đủ của các "nguồn đầu vào" được nhận diện:

  • Bàn rê trái
  • Bàn rê phải
  • Bàn rê giữa
  • Cần trỏ trái
  • Cần trỏ phải
  • ABXY
  • DPAD
  • Cò trái (LT)
  • Cò phải (RT)
  • Gyro
  • Công tắc (Switch)
LƯU Ý: Các nguồn đầu vào thuộc nhóm "Switch" là để chỉ chung mọi đầu vào vật lý không thuộc các nhóm còn lại, như nút back & start, nút vai trái & phải, nút lưng.

Xem thêm:

Chế độ nguồn đầu vào

Nguồn đầu vào có thể có nhiều chế độ khác nhau áp đặt lên để thay đổi hành vi. Chúng được gọi chung là "chế độ nguồn đầu vào." Mặc dù hữu dụng cho các đầu vào kỹ thuật số, bạn sẽ thấy mình dùng chế độ nguồn đầu vào nhiều nhất là trên điều khiển cơ học, đặc biệt với bàn rê có thể được cấu hình theo nhiều cách khác nhau.

Danh sách đầy đủ của các "chế độ nguồn đầu vào" được nhận diện:

  • Dpad
  • Bốn nút
  • Chuột tuyệt đối
  • Chuột tương quan
  • Chuyển động cần điều khiển
  • Cần điều khiển chuột
  • Cần điều khiển camera
  • Nút cuộn
  • Nút cò
  • Menu cảm ứng
  • Cần trỏ chuột
  • Vùng chuột
  • Menu tròn
  • Công tắc (Switch)

Xem thêm:

Để tóm tắt gọn lại:

Tương tác vật lý:
Là hành động vật lý thực tế bạn cần để tương tác với thiết bị. Ví dụ: nút A, tương tác "lên" trên Dpad v.v...

Nguồn đầu vào:
Một nhóm lớn của các tương tác vật lý đầu vào riêng biệt có thể được gộp vào trong một đơn vị mô đun. Toàn bộ Dpad, bốn nút hướng mặt, toàn bộ cấu tạo của nút cần trỏ, v.v...

Chế độ nguồn đầu vào:
Một hành vi cụ thể bạn áp đặt lên trên một nguồn đầu vào. Ví dụ: "Khiến nút hướng mặt có hành vi như Dpad", "Làm cần trỏ trái có hành vi như bốn nút hướng mặt", v.v...

Hành động

Hành động là các sự kiện mà API Steam Input dùng để hòa phối tất cả. Trong chế độ native, trò chơi không nhận sự kiện "nút A được ấn", nó chỉ nhận sự kiện "Nhảy" (hoặc sự kiện nào đó khác), còn loại đầu vào nào quyết định hành động "Nhảy" hoàn toàn do người chơi chọn.

Hành động kỹ thuật số

Hành động kỹ thuật số là loại đơn giản và phổ biến nhất. Chúng chỉ có giá trị bật hoặc tắt, vậy nên trò chơi chỉ đơn giản thăm dò liên tục và nghe trạng thái của các hành động này.

Hành động cơ học

Hành động cơ học có một hoặc nhiều trục dữ liệu được dùng cho các việc như di chuyển mượt mà nhân vật, lái xe, điều khiển camera, v.v. Các hành động cần trỏ và chuột tiêu chuẩn thường có hai trục, X và Y, nhưng hành động cơ học một trục vẫn khả thi (ví dụ như các hành động thường gắn với nút cò cơ học); trong trường hợp này dữ liệu hành động vẫn sẽ báo cáo hai trục, nhưng trục Y luôn luôn bằng không.

Tên hành động

Tất cả hành động cần phải có tên để phân biệt như "nhảy" hoặc "đấm". Các giá trị chuỗi này khác với văn bản người chơi thấy (chúng là "Nhãn hành động", và có thể được bản địa hóa).

Handle của hành động

Chờ nhận hành động dựa theo tên chuỗi sẽ tốn kém và không hiệu quả, nên trò chơi của bạn khi khởi động API phải đăng ký tất cả hành động bằng tên, rồi nhận các handle hành động dưới dạng số nguyên tương ứng.

Nguồn hành động

"Nguồn hành động" là chuỗi xác định loại đầu vào nào được gán vào hành động trong thiết lập thiết bị đầu vào của người chơi.

Bộ hành động

Bộ hành động là nhóm logic của các hành động liên quan. Chỉ duy nhất một bộ hành động có thể kích hoạt cùng lúc với bất kỳ thiết bị đầu vào nào. Ví dụ, bạn có thể tạo bộ hành động "menu" chỉ dùng khi thao tác menu, cũng như bộ hành động "lái xe", "đi bộ", và "bay lượn" cho các trò như GTAV với nhiều chế độ điều khiển phương tiện và di chuyển khác nhau. Bộ hành động tồn tại trong cả chế độ native lẫn legacy. Trong chế độ native, chúng được định nghĩa riêng biệt bởi nhà phát triển và trò chơi sẽ gọi API để chỉ định bộ hành động nào hiện đang có hiệu lực. Trong chế độ legacy, thay đổi bộ hành động phải do người chơi thực hiện thủ công. Trong cả hai trường hợp, bộ hành động là cách để giải phóng không gian cho thiết bị đầu vào bằng cách gỡ bỏ nhu cầu cần phải gán vĩnh viễn tất cả hành động có thể xảy ra ở bất kỳ đâu trong trò chơi và luôn phải bật nó.

Lớp bộ hành động

Lớp bộ hành động là bộ gán nút hành động không bắt buộc, có thể được đặt lên một bộ cơ chế điều khiển sẵn có. Trái với bộ hành động, các lớp lấy hành động từ bộ hành động của nó và không thay thế hàng loạt những gì đang được sử dụng, mà chỉ áp dụng vài điều chỉnh nhỏ. Các điều chỉnh bao gồm thay đổi về thiết lập cũng như thêm hoặc xóa cấu hình gán từ bộ hành động gốc. Có thể áp dụng nhiều hơn một lớp tại một thời điểm và sẽ thực hiện liên tục.

Để biết thêm chi tiết, xem Lớp bộ hành động.

Phản hồi vật lý

Ngoài những gì diễn ra trên màn hình, một số thiết bị đầu vào có khả năng đưa ra phản hồi tới người chơi thông qua xung động và ánh sáng.

Tương tác haptic

Tạo cảm giác phản hồi vật lý với độ chân thực cao, giúp người chơi xác định vị trí của bàn tay và ngón tay trên bề mặt cảm ứng lớn, cũng như để cảm nhận các yếu tố vật lý, ví dụ: quán tính ảo của một bi lăn được giả lập. Tương tác haptic được hỗ trợ trên Steam Controller và một vài tay cầm của Nintendo Switch. Các thiết bị không được hỗ trợ sẽ phớt lờ call API cho tương tác haptic.

Rung

Một dạng phản hồi vật lý truyền thống, rung được gây ra bởi xung động các mô tơ đặt bên trong thiết bị. Tính năng này được hỗ trợ trên tay cầm PlayStation 4 và Xbox (cũng như các thiết bị phổ thông khác tương thích với Xinput). Steam Controller không có rung đúng nghĩa, nhưng nó có giả lập gần giống với tương tác haptic (và vì thế sẽ phản hồi với các call API cho rung).

Đèn LED

Steam Controller và tay cầm PlayStation 4 đều tích hợp sẵn đèn LED trên thiết bị. Đèn của Steam Controller luôn là màu trắng, nhưng tay cầm PlayStation 4 có tính năng LED màu hoàn toàn lập trình được. Cả hai thiết bị sẽ đều phản hồi với call API đổi màu sắc, nhưng Steam Controller sẽ chiếu màu đơn sắc và chỉ điều chỉnh độ sáng, trong khi tay cầm PlayStation 4 có thể điều khiển màu lẫn độ sáng. Các thiết bị không được hỗ trợ sẽ phớt lờ call API cho đèn LED.