lập trình ứng dụng game trên android

35 898 3
lập trình ứng dụng game trên android

Đ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

lập trình ứng dụng game trên android

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO CUI K Môn  ÁN MÔN HC CHUYÊN NGÀNH  tài : Lp trình ng dng game trên Android Giảng viên : ThS. Nguyễn Trác Thức Sinh viên: Nguyễn Công Huy 08520148 Võ Trường Thi 08520375 TP.HCM, ngày 01 tháng 06 năm 2012 LI M U Ngày nay, điện thoại di động là một vật dụng không thể thiếu được trong cuộc sống. Nó không chỉ có chức năng nghe gọi, mà còn có thể thực hiện được hầu hết những công việc mà máy tính có thể làm, phục vụ cho nhu cầu văn phòng, giải trí và công việc. Đặc biệt trong ngành phần mềm, game là một lĩnh vực đặc biệt, đang có bước phát triển mạnh mẽ, khi mà nhu cầu giải trí trên các thiết bị di động của người sử dụng ngày một tăng cao. Do đó, lập trình game trên các thiết bị di động đang là một xu hướng tất yếu của các nhà làm phần mềm. Điện thoại Android với số lượng người dùng đông đảo, cùng với sự đa dạng về cấu hình, đa dạng về chủng loại, đang là mảnh đất màu mỡ cho các nhà phát triển game. Do đó, google cũng đã hỗ trợ Android rất nhiều những thư viện để lập trình game hiệu quả, trong đó có thể kể đến OpenGL, một thư viện đồ họa rất mạnh mẽ. Với sự phát triển mạnh mẽ như vậy của Android, và lập trình game trên Android, cơ hội cho lập trình viên là rất lớn. Vì vậy, nhóm đã chọn đề tài “Lập trình ứng dụng game trên Android”. Trong đề tài này, nhóm sẽ trình bày cái nhìn cơ bản về lập trình game trên Android và demo một ứng dụng game trong đó. Cảm ơn thầy Nguyễn Trác Thức đã tận tình hướng dẫn chúng em hoàn thành đồ án này. Mục lục 1. Tìm hiểu về Android. 1 1.1. Giới thiệu 1 1.2. Cấu trúc hệ thống 1 1.3. Các thành phần cơ bản của một ứng dụng Android. 4 2. Kỹ thuật lập trình game trên Android. 11 2.1. Thư viện đồ họa OpenGL 11 2.2. Thư viện âm thanh OpenAL 13 2.3. NDK 15 2.4. Lưu trữ thông tin. 18 2.5. Các thư viện khác. 22 2.6. Vòng đời của một game. 22 3. Những khác biệt so giữa lập trình game trên thiết bị di động và trên máy tính. 24 4. Những khác biệt so giữa lập trình game trên Android và các nền tảng di động khác. 26 5. Giới thiệu game Kim cương 27 5.1. Giới thiệu cơ bản 27 5.2. Giao diện người dùng 27 5.3. Cách chơi. 29 5.4. Tính năng mở rộng (item, mission) 30 5.5. Những điểm hấp dẫn trong game. 30 Báo cáo môn Đồ án môn học chuyên ngành Trang 1 1. Tìm hiểu về Android. 1.1. Giới thiệu Android là một hệ điều hành dành cho các thiết bị di động, được phát triển bởi Open Handset Alliance, dẫn đầu bởi Google. Android được phát triển bởi Google, dựa trên nền tảng Linux và các phần mềm nguồn mở. Ban đầu nó được phát triển bởi Android Inc (sau đó được Google mua lại) và gần đây nó trở thành một trong những phần mềm đứng đầu của liên minh OHA (Open Handset Alliance - với khoảng 78 thành viên bao gồm cả nhà sản xuất, nhà phát triển ứng dụng cho thiết bị di dộng mà dẫn đầu là Google). Android được phát triển nhằm cạnh tranh với các hệ điều hành di động khác như iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian (Nokia), Samsung (Bada), WebOS (Palm) Theo thống kê trong quý II năm 2010 tại Mỹ, hệ điều hành Android chiếm thị phần 33% (cao nhất) trong tổng số các hệ điều hành di động được bán ra, thứ 2 là BlackBerry OS 28% và iOS (Apple) xếp thứ 3 với 22%. 1.2. Cấu trúc hệ thống Android gồm các tầng thành phần như sau : Application, Application Framework, Libraries, Linux Kernel. Báo cáo môn Đồ án môn học chuyên ngành Trang 2 Các tầng cơ bản của nền tảng Android 1.2.1. Applications Android cung cấp một bộ các ứng dụng tiện ích như email client, SMS, lịch, bản đồ, trình duyệt … Tất cả đều được viết bằng ngôn ngữ Java. 1.2.2. Application Framework. Cung cấp một nền tảng mở cho các lập trình viên, giúp họ lập trình ra những phần mềm với nhiều tính năng thú vị. Ở tầng này, Android cung cấp khả năng truy cập tới phần cứng hệ thống, cũng như các dịch vụ hệ điều hành cung cấp như thông tin vị trí, truy cập mạng, thông báo … Tầng này bao gồm các thành phần sau : - Một bộ các đối tượng View để xây dựng nên các ứng dụng bao gồm list, grid, textboxes, buttons, và trình duyệt nhúng. - Content Providers cung cấp khả năng truy cập tới các dữ liệu của các ứng dụng khác. - Resource Manager cung cấp khả năng truy cập tới các resource không phải dạng code, như chuỗi, đồ họa và layout. Báo cáo môn Đồ án môn học chuyên ngành Trang 3 - Notification Manager giúp hiện các alert lên status bar. - Activity Manager cung cấp khả năng quản lý vòng đời của ứng dụng. 1.2.3. Libraries. Android bao gồm một bộ các thư viện C/C++ sử dụng bởi các thành phần khác nhau. Một số thư viện Android được sử dụng như : - System C library : Thư viện chuẩn C. - Thư viện đa phương tiện : dựa trên PacketVideo's OpenCORE, thư viện hỗ trợ chơi các định dạng âm thanh và video phổ biến như MPEG4, H.264, MP3, AAC, JPG, PNG… - Quản lý surface : Quản lý việc truy cập các hệ thống hiển thị bên dưới, các lớp đồ họa 2D, 3D. - LibWebCore : Một engine trình duyệt hiện đại, được sử dụng trong cả trình duyệt Android và WebView control. - SGL : Cơ sở của đồ họa 2D - 3D libraries : thư viện đồ họa 3D OpenGL, sử dụng tăng tốc đồ họa nếu phần cứng cho phép. - FreeType : thư viện render vector và bitmap font. - SQLite : Engine hệ quản trị cơ sở dữ liệu mạnh mẽ và nhẹ. 1.2.4. Android Runtimes Mỗi ứng dụng Android chạy trên một tiến trình riêng, với một máy ảo Dalvik. Máy ảo này thực thi file .dex, một dạng file được tối ưu cho bộ nhớ nhỏ. 1.2.5. Nhân linux Android dựa trên nhân linux 2.6 cho những dịch vụ hệ thống như bảo mật, quản lý bộ nhớ, network stack và driver model. Nhân cũng được coi như là một lớp ảo trung gian giữa phần cứng và phần mềm. Báo cáo môn Đồ án môn học chuyên ngành Trang 4 1.3. Các thành phần cơ bản của một ứng dụng Android. Một ứng dụng Android được tạo bởi một hay nhiều thành phần cơ bản dưới đây: 1.3.1. Activity Activity là thành phần có nhiệm vụ hiển thị ra giao diện của ứng dụng. Một ứng dụng có thể bao gồm nhiều Activity. Chúng tồn tại độc lập với nhau, nhưng cũng có thể gọi lẫn nhau. Một ứng dụng cũng có thể gọi tới Activity của một ứng dụng khác (nếu được ứng dụng kia cho phép). • Vòng đời của Activity Actitvity là thành phần quan trọng nhất và đóng vai trò chính trong xây dựng ứng dụng Android. Hệ điều hành Android quản lý Activity theo dạng stack: khi một Activity mới được khởi tạo, nó sẽ được xếp lên đầu của stack và trở thành running activity, các Activity trước đó sẽ bị tạm dừng và chỉ hoạt động trở lại khi Activity mới được giải phóng. Các trạng thái trong Activity: Báo cáo môn Đồ án môn học chuyên ngành Trang 5 Running: Activity đang hiển thị trên màn hình (foreground). Paused: Activity vẫn hiển thị (visible) nhưng không thể tương tác (lost focus) Stop: Activity bị thay thế hoàn toàn bởi Activity mới sẽ tiến đến trạng thái stop Báo cáo môn Đồ án môn học chuyên ngành Trang 6 Killed: Khi hệ thống bị thiếu bộ nhớ, nó sẽ giải phóng các tiến trình theo nguyên tắc ưu tiên. Các Activity ở trạng thái stop hoặc paused cũng có thể bị giải phóng và khi nó được hiển thị lại thì các Activity này phải khởi động lại hoàn toàn và phục hồi lại trạng thái trước đó. • Khởi động Activity - Khai báo tường minh: cung cấp chính xác thông tin của activity cần gọi (nếu cùng ứng dụng chỉ cần cung cấp tên class, nếu ứng dụng khác nhau thì cung cấp tên package, tên class) Ví dụ: Gọi Activity tường minh Intent intent = new Intent(getApplicationContext(), TargetActivity.class); startActivity(intent); - Khai báo không tường minh: cung cấp thao tác cần làm gì, với loại dữ liệu nào, thao tác thuộc nhóm nào… hệ thống sẽ tìm activity tương ứng để khởi động. Ví dụ: Gọi Activity không tưởng minh Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivity(intent); • Liên lạc giữa 2 Activity Khi khởi động một activity, ta có thể gửi kèm dữ liệu trong intent như ví dụ sau: intent.putExtra("value1", new String("Hello")); intent.putExtra(“value2", new Long(100));Bên phía activity được khởi động, có thể lấy dữ liệu được gửi như sau: getIntent().getExtras().getString("value1"); getIntent().getExtras().getLong("value2"); Có thể khởi động một activity với một yêu cầu nào đó và activity kia khi làm xong công việc sẽ trả lại kết quả cho activity trước Báo cáo môn Đồ án môn học chuyên ngành Trang 7 Ví dụ activity A yêu cầu một activity làm giúp việc chụp ảnh, activity B đáp ứng được việc này, sau khi user chụp ảnh xong sẽ trả lại file ảnh cho activity A. Như thế sẽ đỡ tốn nhiều công sức làm một việc mà người khác đã làm rồi. 1.3.2. Services Service là một thành phần chạy nền, thực thi trong một thời gian dài. Một service không cung cấp giao diện người dùng, mà chạy phía dưới, không cần tương tác với người dùng. Một activity có thể khởi chạy một dịch vụ và tương tác với chúng. Một Service có thể được sử dụng theo 2 cách: - Nó có thể được bắt đầu và được cho phép hoạt động cho đến khi một người nào đó dừng nó lại hoặc nó tự ngắt. Ở chế độ này, nó được bắt đầu bằng cách gọi Context.startService() và dừng bằng lệnh Context.stopService(). Nó có thể tự ngắt bằng lệnh Service.stopSelf() hoặc Service.stopSelfResult(). Chỉ cần một lệnh stopService() để ngừng Service lại cho dù lệnh startService() được gọi ra bao nhiêu lần. - Service có thể được vận hành theo như đã được lập trình việc sử dụng một Interface mà nó định nghĩa. Các người dùng thiết lập một đường truyền tới đối tượng Service và sử dụng đường kết nói đó để thâm nhập vào Service. Kết nối này được thiết lập bằng cách gọi lệnh Context.bindService() và được đóng lại bằng cách gọi lệnh Context.unbindService(). Nhiều người dùng có thể kết nối tới cùng một thiết bị. Nếu Service vẫn chưa được khởi chạy, lệnh bindService() có thể tùy ý khởi chạy nó. Hai chế độ này thì không tách biệt toàn bộ. Bạn có thể kết nối với một Service mà nó đã được bắt đầu với lệnh startService(). Ví dụ, một Service nghe nhạc ở chế độ nền có thể được bắt đầu bằng cách gọi lệnh startService() cùng với một đối tượng Intent mà định dạng được âm nhạc để chơi. Chỉ sau đó, có thể là khi người sử dụng muốn kiểm soát trình chơi nhạc hoặc biết thêm thông tin về bài hát hiện tại đang chơi, thì sẽ có một Activity tạo lập một đường truyền tới Service bằng cách gọi bindService(). Trong trường hợp như thế này, [...]... bộ hệ thống, và một ứng dụng nào đó có thể nhận sự kiện này và xử lý tương ứng 2 Kỹ thuật lập trình game trên Android Lập trình game về logic thì cũng giống như lập trình game trên các thiết bị khác Vấn đề ở đây là thiết bị di động Android có cấu hình khá thấp so với máy tính, màn hình nhiều kích cỡ khác nhau, việc nhập liệu cũng không linh hoạt bằng Vì vậy lập trình game trên Android cũng đòi hỏi... ứng dụng Nói chung chỉ nên sử dụng native lập trình nếu nó là cần thiết đối với ứng dụng của mình không nên vì chúng ta thích chương trình trong C/C++ - Framework 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 Android Framework, nhưng vẫn... thuật về lập trình game trên Android 2.1 Thư viện đồ họa OpenGL Như đã nói ở trên, thư viện đồ họa OpenGL là một thư viện đồ họa 3D, hỗ trợ tương tác trực tiếp với phần cứng, nhất là với bộ tăng tốc đồ họa Sử dụng thư viện đồ họa này, người dùng có thể tạo ra nhưng game có những hiệu ứng phức tạp, chất lượng hình ảnh cao, mà vẫn giữ được sử mượt mà cho game OpengGL là một giao diện phần mềm độc lập với... Ngoài hai cách lưu trữ thông tin như trên, Android còn cung cấp cách lưu trữ thông tin thông qua đối tượng SharedReference Thông tin lưu qua đối tượng này sẽ được lưu tại thư mục của ứng dụng, nằm trong bộ nhớ trong của máy *L ữ dữ liệu bằng SQLite: Trong Android , cơ sở dữ liệu mà bạn tạo cho 1 ứng dụng thì chỉ ứng dụng đó có quyền truy cập và sử dụng, các ứng dụng khác thì không Khi đã được tạo,... giữa lập trình game trên thiết bị di động và trên máy tính Mặc dù những năm gần đây, điện thoại thông minh đang ngày càng gần với máy tính hơn với màn hình rộng hơn, CPU mạnh hơn, RAM nhiều hơn, nhưng điện thoại vẫn có những hạn chế nhất định Điều này cũng ảnh hưởng không nhỏ đến công việc lập trình phần mềm trên Android Khả năng Nhập xuất Di đ ng Ứng dụng phải được tối ưu nhiều hơn, để thích ứng với... thời gian nhiều hơn Qua việc làm game, nhóm cũng đã tìm hiểu được nhiều điều bổ ích về kỹ thuật lập trình game trên Android, làm tiền đề cho việc lập trình game trên Android sau này Những kỹ thuật nhóm tìm hiểu được khá mới mẻ, và rất hữu ích Những kiến thức đó không chỉ áp dụng cho môn học này mà còn được sử dụng trong thời gian sắp tới Báo cáo môn Đồ án môn học chuyên ngành Trang 32 ... khác biệt so giữa lập trình game trên Android và các nền tảng di động khác Hiện nay có rất nhiều hệ điều hành di động vẫn đang được phát triển và sử dụng Tuy vậy, hiện nay ba hệ điều hành được đánh giá cao nhất về khả năng phát triển trong tương lai là Android, iOS và Windows Phone Do những sự khác nhau cơ bản về nhân, mục tiêu hướng đến, dòng điện thoại hỗ trợ, nên việc lập trình ứng dụng giữa những... native này Dùng bộ SDK để biên dịch thành ứng dụng apk - Do các bước sử dụng NDK để biên dịch được thực hiện trên dấu nhắc lệnh, do đó chúng ta sẽ tạo tập tin lệnh để thực hiện điều này 2.4 Lưu trữ thông tin Thông tin trong game trên Android có thể được lưu trữ trên SQLite hoặc trên thẻ nhớ Lưu trữ trên database sẽ có tính bảo mật cao hơn, chặt chẽ hơn Còn lưu trữ trên thẻ nhớ sẽ dễ backup hơn, dễ chuyển... android: minSdkVersion="3" /> - Hoạt động của JNI và quy trình biên dịch như chúng ta đều biết, ứng dụng android chạy trên nền chính là Java Muốn chạy C/C++ ta có hai giải pháp: + Sử dụng JNI: từ android 1.5 trở về sau + Sử dụng Native Activity: từ android 2.3 trở về sau Native Activity là phương án lựa chọn tốt hơn, bởi vì chương trình sẽ không tốn chi phí giao dịch giữa máy ảo Java và C/C++... 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 Báo cáo môn Đồ án môn học chuyên ngành Trang 15 - 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 . vậy, nhóm đã chọn đề tài Lập trình ứng dụng game trên Android . Trong đề tài này, nhóm sẽ trình bày cái nhìn cơ bản về lập trình game trên Android và demo một ứng dụng game trong đó. Cảm ơn. thống, và một ứng dụng nào đó có thể nhận sự kiện này và xử lý tương ứng. 2. Kỹ thuật lập trình game trên Android. Lập trình game về logic thì cũng giống như lập trình game trên các thiết. 22 2.6. Vòng đời của một game. 22 3. Những khác biệt so giữa lập trình game trên thiết bị di động và trên máy tính. 24 4. Những khác biệt so giữa lập trình game trên Android và các nền tảng

Ngày đăng: 19/12/2014, 17:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan