Tải bản đầy đủ (.docx) (93 trang)

Đề tài framework for mobile game development

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.76 MB, 93 trang )

Framework for mobile game development

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐIỆN TỬ VIỄN THÔNG

®



ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
FRAMEWORK FOR MOBILE GAME DEVELOPMENT

Giáo viên hướng dẫn

: Th.S Vũ Song Tùng

1


Framework for mobile game development

Hà Nội: 6 -2014
BỘ GIÁO DỤC VÀ ĐÀO TẠO

CỘNG HÒA XÃ HÔI CHỦ NGHĨA VIỆT NAM

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Độc lập - Tự do - Hạnh phúc


--------------------------------------------------

---------------------------------

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: .…………….………….…….. Số hiệu sinh viên: …………………………………….
Khoá:…………………….Khoa:

Điện

tử

-

Viễn

thông

Ngành:

………………...........................................
1. Đầu đề đồ án:
………………………………………………..………………………………………………………………
……………………………………………………………………………………………………………….
2. Các số liệu và dữ liệu ban đầu:
……………………………………..……………………………………………..……..……………………
……………………………………………………………………………………………………………….
……………….…..………………………..…………………………………………………………………
3. Nội dung các phần thuyết minh và tính toán:
………………………………………………………………………………………………………………..

….
………………………………………………………………………………………………………………
……………………..….…………………………………………………………………………………..
……………………………………………………..….……………………………………………………..
4. Các bản vẽ, đồ thị ( ghi rõ các loại và kích thước bản vẽ ):
………………………………………………………………………………………………………………
………..….
………………………………………………………………………………………………………………
…………..……….……………………………………………………………………………
5. Họ tên giảng viên hướng dẫn: ………………………………………………………..……………….
6. Ngày giao nhiệm vụ đồ án: ………………………………………………….………………………………….
7. Ngày hoàn thành đồ án: ………………………………………………………………………..……..
Ngày
Chủ nhiệm Bộ môn

tháng

năm

Giảng viên hướng dẫn

2


Framework for mobile game development

Sinh viên đã hoàn thành và nộp đồ án tốt nghiệp ngày

tháng


năm

Cán bộ phản biện

3


Framework for mobile game development

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------------------

BẢN NHẬN XÉT ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: .................................................................... Số hiệu sinh
viên: ...........................
Ngành:
................................................................................
Khoá: ....................................................
Giảng
viên
hướng
dẫn:........................................................................................................................
Cán
bộ
phản
biện: ...............................................................................................................................
1. Nội dung thiết kế tốt nghiệp:
............................................................................................................................................................
............................................................................................................................................................

............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
2. Nhận xét của cán bộ phản biện:
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
............................................................................................................................................................
4


Framework for mobile game development

Ngày

tháng
năm
Cán bộ phản biện
( Ký, ghi rõ họ và tên )


5


Framework for mobile game development

LỜI NÓI ĐẦU
Với sự phát triển nhanh chóng của điện thoại đã làm cho thị trường game điện thoại
ngày càng đa dạng và hấp dẫn hơn bao giờ hết. Đặc biệt game android vì hệ điều hành
android là một hệ điều hành mở cho phép những nhà lập trình tùy ý sáng tạo đồng thời nó
cũng là hệ điều hành chiếm thị phần lớn nhất trên thế giới. Chính vì vậy nên ở một đất
nước còn nhiều khó khăn như nước ta cùng với những kiến thức mở được chia sẻ tự do
trên mạng thì đây chính là cơ hội cho những nhà lập trình tự do của ta có quyền mơ một
giấc mơ giản dị là tự do sáng tạo đam mê mà vẫn kiếm được tiền trang trải cuộc sống,
thậm chí một giấc mơ xa hơn là game của mình viết ra có thể chỗ đứng ở thị trường nước
ngoài khẳng định trình độ của các lập trình viên Việt Nam không hề thua kém các lập
trình viên nước ngoài. Từ đó các ông lớn như Google có cái nhìn khác về chúng ta nhằm
gỡ bỏ các rào cản trong việc kiếm tiền bằng việc bán game trên Google Store. Tuy nhiên
cơ hội luôn đi đôi với khó khăn thách thức, ở Việt Nam game bây giờ giống như một
đống hỗn độn, các công ty lớn có tiền thì đua nhau về đồ họa, hình ảnh hay các nhật vật
hầm hố, sexy một cách lố bịch. Mặt khác các nhà lập trình tự do thì trình độ lập trình còn
hạn chế

có thể là do các engine hiện nay còn ít tài liệu hay quá phức tạp nên tạo ra

những sản phẩm không ổn định, không mang tính hướng tới người dùng mà chỉ đơn giản
là viết xong vứt lên Google Store rồi cầu cho ai đó tải xuống rồi kích và quảng cáo để có
tiền hay tệ hơn là cướp tiền của người dùng bằng cách tự động nhắn tin đến số tổng đài.
Từ đó chúng ta có thể thấy rằng có hai vấn đề chính ở thị trường game của ta là người
có tiền thì không thèm đầu tư nội dung, kẻ nghiệp dư thì viết game ra chỉ để cầu may có

tiền. Vấn đề đơn giản đối với những công ty có tiền họ chỉ cần đầu tư nhân sự về thiết kế
là hoàn toàn có nhiều cơ hội kiếm được nhiều lợi nhuận nhưng đối với những nhà lập
trình tự do mới chập chững vào nghề thì có cơ hội nào cho họ nghĩ về một tương lai sáng
hơn như Nguyễn Hà Đông đã từng làm được với Flappy Bird – một game có cốt truyện
đơn giản nhưng đầy tính hấp dẫn về độ khó của nó cho dù đồ họa của nó rất đơn giản.
Không còn cách nào khác là những người bước vào con đường viết game này và coi nó

6


Framework for mobile game development

như cần câu cơm phải học hỏi và năm vững ít nhất một ngôn ngữ – thông thạo ít nhất một
engine game. Tuy nhiên do sự hạn chế về mặt tiếng anh của đa phần lập trình viên hiện
nay thì việc nghiên cứu một engine đã gặp không ít khó khăn thậm chí đa phần những
engine game hiện nay đều rất phức tạp hoặc mất phí càng làm cho mọi thứ khó khăn hơn.
Để giải quyết vấn đề đó trong đồ án này chúng tôi đã quyết định viết một engine game
với những thành phần cơ bản giúp những người lập trình có thể nhanh chóng nắm bắt
được kiến trúc, quy trình của việc làm game đồng thời cũng nhanh chóng xây dựng được
những game đơn giản đồ họa khá và nhẹ nhàng với điện thoại.
Trong quá trình thực hiện đồ án viết engine game này chúng tôi đã nhận được rất
nhiều sự giúp đỡ từ các thầy cô trong viện Điện Tử Viễn Thông, đặc biệt phải kể đến sự
tận tâm nhiệt tình của Th.S. Vũ Song Tùng – người đã trực tiếp hướng dẫn chúng tôi
hoàn thành đồ án này. Chúng tôi xin gửi lời cảm ơn chân thành nhất đến Thầy cũng như
thầy cô trong Viện Điện Tử Viễn Thông.

7


Framework for mobile game development


TÓM TẮT ĐỒ ÁN
Với việc phát triển ngày càng nhanh của thị trường game Việt Nam thì các lập trình
viên ngày càng có nhu cầu tiếp cận công cụ viết game một cách nhanh chóng và đơn giản
nhất. Công cụ viết game ở đây đa phần là các engine game – nó là nền tảng để các nhà
lập trình dựa vào đó để xây dựng game cho mình. Tuy nhiên hiện nay các engine game
chủ yếu còn phức tạp tài liệu ít mà viết chủ yếu bằng tiếng anh. Điều đó khiến cho các
lập trình viên Việt Nam gặp rất nhiều khó khăn trong việc tiếp cận công nghệ.
Chính vì vậy đồ án này của chúng em nhằm mục đích viết ra một engine game cơ bản
đầy đủ các thành phần giúp các lập trình viên có thể tiếp cận với kiến trúc và cách thức
hoạt động của engine game để từ đó nắm bắt và tối ưu được game mình viết ra. Ngoài ra
về mặt kinh tế dựa trên engine game này hoàn toàn có thể tạo ra các game có đồ họa đơn
giản nội dung hấp dẫn để đưa lên Google Play.

8


Framework for mobile game development

ABSTRACT

9


Framework for mobile game development

MỤC LỤC

10



Framework for mobile game development

DANH SÁCH HÌNH VẼ
Hình 1.1 Kiến trúc Android [1]
Hình 1.2 Nhân Linux trên Android [1]
Hình 1.3 Hệ thống thư viện Android [1]
Hình 1.4 Các thành phần khung ứng dụng của Android [1]
Hình 1.5 Các thành phần ứng dụng của Android [1]
Hình 1.6 Các trục gia tốc trên điện thoại Android [15]
Hình 1.7 Lưới hiển thị và VRAM [15]
Hình 1.8 Ví dụ về trộn màu (Blending)[15]
Hình 1.10 [15]
Hình 1.9 Vòng đời Android [1]
Hình 1.11 Phép chiếu song song ( bên phải) và phép chiếu phối cảnh ( bên trái)[15]
Hình 1.12 Mặt cắt gần và hệ tọa độ [15]
Hình 1.13 Các bước vẽ một tam giác
Hình 1.14 [15]
Hình 1.15 Góc nhìn cắt ngang trong không gian 2D qua phép chiếu song song [15]
Hình 1.16 Hệ tọa độ kết cấu (texture coordinates) [15]
Hình 1.17 Gán tạo độ kết cấu cho ảnh bitmap [15]
Hình 1.18 Sử dụng lại đỉnh [15]
Hình 1.19 Các mẫu trong OpenGL ES [15]
Hình 1.20 Hệ tọa độ “world space” [15]
Hình 1.22 Quay mẫu 45 độ [15]
Hình 1.23 Mẫu được dãn 2 lần theo trục x và co một nửa theo trục y [15]
Hình 2.2 Sơ đồ lớp mô-đun input
Hình 2.3 Sơ đồ lớp mô-đun âm thanh
Hình 2.4 Sơ đồ lớp mô-đun đồ họa
Hình 2.5 Ảnh bitmap font

Hình 2.6 Thực thì giao diện Game và lớp Screen
Hình 2.7 Các loại đối tượng và kiểm tra va chạm trong Game

11


Framework for mobile game development

Hình 2.8 Va chạm giữa 2 hình tròn [15]
Hình 2.9 Va chạm giữa hai hình chữ nhật [15]
Hình 2.10 Va chạm giữa hình tròn và hình chữ nhật [15]
Hình 2.11 Kiểm tra điểm nằm trong tam giác [15]
Hình 2.12 Kiểm tra va chạm giữa hình tròn và cạnh tam giác [15]
Hình 2.13 Sơ đồ lớp tổng quan của Framework
Hình 3.1 Texture (bên trái) và Texture Region (bên phải)
Hình 3.1 Minh họa cảnh trong Game
Hình 3.2 Va chạm của đối tượng trong Game

12


Framework for mobile game development

DANH SÁCH CÁC TỪ VIẾT TẮT

13


Framework for mobile game development


PHẦN MỞ ĐẦU
Trong vài năm gần đây nhờ sự phát triển mạnh mẽ cùng dòng điện thoại thông minh
cũng như sự phát triển không ngừng của hệ điều hành Android mã nguồn mở làm cho thị
trường game trên điện thoại trở nên tiềm năng hơn bao giờ hết. Trong khi thế giới với nền
tảng phát triển hệ điều hành và game từ lâu họ hoàn toàn có thể nắm bắt và phát triển
nhanh chóng game đưa ra thị trường thì Việt Nam đang là một nước mới nổi – mới chập
chững vươn ra thế giới còn gặp rất nhiều khó khăn đặc biệt là việc tiếp cận công nghệ vì
vốn tiếng anh người Việt không khá mà các công nghệ về game hay các engine game khá
phức tạp.
Mặt khác nếu làm game theo kiểu “ăn xổi” thì cũng khó theo kịp các nước phát triển
game khác nên điều quan trọng là chúng ta phải nắm được những điểm cốt lỗi hay những
nền tảng về engine game. Nó là cái “xương sống” để xây dựng game, nắm bắt được nó
chúng ta hoàn toàn có thể phát triển game lâu dài mà không thụt hậu về mặt công nghệ.
Tuy nhiên một số khó khăn như đã nêu ở trên sẽ làm chúng ta khó tiếp cận công nghệ nên
chúng tôi đã xây dựng đồ án này để giúp cho các lập trình viên mới chập chững vào nghề
có thể nắm bắt được những điểm cơ bản về cấu trúc hạ tầng và thượng tầng trong việc
xây dựng game. Đó là mục đích về mặt công nghệ của đồ án ngoài ra về mặt kinh tế bạn
hoàn toàn có thể dựa trên engine cơ bản của chúng tôi xây dựng những game có đồ họa
không tồi chút nào. Nếu bạn chịu khó đầu tư vào nội dung cốt truyện thì hoàn toàn bạn
có thể chinh phục người chơi như Nguyễn Hà Đông đã làm được.
Trong phạm vi đồ án này chúng tôi sẽ trình bày làm 4 chương:

14


Framework for mobile game development

CHƯƠNG I. CƠ SỞ LÝ THUYẾT
1.1 Kiến trúc nền tảng Android
1.1.1 Kiến trúc tổng quát


Hình 1.1 Kiến trúc Android [1]
15


Framework for mobile game development

Như trên hình Android gồm 4 thành phần
 Linux Kernel
 Libraries
 Application Framework
 Applications
1.1.2

Linux Kenel

Hình 1.2 Nhân Linux trên Android [1]
Android sử dụng nhân Linux 2.6 làm nhân cho các dịch vụ hệ thống như bảo mật,
quản lý bộ nhớ, quản lý tiến trình (xử lý tiến trình, đa luồng), ngăn xếp mạng và trình
điều khiển thiết bị (giao tiếp USB, giao tiếp hồng ngoại, không đây, v.v…). Nhân Linux
này cũng có vai trò như một lớp trừu tượng giữa phần cứng và phần mềm.
1.1.3 Libraries
Android có một thư viện khá phong phú [9] cung cấp sẵn để người lập trình có thể sử
dụng. Hình 4 là sơ đồ tóm tắt về hệ thống thư viện này.

16


Framework for mobile game development


Hình 1.3 Hệ thống thư viện Android [1]
 Android runtime

Android có một tập các thư viện nòng cốt để cung cấp hầu hết các chức năng sẵn có
trong thư viện cốt lõi của ngôn ngữ lập trình Java. Android Runtime: Bao gồm máy ảo
Dalvik và các thư viện Android
Các thư viện cơ bản: Các ứng dụng Android được phát triển trên môi trường Java,
nhưng Dalvik lại không phải là một Java VM. Các thư viện cơ bản của Android cung cấp
hầu hết các chức năng có trong thư viện cơ bản của Java cũng như là thư viện riêng của
Android.
Máy ảo Dalvik: Dalvik là máy ảo để chạy các ứng dụng trên Android, đã được tối ưu
để đảm bảo rằng một thiết bị có thể chạy được nhiều Instance một cách hiệu quả. Nó dựa
vào nhân Linux để thực hiện đa luồng và quản lý bộ nhớ cấp thấp.
 Core libraries

Android cung cấp một số các APIs cho phát triển ứng dụng. Danh sách các API cơ
bản sau được cung cấp bởi tất cả các thiết bị trên nền Android:
- android.util: Gói tiện ích cơ bản bao gồm nhiều lớp mức thấp như là các lớp quản lý
(List, Stack…) lớp xử lý chuỗi, lớp xử lý XML
- android.os Gói hệ điều hành cung cấp truy cập đến các dịch vụ cơ bản như là chuyển
tin nhắn, thông tin chéo, đồng hồ và gỡ lỗi.
- android.graphics Cung cấp các lớp đồ họa mức thấp thực hiện các chức năng đồ họa,
màu, vẽ cơ bản.
- android.text Công cụ hiển thị và xử lý văn bản
17


Framework for mobile game development

- android.database Cung cấp các lớp mức thất bắt buộc cho việc điều khiển cursor khi

làm việc với các cơ sở dữ liệu
- android.content Các giao tiếp lập trình nội dung được dùng để quản lý truy cập dữ
liệu và xuất bản bằng cách cung cấp các dịch vụ thao tác với tài nguyên, Content
Provider, và các gói
- android.view View là lớp giao diện người dùng cơ bản nhất. Tất cả giao diện người
dùng được tạo ra đều phải sử dụng một tập các View để cung cấp cho các thành phần
tương tác người dùng.
- android.widget Xây dựng dựa trên gói View. Những lớp Widget những thành phần
giao diện được tạo sẵn được sử dụng để tạo nên giao diện người dùng. Các Widget bao
gồm danh sách, nút bấm, hộp nhập, các kiểu trình bày(layout)
- com.google.android.maps bộ API mức cao cung cấp truy cập đến điều khiển bản đồ
sẵn trong Androif từ ứng dụng được xây dựng. Bao gồm cả lớp MapView cũng như
Overlay và MapController để tương tác với bản đồ bên trong ứng dụng.
- android.app Một gói thư viện bậc cao, cung cấp truy cập đến dữ liệu của ứng dụng.
Gói ứng dụng cũng bao gồm lớp Activity và Service là thành phần cơ bản của mọi ứng
dụng Android.
- Android.provider Để tạo thuận lợi cho người phát triển truy cập đến các Content
Provider tiêu chuẩn(như là dữ liệu danh bạ), gói Cung cấp(Provider) bao gồm các lớp cho
phép truy cập đến cơ sở dữ liệu chuẩn trong tất cả các bản phân phối Android.
- Android.telephony Các API điện đàm cung cấp khả năng tương tác trực tiếp với tầng
điện thoại trong các thiết bị, cho phép tạo, nhận, theo dõi các cuộc gọi, tình trạng các
cuộc gọi và tin nhắn SMS.
- android.webkit Gói WebKit cung cấp các API để làm việc với các nội dung Webbased bao gồm một lơp WebView để tạo ra giao diên web, nhúng trong ứng dụng và một
trình quản lý cookie.
Cùng với các API của Android, còn có một tập các thư viện C/C++ như:

18


Framework for mobile game development


- OpenGL Thư viện dùng để tạo ra các đồ họa 3D dựa vào chuẩn OpenGLES 1.0 API
- FreeType Hỗ trợ xử lý bitmap và font vector
- GGL Thư viện cơ bản, dùng để cung cấp các engine đồ họa 2D
- Libc Thư viện C chuẩn, được tối ưu cho các thiết bị Linux-based
- SQLite Engine cơ sở dữ liệu quan hệ gọn nhẹ, dùng để lưu trữ dữ liệu của ứng dụng
- SSL Hỗ trợ sử dụng giao thức mã hóa Secure Sockets Layer trong bảo mật truyền
thông Internet
Ngoài các thư viện chuẩn của Android, để đáp ứng tiêu chí phù hợp với nhiều thiết bị
khác nhau, Android còn có thể có các API phụ thuộc thiết bị như android.location,
android.media, android.opengl, android.hardware, android.bluetooth, android.net.wifi, và
android.telephony.
1.1.4 Application Framework

Hình 1.4 Các thành phần khung ứng dụng của Android [1]
Kiến trúc của Android khuyến khích khái niệm Thành phần sử dụng lại, cho phép
công bố và chia sẻ các Activity, Service, dữ liệu, với các ứng dụng khác với quyền truy
cập được quản lý bởi khai báo.
Cơ chế đó cho phép người lập trình tạo ra một trình quản lý danh bạ hoặc trình quay
số điện thoại mà có các thành phần người khác có thể tạo mới giao diện và mở rộng chức
năng thay vì tạo lại chúng.
Những dịch vụ sau là những dịch vụ kiến trúc cơ bản nhất của tất cả các ứng dụng,
cung cấp một framework cho mọi mọi phần mềm được xây dựng:
- Actitvity Manager: Điều khiển vòng đời của các Activity bao gồm cả quản lý các
tầng Activity.

19


Framework for mobile game development


- Views: Được sử dụng để tạo lập các giao diện người dùng cho các Activity
- Notification Mamager: Cung cấp một cơ chế cố định và quy củ cho việc gửi các
thông báo đến người dùng.
- Content Provider: Cho phép ứng dụng chia sẻ dữ liệu giữa các ứng dụng.
- Resource Manager: Hỗ trợ các thành phần không thuộc mã nguồn như là chuỗi ký
tự, đồ họa được đặt bên ngoài.
1.1.5 Applications

Hình 1.5 Các thành phần ứng dụng của Android [1]
Đây là lớp trên cùng của kiến trúc nền tảng Android. Android sẽ hoạt động với một
bộ các ứng dụng bao gồm ứng dụng thư điện tử, gửi tin nhắn, lịch, bản đồ, trình duyệt
web, danh bạ v.v… Tất cả các ứng dụng được viết bằng ngôn ngữ Java. Các ứng dụng
này có thể được cung cấp sẵn hoặc được phát triển bởi những lập trình viên.
1.2 Tổng quan về các thành phần của framework

Phần này của đồ án sẽ trình bày tổng quan về các thành phần thường dùng để tạo nên
Game. Các thành phần thường được xây dựng dưới dạng các giao diện và được thực hiện
sau đó với các nền tảng cơ bản mà Android cung cấp. Giao diện sẽ cho phép chúng ta tập
trung vào ngữ nghĩa mà không cần biết chi tiết phần thực hiện, đồng nghĩa chúng ta có
thể thay đổi phần thực hiện sau này.
Mỗi Game cần dùng một framework để giảm thiểu việc giao tiếp với hệ điều hành bên
dưới khi lập trình. Một framework cơ bản thường chia thành các mô-đun như dưới đây:
o

Ứng dụng và quản lý cửa sổ (Application and window management) : có nhiệm vụ tạo ra

một cưa sổ và thực hiện việc đóng cửa sổ hay dừng / tiếp tục các ứng dụng Android
o Đầu vào (Input) : liên quan tới mô-đun quản lý cửa sổ, nó theo dõi các đầu vào từ người
dùng ( như sự kiện chạm, nhấn bàn phím, đọc bộ đo gia tốc)


20


Framework for mobile game development

o
o

Vào ra File (File I/O) : cho phép lấy các byte tài nguyên cho chương trình từ đĩa
Đồ họa (Graphics) : đây là mô-đun phức tạp nhất,nó chịu trách nhiệm tải tài nguyên đồ

họa và vẽ lên màn hình
o Âm thanh (Audio) : chịu trách nhiệm tải và chơi các tài nguyên âm thanh
Tập hợp các thành phần trên lại tạo thành một Game Framework, giúp cho viết game
trở nên dễ dàng hơn.
Mỗi thành phần bao gồm một hay nhiều giao diện. Mỗi giao diện sẽ có ít nhất một
thực hiện cụ thể dựa trên nền tảng cơ bản Android cung cấp. Sau đây chúng ta sẽ đi cụ
thể hơn vào các thành phần trên
1.2.1 Ứng dụng và quản lý cửa sổ (Application and window management)
Một game cũng như một chương trình máy tính ở điểm có một giao diện người dùng
(UI). Nó được chưa trong của sổ. Cửa cổ giống như một thùng chứa, hay đơn giản là nơi
để vẽ lên nội dung của game. Hệ điều hành cho phép người dùng tương tác với cửa sổ
theo nhiều cách, như chạm vào màn hình hay nhấn các phím.
Mô-đun chịu trách nhiệm thiết lập cửa sổ và đảm bảo nó được điền đầy bởi thành
phần giao diện người dùng (UI) duy nhất, hay là nơi để vẽ lên và nhận các tương tác từ
người dùng. Thành phần giao diện người dùng (UI) có thể được render qua CPU hay có
thể là qua phần cứng được tăng tốc trong trường hợp sử dụng OpenGL ES.
1.2.2 Đầu vào (Input)
Người dùng sẽ tương tác với cửa sổ bằng một cách nào đó, sau đó cửa sổ sẽ gửi sự

kiện đó đến thành phần giao diện đang được hiển thị. Và điều cần quan tâm là làm thế
nào để lấy được sự kiện từ thành phần giao diện người dùng đó. Các API giao diện người
dùng của hệ điều hành cung cấp một cơ cấu để móc vào hệ thống gửi sự kiện, do đó dễ
dàng để ghi lại sự kiện.
Có hai cơ chế xử lý các thông tin sự kiện được ghi lại :

21


Framework for mobile game development

o

Polling (thăm dò) : chỉ kiểm tra trạng thái hiện tại của đầu vào, mọi trậng thái giữa lần
kiểm tra hiện tại và lần kiểm tra cuối đều bị mất. Cách xử lý đầu vào này chỉ thích hợp
cho việc kiểm tra những thứ như xem người dùng chạm vào một nút cụ thể, không thích

hợp co việc theo dõi nhập văn bản.
o Dựa trên xử lý sự kiện: cung cấp đầy đủ thời gian của các sự kiện xảy ra từ lần kiểm tra
cuối cùng. Đây là một cơ chế thích hợp để thực hiện nhập văn bản hay những bất kỳ công
việc dựa trên thứ tự của sự kiện. Nó cũng hữu ích để phát hiện khi một ngón tay chạm
vào màn hình hoặc khi ngón tay đã được nhấc lên.
Trong Android có ba phương thức vào là : chạm màn hình, nhấn phím, và đo gia tốc.
Hai phương thức đầu dùng cả hai cơ chế xử lý ở trên, còn đo gia tốc chỉ dùng cơ chế
Polling
 Phương thức chạm màn hình chia làm 3 kiểu sự kiện:
o Sự kiện chạm xuống : xảy ra khi ngón tay chạm màn hình
o Sự kiện kéo : xảy ra khi ngón tay kéo trên màn hình, xảy ra sau sự kiện chạm
o


xuống
Sự kiện nhấc lên : xảy ra khi ngón tay nhấc lên khỏi màn hình

Mỗi sự kiện chạm màn hình có thêm hai thông tin là : vị trí tương đối so với gốc, và
chỉ số con trỏ dùng trong trường hợp cảm ứng đa điểm để phân biệt và theo dõi các ngón
tay riêng biệt.
 Nhấn phím được chia làm hai loại sự kiện
o Nhấn xuống : khi phím được ấn xuống
o Nhấc lên : xảy ra khi một phím được nhấc lên

Các sự kiện với phím cũng có thêm các thông tin, sự kiện nhấn sẽ lưu một mã của
phím nhấn, sự kiến nhấc lên lưu một mã phím và một kí tự Unicode . sự khác nhau giữa
mã phím và kí tự Unicode được tạo ra tự sự kiện nhấc phím. Trạng thái của các phím
khác cũng được lưu lại, chẳng hạn như phím Shift, bằng cách này ta có thể nhận ra chữ
hoa và chữ thường trong sự kiện nhấc phím. Còn trong sự kiện nhấn xuống ta chỉ biết
phím nào được nhấn mà không biết kí tự mà phím được nhấn tạo ra.

22


Framework for mobile game development

 Bộ đo gia tốc : để dùng bộ đo gia tốc, ta sẽ luôn luôn thăm dò trạng thái của bộ đo. Nó sẽ

báo cáo gia tốc dưới tác dụng của lực hút Trái Đất trên một trong ba trục được gọi là
x,y,z. Trong vật lý một đối tượng có gia tốc 9.8 m/s 2 khi rơi tự do trong Trái Đất. Khi một
trục hướng về phía tâm Trái Đất, gia tốc cực đại sẽ được áp dụng cho nó, ví dụ khi giữ
máy thẳng ở chế độ chân dung, trục y sẽ có gia tốc 9.8 m/s 2 . trong hình dưới trục z sẽ có
gia tốc là 9.8 m/s2 , còn trục y và x có gia tốc là 0.


Hình 1.6 Các trục gia tốc trên điện thoại Android [15]
1.2.3 Vào ra file (File I/O)
Đọc và ghi file khá cần thiết cho phát triển game. Trong Java , điều quan tâm nhất là
tạo ra các thể hiện InputStream và OutputStream, nhữn cơ cấu chuẩn của Java để đọc và
ghi file cụ thể. Trong phát triển game, điều được quan tâm nhất là đọc những file được
đóng gói cùng game, như file cấp độ (level), hình ảnh, âm thanh, còn ghi file được dùng
ít thường xuyên hơn, chủ yếu dùng ghi file khi muốn lưu lại điểm cao hay thiết lập game
hay trạng thái của game.
Các file sẽ được đọc từ file APK của game (trường hợp file được đóng gói theo game)
hoặc đọc từ SD card ( các file được ghi vào SD card)

23


Framework for mobile game development

1.2.4 Âm thanh (Audio)
Lập trình âm thanh khá phức tạp nhưng đối với âm thanh trong game ta không đi sâu
vào xử lý âm thanh, chỉ bao gồm chơi và phát lại các âm thanh hiệu ứng và nhạc được tải
từ các file âm thanh.
 Tính chất vật lý của âm thanh : âm thanh được mô hình hóa như tập hợp các sóng di

chuyển trong môi trường như nước hay không khí. Các sóng không phải các đối tượng
vật lý thực tế nhưng là sự vân động của các phần tử trong môi trường. Khi 1 âm thanh
được tạo ra, sẽ có các chuyển động cầu. Tất cả các sóng âm thanh trong một môi trường
tập hợp lại thành các giai điệu. Âm ượng của âm thanh được quyết định bởi bao nhiêu
năng lượng được vận chuyển và sẽ suy hao khi tác động lên các phần tử kế tiếp cho đến
khi tới tai người nghe.
 Ghi âm và phát âm thanh : âm thanh sẽ được ghi lại dưới dạng số, trạng thái của màng


loa được đo à lưu trữ tại các bước thời gian rời rạc. quá trình này gọi là lấy mẫu, lượng
mẫu trong 1 đơn vị thời gian gọi là tỉ lệ lấy mẫu, nếu đơn vị thời gian là giây (s) tỉ lệ lấy
mẫu có đơn vị là Hz. Tỉ lệ lấy mẫu càng cao thì chất lượng âm thanh càng cao. Ngoài ra
cách thức lưu các mẫu trạng thái cũng đóng vai trò quan trọng trong chất lượng âm thanh.
Với một màng loa ta sẽ ghi được âm thanh mono, với hai màng loa ở vị trí khác nhau sẽ
ghi lại được âm thanh stereo nhưng lượng mẫu cần lưu trữ là gấp đôi so với âm thanh
mono. Việc phát âm thanh cũng khá đơn giản. Khi ta đã có các mẫu âm thanh dưới dạng
số cùng với tỉ lệ lấy mẫu và kiểu dữ liệu, ta sẽ đưa dữ liệu ra đơn vị xử lý âm thanh, nơi
chuyển đổi các thông tin thành một tín hiệu cho loa, loa sẽ phân tích và chuyển nó thành
sự rung của màng loa , tạo ra sự chuyển động của các phàn tử xung qoang trong không
khí và tạo sóng âm thanh.
 Chất lượng âm thanh và nén : có nhiều phương pháp nén để giảm dung lượng của file âm

thanh được ghi, đồng nghĩa với việc tổn hao, một bộ phận của âm thanh ban đầu sẽ bị
lược bỏ. Các định dạng âm thanh thường được sử dụng trong game là MP3 hay OGG,

24


Framework for mobile game development

tuy là âm thanh đã được nén nhưng chất lượng chấp nhận được và giải quyết vấn đề dung
lượng.
Âm thanh chia làm âm hiệu ứng (Sound effect) và nhạc (Music) :
 Nhạc: Thường có thời gian dài và chiếm nhiều bộ nhớ, vì vậy khi phát nhạc trong game,

ta thường truyền trực tiếp các mẫu âm thanh từ đĩa thay vì việc tải trước vào bộ nhớ rồi
mới phát. Thông thường game chỉ có một file nhạc, nên ta chỉ cần truy nhập đĩa một lần.
 Các âm thanh hiêu ứng ngắn như tiếng nổ, tiếng va chạm : Ta thường sử dụng nhiều âm
hiệu ứng cùng một thời điểm , do đó việc phát trực tiếp các mẫu từ đĩa cho mỗi âm hiệu

ứng là không hợp lý. Nhưng các âm hiệu ứng này chỉ chiếm dung lượng bộ nhớ nhỏ, nên
ta có thể tải các mẫu âm hiệu ứng và bộ nhớ và có thể đồng thời phát chúng.
1.2.5 Đồ họa
Đồ họa là mô-đun cuối cùng trong các mô-đun của framework. Nó chịu trách nhiệm
vẽ ảnh lên màn hình. Phần dưới đây sẽ trình bày các khái niệm cơ bản trong đồ họa
 Rasters, Pixels (điểm ảnh) và Framebuffers
o Raster là một lưới hai chiều, có chiều dài và rộng giới hạn thể hiện số lượng

điểm ảnh (pixels) trên mỗi hàng, cột
o Mỗi điểm ảnh (pixel) có hai thuộc tính : vị trí trong lưới và màu. Vị trí của
điểm ảnh là một tọa độ hai chiều trong hệ tọa độ, gốc của hệ tọa độ là góc trái
bên trên của lưới.
o Bộ xử lý đồ họa truy cập vào một vùng nhớ đăc biệt gọi là bộ nhớ truy cập
ngẫu nhiên video (VRAM). Trong VRAM có một khu vực dành riêng để lưu
trữ các điểm ảnh sẽ được hiển thị lên màn hình, gọi là framebuffer. Một màn
hình đầy đủ hình ảnh gọi là một Frame. Mỗi điểm ảnh (pixel) trên lưới hiển thị
sẽ có tương ứng một địa chỉ ô nhớ chứa màu của điểm ảnh đó. Khi muốn thay
đổi hiển thị trên màn hình, chỉ cần thay đổi giá trị màu tại ô nhớ của pixel
tương ứng.

25


×