Tài liệu Steamworks
Menu tròn
Menu tròn là một lớp phủ trên màn hình diễn tả các hành động trong trò chơi, hiển thị dưới dạng vòng và dùng tay cầm để chọn. Chúng rất giống Menu cảm ứng, nhưng thay vì chọn một vị trí chỉ định trên bề mặt cảm ứng, người chơi phải dùng con trỏ ảo chỉ đến tùy chọn mình muốn, rồi chọn để kích hoạt hành động.

Bạn có thể dùng chúng để chuyển vũ khí trong trò chơi bắn súng góc nhìn thứ nhất, bật tắt phím nóng trong chiến thuật thời gian thực hay MMO, hoặc theo bất kỳ kiểu nào mình có thể nghĩ ra. Menu tròn có thể được thiết lập theo nhiều cách, từ hành vi cho đến kiểu dáng, và có thể được gắn thêm các nhãn và biểu tượng riêng (cung cấp bởi Valve, nhà phát triển, hoặc người chơi).

Sau đây là ví dụ về menu tròn để chọn nhanh phép trong Defender's Quest: Valley of the Forgotten:

dqdx_radial_menu.png

Menu tròn tại trung tâm màn hình không phải là một phần code của Defender's Quest. Nó hoàn toàn được tạo bởi lớp phủ Steam và thiết lập Steam Input. Còn với ứng dụng Defender's Quest, nó chỉ đơn giản nhận tín hiệu các hành động từ API Steam Input.

Menu tròn có cả trong chế độ native lẫn legacy, nhưng chỉ có thể được điều khiển bởi Nguồn đầu vào:

Nguồn đầu vàoHỗ trợ Menu tròn
Bàn rê
DPad
Bảng nút
Cần trỏ
Gyro
Công tắc (Switch)

Để tạo menu tròn, chỉ cần chọn nguồn đầu vào tương thích với thiết lập của trò chơi (như cần trỏ hay bàn rê), và chọn "Menu tròn" làm kiểu tương tác.

radial_menu_create.png

Màn hình thiết lập menu tròn sẽ trông như thế này:
radial_menu.png

Tùy chọn cơ bản

Cách kích hoạt menu


Quyết định cách menu tròn hoạt động -- liệu hành động có nên thực thi khi bạn chỉ vào nó rồi thả, hay phải nhấp cái gì dó trước, hay nên liên tục thực hiện miễn còn được chỉ đến?

Các tùy chọn là:

Cách kích hoạt menuMô tả
Nhấn nútHành động được chọn sẽ thực thi khi bạn ấn tương tác
Thả nútHành động được chọn sẽ thực thi chỉ khi bạn ấn rồi thả tương tác
Ngừng chạm/Kết thúc chuyển chế độHành động được chọn sẽ thực thi khi ngừng tương tác (như thả nút hoặc nhấc tay lên khỏi bàn rê/cần trỏ) hoặc, nếu menu tròn đang ở kiểu chuyển chế độ, thì làm khi chuyển chế độ kết thúc.
Luôn luônThực thi hành động miễn là nó được chọn

Tùy chọn khác


Tùy chọnMô tả
Vị trí trên màn hình theo trục tung / hoànhMenu tròn nên hiện ở đâu trên màn hình? Giá trị từ 0.0-1.0, với số không đại diện cho rìa trái/trên cùng màn hình, và một đại diện cho rìa phải/dưới cùng.
Độ mờ menuMenu tròn có nền đen và bạn có thể kiểm soát độ trong suốt của nó. Tuy thế, bản thân biểu tượng của hành động sẽ luôn luôn hiện với độ mờ 100%.
Kích cỡ menuMenu lớn cỡ nào? Chỉ số từ 0.0-1.0, từ nhỏ nhất đến lớn nhất.
Hiển thị nhãn lệnh trên nútNút menu tròn có thể hiển thị một nhãn chữ xác định hành động tương tác nào được gán cho nút. Nếu sử dụng biểu tượng, nhãn sẽ hiện ở góc trái phía trên. Khi tắt chức năng hiện nhãn, biểu tượng hoặc nút trống sẽ được dùng.
Hành động nhấpĐây là hành động không gán với bất kỳ đầu vào cụ thể nào, mà thay vào đó là chính menu tròn. Cách này hữu dụng khi kết hợp cùng với kiểu kích hoạt menu tròn "Luôn bật". Một ví dụ điển hình là gán nó với chức năng "tạm dừng," để mỗi khi bật menu tròn lên, trò chơi sẽ tạm dừng để bạn có thời gian chọn lựa.

Nút menu


Mỗi tùy chọn "Nút menu X" có thể gán một hành động (và/hoặc gán phím kiểu legacy) lên nó. Màn hình thiết lập cơ bản có năm nút menu, nhưng bạn có thể gán lên đến hai mươi (chọn "Thiết lập bổ sung" để gán nút menu 6-20).

radial_menu_button.png

Nút ở tâm/chưa chọn


Cũng có tùy chọn nút "trung tâm" để căn giữa vị trí menu tròn, có thể gán được như bất kỳ nút menu tròn nào khác. Lưu ý rằng nút này sẽ gia tăng kích thước theo số lượng nút menu bạn thêm vào.

MẸO: Để lệnh hủy ở trung tâm

Tùy vào trò chơi, bạn có thể muốn người chơi dễ dàng lui ra khỏi menu tròn mà không vô tình kích hoạt cái gì. Nếu bạn đang dùng kiểu kích hoạt "Ngừng chạm/Kết thúc chuyển chế độ", nó có thể hơi rối rắm vì hành động chọn sau cùng sẽ lập tức thi triển khi đóng menu tròn.

Một trong những cách hay là tạo một hành động hoàn toàn không dùng tới trong trò chơi (hãy gọi nó là "đừng bận tâm" hoặc gì cũng được), và gán nó vào nút trung tâm. Hoặc, nếu bạn là người chơi và nhà phát triển chưa thêm hành động đó vào (hoặc bạn ở trong chế độ legacy), gán nút trung tâm vào phím legacy nào đó mà trò chơi không dùng tới. Rồi, chọn một chữ "X" đẹp đẹp cho nút menu này.

Thế là xong! Giờ khi bạn muốn hủy menu tròn mà không thực hiện hành động nào, chỉ cần quay về vị trí trung tâm và thả tương tác ra.

Biểu tượng nút menu


Với mỗi nút menu, bạn có thể gán một biểu tượng. Chọn ô bên cạnh chữ "biểu tượng" và gán:

radial_menu_button_icon.png

Khi chọn một biểu tượng, bạn cũng có thể đổi màu cho nó:

radial_menu_button_icon_color.png

Mặc định, biểu tượng sẽ do Valve cung cấp từ chính phần mềm Steam. Bạn có thể tìm thấy nó tại <SteamInstallDirectory>\Steam\tenfoot\resource\images\library\controller\binding_icons (và nếu bạn tự thêm biểu tượng của mình vào đây, nó sẽ hiện trong menu này, tuy nhiên chỉ dành cho máy của bạn mà thôi). Nhà phát triển có thể tự cung cấp biểu tượng riêng để dùng trong menu tròn (và menu cảm ứng) bằng cách đặt file *.png tại thư mục tên /TouchMenuIcons, tương quan theo thư mục gốc của trò chơi.

Sau đây là ví dụ về một nhà phát triển tự tạo biểu tượng riêng cho trò chơi của họ:

dqdx_sc_radial_icons.png

Vài điều thú vị

Có thể dùng ảnh động GIF làm biểu tượng menu tùy biến!

Menu tròn lồng nhau


Bạn có thể dùng Lớp bộ hành động để tạo các menu tròn lồng vào nhau. Sau đây là một ví dụ với trò Slime Rancher.

Sau đây là liên kết tới thiết lập chúng tôi chuẩn bị phát triển:
steam://controllerconfig/433340/1360133345

Và đây là file IGA đã hoàn thành cho thiết lập mà chúng tôi sẽ tạo:
slime_rancher_nested_radial_menus.vdf

Và đây là cách nó hoạt động trong thực tế:

slime_rancher_0.png

Menu tròn này được gán vào bàn rê trái, và cho phép bạn chọn nhiều tùy chọn trong trò chơi như "Open the Slimepedia", "Toggle radar", "Open the map", v.v. Nhưng nó cũng có một tùy chọn đặc biệt để mở menu tròn được lồng vào bên trong, "System Options":

slime_rancher_1.png

Chọn mục này sẽ kích hoạt lớp bộ hành động "System Options" do người chơi định nghĩa. Và lần tới khi mở menu tròn, thay vào đó chúng ta sẽ thấy như thế này:

slime_rancher_2.png

Giờ chúng ta sẽ có các tùy chọn như "Take screenshot", "Show keyboard", và điều chỉnh âm lượng. Ngoài ra cũng có tùy chọn như "Return", để tắt lớp bộ hành động "System Options" và làm các tùy chọn bình thường hiện lại trong lần mở menu tròn tiếp theo:

slime_rancher_3.png

Sau đây là cách thiết lập. Đầu tiên, chúng ta tạo một lớp bộ hành động tùy biến. Ta nhấp vào "thêm lớp hành động".

slime_rancher_add_layer_1.png

Chúng ta sẽ gọi nó là "System Options".

slime_rancher_add_layer_2_1.png

Sau khi làm xong, ta trở về thiết lập cơ bản và lớp bộ hành động "game controls", rồi chọn bàn rê trái và thiết lập menu tròn cơ bản:

slime_rancher_radial_menu_config_1.png

Mọi thứ đều bình thường ngoại trừ nút menu 5, nó sẽ kích hoạt lớp bộ hành động. Ta làm điều này bằng cách chọn nút đặc biệt "bộ hành động" trong màn hình gán phím và chọn "Áp dụng lớp hành động --> System Options" từ menu hiện lên:

slime_rancher_radial_menu_config_3.png

Lưu ý rằng nút đặc biệt "bộ hành động" này sẽ không hiện trong menu gán phím nếu chưa định nghĩa bộ hành động tùy biến nào. Tức bạn phải tạo một lớp bộ hành động tùy biến trước khi thử thiết lập chức năng bật tắt cho nó. Xem bài viết Lớp bộ hành động để biết thêm thông tin về việc tạo lớp bộ hành động.

Sau khi thiết lập xong menu tròn cơ bản, ta cũng cần thiết lập menu tròn cho lớp bộ hành động được đè lên trên. Ta quay lại màn hình thiết lập căn bản và chọn lớp bộ hành động tùy biến "System Options":

slime_rancher_radial_menu_config_4.png

Rồi ta chọn bàn rê trái trong đó menu tròn được gán vào lớp bộ hành động nằm bên dưới:

slime_rancher_radial_menu_config_5.png

Để ý rằng ta thấy các hành động được gán ở lớp bên dưới có màu xám. Ta có thể ghi đè chúng ở đây để tạo một menu tròn lồng vào nhau. Bất kỳ hành động nào mà ta không đổi sẽ "hiện xuyên" trong lớp menu tròn thứ hai. Ta sẽ ghi đè toàn bộ chúng ở đây với các phím gán cho tùy chọn hệ thống (ngoại trừ hành động trung tâm "đừng bận tâm"). Lưu ý đặc biệt rằng ta gán một lệnh lớp bộ hành động vào nút menu thứ năm, dùng để tắt lớp bộ hành động:

slime_rancher_radial_menu_config_6.png

Và thế là bạn đã làm được! Menu tròn hai lớp.

Xin nhắc lại, đây là liên kết đến thiết lập:
steam://controllerconfig/433340/1360133345

Và file IGA:
slime_rancher_nested_radial_menus.vdf

Tìm hiểu thêm