1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng game 3d chém trái cây trên windows và ĐTDĐ sử dụng hđh android

83 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 83
Dung lượng 1,72 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong VC++ chúng ta có thể tạo được : các ứng dụng trên Windows, ActiveX, hay thư viện liên kết động DLL…VC++ có nhiều công cụ giúp việc thiết kế giao diện cho chương trình, kiểm lỗi và

Trang 1

KHÓA LUẬN TỐT NGHIỆP

NGÀNH CÔNG NGHỆ THÔNG TIN

Trang 2

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 2

NHẬN XÉT CỦA CÁN BỘ HƯỚNG DẪN

………

………

………

………

………

………

………

………

………

………

………

………

Đà Nẵng, ngày …, tháng …, năm 2012

Cán bộ hướng dẫn

Trần Uyên Trang

Trang 3

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 3

NHẬN XÉT CỦA CÁN BỘ PHẢN BIỆN

………

………

………

………

………

………

………

………

………

………

………

………

………

………

Đà Nẵng, ngày …, tháng …, năm 2012

Cán bộ phản biện

Trang 4

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 4

LỜI CẢM ƠN

Em xin chân thành cảm ơn các thầy cô giáo trong khoa TIN HỌC cùng toàn thể thầy cô của trường Đại Học Sư Phạm Đà Nẵng đã truyền đạt cho em những kiến thức quý giá trong suốt bốn năm học vừa qua

Xin chân thành cảm ơn cô: Trần Uyên Trang đã tận tình chỉ bảo và giúp đỡ em hoàn thành đề tài này

Cuối cùng em xin cảm ơn các anh chị trong công ty Gameloft cùng các bạn trong khoa TIN HỌC, những người đã giúp đỡ, chia sẽ những kiến thức, kinh nghiệm, tài liệu…trong suốt quá trình nghiên cứu thực hiện đề tài

Trang 5

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 5

LỜI CAM ĐOAN

Em xin cam đoan:

1 Những nội dung trong báo cáo này là do em thực hiện

2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, em xin chịu hoàn toàn trách nhiệm

Sinh viên thực hiện

Nhữ Thị Trà My

Trang 6

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 6

MỤC LỤC

LỜI CẢM ƠN 4

LỜI CAM ĐOAN 5

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI 14

1.1 Giới thiệu đề tài 14

1.2 Mục đích, ý nghĩa của đề tài 14

1.3 Phương án triển khai đề tài 14

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 16

2.1 Giới thiệu các công cụ để làm game 3D 16

2.1.1 Visual C++ 16

2.1.2 Giới thiệu về OpenGL 16

2.1.3 Giới thiệu về OpenGL ES 2.0 21

2.1.4 Giới thiệu về hệ điều hành ANDROID 22

2.2 Giới thiệu về 3D cơ bản 25

2.2.1 Hệ tọa độ 3D 25

2.2.2 Quy tắc bàn tay trái- bàn tay phải 26

2.2.3 Xác định vị trí của một điểm trong tọa độ 3D 26

2.2.4 Các phép dịch chuyển cơ bản ở trong 3D 27

2.2.5 Phép chiếu trong 3D 31

2.2.6 Tọa độ thực đến thiết bị 33

Trang 7

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 7

2.3 Cấu trúc của một game 35

2.3.1 Game Loop (vòng lặp của game) 35

2.3.2 Framerate (FPS) 36

2.3.3 Bộ nhớ (memory) 37

2.3.4 State 37

2.4 Giới thiệu về NDK 38

CHƯƠNG 3 PHÂN TÍCH TRÒ CHƠI 42

3.1 Hệ thống và tính khả chuyển (portability): 42

3.1.1 C/C++ và thư viện 42

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 43

3.2 Xây dựng hệ thống khả chuyển 46

3.2.1 Sử dụng các tiền xử lý 47

3.2.2 Sử dụng nguyên mẫu hàm, lớp trừu tượng 47

3.3 Cấu trúc của một Trò chơi 48

3.3.1 Vòng lặp trò chơi 48

3.3.2 Cấu trúc trò chơi 50

3.3.3 Nội dung trò chơi 52

3.3.4 Đồ họa 54

3.3.5 Âm Thanh 56

CHƯƠNG 4 QUÁ TRÌNH LẬP TRÌNH 58

Trang 8

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 8

4.1 Thiết kế chương trình 58

4.2 Vòng lặp trò chơi 59

4.3 Nội dung trò chơi 60

4.3.1 Khởi tạo vị trí hiện tại của trái cây 61

4.3.2 Cập nhật trạng thái của trái cây 61

4.3.3 Kiểm tra va chạm 62

4.3.4 Tính toán lại các trạng thái sau khi va chạm 62

4.4 Đồ Họa 62

4.4.1.Tải shader và biên dịch 63

4.4.2 Vẽ một đối tượng 3D 63

4.4.3 Vẽ một đối tượng 2D 64

4.5 Nhập 64

4.6 Âm thanh 65

4.7 Giao diện ứng dụng 65

4.8 Giao diện xuất nhập tập tin 66

CHƯƠNG 5 QUY TRÌNH CHUYỂN TRÒ CHƠI 67

5.1 Chuyển sang Android 67

5.1.1 Cài đặt phần mềm 67

5.1.2 Hoạt động của JNI và quy trình biên dịch 67

5.1.3 Đồ họa 68

Trang 9

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 9

5.1.4 Âm thanh 69

5.1.5 Cảm ứng chạm 70

5.1.6 Giao diện ứng dụng 71

5.1.7 Xử lí file 71

CHƯƠNG 6 QUÁ TRÌNH CÀI ĐẶT HỆT THỐNG TRÊN MOBIE 73

6.1 Cài đặt hệ thống trên Android 73

CHƯƠNG 7.MỘT SỐ KẾT QUẢ VÀ DEMO CỦA GAME 74

7.1 Kết quả demo trên Windows 74

7.2 Kết quả demo trên Android (điện thoại Galaxy mini) 79

CHƯƠNG 8 KẾT LUẬN 82

8.1 Kết quả đạt được 82

8.2 Những vấn đề còn tồn đọng 82

8.3 Hướng phát triển của đề tài 82

TÀI LIỆU THAM KHẢO 83

Trang 10

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 10

MỤC LỤC CÁC HÌNH

Hình 1 Biễu diễn OpenGl và mối quan hệ với các API 20

Hình 2 Biễu diễn đường ống dẫn trong OpenGL 21

Hình 3 Biễu diễn đường ống dẫn trong OpenGL 2.0 22

Hình 4 Biễu tượng của hệ điều hành Android 23

Hình 5 Biễu diễn hệ tọa độ 3D 25

Hình 6 Biễu diễn quy tắc bàn tay trái- bàn tay phải 26

Hình 7 Biễu diễn một điểm trong hệ tọa độ 3D 26

Hình 8 Biễu diễn phép tịnh tiến một đối tượng theo một vector 27

Hình 9 Biễu diễn phép biến dạng theo một tỷ lệ 28

Hình 10 Biễu diễn phép biến dạng không theo tỷ lệ 28

Hình 11 Biễu diễn phép quay quanh một trục tọa độ theo một góc a 29

Hình 12 Phép quay theo trục Ox 30

Hình 13 Phép quay theo trục Oz 31

Hình 14 Biễu diễn phép chiếu phối cảnh 32

Hình 15 Biễu diễn phép chiếu vuông góc 33

Hình 16 Biễu diễn tọa độ thực đến thiết bị thông qua NDC 33

Hình 17 Biễu diễn về NDC 34

Hình 18 Biễu diễn sự biến đổi 3 chiều thành 2 chiều 34

Hình 19 Biễu diễn quá trình xây dựng và chuyển trò chơi 46

Trang 11

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 11

Hình 20 Biễu diễn vòng lặp của trò chơi 48

Hình 21 Cấu trúc của một trò chơi 50

Hình 22 Giao diện của trò chơi 51

Hình 23 Trạng thái của trò chơi 51

Hình 24 Biễu diễn chuyển động của trái cây 53

Hình 25 Biễu diễn thanh kiếm của người chơi 53

Hình 26 Biễu diễn va chạm giữa thanh kiếm và trái cây 53

Hình 27 Biễu diễn tính toán tọa độ sau va chạm 54

Hình 28 Biễu diễn đối tượng 3D trong trò chơi 55

Hình 29 Biễu diễn giao diện 2D 55

Hình 30 Biễu diễn cách bố trí để vẽ giao diện 2D trong trò chơi 56

Hình 31 Biễu diễn khung thiết kế của chương trình 58

Hình 32 Cách kế thừa các lớp trừ tượng trên các nền tảng khác nhau 59

Hình 33 Biễu diễn vòng lặp của trò chơi 60

Hình 34 Vòng đời của một trái cây 61

Hình 35 Sơ đồ hoạt động của OpenGl ES 2.0 trong chương trình 62

Hình 36 Kết quả demo về main menu ở trên Windows 74

Hình 37 Kết quả demo giao diện lúc đang chơi game trên windows 75

Hình 38 Kết quả demo lúc người chơi chạm vào trái cây trên windows 76

Hình 39 Kết quả demo lúc Game over trên windows 77

Trang 12

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 12

Hình 40 Demo giao diện màn hình highscore trên windows 78

Hình 41 Kết quả demo biểu tượng icon của game trên Android 79

Hình 42 Kết quả demo màn hình mainmenu trên Android 79

Hình 43 Kết quả demo màn hình game play trên Android 80

Hình 44 Kết quả demo màn hình highScore trên Android 80

Hình 45 Kết quả demo màn hình GameOver trên Android 81

Hình 46 Kết quả demo màn hình About trên Android 81

Trang 13

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 13

MỤC LỤC CÁC BẢNG

Bảng 1 Biễu diễn các kiểu dữ liệu trong OpenGL 18

Bảng 2 Các phiên bản OpenGL ES có thể sử dụng ND để tạo ra thư viện native 41

Bảng 3 Thực tế của các thành phần trong trò chơi trên 3 hệ thống 44

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 45

Bảng 5 Bản thiết kế âm thanh 57

Trang 14

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 14

CHƯƠNG 1 TỔNG QUAN VỀ ĐỀ TÀI

1.1 Giới thiệu đề tài

Ngày nay, những thiết bị di động cầm tay đã trở thành một trợ thủ không thể thiếu của đa

số mọi người Nó không đơn giản chỉ là những thiết bị dùng để liên lạc nữa mà hơn thế nữa nó còn là một trung tâm giải trí với những kho ứng dụng độc đáo Đặc biệt sự ra đời của một số hệ điều hành trên di động như: IOS, Android, Windows Phone…đã tạo bước phát triển mạnh mẽ cho những ứng dụng này

Nói tới giải trí game luôn đứng hàng đầu Với sự phát triển của công nghệ cũng như đáp ứng nhu cầu của thị trường, các Game ngày càng có chất lượng cao Thời gian gần đây một xu hướng mới là Game 3D đang được ưa chuộng Vì những lý do trên nên em xin chọn đề tài này nhằm nghiên cứu nhằm nghiên cứu kỹ thuật làm Game 3D trên ĐTDĐ có HĐH riêng

1.2 Mục đích, ý nghĩa của đề tài

 Củng cố những kiến thức đã học

 Tìm hiểu hệ điều hành Android , nghiên cứu công ghệ làm game 3D

 Nghiên cứu cách xây dựng một game đa nền tảng, và quá trình chuyển từ Windows sang

Android

 Xây dựng trò chơi chém trái cây trên Windows và ĐTDĐ có hệ điều hành Android

1.3 Phương án triển khai đề tài

Để hoàn thành đề tài này, trong quá trình triển khai thực hiện cần tuân thủ các bước sau:

 Lập kế hoạch thực hiện đề tài

 Tìm hiểu những vấn đề liên quan tới đề tài

 Phân tích và thiết kế hệ thống, dữ liệu

 Xây dựng chương trình (chia nhỏ các chức năng thành các module và component để giải quyết từng phần)

Trang 15

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 15

 Củng cố kết quả đã đạt được (bao gồm kiểm thử các module và chức năng của hệ thống, chỉnh sửa lỗi nếu có và tiến tới hoàn thiện chương trình ở mức có thể)

Trang 16

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 16

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

2.1 Giới thiệu các công cụ để làm game 3D

2.1.1 Visual C++

Microsoft Visual C++ (còn được gọi là MSVC) là một sản phẩm Môi trường phát triển

tích hợp (IDE) cho các ngôn ngữ lập trình C, C++, và C++/CLI của Microsoft Visual C++ là

bộ công cụ lập trình nằm trong bộ Visual Studio Đây là một môi trường lập trình đa năng dành cho ngôn ngữ C/C++ và vì là một môi trường lập trình trên hệ điều hành Windows nên Visual C++ cho phép lập trình viên thực hiện rất nhiều công việc, hỗ trợ lập trình viên việc coding, thiết kế giao diện Trong VC++ chúng ta có thể tạo được : các ứng dụng trên Windows, ActiveX, hay thư viện liên kết động DLL…VC++ có nhiều công cụ giúp việc thiết kế giao diện cho chương trình, kiểm lỗi và sửa lỗi

2.1.2 Giới thiệu về OpenGL

2.1.2.1 Giới thiệu

OpenGL( Open Graphics Library ) một bộ thư viện đồ họa mở,có mục đích lập ra một giao diện lập trình ứng dụng( API) đa chiều Bộ thư viện đồ họa này chứa khoảng 150 hàm để vẽ các cảnh phức tạp từ những hàm đơn giản Nó được dùng rộng rãi trong các trò chơi điện tử Ngoài

ra nó còn dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, phát triển trò chơi OpenGL còn có một đối thủ cạnh tranh là DirectX của Microsoft

Không gian trong OpenGL được miêu tả qua hình học xạ ảnh Một điểm trong không gian này

có tất cả 4 tọa độ Cách thể hiện các điểm trong không gian bằng 4 tọa độ cho phép xử lý các điểm vô tận một cách tổng quát Vì vậy mã nguồn các ứng dụng đã được đơn giản hóa đi nhiều

Trang 17

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 17

• Tính toán màu sắc của các đối tượng (màu sắc của đối tượng được quy định bởi điều kiện chiếu sáng, texture của đối tượng, mô hình được xây dựng hoặc là kết hợp của cả 2 hoặc 3 yếu tố đó)

• Biến đổi những mô tả toán học của đối tượng và thông tin màu sắc thành phần các pixel trên màn hình (quá trình này được gọi là rasterization)

• Có API đa nền tảng: Windows, Mac, Linux, Unix

• Các hệ thống dùng để nhúng:

- Iphone, Windows mobile…

• Dùng cho đa ngôn ngữ:

2.1.2.2 Cấu trúc lệnh trong OpenGL

OpenGL sử dụng tiền tố gl và tiếp theo đó là những từ những từ được viết hoa ở chữ cái đầu để tạo nên tên của một lệnh, ví dụ glClearColor() Tương tự, OpenGL đặt tên các hằng số bắt đầu bằng GL_ và các từ tiếp sau đều được viết hoa và cách nhau bởi dấu ’_’, ví dụ: GL_COLOR_BUFFER_BIT

Bên cạnh đó, với một số lệnh, để ám chỉ số lượng cũng như kiểu tham số được truyền, một số hậu tố được sử dụng như trong bảng sau:

Trang 18

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 18

Hậu tố Kiểu dữ liệu Tương ứng với

kiểu trong C

Tương ứng với kiểu trong OpenGL

GLuint, GLenum, Glbitfield

Bảng 1 Biễu diễn các kiểu dữ liệu trong OpenGL

Ví dụ: glVertex2i(1, 3) tương ứng với xác định một điểm(x, y) với x, y nguyên

 Lưu ý:

Trang 19

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 19

OpenGL có định nghĩa một số kiểu biến, việc sử dụng các định nghĩa này thay vì định nghĩa có sẵn của C sẽ tránh gây lỗi khi biên dịch code trên một hệ thống khác

Một vài lệnh của OpenGL kết thúc bởi v ám chỉ rằng tham số truyền vào là một vector

Ví dụ: glColor3fv(color_array) là mảng 1 chiều có 3 phần tử là float

2.1.2.3 Thư viện OpenGL

 Core library

 OpenGL utility library(GLU)

 Links với hệ thống window

 OpenGL Utility Toolkit(Glut)

Để khắc phục một số nhược điểm của OpenGL, GLUT được tạo ra với nhiều hàm hỗ trợ:

• Video game consoles

 Hệ tọa độ của OpenGL

Trang 20

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 20

OpenGL dùng hệ tọa độ theo quy tắc bàn tay phải

 Mối quan hệ giữa OpenGL với các API

Hình 1 Biễu diễn OpenGl và mối quan hệ với các API

2.1.2.4 Đường ống dẫn trong OpenGL (OpenGL Rendering pipeline)

Đường ống dẫn của OpenGL gồm một chuỗi các quá trình xử lý theo trình tự Hai đồ họa thông tin, dữ liệu vertex-based và pixel-based, được xử lý thông qua các đường ống, Kết hợp với nhau sau đó được viết vào frame buffer.Chú ý rằng OpenGL có thể gửi các dữ liệu đã được xử lý lại cho ứng dụng của chúng ta

Trang 21

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 21

Hình 2 Biễu diễn đường ống dẫn trong OpenGL

2.1.3 Giới thiệu về OpenGL ES 2.0

Là một phần mềm giao diện để vẽ đồ họa 3D phức tạp trên các thiết bị cầm tay và nhúng Nó chính là thư viện đồ họa cho các thiết bị cầm tay và nhúng với lập trình 3D phần cứng bao gồm điện thoại di động, PDA, thiết bị, xe cộ, và hệ thống điện tử Với OpenGL ES 2.0 thì chúng ta có thể lập trình shader trên các thiết bị nhỏ và di động

Trang 22

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 22

 Đường ống dẫn(pipeline) trong OpenGL ES 2.0

Hình 3 Biễu diễn đường ống dẫn trong OpenGL 2.0

2.1.4 Giới thiệu về hệ điều hành ANDROID

2.1.4.1 ANDROID là gì?

 Android là một hệ điều hành điện thoại di động được dựa trên một phiên bản sửa lỗi của Linux Ban đầu nó được phát triển bởi một tổ chức cùng tên là Android Vào năm 2005, như là một chiến lược của mình vào thị trường di động, Google đã mua lại Android và

đã qua công tác phát triển nó.Các nhà phát triển viết ứng dụng cho Android dựa trên ngôn ngữ Java Sự ra mắt của Android vào ngày 5 tháng 11 năm 2007 gắn với sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở cho điện thoại di động trong tương lai

 Các lợi thế chính của việc áp dụng Android là nó cung cấp một cách tiếp cận thống nhất

để phát triển ứng dụng Các nhà phát triển chỉ cần phát triển cho Android và các ứng dụng của họ sẽ có thể chạy trên nhiều thiết bị khác nhau, miễn là thiết bị được hỗ trợ

Trang 23

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 23

bằng cách sử dụng Android Trong thế giới của điện thoại thông minh ứng dụng là một phần quan trọng nhất của chuỗi thành công Do đó, các nhà sản xuất thiết bị nhìn thấy Android như hy vọng tốt nhất của họ để thách thức sự tấn công dữ dội của Iphone, mà

đã chỉ huy một cơ sở lớn các ứng dụng

 Android cung cấp một bộ đầy đủ các phần mềm cho các thiết bị di động: Nó là một hệ thống điều hành, middleware và các ứng dụng di động chủ chốt Các Android Software Development Kit (SDK) bây giờ đã có

Hình 4 Biễu tượng của hệ điều hành Android

 Android được xây dựng để cho phép các nhà phát triển tạo ra các ứng dụng di động hấp dẫn tận dụng tất cả một chiếc điện thoại đã cung cấp Nó được xây dựng để được thực

sự mở Ví dụ, một ứng dụng có thể kêu gọi bất kỳ chức năng lõi của điện thoại như thực hiện cuộc gọi, gửi tin nhắn văn bản, hoặc bằng cách sử dụng máy ảnh, cho phép các nhà phát triển để tạo ra phong phú hơn và nhiều hơn nữa những kinh nghiệm cố kết cho người dùng

Trang 24

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 24

 Hơn nữa, nó sử dụng một máy ảo tuỳ chỉnh được thiết kế để tối ưu hóa bộ nhớ và tài nguyên phần cứng trong một môi trường di động Android là mã nguồn mở, nó có thể được liberally mở rộng

 Android không phân biệt giữa các ứng dụng lõi của điện thoại và các ứng dụng của bên thứ ba Với các thiết bị xây dựng trên Hệ điều hành Android, người dùng có thể hoàn toàn thích ứng với điện thoại đến lợi ích của họ Họ có thể trao đổi trên màn hình của điện thoại, những phong cách của dialer, hoặc bất kỳ ứng dụng

 Android phá bỏ rào cản để xây dựng các ứng dụng mới và sáng tạo Ví dụ, một nhà phát triển có thể kết hợp thông tin từ các trang web với dữ liệu trên điện thoại di động của một cá nhân – ví dụ như địa chỉ liên hệ của người dùng, lịch, hoặc vị trí địa lý – để cung cấp một trải nghiệm người dùng có liên quan hơn Với Android, một nhà phát triển có thể xây dựng một ứng dụng cho phép người dùng xem vị trí của bạn bè của họ và được cảnh báo khi họ đang có trong vùng phụ cận cho họ một cơ hội để kết nối

 Với Android tốc độ nhanh và phát triển ứng dụng dễ dàng

 Android cung cấp truy cập đến một loạt các thư viện công cụ hữu ích và có thể được sử dụng để xây dựng các ứng dụng phong phú Ví dụ, Android cho phép các nhà phát triển

để có được vị trí của điện thoại, và cho phép các thiết bị giao tiếp với nhau tạo điều kiện cho đồng đẳng rich-to-peer ứng dụng xã hội

 Rất nhiều nhà phát triển hệ điều hành Android đã vào cuộc và các ROM cho Android độc đáo được ra đời với nhiều tích năng nổi trội được tích hợp và đầy sáng tạo

2.1.4.2 Các phiên bản của ANDROID

 Android 1.5

 Android 1.6

 Android 2.0

 Android 2.1

Trang 25

Được định nghĩa bởi 3 trục tọa độ: ox, oy, oz

Hình 5 Biễu diễn hệ tọa độ 3D

Trang 26

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 26

2.2.2 Quy tắc bàn tay trái- bàn tay phải

Hình 6 Biễu diễn quy tắc bàn tay trái- bàn tay phải

2.2.3 Xác định vị trí của một điểm trong tọa độ 3D

Cho điểm P (Px, Py, Pz) trong tọa độ 3D Ta biểu diễn như sau:

Hình 7 Biễu diễn một điểm trong hệ tọa độ 3D

Trang 27

 Tịnh tiến một đối tượng P theo một vector V

Hình 8 Biễu diễn phép tịnh tiến một đối tượng theo một vector

Trang 28

Hình 9 Biễu diễn phép biến dạng theo một tỷ lệ

Biến đổi không theo tỷ lệ

Hình 10 Biễu diễn phép biến dạng không theo tỷ lệ

Trang 29

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 29

2.2.4.3 Phép quay quanh một trục tọa độ theo một góc a

Hình 11 Biễu diễn phép quay quanh một trục tọa độ theo một góc a

 Quay quanh trục Ox, Oy, Oz

 Cách xác định tọa độ theo phép quanh quay một trục

Quay quanh trục Ox:

R (a, x): P -> P’

R (a, x) = {

Px’ = Px Py’ = Py * Cos (a) – Pz * Sin (a)

Pz’ = Py * Sin (a) + Pz * Cos (a)

}

Trang 30

Pz’ = -Px * Sin (a) + Pz * Cos (a)

Py’ = Px * Sin (a) + Py * Cos (a)

}

Trang 31

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 31

Hình 13 Phép quay theo trục Oz

2.2.5 Phép chiếu trong 3D

Giới hạn vùng để vẽ ảnh trên thiết bị 3D:

Trái, phải, trên, dưới, gần, xa

2.2.5.1 Chiếu phối cảnh

Là hình chiếu được xây dựng bằng phép chiếu xuyên tâm

Đặc điểm của phép chiếu này là tạo cho người xem có cảm giác xa gần giống như nhìn trong thực tế

Là một cách vẽ trong hội họa, hay tạo hình, dùng để thể hiện các hình ảnh 3 chiều một cách gần đúng trên một bề mặt 2 chiều nhờ vào các quy luật phối cảnh Các quy luật phối cảnh được xây dựng trên các quy tắc hình học chặt chẽ Các quy tắc phối cảnh giúp hình ảnh 2 chiều trở thành 3 chiều, khiến chúng được quan sát được trực quan hơn trên tranh vẽ

Ứng dụng của hình chiều phối cảnh là đi kèm theo các hình chiếu vuông góc trong bản

vẽ thiết kế kiến trúc và xây dựng để biễu diễn các công trình có kích thước lớn

Trang 32

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 32

Hình 14 Biễu diễn phép chiếu phối cảnh

2.2.5.2 Chiếu trực giao (phép chiếu vuông góc)

Trong phép chiếu này, khoảng cách của vật tới camera không ảnh hưởng tới độ lớn của vật đó khi hiển thị

Phép chiếu trực giao hay còn được gọi là phép chiếu nhìn từ trên xuống hoặc từ dưới lên Có 2 phép chiếu khác cũng khá thông dụng là:

 Phép nhìn từ trước: Tia chiếu song song với trục x và mặt phẳng quan sát là yz Phép chiếu

này loại bỏ thành phần x của P

 Phép chiếu nhìn từ phía bên cạnh: Tia chiếu song song với trục y và mặt phẳng chiếu này

loại bỏ thành phần y của P

Trang 33

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 33

Hình 15 Biễu diễn phép chiếu vuông góc

2.2.6 Tọa độ thực đến thiết bị

 Tọa độ thực -> tọa độ mắt -> NDC -> Thiết bị

Hình 16 Biễu diễn tọa độ thực đến thiết bị thông qua NDC

Trang 34

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 34

Hình 17 Biễu diễn về NDC

 Biểu đồ thể hiện sự biến đổi 3 chiều thành thành điểm có tọa độ 2 chiều

Hình 18 Biễu diễn sự biến đổi 3 chiều thành 2 chiều

Trang 35

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 35

2.3 Cấu trúc của một game

 Các khái niệm trong game

2.3.1 Game Loop (vòng lặp của game)

Là thành phần quan trọng của bất kỳ game nào Game loop giúp game chạy ổn định hơn không bị ảnh hưởng bởi tác động của người dùng

Hầu hết các chương trình truyền thống đều đáp ứng thông điệp đưa vào của người dùng

Ví dụ như: word thì định dạng và text theo nhưng gì người dùng nhập vào, nếu người dùng không nhập vào thì nó không làm gì cả Nhưng đối với một chương trình game thì dù người dùng có nhập vào thông điệp hay không thi nó vẫn thực hiện theo một cấu trúc chương trình có sẵn đây chính là vòng lặp của game

Một vòng lặp game rất đơn giản nó có thể trông như thế này:

While ( user doesn't exit ) check for user input run AI

move enemies resolve collisions draw graphics play sounds end while

Các vòng lặp game có thể thay đổi như sự phát triển của game nhưng hầu hết chúng đều dựa trên ý tưởng cơ bản này

Vòng lặp game khác nhau tùy thuộc vào nền tảng mà nó phát triển.Vòng lặp game được thực hiên thông qua 2 hàm chính là Update và Paint

Trang 36

 Tính toán trong game nhiều

 Lỗi của thiết bị

 Cách cải thiện framerate

 Tối ưu hóa tính toán và các điều kiện thực hiện trong game:

+ Sử dụng ít vòng lặp

+ Dùng phép toán dịch chuyển bit thay cho phép nhân và phép chia

+ Khai báo các biến và phương thức ở dạng static

 Caching module của các file ảnh, tối ưu hóa các module dùng để vẽ sao cho số lượng module vẽ ra là ít

 Dùng Bacbuffer: Không vẽ từng sprite ra màn hình mà ta vẽ các sprite lên một ảnh sau đó vẽ ảnh đó ra màn hình

 Bỏ các hiệu ứng không cần thiết

 Limit Frame rate

Là sự giới hạn lại số lần vẽ trên một giây của trò chơi Nhằm mục đích dùng trong những trường hợp ứng dụng có frame rate quá nhanh, sẽ làm cho ứng dụng không ổn định Ảnh hưởng đến quá trình xử lý, người chơi không chơi kịp và một điều nữa là nó dẫn đến việc nhanh hết pin của thiết bị

Trang 37

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 37

2.3.3 Bộ nhớ (memory)

Là kích thước bộ nhớ có thể dùng để chạy chương trình game của thiết bị

 Các yếu Tố ảnh hưởng đến bộ nhớ trong game

• File ảnh dùng trong game

• Âm thanh dùng trong game

• Các file text, mảng chứa text trong game

 Tối ưu hóa bộ nhớ

• Đơn giản hóa các frame và hình ảnh động

• Chia ảnh ra thành các module nhỏ

• Xóa các module của dữ liệu sau khi caching

• Dùng gói sound có dung lượng nhỏ, Load sound khi chạy sound và giải phóng (free) khi dừng sound

• Dùng mảng một chiều thay vì dùng mảng 2 chiều

• Chỉ giữ những đối tượng cần thiết trong bộ nhớ Để tránh vấn đề phân mảnh bộ nhớ (là các đối tượng thường dùng (fonts, main characters, common interface sprites, … ) )

• Load khi muốn vẽ và giải phóng khi đi ra khỏi màn hình

• Tránh phân mảnh bộ nhớ: load đối tượng có kích thước lớn trước Giữ cho bộ nhớ ổn định Không load và giải phóng quá nhiều lần

2.3.4 State

Là các trạng thái của một game Chúng có liên quan chặt chẽ với nhau.Thông thường một game thường có các trạng thái sau: mainmenu, gamestart, gamewin, gameover, about, highscore, Exit…

Trang 38

• Tài liệu, ví dụ và một số hướng dẫn

• Một bộ các thư viện C/C++ được hỗ trợ trong tất cả các phiên bản sau này của hệ điều hành Android, bắt đầu từ Android 1.5 Từ phiên bản 2.3 trở đi, hệ điều hành android còn hỗ trợ them cách viết Activity bằng C/C++

NDK cung cấp bộ header cho libc ( bột thư viện C ), libm (bột thư viện toán học), openGL ES(thư viện đồ họa 3D), giao diện JNI(là giao diện để liên lạc giữa java và native code), một số thư viện khác, được chứa trong Development Tools

 Khi nào thì Native code

Không phải khi nào NDK cũng đều có lợi với tất cả các ứng dụng Vì vậy chúng ta cần cân bằng lợi ích với nhược điểm của nó Đặc biệt trong trường hợp sử dụng native code không làm tăng hiệu suất thực thi mà làm tăng sự phức tạp của ứng dụng Nói chung chỉ nên sử dụng native code nếu nó là cần thiết đối với ứng dụng của mình Chứ không phải vì chúng ta thích chương trình trong C/C++

Frame android cung cấp 2 cách để dùng native code :

 Dùng Android framework để viết ứng dụng của mình và dùng JNI để truy cập API được cung cấp bởi Android NDK Kỹ thuật này cho phép chúng ta tận dụng các tiện ích của

Trang 39

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 39

Android framework, nhưng vẫn cho phép chúng ta viết native code khi cần thiết Chúng ta có thể cài ứng dụng sử dụng Native code thông qua JNI trên thiết bị chạy android 1.5 hoặc mới hơn

 Viết một native activity, cho phép chúng ta thực hiện cài đặt vòng đời của ứng dụng android trên native code Android SDK cung cấp lớp NativeActivity cho phép chúng ta cài đặt vòng đời thông qua các hàm sau (onCreate(), onResume(), )

 Development tool

NDK gồm một bộ công cụ (compilers, linkers, …) dùng để tạo ra mã nhị phân cho bộ vi

xử lý ARM trên hệ điều hành Linux, OS X, và Windows(với Cygwin)

Cung cấp một bộ headers của hệ thống cho các API native chuẩn mà được đảm bảo được hỗ trợ trong tất cả các phiên bản sau này của nền tảng:

• Libc (thư viện C) headers

• Libm (thư viện toán học) headers

• Giao diện JNI headers

• Liblog (Android logging) header

• OpenGL ES 1.1 và OpenGL ES 2.0(thư viện graphics library) headers

• Libjnigraphics (Pixel buffer access) header(for Android 2.2 trở lên)

• Thư viện OpenSL ES native audio

• API cho ứng dụng android

NDK cũng cung cấp một hệ thống biên dịch giúp chúng ta làm việc hiệu quả với mã nguồn của mình mà không cần điều khiển chi tiết các công cụ/ nền tảng/ CPU/ ABI Người dùng chỉ cần tạo các file biên dịch đơn giản để mô tả mã nguồn của mình mà trong ứng dụng Android sử dụng Và hệ thống biên dịch sẽ sử dụng các file này để biên dịch, và tạo ra một thư viện động bỏ trực tiếp vào trong dự án của mình

Trang 40

SVTH: Nhữ Thị Trà My- 08CNTT02 Trang 40

 Hệ thống và phần mềm yêu cầu

• The Android SDK

- Hoàn tất cài đặt một Android SDK (bao gồm tất cả các phụ thuộc)

- Phiên bản SDK Android 1.5 trở đi

• Hệ điều hành hỗ trợ

- Window XP (32-bit) hoặc vista (32- hoặc 64 -bit)

- Linux (32 hoặc 64 bit, thử nghiệm trên Linux Ubuntu Dapper Drake)

• Các công cụ Cần Thiết

- Đối với tất cả các nền tảng, bắt buộc GNU Make 3.81 trở lên

- Đối với Window, bắt buộc Cygwin 1.7 trở lên NDK không làm việc với Cygwin 1.5

• Nền tảng Android tương thích

Các thư viện native được tạo ra bởi Android NDK chỉ có thể sử dụng trên các thiết bị Android phiên bản 1.5 trở đi Điều này là do Bộ công cụ và ABI liên quan đến những thay đổi làm cho các thư viện native không tương thích với hình ảnh hệ thống 1.0 và 1.1

Vì lí do này nên chúng ta nên sử dụng thư viện native được tạo ra với NDK trong ứng dụng mà được triển khai trên các thiết bị chạy trên nền tảng android 1.5 trở đi

Để đảm bảo tính tương thích, một ứng dụng dùng thư viện native tạo ra với NDK phải

khai báo <uses- sdk> phần tử trong file mainfese của nó, với một giá trị thuộc tính của

android:minSdkVersion 3 hoặc lớn hơn

Ví dụ:

<manifest>

<uses-sdk android:minSdkVersion="3" />

Ngày đăng: 26/06/2021, 13:17

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w