STDIO
Tìm kiếm gần đây

    Nội dung

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

    03/09/2015
    12/04/2016
    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 một 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 ta chỉ cần sự đơn giản trong việc kết nối hai thiết bị với nhau.

    Giới thiệu

    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 một 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 ta chỉ cần sự đơn giản trong việc kết nối hai thiết bị với nhau.

    Lúc này, Bluetooth là một 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ạn đọc bài viết này phải có các khối kiến thức nền tảng về:

    • Thao tác trên Unity và các component.
    • Hiểu được kiến trúc lập trình mạng và cách hiện thực cơ chế Multiplayer của Unity.
    • Có kiến thức về lập trình và xây dựng ứng dụng trên Android, cấu hình các thông tin như manifest, package.

    Trong bài viết này tôi sử dụng Unity 5.3.4f1Bluetooth 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 một 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à một package có tính phí của Unity. Nên trong bài viết này tôi sẽ 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 vì tôn trọng bản quyền.

    Log

    public static void Log (string message) 

    Chức năng:

    Hiện thị một chuỗi(message) lên màn hình console.

    Initialize

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

    Chức năng: 

    Khởi tạo một hệ thống Bluetooth. Hệ thống có thể hoạt động như một Central (tương tự như server để các thiết bị khác có  thể kết nối tới) hay như một Peripheral (Client kết nối tới Server có sẵn) hoặc cả hai 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ó có một error thì errorAction sẽ được gọi và thực thi.

    DeInitialize

    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

    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

    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

    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ị của bạn 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 serviceUUIDs là NULL thì tất cả các Bluetooth LE Peripheral sẽ được tìm thấy. Nếu một 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

    public static void StopScan ()

    Chức năng: 

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

    RetrieveListOfPeripheralsWithServices

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

    Chức năng:

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

    ConnectToPeripheral

    public static void ConnectToPeripheral (string name, Action<string> connectAction, Acti on<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ủa bạn 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ố disconnectAction là null và có khả năng tương thích ngược. Nếu bạn cung cấp một 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 bạn cũng cung cấp một callback cho phương thức DisconnectPeripheral thì cả hai callbacks đều sẽ được gọi tới.

    DisconnectPeripheral

    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 một 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

    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 một đặ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

    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à một 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

    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. Thứ hai 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

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

    Phương pháp này sẽ đăng ký với một đặ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ứ hai là UUID. Thứ ba là các byte dữ liệu thô đã được cập nhật.

    UnSubscribeCharacteristic

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

    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.

    Thảo luận

    In order to comment you must be a STDIO Insider. Please sign up or log in to continue.

    Đăng nhập

    Bài viết liên quan

    Hiện Thực Game Zero Với Unity - Phần 1 - Nhận Sự Kiện Button

    Hiện Thực Game Zero Với Unity - Phần 1 - Nhận Sự Kiện Button

    Tôi tiếp tục chuỗi bài viết giúp bạn đọc xây dựng một game đơn giản thực tế: Hướng Dẫn Hiện Thực Game Zero Với Unity. Qua chuỗi bài viết, hi vọng bạn đọc sẽ dễ dàng hơn ...

    Rye Nguyen

    09/08/2015

    Hiện Thực Game Zero Với Unity - Phần 2 - Hiện Thực Gameplay

    Hiện Thực Game Zero Với Unity - Phần 2 - Hiện Thực Gameplay

    Tôi tiếp tục chuỗi bài viết giúp bạn đọc xây dựng một game đơn giản thực tế: Hướng Dẫn Hiện Thực Game Zero Với Unity. Ở phần 2 tôi sẽ giới thiệu và hướng dẫn các bạn xây ...

    Rye Nguyen

    09/08/2015

    Sử Dụng JsonUtility Trong Lập Trình Game Với Unity

    Sử Dụng JsonUtility Trong Lập Trình Game Với Unity

    Hướng dẫn sử dụng đối tượng JsonUtility để tạo chuỗi JSON trong Unity. Trong lập trình game việc tổng hợp dữ liệu để lưu trữ là rất khó khăn. Do đó Unity đã hỗ trợ tổng ...

    La Kiến Vinh

    21/09/2014

    Hiện Thực Game Zero Với Unity - Phần 3 - Điểm Số Và Progress Timer

    Hiện Thực Game Zero Với Unity - Phần 3 - Điểm Số Và Progress Timer

    Tiếp tục chuỗi bài viết Hướng Dẫn Hiện Thực Game Zero Với Unity, ở phần trước, tôi đã giới thiệu và hướng dẫn các bạn cách hiện thực gameplay của game Zero. Trong phần 3 ...

    Rye Nguyen

    10/08/2015

    Làm Quen Với Unity IDE

    Làm Quen Với Unity IDE

    Unity là một trong những game engine khá phổ biến, tích hợp sẵn một IDE rất mạnh mẽ nhưng cũng không kém phần tiện dụng cho những nhà phát triển game. Bài viết hướng dẫn ...

    Rye Nguyen

    01/08/2015

    Hiệu Ứng Camera Shake Trong Unity

    Hiệu Ứng Camera Shake Trong Unity

    Đối với các game hành động nhập vai, các hiệu ứng âm thanh hấp dẫn, hiệu ứng về ánh sáng, sự kịch tính, yếu tố bất ngờ, ... đóng vai trò không nhỏ trong sự thành công của ...

    Rye Nguyen

    06/08/2015

    Tạo Scrolling Background Với Unity

    Tạo Scrolling Background Với Unity

    Có nhiều cách để xây dựng một phông nền (background) cho game. Trong đó, Scrolling Background là một hiệu ứng đơn giản và dễ hiện thực, tạo cảm giác chuyển động xa vô ...

    Rye Nguyen

    02/08/2015

    Lưu Trữ Thông Tin Game Với PlayerPrefs

    Lưu Trữ Thông Tin Game Với PlayerPrefs

    Lưu điểm số, thông tin hay trạng thái game là điều quan trọng và là nhu cầu chung trong bất kì game nào. Đối với Unity, công việc này đã được hỗ trợ bằng lớp PlayerPrefs. ...

    Phạm Ngọc Phước

    12/03/2016

    Áp Dụng Kĩ Thuật OOP Trong Quá Trình Xây Dựng Framework Dựa Trên Thư Viện SDL

    Áp Dụng Kĩ Thuật OOP Trong Quá Trình Xây Dựng Framework Dựa Trên Thư Viện SDL

    Trong quá trình xây dựng Engine của bản thân mình, thông qua bài viết Khởi Tạo Môi Trường Lập Trình Game Sử Dụng Thư Viện SDL (Simple DirectMedia Layer) của Nghĩa Nguyễn ...

    Hoàng Thái

    09/09/2015

    Hiện Thực Game Zero Với Unity - Phần 4 - Scene Và Popup

    Hiện Thực Game Zero Với Unity - Phần 4 - Scene Và Popup

    Tiếp tục chuỗi bài viết Hướng Dẫn Hiện Thực Game Zero Với Unity, trong bài viết này, tôi sẽ tập trung thiết kế hệ thống scene và popup trong game. Ngoài ra, tôi mở rộng ...

    Rye Nguyen

    10/08/2015

    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 - 2020