Bối cảnh và vấn đề nghiên cứu

Khóa luận tốt nghiệp với đề tài "Nghiên cứu đồ họa 2D, 3D và phát triển Game trên hệ điều hành Android" được thực hiện bởi sinh viên Đặng Văn Giỏi (Lớp 508CNT, Khoa Công nghệ, Trường Đại học Hòa Bình) dưới sự hướng dẫn của ThS. Đinh Đức Hùng, hoàn thành vào tháng 5 năm 2012 tại Hà Nội.

Lý do chọn đề tài và bối cảnh thực tiễn

Theo tác giả, ngành công nghiệp giải trí kỹ thuật số, đặc biệt là lĩnh vực trò chơi điện tử (game), là mảng nội dung số có tốc độ tăng trưởng nhanh. Doanh thu toàn cầu của ngành game đã tăng từ 7 tỷ USD năm 1994 với tốc độ tăng trưởng bình quân 9%/năm; trong đó thị trường Mỹ chiếm 40,42% thị phần và Anh chiếm 12,8%. Năm 2008, ngành game tại Mỹ đạt giá trị khoảng 22 tỷ USD, vượt qua quy mô của ngành công nghiệp âm nhạc (10 tỷ USD) và phim ảnh (9,5 tỷ USD).

Tại Việt Nam thời điểm năm 2011–2012, thị trường có hơn 20 nhà phát hành với doanh thu trung bình đạt 400 triệu USD/năm (chiếm 70% doanh thu ngành nội dung số). Tuy nhiên, ngành game trong nước chủ yếu dừng lại ở khâu phân phối và gia công tựa game nước ngoài. Một số studio trong nước bắt đầu phát triển các sản phẩm thuần Việt như: Thuận Thiên Kiếm (VNG), SQUAD, G3, Showbiz (VTC Studio), Jay Online (FGame), Tranh Hùng (SunSoft), và game offline 7754 về đề tài chiến dịch Điện Biên Phủ. Sự chuyển dịch này tạo ra nhu cầu lớn về nhân lực lập trình đồ họa và phát triển game di động, đặt ra yêu cầu nghiên cứu các nền tảng mở như Android.

Mục tiêu và nhiệm vụ nghiên cứu

Văn bản xác định các vấn đề chính cần làm rõ bao gồm:

  1. Nghiên cứu hệ thống lý thuyết về đồ họa máy tính 2D và 3D.
  2. Tìm hiểu kiến trúc hệ điều hành Android và cơ chế xử lý đồ họa (2D Canvas, 3D OpenGL ES).
  3. Xây dựng các chương trình mẫu minh họa và phát triển một ứng dụng game 2D hoàn chỉnh (Bom Offline), đồng thời thiết kế mở rộng ý tưởng cho game 3D (Line3D).

Đối tượng và phạm vi nghiên cứu

  • Đối tượng nghiên cứu: Lý thuyết đồ họa 2D/3D, thư viện đồ họa Android (Canvas, Paint, OpenGL ES) và quy trình thiết kế, lập trình game di động.
  • Phạm vi không gian và công nghệ: Nền tảng Android (các phiên bản từ Android 1.0 đến 4.x, nhân Linux 2.6, máy ảo Dalvik), môi trường lập trình Eclipse IDE kết hợp Android SDK và Android Development Tools (ADT).
  • Phạm vi thời gian: Số liệu thực tiễn và phiên bản công nghệ được khảo sát tính đến tháng 5 năm 2012.

Cơ sở lý thuyết và phương pháp

Khung lý thuyết và kiến trúc hệ thống

Khóa luận xây dựng nền tảng lý thuyết dựa trên hai trục chính: kiến trúc hệ điều hành Android và lý thuyết đồ họa máy tính.

1. Kiến trúc hệ điều hành Android

Hệ điều hành Android được phân tích qua mô hình 4 tầng từ thấp đến cao:

  • Tầng hạt nhân Linux (Linux Kernel 2.6): Quản lý phần cứng cấp thấp thông qua các trình điều khiển (Display Driver, Camera Driver, Bluetooth Driver, USB Driver, Keypad Driver, Wifi Driver, Audio Driver, Binder IPC Driver, M-System Driver, Power Management).
  • Tầng Thư viện (Libraries) và Android Runtime:
    • Thư viện C/C++: System C library, Media Libraries, LibWebCore (hỗ trợ WebKit, HTML5, AJAX), SQLite.
    • Android Runtime: Gồm Core Java Libraries và máy ảo Dalvik (Dalvik Virtual Machine - DVM), tối ưu hóa việc thực thi file bytecode trên thiết bị di động thay vì dùng máy ảo JVM chuẩn của Sun/Oracle.
  • Tầng khung ứng dụng (Application Framework): Cung cấp các API mức cao gồm Activity Manager, Telephony Manager, XMPP Service, Location Manager, Window Manager, Notification Manager, Resource Manager.
  • Tầng ứng dụng (Applications): Các ứng dụng hệ thống (Phone, Contacts, Browser, SMS) và ứng dụng cài đặt thêm (.apk).

Tác giả phân tích hệ thống tệp tin trên Android kế thừa cấu trúc Linux (mô hình phân cấp dạng cây từ thư mục gốc /, quản lý dưới dạng chuỗi byte byte stream). Quyền truy cập tệp tin được xác lập qua 9 ký tự đại diện cho 3 nhóm người dùng (Chủ sở hữu, Nhóm sở hữu, Người dùng khác) với các quyền đọc (r), ghi (w), thực thi (x) và quản lý bằng các lệnh ls -l -d, chmod, chown, chgrp.

/ (root)

2. Lý thuyết đồ họa máy tính và các hệ màu

  • Lịch sử đồ họa: Thuật ngữ computer graphics do William Fetter đề xuất năm 1960 khi mô phỏng buồng lái máy bay Boeing. Dự án SketchPad của Ivan Sutherland tại MIT (thập niên 1960) sử dụng màn hình CRT, bút sáng và bàn phím đánh dấu bước đầu của tương tác đồ họa thời gian thực.
  • Phân biệt đồ họa 2D và 3D: Đồ họa 2D xử lý không gian phẳng 2 chiều (trục tọa độ X-Y), hình ảnh cuộn 2 chiều, không có nguồn sáng động. Đồ họa 3D khai thác 3 chiều không gian (ngang, dọc, sâu) với các hiệu ứng chiếu sáng, phản chiếu và đổ bóng.
  • Các hệ màu thông dụng:
Hệ màu Bản chất và không gian màu Thành phần cấu tạo Ứng dụng thực tế
RGB Hệ màu cộng, biểu diễn không gian lập phương vector Red, Green, Blue (mỗi kênh 8-bit, 0–255) Chuẩn hiển thị màn hình phần cứng máy tính
CMYK Hệ màu trừ, tái tạo màu bằng mực Cyan, Magenta, Yellow, Key (Black) Kỹ thuật in ấn, in offset, in phun
HSB Hệ màu tổng hợp theo cảm nhận thị giác Hue ($0^\circ - 360^\circ$), Saturation ($0 - 100%$), Brightness ($0 - 100%$) Thiết kế đồ họa và phối màu kỹ thuật số
Lab Hệ màu độc lập thiết bị, quang phổ rộng L (Lightness: $0 - 100%$), a (Green - Red: -127 đến 128), b (Blue - Yellow: -127 đến 128) Công nghệ thăng hoa màu trong ảnh kỹ thuật số

Phương pháp nghiên cứu

  • Phương pháp phân tích - tổng hợp tài liệu: Thu thập tài liệu kỹ thuật từ Android Developers, tài liệu chuẩn OpenGL ES, hệ điều hành Linux.
  • Phương pháp mô hình hóa phần mềm: Sử dụng biểu đồ ca sử dụng (Use Case), danh sách Actor và đặc tả luồng sự kiện theo chuẩn kỹ thuật phần mềm.
  • Phương pháp thực nghiệm - phát triển phần mềm: Cài đặt mã nguồn trên ngôn ngữ Java, xây dựng thuật toán va chạm và kiểm thử trực tiếp trên thiết bị/máy ảo Android.

Thiết kế và triển khai

Khóa luận là công trình thuộc nhóm phát triển ứng dụng di động, do đó phần thiết kế và triển khai mã nguồn được thực hiện chi tiết cho cả 2D Canvas, 3D OpenGL và ứng dụng trò chơi cụ thể.

1. Kiến trúc xử lý đồ họa trên Android

Đồ họa 2D (Canvas & View Architecture)

Để vẽ giao diện 2D tùy biến, hệ thống yêu cầu 4 thành phần nền tảng:

  • Bitmap: Đóng vai trò bộ nhớ đệm giữ các điểm ảnh (pixel).
  • Canvas: Đối tượng thực thi các lệnh vẽ hình học và chuỗi ký tự (drawLine, drawRect, drawPath, drawBitmap, drawText).
  • Paint: Đối tượng chứa định nghĩa kiểu vẽ, độ dày nét, khử răng cưa và mã màu (sử dụng hệ màu 32-bit ARGB dạng số nguyên Color.rgb(r, g, b)).
  • Path / Rect: Đối tượng định nghĩa cấu trúc hình học của nét vẽ.

Mô hình triển khai dựa trên việc kế thừa lớp View, tạo lớp CustomView và ghi đè phương thức onDraw(Canvas canvas):

public class CustomView extends View {
    public CustomView(Context context) { super(context); }
    public CustomView(Context context, AttributeSet attrs) { super(context, attrs); }

    @Override
    protected void onDraw(Canvas canvas) {
        Paint cPaint = new Paint();
        cPaint.setColor(Color.RED);
        Path cPath = new Path();
        cPath.addCircle(100, 100, 50, Path.Direction.CW);
        canvas.drawPath(cPath, cPaint);
    }
}

Đồ họa 3D (OpenGL ES Pipeline)

Hệ thống đồ họa 3D sử dụng thư viện OpenGL ES tích hợp sẵn trong Android:

  • Android 1.0 hỗ trợ OpenGL ES 1.0/1.1 thông qua gói javax.microedition.khronos.opengles.GL10 và android.opengl.GLES10.
  • Android 2.2 (API level 8) bổ sung giao diện OpenGL ES 2.0 thông qua gói android.opengl.GLES20.
  • Cấu trúc hiển thị 3D gồm hai lớp:
    • GLSurfaceView: Thành phần hiển thị chuyên dụng đóng vai trò vùng vẽ và bắt sự kiện cảm ứng (onTouchEvent).
    • GLSurfaceView.Renderer: Giao diện xử lý logic kết xuất với 3 phương thức vòng đời: onSurfaceCreated(GL10 gl, EGLConfig config), onSurfaceChanged(GL10 gl, int w, int h), và onDrawFrame(GL10 gl).

2. Triển khai các chương trình thực nghiệm

Chương trình mẫu đồ họa cơ bản

  1. MinhHoaActivity: Kiểm tra cấu trúc cơ bản của ứng dụng Android, khởi tạo đối tượng TextView và nạp vào giao diện bằng setContentView().
  2. TestAndroid2D: Triển khai lớp Customview thực thi trong file giao diện XML để vẽ một đường thẳng màu đỏ dài 100 pixel (drawLine(0, 10, 100, 10, p)), một đường tròn đổ bóng màu vàng (drawPath), một hình chữ nhật màu xanh nước biển (drawRect) và nạp hình ảnh từ thư mục drawable bằng BitmapFactory kết hợp drawBitmap.
  3. TestAndroid3D: Sử dụng MyGLSurfaceView và MyGLSurfaceViewRenderer. Chương trình cài đặt cơ chế bắt sự kiện chạm màn hình qua onTouchEvent(), đẩy tác vụ vào luồng đồ họa bằng queueEvent(new Runnable(...)) để cập nhật giá trị màu nền RGB thông qua phương thức gl.glClearColor(red, green, blue, 1.0f).

3. Thiết kế và phát triển Game chính: Bom Offline (2D)

Cơ chế vận hành trò chơi (Gameplay Rules)

  • Trạng thái ban đầu: Người chơi có 3 lượt chơi (mạng), được cấp 1 quả bom ban đầu với cấp độ bom là 1.
  • Quy tắc điều khiển: Nhân vật di chuyển theo 4 hướng (trái, phải, lên, xuống) qua vùng điều khiển ảo. Nhân vật và quái vật không thể đi xuyên qua các chướng ngại vật trên bản đồ mà phải đi vòng.
  • Cơ chế bom và điểm số: Bom sau khi đặt sẽ tự động phát nổ sau 3 giây. Mỗi quái vật bị tiêu diệt cộng 50 điểm vào tổng điểm. Khi va chạm với quái vật, nhân vật bị trừ 1 lượt chơi và tái tạo lại vị trí xuất phát.
  • Cơ chế vật phẩm (Hộp quà): Hộp quà xuất hiện ngẫu nhiên trên bản đồ trong khoảng thời gian từ 5 đến 20 giây rồi biến mất. Khi người chơi chạm vào hộp quà, hệ thống cấp ngẫu nhiên 1 trong 3 phần thưởng: (1) Tăng thêm 1 lượt chơi, (2) Tăng thêm 1 cấp độ uy lực bom, (3) Tăng thêm số lượng quả bom có thể đặt cùng lúc.

Thiết kế giao diện và kiến trúc Use Case

Trò chơi được cấu trúc thành các màn hình chức năng:

  • Giao diện Menu chính: Chơi từ đầu, thông tin tác giả, xác nhận thoát, bật/tắt âm thanh.
  • Giao diện Giới thiệu: Hướng dẫn cách chơi và nút chuyển vào màn chơi.
  • Giao diện Chơi game chính: Vùng điều khiển di chuyển, hiển thị điểm số, số mạng, level hiện tại, số lượng bom, cấp độ bom, nút bật/tắt âm thanh, nút tạm dừng mở Menu phụ (Tiếp tục, Chơi lại từ đầu, Về menu chính, Thoát).
  • Giao diện kết thúc & Lưu điểm: Màn hình thua cuộc, Màn hình thắng cuộc, Màn hình lưu tên/điểm, Bảng hiển thị danh sách Top 10 điểm cao nhất (kèm chức năng xóa/định dạng lại dữ liệu).
STT Tên Use Case Actor thực hiện Tóm tắt luồng sự kiện chính
1 Bắt đầu chơi Người dùng Chọn nút chơi trên Menu chính $\rightarrow$ Khởi chạy và hiển thị MainGameActivity.
2 Tạm dừng Game Người dùng Nhấn biểu tượng Pause $\rightarrow$ Ngừng vòng lặp game $\rightarrow$ Hiển thị Menu phụ 4 tùy chọn.
3 Điều khiển nhân vật Người dùng Chạm/kéo trên vùng điều khiển $\rightarrow$ Nhân vật đổi hướng, kiểm tra vật cản và di chuyển.
4 Bật / Tắt âm thanh Người dùng Nhấn biểu tượng âm thanh $\rightarrow$ Đổi trạng thái phát nhạc nền/hiệu ứng trong game.
5 Đặt bom Người dùng Nhấn nút đặt bom $\rightarrow$ Sinh đối tượng bom tại tọa độ $(pX, pY)$ hiện tại của nhân vật.
6 Thoát Người dùng Chọn biểu tượng thoát $\rightarrow$ Hiển thị hộp thoại xác thực $\rightarrow$ Đóng Activity.

Thuật toán cốt lõi

  1. Thuật toán kiểm tra tọa độ bản đồ TMXLayer: Xác định điểm tọa độ $(pX, pY)$ của nhân vật/quái vật nằm trong hay nằm ngoài vùng đi được của ma trận bản đồ (Tile Map), ngăn chặn nhân vật đi vào vùng chướng ngại vật.
  2. Thuật toán phát hiện va chạm giữa hai Sprite: Sử dụng kiểm tra bao phủ hình chữ nhật bao (Bounding Box) để phát hiện va chạm giữa Sprite nhân vật với Sprite quái vật, Sprite nhân vật với hộp quà, và vùng ảnh hưởng của vụ nổ bom với quái vật.

4. Thiết kế trò chơi mở rộng: Line3D (3D)

Đối với trò chơi 3D Line3D, tác giả dừng ở bước phân tích sơ đồ hoạt động, xác định danh sách Use Case, thiết kế kiến trúc hệ thống, dựng mô hình giao diện bàn cờ 3D và thuật toán tính điểm khi người chơi sắp xếp các viên bi cùng màu theo hàng để ăn điểm.


Nội dung chính theo từng chương

Khóa luận được cấu trúc thành 4 chương nội dung:

Chương 1: Giới thiệu hệ điều hành Android

  • Trình bày nguồn gốc Android từ Android, Inc. (mua lại bởi Google năm 2005), việc thành lập Liên minh thiết bị cầm tay mở (Open Handset Alliance) ngày 05/11/2007 gồm 78 công ty, và phát hành mã nguồn mở theo giấy phép Apache.
  • Phân tích chi tiết kiến trúc 4 tầng của Android, cơ chế thực thi của máy ảo Dalvik, và cấu trúc tệp tin trên nền nhân Linux 2.6.
  • Thực hiện so sánh toàn diện giữa hệ điều hành di động với hệ điều hành desktop (về mặt tối ưu hóa pin, màn hình nhỏ, cơ chế quản lý đa nhiệm đơn cửa sổ và giới hạn ứng dụng chạy nền dưới 5–10% CPU).
  • So sánh Android với các hệ điều hành di động đương thời (iOS, BlackBerry OS, Symbian): Android có ưu thế mã nguồn mở, độ tương thích phần cứng đa dạng từ nhiều hãng sản xuất (HTC, Samsung, LG, Motorola, Sony, Acer), sử dụng Java và Dalvik VM thay vì C/C++ hay J2ME của Symbian.
  • Hướng dẫn chi tiết quy trình cài đặt môi trường phát triển: Tải Android SDK, cài đặt SDK Manager, tích hợp plugin ADT trên Eclipse IDE và cấu hình đường dẫn SDK. Viết chương trình mẫu MinhHoaActivity.

Chương 2: Nghiên cứu lý thuyết đồ họa 2D, 3D

  • Trình bày định nghĩa đồ họa máy tính, các mốc lịch sử phát triển quan trọng (nghiên cứu của William Fetter năm 1960, hệ thống SketchPad của Ivan Sutherland tại MIT).
  • Phân tích cơ sở toán học và đặc tính kỹ thuật của 4 hệ màu: RGB, CMYK, HSB, Lab.
  • Nêu bật các lĩnh vực ứng dụng của đồ họa máy tính: mô hình/hoạt cảnh game, thiết kế kỹ thuật, chẩn đoán hình ảnh y tế, huấn luyện mô phỏng ảo quân sự/hàng không.
  • Phân tích sự khác biệt về mặt bản chất giữa đồ họa 2D (mô hình phẳng, ảnh cuộn 2 chiều) và đồ họa 3D (chiều sâu không gian, nguồn sáng, đổ bóng, phản xạ).

Chương 3: Nghiên cứu đồ họa 2D, 3D của hệ điều hành Android và viết chương trình minh họa

  • Khảo sát các thành phần đồ họa 2D trên Android (View, CustomView, Canvas, Paint, Bitmap, Path, Rect). Xây dựng chương trình thực nghiệm TestAndroid2D.
  • Khảo sát thư viện đồ họa 3D OpenGL ES (các gói GLES10, GLES20, javax.microedition.khronos.opengles), vòng đời của GLSurfaceView và Renderer. Xây dựng chương trình thực nghiệm TestAndroid3D.
  • Phân tích, thiết kế và lập trình hoàn chỉnh trò chơi 2D Bom Offline: phân tích quy tắc chơi, xây dựng sơ đồ Use Case, thiết kế giao diện từ Menu chính đến màn chơi, cài đặt thuật toán va chạm Sprite và xử lý ma trận tọa độ bản đồ TMX.
  • Trình bày ý tưởng, sơ đồ hoạt động và kiến trúc thiết kế của trò chơi 3D Line3D.

Chương 4: Kết luận và hướng phát triển trong tương lai

  • Tổng kết toàn bộ các kết quả đạt được về mặt lý thuyết và ứng dụng thực nghiệm trong khóa luận.
  • Nêu rõ các khó khăn kỹ thuật còn tồn đọng và định hướng mở rộng nghiên cứu trong các giai đoạn tiếp theo.

Kết quả và đóng góp

Kết quả kỹ thuật chính

  1. Hệ thống hóa lý thuyết: Tổng hợp đầy đủ cơ sở lý thuyết về 4 hệ màu (RGB, CMYK, HSB, Lab), kiến trúc phân tầng hệ điều hành Android và cơ chế hoạt động của máy ảo Dalvik.
  2. Xây dựng chương trình thực nghiệm:
    • Hoàn thành 2 ứng dụng minh họa kỹ thuật kết xuất: TestAndroid2D (vẽ đường thẳng, đường tròn có bóng đổ, hình chữ nhật và xử lý ảnh bitmap) và TestAndroid3D (thay đổi động màu nền hiển thị 3D thông qua tương tác chạm đa điểm và hàng đợi lệnh OpenGL).
    • Xây dựng hoàn chỉnh trò chơi 2D Bom Offline: Cài đặt thành công vòng lặp game, cơ chế sinh quái vật, bom hẹn giờ 3 giây, hệ thống tính điểm (+50 điểm/quái vật), 3 loại vật phẩm hỗ trợ ngẫu nhiên và hệ thống lưu trữ bảng xếp hạng Top 10 điểm cao.
  3. Mô hình hóa thiết kế: Xây dựng hệ thống tài liệu thiết kế phần mềm gồm danh sách Actor, 6 ca sử dụng chính, đặc tả luồng sự kiện chi tiết và giải thuật xử lý va chạm trên hệ tọa độ bản đồ.

Đóng góp của đề tài

  • Làm rõ phương pháp xây dựng giao diện đồ họa tùy biến (CustomView) thông qua việc ghi đè trực tiếp phương thức onDraw() của Android, thay vì phụ thuộc hoàn toàn vào các thành phần giao diện XML mặc định.
  • Trình bày cách thức cấu hình và tích hợp thư viện OpenGL ES trên thiết bị di động Android, cung cấp quy trình mẫu về quản lý luồng vẽ thông qua GLSurfaceView.Renderer.
  • Cung cấp mã nguồn và mô hình thiết kế thực tế cho một game offline hoàn chỉnh, đóng vai trò tài liệu tham khảo cho việc phát triển game 2D trên nền tảng Android thời kỳ đầu.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế được ghi nhận

  • Trò chơi 3D Line3D mới dừng lại ở giai đoạn nghiên cứu lý thuyết, phân tích mô hình use case, thiết kế kiến trúc hệ thống và giao diện mẫu; phần lập trình hoàn thiện và kiểm thử đánh giá chưa được thực hiện (văn bản ghi chú rõ ở trạng thái "Đang nghiên cứu").
  • Chưa triển khai thử nghiệm hiệu năng trên nhiều dòng vi xử lý phần cứng khác nhau của các hãng sản xuất thiết bị tại thời điểm nghiên cứu.

Hướng phát triển trong tương lai

  • Hoàn thiện lập trình và kiểm thử toàn diện trò chơi 3D Line3D.
  • Nghiên cứu tích hợp công nghệ điện toán đám mây trên hệ điều hành Android để đồng bộ hóa dữ liệu người chơi.
  • Nghiên cứu sâu hơn về các giải pháp bảo mật dữ liệu trên nền tảng hệ điều hành mã nguồn mở.

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo chuyên môn đối với các đối tượng cụ thể:

  • Sinh viên ngành Công nghệ thông tin / Kỹ thuật phần mềm: Dùng làm tài liệu tham khảo cấu trúc một đồ án tốt nghiệp lập trình ứng dụng di động; học hỏi phương pháp tiếp cận từ lý thuyết hệ điều hành, lý thuyết đồ họa đến thiết kế ca sử dụng và lập trình thực nghiệm.
  • Lập trình viên bắt đầu học Android: Tham khảo trực tiếp chương 1 và chương 3 để nắm vững quy trình cấu hình bộ công cụ SDK/ADT trên Eclipse, vòng đời Activity, cơ chế vẽ 2D bằng Canvas/Paint và quy tắc thiết lập môi trường 3D với GLSurfaceView.
  • Người nghiên cứu phát triển game 2D cơ bản: Tham khảo mô hình phân tích logic game, xử lý ma trận bản đồ TMX và giải thuật phát hiện va chạm không gian phẳng.

Câu hỏi thường gặp

1. Khóa luận sử dụng phiên bản hệ điều hành Android và máy ảo nào để phân tích?

Khóa luận khảo sát hệ điều hành Android dựa trên nền tảng hạt nhân Linux phiên bản 2.6, phân tích các bản cập nhật từ Android 1.0 đến phiên bản Android 4.x tại thời điểm năm 2012. Ứng dụng chạy trên nền máy ảo Dalvik (Dalvik Virtual Machine) do Google phát triển riêng cho thiết bị di động, sử dụng mã nguồn Java kết hợp XML.

2. Bốn thành phần cốt lõi để vẽ đồ họa 2D trong Android được xác định là gì?

Tác giả xác định 4 thành phần cơ bản để vẽ bất kỳ đối tượng 2D nào trên Android gồm:

  1. Đối tượng Bitmap để giữ các điểm ảnh (pixel).
  2. Đối tượng nét vẽ định hình cấu trúc (Rect, Path, Bitmap...).
  3. Đối tượng Paint để định nghĩa màu sắc, độ dày và phong cách nét vẽ.
  4. Đối tượng Canvas cung cấp các phương thức thực thi lệnh vẽ lên màn hình.

3. Quy tắc tính điểm và cơ chế vật phẩm trong game 2D "Bom Offline" hoạt động như thế nào?

Trong game Bom Offline, mỗi quả bom đặt xuống sẽ phát nổ sau 3 giây. Người chơi tiêu diệt được 1 quái vật sẽ nhận thêm 50 điểm. Các hộp quà xuất hiện ngẫu nhiên trên màn hình trong khoảng 5 đến 20 giây; khi người chơi chạm vào hộp quà sẽ nhận ngẫu nhiên 1 trong 3 phần thưởng: cộng thêm 1 lượt chơi, tăng 1 cấp độ uy lực nổ của bom, hoặc tăng số lượng bom có thể đặt cùng thời điểm.

4. Hỗ trợ đồ họa 3D OpenGL ES trên Android có các mốc phiên bản nào được đề cập?

Từ phiên bản Android 1.0, hệ điều hành đã hỗ trợ thư viện OpenGL ES 1.0/1.1 thông qua gói javax.microedition.khronos.opengles và android.opengl.GLES10. Đến phiên bản Android 2.2 (API level 8), Google bổ sung thêm thư viện OpenGL ES 2.0 thông qua gói android.opengl.GLES20.

5. Phần nghiên cứu trò chơi 3D (Line3D) trong khóa luận đã đạt đến mức độ nào?

Khóa luận đã hoàn thành việc xây dựng ý tưởng, phân tích sơ đồ hoạt động, lập danh sách Actor, sơ đồ Use Case, đặc tả chi tiết ca sử dụng, thiết kế kiến trúc hệ thống và thiết kế giao diện chơi game cho Line3D. Tuy nhiên, phần viết chương trình chi tiết, kiểm thử và đánh giá trò chơi 3D này chưa hoàn thiện và được tác giả xác định là nội dung đang nghiên cứu tiếp.


Kết luận

Khóa luận tốt nghiệp của tác giả Đặng Văn Giỏi đã hệ thống hóa lý thuyết đồ họa máy tính, các không gian màu và kiến trúc 4 tầng của hệ điều hành Android thời kỳ đầu. Thông qua việc phân tích cơ chế vẽ 2D Canvas và kết xuất 3D OpenGL ES, tác giả đã triển khai thành công các chương trình mẫu cùng trò chơi hoàn chỉnh Bom Offline 2D với đầy đủ đặc tả kỹ thuật và thuật toán va chạm. Mặc dù nội dung phát triển game 3D Line3D mới dừng lại ở bước mô hình hóa thiết kế, công trình đã hoàn thành các mục tiêu nghiên cứu cơ bản và cung cấp tài liệu tham khảo kỹ thuật cho việc lập trình đồ họa game trên nền tảng Android.