CHƯƠNG 3 PHÂN TÍCH TRÒ CHƠI
3.1. Hệ thống và tính khả chuyển (portability):
3.1.1. C/C++ và thư viện
Để đạt được yêu cầu đặt ra của bài toán, là hệ thống có thể chạy được trên cả hai Hệ điều hành: Windows, Android . Và trong quá trình làm không cần mất nhiều thời gian, chúng ta cần phải phân tích kỹ lưỡng và đề xuất phương án phù hợp để tiến hành đề ra giải pháp và xây dựng bài toán.
Nhận xét:
Cả hai hệ điều hành đều cung cấp môi trường lập trình trên ngôn ngữ ANSI C/C++.
Windows: Hổ trợ sẵn.
Android: JNI từ Android 1.5, Native Activity từ Android 2.3. Cả hai hệ điều hành đều cung cấp thư viện OpenGL ES 2.0.
Android: Từ phiên bản 2.1.
Windows: Thông qua bộ giả lập OpenGL ES 2.0 của PowerVR.
Môi trường C/C++ trên cả hai hệ điều hành tương đối giống nhau. Tuy nhiên số lượng các thư viện hổ trợ khác nhau, do đó chúng ta chỉ sử dụng các thư viện chuẩn mà cả hai đều hỗ trợ.
Có thể dễ dàng chuyển một thư viện C chuẩn lên cả hai hệ điều hành (trong trường hợp ứng dụng này, tôi đã chuyển thành công thư viện LIB PNG – hổ trợ đọc và xử lí tập tin hình ảnh PNG trong C/C++).
SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 43
Do đó, trong quá trình lập trò chơi, chúng ta nên sử dụng hợp lí các công cụ, thư viện, mã nguồn và lập trình một cách tối ưu để có thể sử dụng lại trên cả hai nền tảng khác nhau này.
3.1.2. Phân tích tính khả chuyển (portability) của các thành phần trong trò chơi
Thông thường, trong một trò chơi (tức là một ứng dụng) sẽ có các thành phần như sau: - Vòng lặp trò chơi: là trung tâm của trò chơi, quản lí vòng đời, trạng thái của trò chơi. - Logic: là phần xử lí của trò chơi, xử lí thuật toán, trí thông minh nhân tạo, tương tác với người chơi.
- Đồ Họa: là phần thể hiện của trò chơi.
- Âm thanh: là phần không thể thiếu của trò chơi, giúp trò chơi trở nên sinh động hơn. - Nhập: đối với các thiết bị Android thì tương tác chủ yếu thông qua cảm ứng chạm (touch screen), giúp người dùng tương tác với trò chơi.
- Giao diện ứng dụng: là bộ khung tương tác với nền tảng của ứng dụng: cho phép ứng dụng khởi chạy, tạm ngưng, ngưng, và xử lí các sự kiện liên quan.
Đối với các thành phần trên, ta có bảng thực tế như sau:
Nền tảng / Yếu tố Windows Android Vònglặp trò chơi Có thể cài đặt giống nhau
trên cả hai hệ thống do đều viết bằng C/C++.
Có thể cài đặt giống nhau trên cả hai hệ thống do đều viết bằng C/C++.
Logic Tương tự, ta có thể cài đặt giống nhau trên cả ba hệ thống.
Tương tự, ta có thể cài đặt giống nhau trên cả ba hệ thống.
Đồ Họa - Direct X.
- OpenGL.
OpenGLES (thông qua bộ giả lập).
- OpenGL ES 1.1.
OpenGL ES 2.0. (C/C++: từ Android 2.1; Java: từ Android 2.2).
SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 44
Âm thanh Có thể sử dụng các bộ thư viện âm thanh.
- MediaPlayer. - SoundPool. - Open SL ES (Từ Android 2.2). Hổ trợ các định dạng: midi, wav, m4a, mp3 … Nhập Nhận thông điệp từ windows. Từ View – phương thức OnTouchEvent(). Không hổ trợ nhận sự kiện cảm ứng trực tiếp từ JNI.
Giao diện ứng dụng: main() tạo cửa sổ và tương tác.
- Activity viết bằng Java. Native activity viết bằng C/C++. (từ Android 2.3). Xuất nhập tập tin Dùng thư viên <stdio.h>. Đọc tập tin từ res/raw qua
JNI.
Bảng 3. Thực tế của các thành phần trong trò chơi trên 3 hệ thống
Từ bảng thực tế trên, ta có bảng nhận xét sau: Yếu tố Tính Khả Chuyển Giải Pháp Vòng lặp trò
chơi Cài đặt bằng C/C++.
Logic Trò Chơi Cài đặt bằng C/C++. Đồ Họa
Dùng OpenGL ES 2.0. API 2.0 mạnh mẽ hơn nhiều so với 1.1 và hầu hết các thiết bị hiện tại đều hổ trợ.
Âm thanh
Không có một chuẩn chung về âm thanh. Tuy nhiên ở mức độ đơn giản, chúng ta không xử lí nhiều tới âm thanh (âm thanh nổi, v.v…).
- Trên windows: không cài đặt âm thanh. - IOS: Sử dung AVAAudioPlayer.
SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 45
- Android OS: Sử dụng MediaPlayer. Nhập
Tương tự, ta không có một API chung để nhận cảm ứng, do đó phần này ta phải viết riêng trên từng hệ thống.
Giao diện ứng
dụng Phần này ta phải viết riêng trên từng hệ thống.
Xuất nhập tập
tin Phần này ta phải viết riêng trên từng hệ thống.
Bảng 4. Bảng nhận xét các thành phần trò chơi trên cả 3 hệ thống.
Với lựa chọn trên, trò chơi của chúng ta sẽ chạy được trên các nền tảng với cấu hình như sau:
Windows: 32 bit, card đồ họa hỗ trợ OpenGL ES 2.0. Android: phiên bản 2.1 trở về sau.
Dựa vào bảng phân tích trên, ta tiến hành chia phần cài đặt ra các phần sau. Phần có thể sử dụng chung:
Chung cho tất cả các trò chơi: các thành phần chung cho toàn bộ các trò chơi. Riêng biệt của trò chơi hiện tại: ví dụ thuật toán, logic, ý tưởng trò chơi.
Phần phải cài đặt riêng: đây là phần mình phải cài đặt riêng cho từng hệ thống, tuy nhiên, các phần này đơn giản hơn nhiều so với các phần còn lại, chúng ta sẽ thiết kế để cài đặt phần này có thể sử dụng chung cho toàn bộ các trò chơi.
SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 46
Hình 19. Biễu diễn quá trình xây dựng và chuyển trò chơi.
Ta sẽ ưu tiên xây dựng các thành phần chung nhất, sau đó hoàn thành trò chơi trên windows. Nơi chúng ta được sự trợ giúp của các công cụ và môi trường quen thuộc giúp chúng ta cài đặt và gỡ rối một cách dễ dàng. Sau đó chúng ta sẽ thực hiện đưa lên các nền tảng khác một cách dễ dàng.