STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

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

    Hướng dẫn sử dụng Bluetooth LE xây dựng multiplayer game với Unity
    03/09/2015
    27/09/2020
    6 phút đọc
    Sử Dụng Bluetooth 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.

    0 Bình luận
    Lập Trình Game

    Lập Trình Game

    Kiến thức, kỹ thuật, kinh nghiệm lập trình game.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021