Từ thực tế đó, với những kiến thức đã được học ở trường và trong thời gian thực tập, kết hợp vớinền tảng công nghệ trên di động mở của Google chúng tôi đã chọn đề tài tốt nghiệpcho mình:
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
Tel (84-511) 736 949, Fax (84-511) 842 771Website: itf.ud.edu.vn, E-mail: cntt@edu.ud.vn
LUẬN VĂN TỐT NGHIỆP KỸ SƯ
NGÀNH CÔNG NGHỆ THÔNG TIN
MÃ NGÀNH : 05115
ĐỀ TÀI:
NGHIÊN CỨU HỆ ĐIỀU HÀNH ANDROID VÀ
XÂY DỰNG CHƯƠNG TRÌNH DEMO GAME CARO ONLINE
Trang 2LỜI CẢM ƠN
Chúng tôi xin chân thành cảm ơn các thầy cô trường ĐHBK Đà Nẵng, đặc biệt
là các thầy cô khoa Công Nghệ Thông Tin, đã truyền đạt những kiến thức quí báu vàchỉ dẫn tận tình cho chúng tôi trong những năm học qua
Đặc biệt, chúng tôi xin chân thành cảm ơn thầy giáo ThS Trần Đình Sơn, khoaCông Nghệ Thông Tin, trường Đại học Bách Khoa đã tận tình hướng dẫn, động viên
và giúp đỡ chúng tôi trong suốt thời gian thực hiện đề tài Và cảm ơn các bạn trongkhoa Công Nghệ Thông Tin – khóa 06T đã ủng hộ, giúp đỡ, chia sẻ kiến thức, kinhnghiệm và tài liệu cho nhóm chúng tôi trong quá trình nghiên cứu và thực hiện đề tài
Và để có được kết quả như ngày hôm nay, chúng tôi rất biết ơn gia đình đãđộng viên, khích lệ, tạo mọi điều kiện thuận lợi nhất trong suốt quá trình học tập cũngnhư quá trình thực hiện đề tài tốt nghiệp này
Tuy nhiên, trong quá trình thực hiện đề tài không thể tránh khỏi những thiếusót Chúng tôi mong nhận được nhiều ý kiến phê bình của quí thầy cô, các anh chị vàcác bạn
Xin chân thành cảm ơn
Đà Nẵng, ngày 05/06/2011
Sinh viên thực hiện
Phan Ngọc Huy – 06T3Hoàng Đức Nhân – 06T3
Trang 3LỜI CAM ĐOAN
Tôi xin cam đoan :
1 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của thầy ThS Trần Đình Sơn.
2 Mọi tham khảo dùng trong luận văn đề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á, tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên,
Phan Ngọc Huy – 06T3 Hoàng Đức Nhân – 06T3
Trang 4TỔNG QUAN VỀ ĐỀ TÀI 11
-I Tổng quan 11
-II Đặt vấn đề 11
-III Lý do chọn đề tài 12
-IV Hướng nghiên cứu của đề tài 12
-IV.1 Cơ sở lý thuyết 12
-IV.2 Công cụ thiết kế 12
-V Dự kiến kết quả đạt được 13
-VI Nội dung tổ chức luận văn 13
GIỚI THIỆU TỔNG QUAN VỀ ANDROID 14
-I Giới thiệu về Android 14
-II Những tính năng của Android 16
-III Kiến trúc hệ điều hành Android 16
-III.1 Applications layer (Tầng ứng dụng) 17
-III.2 Application Framework (Nền tảng ứng dụng) 18
-III.3 Libraries Layer (Tầng thư viện) & Android Runtime (Tầng thực thi) - 19
-III.4 Linux Kernel (Nhân Linux) 21
-IV Hệ thống tập tin trên hệ điều hành Android 22
-IV.1 Tổng quan về hệ thống file trên Android 22
-IV.2 Các kiểu file trên Android 22
-IV.3 Tổ chức quyền sở hữu và quyền hạn trên file 23
-IV.4 Cây thư mục trên hệ điều hành Android 24
-V Cách thức tổ chức file trên Android Java Application 25
Trang 5-VII Bộ SDK (Software Development Kit – Bộ phát triển phần mềm) của Google
phát triển dành cho Android 28
-VII.1 Giới thiệu bộ Android SDK 28
-VII.2 Cấu hình bộ Android SDK trong Eclipse 3.5 28
-VII.3 Cập nhật ADT Plugin 30
-VII.4 Sử dụng bộ công cụ Eclipse để phát triển các ứng dụng Android 30
-VIII Giới thiệu một số gói cơ bản của Android 31
CƠ SỞ LÝ THUYẾT 33
-I Giới thiệu về các loại Game 33
-I.1 Game hành động – Action 33
-I.2 Game nhập vai – Role Playing Game (RPG) 33
-I.3 Game phiêu lưu – Adventure 33
-I.4 Game chiến thuật – Strategy 34
-I.5 Các thể loại game nhỏ hơn 34
-I.5.1 Kinh dị (Survival horror) 34
-I.5.2 Mô phỏng (Simulation) 34
-I.5.3 Thể thao (Sport) 35
-I.5.4 Giải đố (Puzzle) 35
-I.5.5 Đối kháng (Fighting) 35
-II Các thành phần về đồ họa (graphics) 35
-II.1 File bitmap 35
-II.2 Các mô hình màu 35
-II.3 Background Image 36
-II.4 Frame 36
Trang 6-II.7 Map (Bản đồ) 37
-II.8 Layer 38
-III Kỹ thuật xây dựng đồ họa 38
-III.1 Graphics techiques (kỹ thuật đồ họa) 38
-III.2 Kỹ thuật chuyển tiếp địa hình 39
-III.3 Tổ chức map 40
III.3.1 Dùng tile 40
III.3.2 Dùng background 41
-III.4 Cuộn map 41
-III.5 Tạo chuyển động (animation) 42
-III.6 Đồng bộ frame 42
-IV Kỹ thuật thiết kế game 43
-IV.1 Game loop 43
IV.1.1 Tổng quan về game loop 43
IV.1.2 Sơ đồ trực quan về vòng lặp trong game 44
-IV.2 Game AI (Artificial Intelligent) 45
IV.2.1 Game AI là gì 45
IV.2.2 Mô hình artificial intelligent 45
-IV.3 Game Physics 46
-IV.4 Thread 47
-IV.5 Sound (âm thanh) 48
THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 49
-I Đặc tả game Caro 49
-I.1 Giới thiệu về game Caro 49
-I.2 Một số thủ thuật chơi Caro 49
Trang 7-I.4 Mô tả cách chơi 51
-II Xây dựng và thiết kế hệ thống 52
-II.1 Phân tích yêu cầu 52
-II.2 Thiết kế hệ thống 52
-II.2.1 Sơ đồ Use Case 52
II.2.1.1 Mô hình Use Case Menu Game 52
II.2.1.2 Mô hình Use Case Player 53
II.2.1.3 Mô hình Use case Board (bàn cờ) 54
II.2.1.4 Mô hình Use case Server 55
-II.2.2 Sơ đồ hoạt động 55
-II.2.3 Sơ đồ các lớp (Class) 56
-II.3 Các thuật toán chính của chương trình 65
-II.3.1 Xây dựng bàn cờ 65
-II.3.2 Xây dựng Server 65
-II.3.3 Xây dựng Client 66
-III Kết quả chương trình 67
-III.1 Giao diện menu của game 67
-III.2 Giao diện tùy chọn màu quân cờ 68
-III.3 Giao diện đăng nhập 68
-III.4 Giao diện đăng ký 69
-III.5 Giao diện khi đăng nhập vào 69
-III.6 Giao diện thay đổi thông tin User 70
-III.7 Giao diện chọn Room 71
-III.8 Giao diện chọn Paper (chọn bàn cờ) 72
Trang 8-III.11 Giao diện chiến thắng 75
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 76
-I Kết quả đạt được 76
-I.1 Về lý thuyết 76
-I.2 Về thực nghiệm 76
-II Hướng phát triển của đề tài 77
Trang 9Hình 1: Mô hình kiến trúc hệ điều hành Android 17
Hình 2: Bảng liệt kê một số kiểu file trong Linux 23
Hình 3: Sơ đồ cây thư mục trên hệ điều hành Android 25
Hình 4: Cách tổ chức file trên Android Java Application 26
Hình 5: Vòng đời Android 27
Hình 6: Các hướng di chuyển của Isometric tile 38
Hình 7: Sơ dồ tọa độ Isometric tile trên map 39
Hình 8: Các hướng di chuyển của Hexagon title 39
Hình 9: Sơ đồ tọa độ Hexagon tile trên map 39
Hình 10: Chưa chuyển tiếp 40
Hình 11: Sau khi chuyển tiếp 40
Hình 12: Xây dựng map dùng tile 41
Hình 13: Xây dựng map dùng background 41
Hình 14: Sơ đồ trực quan vòng lặp trong game 44
Hình 15: Sơ đồ Use Case Menu Game 52
Hình 16: Sơ đồ Use Case Player 53
Hình 17: Sơ đồ Use Case Board 54
Hình 18: Sơ đồ Use Case Server 55
Hình 19: Sơ đồ hoạt động 55
Hình 20: Lớp Caro 56
Hình 21: Lớp CaroGame 56
Hình 22: Lớp CaroView 57
Hình 23: Lớp Wingame 57
Hình 24: Lớp Login 58
Hình 25: Lớp Register 58
Hình 26: Lớp ServerManager 59
Hình 27: Lớp Current 59
Hình 28: Lớp Room 60
Hình 29: Lớp ListRoom 60
Hình 30: Lớp ListRoomLayout 60
Hình 31: Lớp ListRoomAdapter 61
Trang 10Hình 34: Lớp ListPaperLayout 63
Hình 35: Lớp ListPaperAdapter 63
Hình 36: Lớp ViewPaper 64
Hình 37: Giao diện menu game 67
Hình 38: Giao diện chọn màu quân cờ 68
Hình 39: Giao diện đăng nhập vào game 68
Hình 40: Giao diện đăng ký account 69
Hình 41: Giao diện khi login vào 69
Hình 42: Giao diện thay đổi thông tin 70
Hình 43: Giao diện chọn room 71
Hình 44: Giao diện chọn bàn cờ 72
Hình 45: Giao diện vào bàn cờ và đợi người chơi 73
Hình 46: Giao diện playing game 74
Hình 47: Giao diện win game 75
Trang 11-CHƯƠNG 1
TỔNG QUAN VỀ ĐỀ TÀI
Điện thoại di động là dùng để liên lạc Nhưng ngày nay, điện thoại di động còn
có nhiều mục đích sử dụng khác nữa, người ta có thể sử dụng điện thoại di động vàonhiều việc khác nhau và đôi khi chức năng phụ của điện thoại còn được sử dụng nhiềuhơn là chức năng chính là nghe và gọi Điện thoại di động không còn là thiết bị liên lạcthông thường, mà nó chứa đựng sức mạnh như một máy tính thông thường dưới mộtdạng thức bỏ túi Công nghệ có chuẩn mở của thiết bị di động đã thúc đẩy nhanh tínhhội tụ của nhiều chức năng và dịch vụ vào một thiết bị duy nhất Các bước tiến vượtbậc về công nghệ giúp cho bộ nhớ của điện thoại di động ngày càng lớn, tốc độ xử lýngày càng nhanh hơn Người ta còn tích hợp vào đó máy ảnh, máy quay video, radio,tivi, các phần mềm ứng dụng và nhiều tính năng khác Điều này làm cho chiếc điệnthoại trở thành công cụ rất hữu ích trong đời sống cũng như trong công việc
Trong thời gian qua, chúng ta đã chứng kiến được sự thay đổi ngoạn mục củacông nghệ di động Không chỉ dừng lại ở việc chụp ảnh, quay phim mà còn có thể gửiemail, chat với bạn bè, nghe nhạc, xem truyền hình, chơi game giải trí nữa
II Đặt vấn đề
Thị trường game những năm qua đang rất sôi động và nóng bỏng Ngoài nhữnggame trên các máy tính truyền thống còn xuất hiện các game cho các máy cầm tay nhưSony PSP của hãng Sony và Nintendo DS của hãng Nintendo với nhiều tính năng mới
lạ Game cho điện thoại di động cũng phát triển nhanh chóng, xuất hiện nhiều công tychuyên cung cấp game cho di động qua hệ thống tin nhắn và đặc biệt tại Việt Nam đã
có nhiều công ty lập trình game như công ty GameLoft, AsNet, VinaGame chuyên sảnxuất và gia công game di động Điều trên hứa hẹn sự phát triển mạnh mẽ của ngànhcông nghiệp giải trí điện tử trong tương lai
Trang 12III Lý do chọn đề tài
Ngày nay do nhu cầu đời sống của con người ngày càng được nâng cao, và nhucầu giải trí cũng được quan tâm Cùng với sự phát triển các tính năng của điện thoại diđộng, vấn đề đặt ra là vì sao chúng ta không kết hợp các tiện ích giải trí trên chiếc điệnthoại để có thể giúp con người giảm stress sau những giờ làm việc vất vả Từ thực tế
đó, với những kiến thức đã được học ở trường và trong thời gian thực tập, kết hợp vớinền tảng công nghệ trên di động mở của Google chúng tôi đã chọn đề tài tốt nghiệpcho mình:
Nghiên cứu hệ điều hành Android
Và xây dựng chương trình demo game Caro online.
Dù chương trình game rất nhiều nhưng để viết ra một game hay và hoàn chỉnh,thu hút được nhiều người chơi là không dễ Tuy vậy với niềm đam mê lập trình và yêuthích game, chúng tôi muốn tiếp cận và thử sức với lĩnh vực còn khá mới mẻ này
IV Hướng nghiên cứu của đề tài
IV.1 Cơ sở lý thuyết
Tìm hiểu công nghệ và nền tảng di động mở Android của Google, quy trìnhphát triển game Online, nhằm xây dựng thành công một ứng dụng game Online trênnền di động Android Với mục đích đó, yêu cầu chúng tôi phải nắm được các kiến thức
cơ bản sau đây trên nền tảng công nghệ Android:
Quy trình phát triển một ứng dụng game trên nền di động.
Các công cụ và ngôn ngữ lập trình
Kiến thức về kĩ thuật và công nghệ sử dụng thiết kế game
Thực thi chương trình trên thiết bị thực (điện thoại di động chạy trên nềnAndroid)
IV.2 Công cụ thiết kế
Thiết kế chương trình: Eclipse 3.5
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 12
Trang 13 Android SDK _r10-window tích hợp trên Eclipse.
V Dự kiến kết quả đạt được
Nắm rõ cơ sở lý thuyết thiết kế một game nói chung trên nền di động sử dụngcông nghệ Android, bên cạnh đó chúng tôi tiến hành xây dựng ứng dụng game Caroonline thỏa mãn các yêu cầu sau:
Game phải hiển thị rõ phần chơi với các chức năng: thắng, thua game
Cài đặt được trên các thiết bị di động có hổ trợ Android
VI Nội dung tổ chức luận văn
Với những kết quả dự kiến đạt được của chương trình, luận văn được tổ chứcthành 4 chương Cụ thể như sau:
Chương 1 Tổng quan đề tài: giới thiệu sơ lược về đề tài, hướng nghiên
cứu và dự kiến kết quả đạt được của đề tài
Chương 2 Giới thiệu tổng quan về nền tảng Android: khái niệm, lịch
sử phát triển, các tính năng, mô hình, vòng đời và các gói quan trọng củaAndroid
Chương 3 Cơ sở lý thuyết về game: giới thiệu các thể loại game, các
kỹ thuật sử dụng trong game, khái niệm về đồ họa, kỹ thuật xây dựng đồhọa trong game
Chương 4 Thiết kế và xây dựng chương trình : đặc tả về game, phân
tích thiết kế hệ thống game, cài đặt các thuật toán chính của chương trình
và kết quả đạt được
Phần kết luận và hướng phát triển: nêu ra những nhận xét về kết quả
đã đạt được, những hạn chế và chưa đạt được, từ đó đưa ra phươnghướng phát triển tiếp theo của đề tài
Trang 14CHƯƠNG 2
GIỚI THIỆU TỔNG QUAN VỀ ANDROID
Android là một hệ điều hành di động dựa trên nền tảng linux phiên bản 2.6 dànhcho các dòng điện thoại SmartPhone Đầu tiên được ra đời bởi công ty liên hợpAndroid, sau đó được Google mua lại và phát triển từ năm 2005 và trở thành một hệđiều hành di động mã nguồn mở, miễn phí, mạnh mẽ và được ưa chuộng cao trên thếgiới
Hệ điều hành android một hệ điều hành rất mạnh mạnh, có bảo mật cao, hỗ trợđược nhiều công nghệ tiên tiến như 3G, GPS, EDGE, Wifi tương thích với nhiềuphần cứng, hỗ trợ nhiều loại bộ nhập dữ liệu như keyboard, touch và trackball.Android là hệ điều hành di động nên có khả năng kết nối cao với các mạng không dây
Hỗ trợ công nghệ OpenGL nên có khả năng chơi các phương tiện media, hoạt hìnhcũng như trình diễn các khả năng đồ họa khác cực tốt, là tiền đề để phát triển các ứngdụng có giao diện phức tạp chẳng hạn như là các trò chơi
Android liên tục được phát triển, mỗi bản cập nhật từ google là mỗi lần androidđược tối ưu hóa để hoạt động tốt hơn, nhanh và ổn định hơn, hỗ trợ thêm công nghệmới Năm 2008, hệ điều hành android đã chính thức mở toàn bộ mã nguồn, điều đócho phép các hãng điện thoại có thể đem mã nguồn về tùy chỉnh, thiết kế lại sao chophù hợp với mỗi mẫu mã điện thoại của họ và điều quan trọng nữa là hệ điều hành mởnày hoàn toàn miễn phí, không phải trả tiền nên giúp họ tiết kiệm khá lớn chi phí pháttriển hệ điều hành Những điều đó là cực kỳ tốt không chỉ đối với các hãng sản xuấtđiện thoại nhỏ mà ngay cả với những hãng lớn như Samsung, HTC
Với Google, vì android hoàn toàn miễn phí, Google không thu tiền từ nhữnghãng sản xuất điện thoại, tuy không trực tiếp hưởng lợi từ android nhưng bù lại,những dịch vụ của hãng như Google Search, Google Maps, nhờ có android mà có thể
dễ dàng xâm nhập nhanh vào thị trường di động vì mỗi chiếc điện thoại được sản xuất
ra đều được tích hợp hàng loạt dịch vụ của Google Từ đó hãng có thể hưởng lợi, chủyếu là từ các nguồn quảng cáo trên các dịch vụ đó
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 14
Trang 15Với các nhà phát triển ứng dụng (developers), việc hệ điều hành android được
sử dụng phổ biến đồng nghĩa với việc họ có thể thoải mái phát triển ứng dụng trên nềnandroid với sự tin tưởng là ứng dụng đó sẻ có thể chạy được ngay trên nhiều dòng điệnthoại của các hãng khác nhau Họ ít phải quan tâm là đang phát triển cho điện thoạinào, phiên bản bao nhiêu vì nền tảng android là chung cho nhiều dòng máy, máy ảoJava đã chịu trách nhiệm thực thi những ứng dụng phù hợp với mỗi dòng điện thoại
mà nó đang chạy Tất cả các chương trình ứng dụng được viết bằng ngôn ngữ Java kếthợp với XML nên có khả năng khả chuyển cao
Một số hãng sản xuất điện thoại có sử dụng hệ điều hành android tiêu biểu :
HTC với các dòng Desire HD, Evo 4G, DROID ERIS, Desire Z, Hero, Desire,Tattoo, Wildfire, Droid Incredible, Legend, Magic, Google Nexus One, Dream,Aria, Paradise
LG với các dòng GT540 Optimus, Optimus Chic E720, Optimus One P500,GW620, Optimus Z, Optimus Q, KH5200 Andro-1, GW880, C710Aloha
MOTOROLA với các dòng MILESTONE 2, BACKFLIP, Droid XTreme,MT710 ZHILING, MILESTONE, XT720 MOTOROI, A1680, XT800ZHISHANG, DEFY, CHARM, XT806
SAMSUNG với các dòng máy I9000 Galaxy S, Galaxy Tab, Epic 4G, i5510,I5500 Galaxy 5, I7500 Galaxy, I5800 Galaxy 3, M110S Galaxy S, I6500UGalaxy, Galaxy Q, I5700 Galaxy Spica, I8520 Galaxy Beam, I909 Galaxy S
SONY : XPERIA X10, XPERIA X10 mini, XPERIA X8
ACER với các dòng máy beTouch T500, Liquid E, Stream, Liquid, beTouchE110, beTouch E130, beTouch E400, beTouch E120, Liquid Metal
Ngoài ra còn nhiều hãng điện thoại vừa và nhỏ khác nữa cũng sử dụng hệ điềuhành android trong sản phẩm của mình
II Những tính năng của Android
Các tính năng mà Android hỗ trợ rất rộng, bao gồm đồ họa 2D, 3D (dựa trênOPENGL_ES), khả năng định vị (hiện chỉ dùng GPS), Bluetooth, EDGE, 3G, WiFi,
Trang 16năng nâng cao như WiFi, GPS, 3D hardware…sẽ phụ thuộc vào từng dòng thiết bị cụthể Các bước phát triển ứng dụng trên Android rất đơn giản, với sự hỗ trợ của nhiềuthư viện có sẵn, mô hình lập trình khá sáng sủa cùng với Eclipse.
Google cho biết, Android cho phép điện thoại sẽ nối mạng đơn giản như máytính Ngoài ra, sẽ có hàng triệu phần mềm, các ứng dụng khác được tạo ra Ebay, mộtthành viên của liên minh bày tỏ, hy vọng người dùng điện thoại di động sẽ dễ dàngmua bán, sử dụng dịch vụ của hãng từ chính điện thoại
Android sẽ mang nhiều lợi ích cho khách hàng, các lập trình viên và nhà sảnxuất, nhà cung cấp mạng di động Điều này cũng có nghĩa các sản phẩm, dịch vụ cógiá rẻ hơn bởi điện thoại sẽ dễ sử dụng, ứng dụng nhiều hơn, khai thác các dịch vụInternet đơn giản hơn
III Kiến trúc hệ điều hành Android
Hệ điều hành android có 4 tầng từ dưới lên trên là tầng hạt nhân Linux (Phiênbản 2.6), Tầng Libraries & Android runtime , Tầng Application Framework và trêncùng là tầng Application
Mô hình sau thể hiện các thành phần chính của hệ điều hành Android Mỗi phầnđược mô tả như sau:
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 16
Trang 17Hình 1: Mô hình kiến trúc hệ điều hành Android III.1 Applications layer (Tầng ứng dụng)
Đây là lớp ứng dụng giao tiếp với người dùng, bao gồm các ứng dụng như : Các ứng dụng cơ bản, được cài đặt đi liền với hệ điều hành là gọi điện(phone),quản lý danh bạ(Contacts), duyệt web (Browser), nhắn tin (SMS), lịch làm việc(Calendar), đọc e-mail (Email-Client), bản đồ (Map), quay phim chụp ảnh (camera) Các ứng dụng được cài thêm như các phần mềm chứng khoán (Stock), các trò chơi(Game), từ điển
Các chương trình có các đặc điểm là :
Viết bằng Java, phần mở rộng là apk
Khi mỗi ứng dụng được chạy, nó có một phiên bản Virtual Machine được dựnglên để phục vụ cho nó Nó có thể là một Active Program : Chương trình có giaodiện với người sử dụng hoặc là một background : chương trình chạy nền hay làdịch vụ
Trang 18 Android là hệ điều hành đa nhiệm, điều đó có nghĩa là trong cùng một thờiđiểm, có thể có nhiều chương trình cùng chạy một lúc, tuy nhiên, với mỗi ứngdụng thì có duy nhất một thực thể (instance) được phép chạy mà thôi Điều đó
có tác dụng hạn chế sự lạm dụng tài nguyên, giúp hệ thống hoạt động tốt hơn
Các ứng dụng được gán số ID của người sử dụng nhằn phân định quyền hạn khi
sử dụng tài nguyên, cấu hình phần cứng và hệ thống
Android là một hệ điều hành có tính mở, khác với nhiều hệ điều hành di độngkhác, android cho phép một ứng dụng của bên thứ ba được phép chạy nền Cácứng dụng đó chỉ có một hạn chế nhỏ đó là nó không được phép sử dung quá5~10% công suất CPU, điều đó nhằn để tránh độc quyền trong việc sử dụngCPU
Ứng dụng không có điểm vào cố định, không có phương thức main để bắt đầu
III.2 Application Framework (Nền tảng ứng dụng)
Tầng này xây dựng bộ công cụ - các phần tử ở mức cao để các lập trình viên cóthể nhanh chóng xây dựng ứng dụng Nó được viết bằng Java, có khả năng sử dụngchung để tiết kiệm tài nguyên
Đây là một nền tảng mở, điều đó có 2 điều lợi:
- Với các hãng sản xuất điện thoại : Có thể tùy biến để phù hợp với cấu hìnhđiện thoại mà họ sản xuất cũng như để có nhiều mẫu mã, style hợp thị hiếu ngườidùng Vì thế nên tuy cùng chung nền tảng android mà điện thoại của Google có thểkhác hẳn với Motorola, HTC, T-Mobile, Samsung
- Với lập trình viên: Cho phép lập trình viên có thể sử dụng các API ở tầngtrên mà không cần phải hiểu rõ cấu trúc bên dưới, tạo điều kiện cho lập trình viên tự
do sáng tạo bởi vì chỉ cần quan tâm đến nội dung mà ứng dụng họ làm việc Một tậphợp API rất hữu ích được xây dựng sẵn như hệ thống định vị, các dịch vụ chạy nền,liên lạc giữa các ứng dụng, các thành phần giao diện cấp cao
Giới thiệu một số thành phần của phần này:
- Activity Manager: Quản lý các chu kỳ sống của một ứng dụng cũng nhưcung cấp công cụ điều khiển các Activity
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 18
Trang 19- Telephony Manager: Cung cấp công cụ để thực hiện việc liên lạc như gọiđiện thoại
- XMPP Service: Cung cấp công cụ để liên lạc trong thời gian thực
- Location Manager: Cho phép xác định vị trí của điện thoại thoại dựa vào hệthống định vị toàn cầu GPS và Google Maps
- Window Manager: Quản lý việc xây dựng và hiển thị các giao diện ngườidùng cũng như tổ chức quản lý các giao diện giữa các ứng dụng
- Notication Manager: Quản lý việc hiển thị các thông báo (như báo có tinnhắn, có e-mail mới )
- Resource Manager: Quản lý tài nguyên tĩnh của các ứng dụng bao gồm cácfile hình ảnh, âm thanh, layout, string (Những thành phần không được viết bởi ngônngữ lập trình)
III.3 Libraries Layer (Tầng thư viện) & Android Runtime (Tầng
Thư viện hệ thống C - một cài đặt dẫn xuất BSD của thư viện hệ thốngchuẩn C (libc), được điều chỉnh để nhúng vào các thiết bị cài đặt mãnguồn Linux
Thư viện Media - dựa trên nền tảng mở của PacketVideo, những thưviện hỗ trợ phát lại và lưu nhiều định dạng audio và video phổ biến,chẳng hạn như những file hình ảnh tĩnh, bao gồm MPEG4, H.246, MP3,ARM, AAC, JPG và PNG
Surface Manager - quản lý các truy cập vào hệ thống con hiển thị và tíchhợp các lớp đồ họa 2D và 3D từ nhiều ứng dụng
Trang 20 LibWebCore - một engine trình duyệt web hiện đại với việc tích hợptrình duyệt Android và một trình duyệt web có thể nhúng được.
SGL - một engine đồ họa 2D tầng dưới
Thư viện 3D (3D libraries) - một cài đặt dựa trên các APIs của côngnghệ OpenGL_ES 1.0, các thư viện sử dụng phần cứng tăng tốc 3D hoặccác thư viện bao gồm các ứng dụng phần mềm 3D chuyển định dạng ảnhvector thành bitmap được tối ưu cao độ
FreeType - trình bày font ảnh và vector
SQLite - một hệ cơ sở dữ liệu quan hệ mạnh mẽ và tốn ít bộ nhớ có sẵncho tất cả các ứng dụng
b Phần Android runtime:
Phần này bao gồm một bộ các thư viện chính cung cấp hầu hết các chức năng
có sẵn trong các thư viện chính của ngôn ngữ Java
Phần này có 2 bộ phận tương tự như mô hình chạy Java trên máy tính thường
- Thứ nhất là các thư viện lõi (Core Library), chứa các lớp như JAVA IO,Collections, File Access
- Thứ hai là một máy ảo java (Dalvik Virtual Machine)
Mặc dù cũng được viết từ ngôn ngữ Java nhưng một ứng dụng Java của hệ điềuhành android không được chạy bằng JRE của Sun (nay là Oracle) (JVM) mà là chạybằng máy ảo Dalvik do Google phát triển
Mỗi ứng dụng Android chạy trên bộ xử lý riêng của nó, với mỗi một máy ảoDalvik
Dalvik được thiết kế để một thiết bị có thể chạy nhiều máy ảo hữu hiệu Máy ảoDalvik thực thi nhiều file định dạng (.dex), định dạng này có thể được tối ưu để ít tốn
bộ nhớ nhất Máy ảo dựa trên việc đăng ký, và chạy nhiều lớp được biên dịch bởi bộbiên dịch Java, nó được chuyển thành định dạng dex bằng công cụ “dx” có sẵn
Máy ảo Dalvik dựa trên hệ điều hành Linux cho những chức năng tầng dướinhư phân luồng và quản lý bộ nhớ cấp thấp
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 20
Trang 21III.4 Linux Kernel (Nhân Linux)
Hệ điều hành android được phát trển dựa trên hạt nhân linux, cụ thể là hạt nhânlinux phiên bản 2.6, điều đó được thể hiện ở lớp dưới cùng này Tất cả mọi hoạt độngcủa điện thoại muốn thi hành được thì đều được thực hiện ở mức cấp thấp ở lớp nàybao gồm quản lý bộ nhớ (memory management), giao tiếp với phần cứng (drivermodel), thực hiện bảo mật (security), quản lý tiến trình (process)
Tuy được phát triển dựa vào nhân linux nhưng thực ra nhân linux đã được nângcấp và sửa đổi rất nhiều để phù hợp với tính chất của những thiết bị cầm tay như hạnchế về bộ vi xử lý, dung lượng bộ nhớ, kích thước màn hình, nhu cần kết nối mạngkhông dây
Bluetooth Driver : Điều khiển thiết bị phát và thu sóng Bluetooth
USB driver : Quản lý hoạt động của các cổng giao tiếp USB
Keypad driver : Điều khiển bàn phím
Wifi Driver : Chịu trách nhiệm về việc thu phát sóng wifi
Audio Driver : điều khiển các bộ thu phát âm thanh, giải mã các tính hiệudạng audio thành tín hiệu số và ngược lại
Binder IPC Driver : Chịu trách nhiệm về việc kết nối và liên lạc với mạng
vô tuyến như CDMA, GSM, 3G, 4G, E để đảm bảo những chức năng truyềnthông được thực hiện
M-System Driver : Quản lý việc đọc ghi lên các thiết bị nhớ như thẻ SD,flash
Power Madagement : Giám sát việc tiêu thụ điện năng
Trang 22IV Hệ thống tập tin trên hệ điều hành Android
Trong phạm vi một bài tìm hiểu về hệ điều hành, em chỉ xin tìm hiểu rõ mộtvấn đề của hệ điều hành android đó là vấn đề quản lý hệ thống tập tin Phần này cóđiểm thuận lợi để tìm hiểu đó là vì được phát triển từ nhân linux nên hệ thống tập tintrên android cực kỳ giống hệ thống tập tin trên linux như là về cách tổ chức, nhữngquyền hạn của người sử dụng lên file
IV.1 Tổng quan về hệ thống file trên Android
Trong android, các file được tổ chức thành các thư mục, theo mô hình phâncấp Tham chiếu đến một file bằng tên và đường dẫn Các câu lệnh thao tác file chophép thực hiện các chức năng như dịch chuyển, sao chép toàn bộ thư mục cùng vớicác thư mục con chứa trong nó…
Có thể sử dụng các ký tự, dấu gạch dưới, chữ số, dấu chấm và dấu phảy để đặttên file Không được bắt đầu một tên file bằng dấu chấm hay chữ số Những ký tựkhác như ‘/’, ‘?’, ‘*’, là ký tự đặc biệt được dành riêng cho hệ thống Chiều dài của tênfile có thể tới 256 ký tự Trong hệ điều hành android có sự phân biệt tên file chữ hoa
và chữ thường, điều đó có nghĩa là trong cùng 1 thư mục có thể tồn tại những file cótên là File, FILE, file và chúng là những file khác nhau
Tất cả các file trong android có chung cấu trúc vật lý là chuỗi các byte (bytestream) Cấu trúc thống nhất này cho phép android áp dụng khái niệm file cho mọithành phần dữ liệu trong hệ thống Thư mục cũng như các thiết bị được xem như file.Chính việc xem mọi thứ như các file cho phép android quản lý và chuyển đổi dữ liệumột cách dễ dàng Một thư mục chứa các thông tin về thư mục, được tổ chức theo mộtđịnh dạng đặc biệt Các thành phần được xem như các file, chúng được phân biệt dựatrên kiểu file: ordinary file, directory file, character device file, và block device file
IV.2 Các kiểu file trên Android
Trong nhiều hệ điều hành như window, người ta phân biệt rõ file (tập tin) vàfolder (hay directory : thư mục) là 2 thành phần khác hẳn nhau Tuy nhiên trên hệ điềuhành android (cũng như linux) thì coi directory cũng là file và nó là một loại file đặcbiệt Thực tế còn một số loại file nữa có thể liệt kê theo bảng sau :
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 22
Trang 23Chữ cái biểu diễn Kiểu file
d Thư mục (Directory)
b File kiểu khối (block-type special file)
c File kiểu ký tự (character-type special file)
l Liên kết tượng trưng (symbolic link)
p File đường ống (pipe)
- File bình thường (regular file)
Hình 2: Bảng liệt kê một số kiểu file trong Linux
IV.3 Tổ chức quyền sở hữu và quyền hạn trên file
Tương tự trên hệ thống linux, trên hệ điều hành android, một file có thể liên kếtvới một người sử dụng và một nhóm người sử dụng Sự liên kết đó là một tập hợp cácquyền hạn truy cập bao gồm quyền được phép đọc (read), được phép ghi (write) vàđược phép thực thi (execute)
Cụ thể như sau: Một file sẻ có những quyền hạn tương ứng với 9 ký tự theomẫu sau : Với ký tự r w x nghĩa là có quyền tương ứng với ký tự viết tắt đó, - nghĩa làkhông có quyền hạn đó
x/-3 ký tự đầu tiên là quyền hạn chủ nhân file
3 ký tự giữa là quyền hạn của nhóm tài khoản sở hữu file
3 ký tự cuối là quyền hạn của những người không thuộc nhóm sở hữu file
Ví dụ: Một file có dãy ký tự biểu diễn quyền hạn là rwxr-xr thì điều đó có
nghĩa :
3 ký tự đầu là rwx : Chủ nhân có thể đọc, ghi và thực thi file
3 ký tự tiếp theo là r-x thì nhóm tài khoản sở hữu file có quyền đọc và thực thifile chứ không có quyền ghi, chỉnh sửa file
3 ký tự cuối là r nghĩa là những người không sở hữu file chỉ được phép đọc
mà không thể chỉnh sửa hay thực thi file
Trang 24Trên hệ thống android, để biết xem được quyền hạn đó, ta có thể sử dụng câulệnh ls –l –d
Ví dụ: ls –l –d /mnt/sdcard/FanHy để xem quyền hạn của file
/mnt/sdcard/QuangHoa thì có thể trả về kết quả như sau:
d -rwxr-x system sdcard_rw 2010-12-29 21:00 FanHy
Thì những thông tin có thể lấy về là :
Ký tự đầu tiên là chữ d : vậy file đó có kiểu là thư mục hay là file bao hàm Chuổi ghi quyền hạn là -rwxr-x thì có nghĩa
( -)Người sở hữu không được phép đọc, ghi, thực thi file
(rwx) Nhóm tài khoản sử hữu được phép đọc, ghi, thực thi file
r-x : Những người không sở hữu file được phép đọc và thực thi filenhưng không được phép chỉnh sửa hay ghi lên file
Chuổi miêu tả file : sdcard_rw nghĩa là đây thuộc thiết bị thẻ nhớ sd, đọc vàghi được
2010-12-29 21:00 Thời gian chỉnh sửa lần cuối
FanHy : tên của file
Ngoài ra có 2 lệnh khác cũng hữu dụng là lệnh chown để thay đổi quyền sởhữu file, lệnh chmod để thay đổi quyền hạn liên quan đến file và lệnh chgrp để thayđổi nhóm người sở hữu file
IV.4 Cây thư mục trên hệ điều hành Android
Thư mục (hay có thể gọi là file) root là thư mục gốc của tất cả các file thư mụccòn lại Dưới nó có chứa một số file thư mục hệ thống Mỗi thư mục (trừ thư mục root)đều có một thư mục cha chứa nó, bản thân nó cũng có thể có nhiều file thư mục con.Cấu trúc đó có thể mô tả bằng một cây thư mục có dạng như sau :
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 24
/root
Trang 25Hình 3: Sơ đồ cây thư mục trên hệ điều hành Android
Giới thiệu một vài thư mục tiêu biểu :
/(root) : Là thư mục gốc Là thư mục duy nhất không có thư mục cha
/ mnt : thư mục chứa thiết bị lưu động (removeable)
/system : chứa những thành phần cơ bản nhất của hệ thống
/ect : chứa những file cấu hình của hệ thống, nó cực kỳ quan trọng vì sự hoạtđộng của hệ thống đều bị chi phối ở những file cấu hình này
/system/lost+found : chứa những tập tin bị mất lúc khởi động máy
/system/font : chứa những font chữ hiển thị được
/system/lib : chứa các thư viện để các phần mềm hoạt động (các phần mềm viếtbằng ngôn ngữ java)
/system/app : chứa các file apk của phần mềm (Các file cài đặt ứng dụng, kiểunhư MSI trong window hay dev trong Linux)
/system/bin : Chứa các chương trình nội trú của hệ thống
V Cách thức tổ chức file trên Android Java Application
Tên File Chức năng
Activity.java File khởi động mặc định
R.java File chứa tất cả ID resource
Android Library/ Thư mục chứa file Android’s SDK
Assets/ Đa phương tiện và các file yêu cầu
res/ Chứa tài nguyên cần sử dụng Res/drawable Thư mục chứa file ảnh
Res/layout File XML-style view layout
Trang 26Res/value File cấu hình
AndroidManifest.xml File miêu tả cho hệ điều hành bên ngoài của ứng dụng
Hình 4: Cách tổ chức file trên Android Java Application
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 26
Trang 27VI Vòng đời Android
Hình 5: Vòng đời Android
OnCreate(): gọi khi hoạt động này lần đầu tiên tạo ra Đây là nơi bạn
nên làm tất cả các thiết lập của bạn bình thường tạo ra để xem, kết dữliệu vào danh sách
OnRestart(): gọi sau khi các hoạt động dừng lại, chỉ cần trước khi nó
được bắt đầu lại, nó luôn theo sau onStart()
OnStart(): được gọi ngay trước khi hoạt động sẽ được nhìn thấy bởi
người dùng
OnResume (): gọi trước khi hoạt động bắt đầu để tương tác với người sử
dụng, nó theo sau onPause()
Trang 28 Onpause(): được gọi khi hệ thống bắt đầu gọi lại hoạt động khác.
Phương pháp này được sử dụng để dừng các hoạt động đưa dữ liệu vào
hệ thống, dừng ảnh động
Onstop(): gọi khi hoạt động này không còn hiển thị cho người dùng bởi
vì một hoạt động khác đã được nối trở lại
OnDestroy(): gọi trước khi hoạt động được tiêu huỷ Đây là cuộc gọi
cuối cùng Nó có thể được gọi khi hoạt động đã xong, hay vì hệ thốngtạm thời phá hủy để tiết kiệm không gian
VII Bộ SDK (Software Development Kit – Bộ phát triển
phần mềm) của Google phát triển dành cho Android VII.1 Giới thiệu bộ Android SDK
Google đã phát triển bộ SDK (bộ phát triển phần mềm) cho Android giúp cáclập trình viên tạo các ứng dụng cho nền tảng di động Android một cách dễ dàng
Bộ SDK được thiết kế để cho phép các nhà phát triển “mở rộng, thay thế và tái
sử dụng” các thành phần phần mềm và đi kèm công cụ gỡ lỗi, thư viện, một chươngtrình device emulator (thiết bị giả lập) và các dự án mẫu
SDK cũng chứa chương trình hỗ trợ để kết hợp với các công cụ với nền tảngphát triển nguồn mở Eclipse
Để sử dụng SDK, các nhà phát triển cần tải vào máy tính dựa trên X86 chạyWindow XP, Vista, Mac OS 10.4.8 hoặc các đời sau đó, Linux Ubuntu Dapper Drakehoặc các đời sau
Các nhà phát triển cũng sẽ cần Eclipse 3.2 hoặc các đời sau, với công cụ pháttriển Java và chương trình hỗ trợ của Android SDK, Java 1.5 hoặc 1.6, Apache Ant,môi trường phát triển tổng hợp, Python 2.2 và các đời sau
VII.2 Cấu hình bộ Android SDK trong Eclipse 3.5
Sử dụng Eclipse như một môi trường để phát triển ứng dụng Android Bạn cóthể cài đặt plugin ADT (Android Development Tools), công cụ này hỗ trợ các công cụ
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 28
Trang 29lập trình Android gắn liền với Eclipse với các chức năng bao gồm: tạo, chạy, gỡ lỗicác ứng dụng Android nhanh và dễ dàng hơn nhiều.
Nếu bạn chưa sử dụng Eclipse thì bạn hãy cài đặt nó ngay, vì nó là một công cụkhông thể thiếu để lập trình Android
Sau đó hãy tải về bộ SDK tại web www.code.google.com/android Giải nén tậptin zip đến một vị trí phù hợp trên máy bạn Mặc định, tập tin SDK được giải néntrong một thư mục có tên: android_sdk<flatform>_<release>_<build> Thư mục nàychứa thư mục con: tools/samples/
Hãy chú ý đến tên và vị trí của thư mục được giải nén của SDK trên hệ thốngcủa bạn Bạn sẽ cần đến thư mục SDK sau này khi cài đặt plugin Android hay dùngcác công cụ của SDK
Để tải và cài đặt Android plugin, bạn hãy làm thứ tự các bước sau:
1 Khởi động Eclipse, chọn Help>Software Update>Find and Install…
2 Xuất hiện hộp thoại tiếp theo, chọn Search for new features to intall và
nhấn Next
3 Nhấn New Remote Site
4 Gõ tên bất kỳ cho remote site (ví dụ: Android Plugin) và đánh vào địa chỉ
sau: https://dl-ssl.google.com/android/eclipse/
Nhấn OK.
5 Đánh dấu vào Android plugin mới xuất hiện và nhấn Next.
6 Trong hộp thoại mới Search Results, chọn Android Plugin>Eclipse Intergration>Android Development Tools và nhấn Next.
7 Đọc kỹ Accept terms of the license agreement và nhấn Next.
8 Nhấn Finish.
9 Lúc này ADT plugin chưa được đánh dấu chọn, bạn có thể chấp nhận cài
đặt bằng bất cứ giá nào, bằng cách nhấn Install All.
10 Khởi động lại Eclipse.
Trang 3011 Vào Window>Preferences và mở mục Android plugin bạn chọn đường
dẫn vào thư mục cài đặt Android SDK, sau đó OK.
VII.3 Cập nhật ADT Plugin
Trong một vài trường hợp, mỗi phiên bản SDK mới của Android sẽ có một bộADT plugin mới tương thích với nó Bạn có thể làm theo các bước sau để cập nhậtADT plugin từ bên trong Eclipse
1 Chọn Help>Software Update>Find and Install…
2 Chọn Search for updates of curently installed features và nhấn Finish.
3 Nếu có sẵn bất cứ cập nhật nào cho ADT, thì chỉ cần chọn nó và cài đặt.
Ngoài ra, ta có thể chọn cách khác để cập nhật ADT plugin
1 Chọn Help>Software Updates> Manager Configuration
2 Chọn Android Development Tools <version>.
3 Chọn Scan for Updates bên dưới Available Tasks.
VII.4 Sử dụng bộ công cụ Eclipse để phát triển các ứng dụng
Android
Tạo một Android Project trong Eclipse
ADT plugin cung cấp các tác dụng tạo một dự án mới (New Project Wizard), do
đó bạn có thể nhanh chóng tạo một dự án trong Eclipse dựa trên mã có sẵn hoặc viết
mã mới Để tạo một dự án mới bạn hãy làm theo sau:
1 Chọn File>New>Project.
2 Chọn Android>Android Project, và nhấn Next.
3 Chọn tên cho dự án:
Chọn Create new project in workspace để bắt đầu dự án Ghi tên
dự án, tên gói cơ sở, tên của lớp Activity để khởi tạo cho một tập
tin *.java.
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 30
Trang 31 Chọn Create project from existing source để bắn đầu một dự án
mới Sử dụng tùy chọn này nếu bạn muốn xây dựng hoặc là chạy bất kỳ một ứng dụng nào sử dụng SDK Android Các ứng dụng
được định vị trong samples/ direstory của SDK.
Mở thư mục chứa mã và nhấn OK Nếu thư mục chứa một Android
manifest file hợp lệ thì ADT plugin sẽ tự động tạo ra package,activity và tên ứng dụng cho bạn
4 Nhấn Finish.
ADT plugin tạo những thư mục và tập tin thích hợp cho bạn theo từng loại dựán:
Thư mục src bao gồm tập tin Activity.java
Thư mục res chứa các tài nguyên như hình ảnh…
AndroidManifest.xml, tập tin quản lý các Activity cho dự án
Một số gói cơ bản cho Android SDK có thể phát triển những ứng dụng tốt hơn.Những gói đó được tổ chức như các tầng, được liệt kê từ cấp độ thấp đến cấp độ cao
Android.util: chứa những lớp tiện ích cấp độ thấp, chẳng hạn như các
lớp container được đặc biệt hóa, tiện ích XML, …
Android.os: cung cấp những dịch vụ hệ điều hành nền tảng, chuyển các
gói tin, giao tiếp giữa các tiến trình
Android.graphics: cung cấp những công cụ đồ họa mức độ thấp như
Canvas, bộ lọc màu, points trong map, và các khối chữ nhật giúp bạngiúp bạn có thể trang trí trực tiếp lên giao diện
Android.text, android.text.method, android.text.style: cung cấp bộ
công cụ xử lý văn bản mạnh mẽ, hổ trợ rich text, những phương thứcnhập…
Android.database: chứa các APIs cấp độ thấp để làm việc với cơ sở dữ
liệu
Trang 32 Android.content: cung cấp các dịch vụ khác nhau truy cập dữ liệu trên
thiết bị: những ứng dụng được cài đặt trên thiết bị và những tài nguyêngắn liền với chúng, và những bộ cung cấp dữ liệu chung lâu dài củariêng Android
Androi.view: cung cấp các lớp có thể đưa ra những lớp giao diện cơ bản
mà các lớp này có thể thao tác bố cục cho giao diện ứng dụng và tươngtác với người dùng
Android.widget: gói này chứa hầu hết các yếu tố về giao diện sử dụng
trên màn hình ứng dụng
Android.app: lớp cấp độ cao đóng gói mô hình ứng dụng tầng trên của
Android
Android.webkit: cung cấp các công cụ để lướt web.
Android.provider: cung cấp các lớp truy cập vào content providers
(bộ chia sẽ dữ liệu giữa các gói ứng dụng) được cung cấp trong Android
Android.opengl: cung cấp tiện ích OpenGL_ES, thư viện hỗ trợ đồ họa
3D
Android.media: cung cấp các lớp xử lý về các phương tiện như audio,
video, image, …
Android.net: cung cấp các hỗ trợ cho việc truy cập web
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 32
Trang 33CHƯƠNG 3
CƠ SỞ LÝ THUYẾT
I Giới thiệu về các loại Game
Thị trường game hiện nay rất phong phú với nhiều thể loại game, chúng tôi xingiới thiệu một số thể loại game chính
I.1 Game hành động – Action
Là những game đề cao đến khả năng chiến đấu của nhân vật trong một khu vựcrộng lớn, sử dụng ít câu đố, thông điệp phức tạp
Dạng này yêu cầu người chơi phải có khả năng phản xạ nhanh, phối hợp mắt tốt, am tường các loại vũ khí trong game và hợp phong cách “chạy và bắn” Tiêubiểu nhất là game Half-Life Trong game, người chơi sẽ phải tự “nghiên cứu” côngdụng và sức sát thương của từng loại vũ khí để sử dụng hiệu quả nhất
tay-I.2 Game nhập vai – Role Playing Game (RPG)
Với RPG, người chơi vào vai một nhân vật hoặc một nhóm để tham gia các sựkiện, giao tiếp với các nhân vật “phụ” NPC (nonplayer characters), tham gia các cuộcchiến với một quá trình xây dựng nhân vật thông qua việc tăng cấp độ (level up), pháttriển các kỹ năng (skill), tính cách Tiêu biểu cho dòng game này như: Final FantasyTactics, Fantasy…
I.3 Game phiêu lưu – Adventure
Nét cơ bản của game phiêu là khám phá các vùng đất, tìm các vật dụng và giải
đố, có rất ít hoặc không có các cảnh mang tính “hành động” Game phiêu lưu có rất íthoặc không có sự phát triển nhân vật, cũng như không tăng cấp độ
Game phiêu lưu có cốt truyện rất chặt chẽ và rất dài, đòi hỏi người chơi phảivận dụng “trí tuệ”, lòng nhẫn nại và sự quyết đoán để chọn hướng đi tốt nhất Chuyến
du hành vào lòng đất Journey To The Center of The Earth sẽ là game điển hình về thểloại này
Trang 34I.4 Game chiến thuật – Strategy
Strategy chú trọng cách quản lý nguồn tài nguyên và quân đội trước những đốithủ do máy hoặc người chơi khác điều khiển và hầu hết đều liên quan chiến tranh Nhìn chung, có 2 dạng phân biệt được là realtime strategy (chiến thuật thời gian thực,RTS) và turnbased strategy (chiến thuật theo lượt, TBS)
RTS có đặc trưng là hành động (diễn biến) xảy ra liên tục, không ngừng do danh sách các lệnh được đưa ra liên tục, đòi hỏi người chơi phải có cách “điều binhkhiển tướng” hợp lý Tiêu biểu là Starcraft: Brood War hay Warcraft III: FrozenThrone
Còn với đặc thù các hành động bắt buộc dừng theo định kỳ để đặt vào các lệnh,TBS đòi hỏi người chơi phải biết cách tính toán “nặng nhẹ” cho mỗi lượt đi của mình.Dòng game “trung thành” với TBS là Heroes of Might and Magic
Thể loại này có một số rất ít game không lấy đề tài chiến tranh mà hướng vềkinh tế hoặc chính trị, như Monopoly Tycoon
I.5 Các thể loại game nhỏ hơn
I.1 Kinh dị (Survival horror)
Gần giống action-adventure nhưng luôn tạo ra cảm giác sợ hãi và tình trạng hồihộp cho người chơi Yếu tố kinh dị thường được tạo ra từ ma quỷ, linh hồn, các xácchết di động (zombie) Game dạng này không dành cho những người mắc bệnh tim
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 34
Trang 35Thể thao (Sport)
Được xem là một nhánh rẽ của simulation, sports mô tả một môn thể thao củathế giới thực diễn ra trong môi trường 3D Game thường được tổ chức theo cơ cấumùa giải, và cho phép người chơi đảm nhận các vị trí huấn luyện viên, ông bầu bêncạnh các tính năng trao đổi, chuyển nhượng cầu thủ, quản lý ngân sách Ở thể loại này,hiện nay ít game nào có thể qua mặt “vua bóng đá” FIFA của Electronic Arts
Giải đố (Puzzle)
Đây là lĩnh vực dành cho những người yêu thích các câu đố cực khó, hơn hẳnadventure Game đòi hỏi người chơi giải quyết nhanh chóng (và phải chính xác) cácvấn đề đã được đặt ra theo hướng suy luận logic Đôi khi các vấn đề này lại được lồngghép, xâu chuỗi để tăng độ khó Không ít người đã tỏ ra bối rối trước game ChainReaction vì không tìm được lời giải phù hợp
Đối kháng (Fighting)
Đặc trưng của thể loại này là những trận so tài tay đôi giữa các nhân vật Dònggame tiêu biểu: Tekken, Street Fighter
II Các thành phần về đồ họa (graphics)
II.1 File bitmap
Ảnh bitmap là một định dạng ảnh tạo thành từ một tập hợp các điểm màu đượcxếp liên tục theo một thứ tự nhất định do người định dạng ảnh quy định và có thể đượcnén lại Đây là loại ảnh có chất lượng lưu trữ tốt, hình ảnh và màu sắc trung thực,nhưng lại tốn không gian lưu trữ, tốc độ hiển thị chậm và tương đối phức tạp trongviệc xử lý Một vài ví dụ về các loại ảnh bitmap phổ biến là GIF, PCX, BMP, TIF,RLE, ICO, GEM Image
II.2 Các mô hình màu
Để biểu diễn màu sắc trong máy tính người ta dùng phương pháp hòa trộn cácmàu khác nhau Có 2 loại mô hình màu thường dùng là RGB và CMYK:
CMYK-Cyan Magenta Yellow Key: Key trong tiếng Anh nên hiểu theo
Trang 36này có tên tiếng Anh là black do chữ B đã được sử dụng để chỉ màu xanhlam (blue) trong mô hình màu RGB Mô hình màu này được dùng trongcông nghệ in ấn vì khi 3 màu vì từ 3 màu CMY không thể tạo ra màuđen.
RGB-Red Green Blue: sửa dụng 3 màu cơ bản để tạo nên các màu sắc
khác nhau
II.3 Background Image
Background image là hình nền nằm ở dưới tất cả các đối tượng trong game Nóđược vẽ đầu tiên khi khung hình được cập nhật
II.4 Frame
Tất cả các thiết bị hiển thị hình ảnh chuyển động hiện nay như TV, monitor…đều dựa trên khả năng lưu ảnh của mắt người Sau khi hình ảnh biến mất mắt củachúng ta còn lưu lại tại vỏng mạc 1/24 giây Vì vậy để tạo các đoạn film người ta chỉcần thay đổi liên tục các hình ảnh theo tốc độ 24 hình/giây hoặc cao hơn Trong gamecũng áp dụng kỹ thuật này để tạo chuyển động và mỗi lần cập nhật màn hình gọi là 1frame
Trong một frame thể hiện tất cả sự thay đổi của các đối tượng so với frametrước Sự thay đổi của các đối tượng liên tiếp nhau trên mỗi frame nên với tốc độframe được cập nhật càng cao sẽ tạo ra những hình ảnh mịn đẹp
Trong 1 giây màn hình thường cập nhật 25 đến 60 frame (trong game) Đó cònđược gọi là chỉ số FPS (frame per second) của game
II.5 Tile
Tile là khái niệm chỉ đến một ảnh có kích thước nhỏ (thường là ảnh bitmap),thường là hình vuông hoặc hình chữ nhật Độ dài các cạnh của tile (tính theo pixel)thường là một ước số của khung nhìn (cửa sổ màn hình)
Các hình ảnh lớn trong game được tạo nên từ các tile nhỏ Việc chia nhỏ cáchình ảnh lớn này thành các tile nhỏ hơn sẽ thuận lợi cho việc lưu trữ và linh hoạt trongviệc tạo ra các kiểu hình ảnh đồ họa trong game Chẳng hạn, nếu có một tile là hìnhảnh một phần của một bức tường lớn, nếu ghép nhiều tile này lại ta sẽ có hình ảnh đầy
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 36
Trang 37đủ của một bức tường Tùy số lượng và cách sắp xếp các tile này mà ta sẽ có các hìnhảnh khác nhau của các bức tường với các hình dạng và kích thước khác nhau Nhưvậy, thay vì với mỗi bức tường có kích thước và hình dạng khác nhau ta phải dùng mộtảnh lớn, việc này gây tốn bộ nhớ và chương trình sẽ chạy chậm hơn do tốc độ load ảnh
sẽ chậm hơn, ta có thể chỉ cần dùng một tile với kích thước nhỏ để tạo ra một bứctường với kích thước và hình dạng bất kỳ Việc dùng một ảnh nhỏ hơn nhiều lầnđương nhiên sẽ giúp tiết kiệm bộ nhớ rất nhiều và tốc độ chương trình cũng được cảithiện nhờ tốc độ load ảnh
Với những ưu điểm như vậy, tile thường được ứng dụng trong việc tạo map(bản đồ) cho game 2D
II.6 Sprite
Là tên gọi chung để chỉ các dạng hình ảnh của nhân vật, mỗi dạng hình ảnh nhưvậy thể hiện một trạng thái trong quá trình di chuyển của nhân vật, còn gọi là cácsprite Sprite là thành phần đồ họa chủ yếu tạo nên sự chuyển động trong game Sựchuyển động mà ta nhìn thấy thực chất là sự thay đổi liên tục của các sprite theo mộtthứ tự nhất định tùy theo kiểu chuyển động, mỗi kiểu chuyển động sẽ có một tập cácsprite khác nhau Độ mịn của chuyển động mà ta nhìn thấy phụ thuộc vào số lượng cácsprite của kiểu chuyển động đó, càng nhiều sprite thì chuyển động càng mịn và ngượclại Kích thước của các sprite khác nhau có thể khác nhau tùy theo từng đối tượng
II.7 Map (Bản đồ)
Map là vùng thể hiện tất cả các đối tượng trong game hay map chứa các đốitượng Tất cả các đối tượng di chuyển trong phạm vi của map không thể vượt ra ngoàiphạm vi của map Khi thiết kế map cần phải biết đối tượng nào chồng lên đối tượngnào để đối tượng nào cần vẽ lên trước, đối tượng nào vẽ lên sau Ví dụ như đối tượngnhân vật chạy trên gạch thì khi thiết kế phải vẽ gạch lên trước rồi mới vẽ đối tượngnhân vật lên sau Vì vậy map được thiết kế theo tầng hoặc có thứ tự ưu tiên cho từngđối tượng
Trang 38II.8 Layer
Layer được hiểu là một khối hình ảnh trong game Các layer là những ảnh mà ta
có thể vẽ lên màn hình, ẩn đi, di chuyển hay là sắp xếp chúng theo độ sâu tức là khinhiều ảnh chồng chéo lên nhau thì layer có độ sâu lớn hơn sẽ bị layer có độ sâu nhỏhơn che khuất
III Kỹ thuật xây dựng đồ họa
III.1 Graphics techiques (kỹ thuật đồ họa)
Trong game 2D thường dùng góc nhìn từ trên xuống vuông góc với mặt đất Đểtạo cảm giác 3D người ta chuyển góc nhìn thành 1 góc nghiêng so với mặt đất bằngcách chuyển các tile thành hình thoi (Isometric tile) hoặc hình lục giác đều (Hexagonatile) Hình ảnh nhân vật (animation) sẽ được đặt sao cho phần chạm đất của nhân vậtnằm giữa tile mà nó đang đứng Từ vị trí đang đứng nhân vật có thể di chuyển theonhiều hướng tạo cho game giống thật hơn
Isometric là tile có dạng hình thoi Được lưu trữ kích thước với 3 thuộc tính:chiều dài, chiều rộng, chiều cao
Sự di chuyển của đối tượng trên map sử dụng Isometric tile sẽ có 8 hướng nhưhình sau với sự thay đổi tọa độ trên map như sau:
Hình 6: Các hướng di chuyển của Isometric tile
Phan Ngọc Huy, Hoàng Đức Nhân – 06T3 38