Search…

Sử Dụng Bluetooth Xây Dựng Multiplayer Game Với Unity

27/09/20206 min read
Hướng dẫn sử dụng Bluetooth LE xây dựng multiplayer game với Unity

Việc hỗ trợ nhiều người chơi là xu hướng tất yếu hiện nay của nhiều game. Thông thường, những người chơi được kết nối với nhau thông qua mạng Internet hay mạng nội bộ (mạng LAN). Tuy nhiên trong 1 số trường hợp các kết nối mạng không khả dụng. Ví dụ như thiết bị đang kết nối với thiết bị khác hay đôi khi chỉ cần sự đơn giản trong việc kết nối 2 thiết bị với nhau.

Lúc này, Bluetooth là giải pháp phù hợp để giải quyết tình trạng người chơi không thể giao tiếp với dựa trên các kết nối mạng thông thường.

Bài viết sử dụng Bluetooth LE for iOS and Android.

bluetooth_le_for_ios_and_android

Công nghệ Bluetooth

Bluetooth được phát hành vào năm 1999 do công ty Sony Erricson phát triển trong thời kì đầu. Bluetooth có chuẩn là IEEE 802.15.1. Bluetooth có thể đạt tốc độ 1Mb/s và sử dụng giải tần 2,4 GHz.

Bluetooth có thể tạo ra 1 mạng lưới không dây giữa các thiết bị như laptop, smartphone. Kết nối giữa các thiết bị input, output như mouse, keyboard, printer.

Máy chơi game WII cũng như console Playstation 3 cũng vẫn sử dụng loại kết nối này.

Phiên bản mới nhất hiện nay của Bluetooth là 4.0 gọi là Bluetooth Smart/Bluetooth low energy, tuy loại này không có kết nối tốc độ cao như 3.0 nhưng điện năng tiêu thụ rất thấp, thường được sử dụng cho các thiết bị điều khiển như remote TV, máy tính bảng, smartphone.

Bluetooth với Unity

Các hàm dưới đây được cung cấp trong package Bluetooth LE for iOS and Android v2.3.unitypackage là 1 package có tính phí của Unity.

Nên trong bài viết này chỉ cung cấp các phương thức để giao tiếp Bluetooth giữa các thiết bị, chứ không cung cấp project.

Log

Cú pháp

public static void Log (string message) 

Chức năng

Hiển thị 1 chuỗi(message) lên màn hình console.

Initialize

Cú pháp

public static BluetoothDeviceScript Initialize (bool asCentral, bool asPeripheral, Action action, Action<string> errorAction)

Chức năng

Khởi tạo 1 hệ thống Bluetooth. Hệ thống có thể hoạt động như 1 Central (tương tự như server để các thiết bị khác có  thể kết nối tới) hay như 1 Peripheral (Client kết nối tới Server có sẵn) hoặc cả 2 dựa vào các tham số asCentral, asPeripheral.

Khi hoàn thành việc khởi tạo thì action sẽ được thực thi. Nếu có 1 error thì errorAction sẽ được gọi và thực thi.

DeInitialize

Cú pháp

public static void DeInitialize (Action action)

Chức năng

Hành động này là hủy khởi tạo và thường được gọi khi các tắt ứng dụng hoặc ngắt kết nối Bluetooth. Khi quá trình hoàn thành thì action sẽ được gọi và thực thi.

FinishDeInitialize

Cú pháp

public static void FinishDeInitialize ()

Chức năng

Phương thức sẽ tự động được gọi bởi BluetoothDeviceScript khi mà Bluetooth được hủy.

PauseMessages

Cú pháp

public static void PauseMessages (bool isPaused) 

Chức năng

Phương thức giúp thông báo cho các hệ thống Bluetooth rằng các ứng dụng nào sẽ được tạm dừng hoặc tiếp tục thực thi dựa vào tham số isPaused.

ScanForPeripheralsWithServices

Cú pháp

public static void ScanForPeripheralsWithServices (string[] serviceUUIDs, Action<string , string> action, Action<string, int, byte[]> actionAdvertisingInfo)

Chức năng

Phương thức sẽ đặt thiết bị vào chế độ tìm tất cả các thiết bị. serviceUUIDs chính là tham số hỗ trợ tìm các Peripheral, nếu giá trị của serviceUUIDsNULL thì tất cả các Bluetooth LE Peripheral sẽ được tìm thấy. Nếu 1 thiết bị được tìm thấy thì action sẽ được gọi với ID và tên của thiết bị vừa được tìm thấy.

StopScan

Cú pháp

public static void StopScan ()

Chức năng

Phương thức này cho phép dừng chế độ tìm quét các thiết bị bằng phương thức ScanForPeripheralsWithServices.

RetrieveListOfPeripheralsWithServices

Cú pháp

public static void RetrieveListOfPeripheralsWithServices (string[] serviceUUIDs, Action <string, string> action)

Chức năng

Phương thức này sẽ lấy về 1 danh sách các thiết bị đang được kết nối tới hệ thống Bluetooth.

ConnectToPeripheral

Cú pháp

public static void ConnectToPeripheral (string name, Action<string> connectAction, Action<string, string> serviceAction, Action<string, string, string> characteristicAction, Action<string> disconnectAction) 

Chức năng

Phương thức này giúp thiết bị cố gắng kết nối tới các thiết bị ngoại vi đã được đặt tên. Nếu kết nối thành công thì connectAction sẽ được gọi cho mỗi dịch vụ thiết bị.

  • Giá trị mặc định cho tham số disconnectActionnull và có khả năng tương thích ngược.
  • Nếu cung cấp 1 callback cho tham số này nó sẽ được gọi bất cứ khi nào kết nối ngắt kết nối thiết bị.

Chú ý: Nếu cung cấp 1 callback cho phương thức DisconnectPeripheral thì cả 2 callbacks đều sẽ được gọi tới.

DisconnectPeripheral

Cú pháp

public static void DisconnectPeripheral (string name, Action<string> action)

Chức năng

Phương pháp này sẽ ngắt kết nối tới 1 thiết bi theo tên. Khi ngắt kết nối hoàn tất thì callback function được gọi với dữ liệu đi kèm là ID của thiết bị.

ReadCharacteristic

Cú pháp

public static void ReadCharacteristic (string name, string service, string characteristic, Ac tion<byte[]> action)

Chức năng

Phương pháp này sẽ bắt đầu đọc 1 đặc tính bằng cách sử dụng tên của các thiết bị ngoại vi mà nó kết nối đến. Nếu đọc là thành công callback funtion sẽ được gọi cùng với đó là các dữ liệu có kiểu dữ liệu là byte.

WriteCharacteristic

Cú pháp

public static void WriteCharacteristic (string name, string service, string characteristic, by te[] data, int length, bool withResponse, Action<string> action)

Chức năng

Phương pháp này sẽ truyền dữ liệu tới các thiết bị ngoại vi đã được kết nối trước đó thông qua name, service. Giá trị để truyền là 1 bộ đệm byte với chiều dài chỉ định trong các thông số dữ liệu và thời gian.

Các tham số withResponse là các action được trả về sau khi truyền dữ liệu thành công hoặc không thành công.

SubscribeCharacteristic

Cú pháp

public static void SubscribeCharacteristic (string name, string service, string characteristi c, Action<string> notificationAction, Action< string, byte[]> action) 

Chức năng

Phương pháp này sẽ đăng ký với thiết bị ngoại vi theo tên, các dịch vụ và đặc điểm. Phương thức notificationAction được gọi bất cứ khi nào có sự thay cập nhật những data từ các thiết bị có kết nối bluetooth.

  • Tham số đầu tiên là UUID.
  • Tham số thứ 2 là các byte dữ liệu thô đã được cập nhật. Phương pháp này là tương thích ngược.

SubscribeCharacteristicWithDeviceAddress

Cú pháp

public static void SubscribeCharacteristicWithDeviceAddress (string name, string service , string characteristic, Action<string, string> notificationAction, Action<string, string, byte[]> action

Chức năng

Phương pháp này sẽ đăng ký với 1 đặc trưng theo tên của thiết bị ngoại vi và các dịch vụ và đặc trưng. Sau notificationAction thì hàm callback được gọi khi thông báo xảy ra là các data được cập nhật bởi các thiết bị ngoại vi.

  • Tham số đầu tiên là địa chỉ thiết bị.
  • Tham số thứ 2 là UUID.
  • Tham số thứ 3 là các byte dữ liệu thô đã được cập nhật.

UnSubscribeCharacteristic

Cú pháp

public static void UnSubscribeCharacteristic (string name, string service, string characteristic, Action<string> action) 

Chức năng

Phương pháp này là hủy đăng ký các đặc tính của bluetooth theo tên, dịch vụ và đặc điểm. Khi hoàn thành thì các callback function được thực thi.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024