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

Trong bối cảnh hội nhập, toàn cầu hóa cùng với những biến động phức tạp từ dịch bệnh COVID-19, phương thức giảng dạy và tiếp thu kiến thức truyền thống gặp nhiều trở ngại. Toán học là môn khoa học nền tảng xuyên suốt mọi cấp học, giữ vai trò rèn luyện tư duy logic, nâng cao khả năng tập trung và giải quyết vấn đề trong đời sống. Tuy nhiên, việc truyền đạt kiến thức toán học cho lứa tuổi thiếu nhi qua sách vở và bảng viết truyền thống thường mang tính trừu tượng, khô khan, dễ dẫn đến tâm lý thụ động và giảm sút hứng thú học tập ở học sinh tiểu học.

Sự phát triển của công nghệ di động và các thiết bị điện tử cầm tay đã mở ra khả năng tiếp cận tri thức linh hoạt, không bị giới hạn trong không gian lớp học. Việc ứng dụng công nghệ mô phỏng và kỹ thuật phát triển trò chơi điện tử (game-based learning) nhằm trực quan hóa các phép tính toán học thông qua hình ảnh, hoạt cảnh sinh động và cơ chế tương tác trực tiếp là một hướng tiếp cận giàu tiềm năng. Xuất phát từ thực tiễn đó, tác giả Nguyễn Văn Đạt đã thực hiện đồ án tốt nghiệp với đề tài "Xây dựng ứng dụng học tập DrimLearn bằng Unity" dưới sự hướng dẫn của ThS. Trịnh Thị Vân Anh tại Học viện Công nghệ Bưu chính Viễn thông.

Mục tiêu của đề tài được xác định cụ thể:

  • Xây dựng một phần mềm học toán kết hợp trò chơi nhằm tăng cường tính trực quan và mức độ hứng thú cho người học.
  • Cung cấp một công cụ học tập tiện lợi, cho phép trải nghiệm mọi lúc, mọi nơi trên thiết bị di động.

Đề tài đặt ra 03 nhiệm vụ và mục tiêu nghiên cứu cụ thể:

  1. Tìm hiểu về mô hình kiến trúc MVC (Model - View - Controller) và áp dụng mô hình này vào quy trình lập trình phát triển trò chơi.
  2. Tìm hiểu chuyên sâu về ngôn ngữ lập trình C# và các kỹ thuật xử lý hướng đối tượng, hướng thành phần.
  3. Tìm hiểu chuyên sâu về Game Engine Unity, các công cụ tích hợp trong Unity Editor và phương thức xây dựng một ứng dụng hoàn chỉnh trên môi trường Unity.

Đối tượng và phạm vi nghiên cứu của đồ án bao gồm:

  • Đối tượng tiếp nhận: Học sinh bậc tiểu học, trọng tâm là chương trình kiến thức Toán lớp 3.
  • Phạm vi kiến thức: Phép tính cộng, trừ số có 3 chữ số (không nhớ và có nhớ một lần), các phép tính ngẫu nhiên cộng - trừ - nhân - chia, và các khái niệm hình học cơ bản.
  • Phạm vi nền tảng: Ứng dụng di động chạy trên hệ điều hành Android, được đóng gói từ môi trường Unity 2D.

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

Đồ án ứng dụng phương pháp phân tích - thiết kế hệ thống hướng đối tượng và kỹ thuật phát triển phần mềm trên nền tảng Game Engine. Các cơ sở lý thuyết, mô hình và công cụ kỹ thuật được tác giả sử dụng bao gồm:

  • Mô hình kiến trúc MVC (Model - View - Controller): Phân tách rõ ràng giữa cấu trúc dữ liệu câu hỏi (Model), giao diện hiển thị đồ họa và nút bấm (View), cùng các lớp điều khiển luồng logic, xử lý tính toán và tương tác vật lý (Controller).
  • Unity Engine: Công cụ phát triển đa nền tảng do Unity Technologies phát triển. Đồ án khai thác hệ thống kết xuất đồ họa 2D, hệ thống vật lý 2D (Physics2D, Rigidbody2D, Collider2D), hệ thống quản lý âm thanh (AudioSource), và cơ chế đóng gói tài nguyên tái sử dụng (Prefabs).
  • Ngôn ngữ lập trình C# (.NET Framework): Sử dụng các tính chất hướng đối tượng thuần túy, cơ chế quản lý bộ nhớ tự động (Garbage Collector), các đặc tính hướng thành phần (Property, Event) và các giao diện Interface để tổ chức mã nguồn.
  • Vòng đời đối tượng trong Unity (Life-cycle methods): Khai thác các hàm định sẵn phục vụ điều khiển logic và vật lý:
    • Awake(): Khởi tạo dữ liệu ngay khi GameObject được gắn vào Scene.
    • Start(): Thực thi khi GameObject được kích hoạt lần đầu.
    • Update(): Xử lý logic tại mỗi khung hình (Frame).
    • FixedUpdate(): Xử lý các phép toán và va chạm vật lý theo chu kỳ cố định.
    • LateUpdate(): Xử lý sau khi toàn bộ các hàm Update() hoàn tất.
    • OnEnable() / OnDisable(): Bắt sự kiện bật/tắt của đối tượng.
    • OnDestroy(): Thu dọn tài nguyên khi đối tượng bị hủy.
    • OnGUI(): Vẽ các thành phần giao diện người dùng theo GUI-API.
  • Bộ công cụ Unity Editor: Phân chia giao diện làm việc thành 6 khu vực chức năng chính: Hierarchy (quản lý đối tượng hiện hành), Scene (bố trí không gian và thực thể), Game (mô phỏng màn hình hiển thị), Inspector (thiết lập thông số component), Project (quản lý cây thư mục tài nguyên Asset), và Console (ghi nhận lỗi và thông báo hệ thống).

Thiết kế và triển khai ứng dụng

Ứng dụng DrimLearn được thiết kế xoay quanh luồng vận hành tổng thể: từ giao diện chính (Start Menu Scene) -> dẫn nhập cốt truyện bài học (Unit Story Scene) -> màn chơi giải đố kết hợp câu hỏi (Question Scene) -> màn hình tổng kết (Finish Scene). Hệ thống chỉ bao gồm 01 tác nhân duy nhất là Người dùng (User).

Đơn vị bài học (Unit) Tên trò chơi Chủ đề - Thể loại Nội dung kiến thức Toán Cơ chế trò chơi (Gameplay)
Unit 1 Save Earth Bảo vệ môi trường (Game trắc nghiệm) Cộng, trừ số có 3 chữ số (không nhớ) Trả lời đúng trắc nghiệm 4 đáp án; xe rác thu gom rác thải và trồng thêm một cây xanh trên Trái Đất.
Unit 2 Christmas Eggs Thu hoạch trứng cho Ông già Noel (Game đi cảnh 2D Platformer) Cộng, trừ số có 3 chữ số (có nhớ 1 lần) Điều khiển nhân vật di chuyển, nhảy né gai; chạm vào trứng để mở câu hỏi; có 3 trái tim; mở rương báu cuối map để ấp rồng theo số trứng.
Unit 3 Math Game Luyện tính nhanh cùng bạn Sóc (Game giải đố Endless tính giờ) Phép tính ngẫu nhiên (+, -, ×, ÷) Chọn đáp án điền vào thành phần còn thiếu; giới hạn thời gian đếm ngược; đúng cộng điểm, sai trừ thời gian; mỗi 5 câu đúng tăng độ khó.
Unit 4 Game Dungeon Cứu người khỏi mê cung (Game giải đố mê cung) Chủ đề hình học Tìm đường thoát khỏi mê cung thông qua việc trả lời đúng các câu hỏi toán hình học tại các nút chặn.

Cấu trúc các lớp thực thể và điều khiển chính

Hệ thống mã nguồn C# được xây dựng thông qua việc tổ chức các lớp với các thuộc tính cụ thể:

Bảng tổng hợp các thuộc tính của các lớp chính trong hệ thống:

Tên lớp (Script C#) Thuộc tính chính Kiểu dữ liệu Chức năng mô tả
QuestInfor.cs id
result
quest
A, B, C, D
int
int
string
string
Mã câu hỏi.
Chỉ số đáp án đúng.
Chuỗi nội dung câu hỏi.
Nội dung 4 phương án lựa chọn.
UI_QuestMng.cs obj_nextBT
lstQuestInUse
rect_trashCar
lstTrash, lstTree
t_score, t_time
_currentQuest
numRightAns
GameObject
List<QuestInfor>
RectTransform
List<RectTransform>
Text
int
int
Nút chuyển câu hỏi kế tiếp.
Danh sách câu hỏi đang phục vụ màn chơi.
Tọa độ hoạt ảnh của xe thu gom rác.
Danh sách tọa độ rác thải và cây xanh.
Hiển thị điểm số và thời gian làm bài.
Chỉ số câu hỏi hiện tại.
Số lượng câu hỏi trả lời chính xác.
QuestDisplay.cs obj_Content
t_quest
t_numberQuest
t_ansA, t_ansB, t_ansC, t_ansD
cl_normalAns
cl_rightAns, cl_wrongAns
GameObject
Text
TextMeshProUGUI
Text
Color32
Color32
Khung chứa giao diện câu hỏi.
Văn bản câu hỏi.
Chỉ số câu hỏi trên tổng số câu.
Văn bản các nút đáp án A, B, C, D.
Màu nút ở trạng thái mặc định.
Mã màu phản hồi khi chọn đúng/sai.
CharacterMng.cs rb
speedRun, forceJump
isMoving, isRunRight
anim
isGround, groundPoint
radius, whatIsGround
Rigidbody2D
float
bool
Animator
bool, Transform
float, LayerMask
Thành phần vật lý 2D của nhân vật.
Thông số tốc độ chạy và lực nhảy.
Trạng thái di chuyển và hướng quay.
Thành phần điều khiển hoạt ảnh (animation).
Trạng thái và tọa độ điểm kiểm tra tiếp đất.
Bán kính quét và mặt nạ lớp quy định mặt đất.
UI_QuestPlatform.cs questData
lstQuestInUse
t_quest1, t_quest2
t_numEgg, t_numEggResult
lstDragon
lstHealth
Quest
List<QuestInfor>
Text
Text
List<GameObject>
List<GameObject>
Đối tượng dữ liệu bài kiểm tra.
Danh sách câu hỏi trong màn chơi.
Văn bản hiển thị các phần của đề bài.
Số trứng thu được và tổng kết quả.
Danh sách các cấp độ rồng mở khóa.
Danh sách biểu tượng trái tim sinh mệnh.
GameManager.cs timeTotalGame
timeBonus
GOOD_COLOR, FAIL_COLOR
point
QUESTIONS_GO, BUTTONS_GO
int
int
Color
point
GameObject
Tổng thời gian quy định cho câu hỏi.
Thời gian cộng thêm khi làm đúng.
Màu sắc giao diện đúng/sai.
Điểm số tích lũy của người chơi.
Đối tượng câu hỏi và nút điều khiển.

Cài đặt và cấu hình hệ thống

  • Cấu hình xây dựng (Build Settings): Dự án được thiết lập trên môi trường Unity 2D, mục tiêu nền tảng xuất bản là Android, tùy biến hiển thị logo khởi động và hỗ trợ cả hai chế độ hiển thị màn hình ngang (Landscape) và dọc (Portrait) tương thích với từng dạng minigame.
  • Xử lý âm thanh và hoạt ảnh: Tích hợp SoundMng và UI_MenuSettingMng điều khiển các hiệu ứng âm thanh click chuột (buttonClick), âm thanh khi trả lời đúng (ClRightAns) và âm thanh khi chọn sai (ClWrongAns), kết hợp cùng thư viện DOTween (phương thức DOMove) tạo chuyển động mượt mà cho các đối tượng đồ họa.

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

Chương I: Giới thiệu chung

Chương này tập trung trình bày bối cảnh thực tiễn, tính cấp thiết của việc đổi mới phương pháp giảng dạy môn Toán cho học sinh tiểu học và xác định mục tiêu xây dựng ứng dụng DrimLearn. Tác giả khái quát lịch sử phát triển của Unity Engine từ năm 2005 (phiên bản đầu tiên tại sự kiện Apple WWDC bởi David Helgason) cho đến các bản cập nhật hoàn thiện (Unity 5.5 và Unity 2017 loại bỏ Boo, UnityScript để chuẩn hóa trên C#).

Chương I cũng phân tích các thế mạnh của Unity về khả năng hỗ trợ đa nền tảng (Android, iOS, PC, Console, WebGL), tính tiện dụng của bộ công cụ soạn thảo, đồng thời hệ thống hóa các khái niệm nền tảng trong phát triển game như GameObject, Component, Sprite, Prefabs, AudioSource, các hàm vòng đời (Life-cycle) và đặc trưng của ngôn ngữ lập trình hướng đối tượng C# chạy trên nền .NET.

Chương II: Phân tích và thiết kế ứng dụng

Chương II là phần trọng tâm về kỹ thuật, mô tả chi tiết quy trình thiết kế phần mềm cho toàn bộ 4 Unit học tập và chức năng cài đặt hệ thống:

  • Xác định Actor và Use Case: Hệ thống tương tác với một tác nhân duy nhất (User), phân rã thành các ca sử dụng tổng quan và chi tiết (vào bài học, chọn đáp án, di chuyển nhân vật, nhặt vật phẩm, cài đặt âm thanh, thoát).
  • Thiết kế chi tiết từng Unit: Xây dựng kịch bản luồng sự kiện chính - ngoại lệ, biểu đồ ca sử dụng chi tiết, biểu đồ lớp phân tích, biểu đồ lớp thiết kế, biểu đồ tuần tự biểu diễn tương tác giữa các đối tượng giao diện và bộ điều khiển (QuestController, CharacterController, QuestObject).
  • Thiết kế giao diện và lớp thực thể: Trình bày chi tiết bảng mô tả thuộc tính và các phương thức xử lý sự kiện nòng cốt như: NextQuestBT(), ChoseBT(int index), EndQuestBT() trong Unit 1; IsGrounded(), MoveRightBT(), JumpBT(), OnTriggerEnter2D(Collider2D other) trong Unit 2; và các cơ chế đếm ngược, tăng độ khó trong Unit 3.

Chương III: Cài đặt ứng dụng

Chương III trình bày quy trình triển khai kỹ thuật và cấu hình dự án trong môi trường Unity Editor:

  • Cấu hình hệ thống và môi trường phát triển: Tạo lập project Unity 2D, chuyển đổi môi trường sang nền tảng Android (Switch Platform), thiết lập kích thước tỷ lệ khung hình, định dạng xoay màn hình và gắn biểu tượng ứng dụng (Icon/Logo).
  • Xử lý các thành phần game và đồ họa: Liên kết các đối tượng giao diện (Canvas, Button, TextMeshPro, Image) với các Script C# tương ứng, thiết lập hệ thống phát hiện va chạm (Collision/Trigger) và gán nhãn nhận diện tag (Enemy, Egg).
  • Xử lý âm thanh: Tích hợp bộ quản lý âm thanh SoundMng, xử lý các luồng phát âm thanh nền và âm thanh tương tác theo sự kiện thao tác của người dùng.

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

Chương cuối cùng tổng kết toàn bộ các kết quả đạt được sau quá trình nghiên cứu và thực hiện đồ án, thẳng thắn chỉ ra những điểm còn tồn tại trong phiên bản hiện tại, từ đó đề xuất các định hướng nâng cấp và mở rộng ứng dụng trong tương lai.


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

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

  • Xây dựng thành công ứng dụng học tập DrimLearn hoàn chỉnh trên nền tảng Android với 4 đơn vị bài học (Unit) tương ứng với 4 dạng trò chơi khác nhau.
  • Tích hợp thành công chương trình Toán lớp 3 vào trò chơi, bao gồm: phép tính cộng trừ không nhớ, phép tính có nhớ 1 lần, các phép tính ngẫu nhiên 4 phép tính cơ bản có tính giờ, và nội dung nhận biết hình học.
  • Ứng dụng hiệu quả mô hình MVC vào kiến trúc dự án Unity, phân định mạch lạc giữa dữ liệu câu hỏi, giao diện người dùng và các script điều khiển logic, giúp mã nguồn dễ bảo trì và mở rộng.
  • Làm chủ quy trình xây dựng game 2D trên Unity từ khâu thiết kế use case, xây dựng sơ đồ lớp, sơ đồ tuần tự, lập trình kịch bản C#, xử lý va chạm vật lý Physics2D, hoạt ảnh Animator, đến xuất bản gói cài đặt Android.

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

  • Đưa ra giải pháp trực quan hóa các bài toán số học khô khan thành các cơ chế trò chơi mang tính giáo dục (Gamification), hỗ trợ học sinh tiểu học tiếp thu kiến thức một cách tự nhiên.
  • Cung cấp một tài liệu thiết kế chi tiết về việc kết hợp giữa giải đố trắc nghiệm toán học với các thể loại game 2D (như game dọn rác, game platformer đi cảnh thu thập trứng, game đếm ngược thời gian và mê cung).

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

Hạn chế

  • Nội dung câu hỏi và các dạng bài tập mới chỉ dừng lại ở phạm vi kiến thức chọn lọc của chương trình Toán lớp 3, chưa bao quát toàn bộ chương trình tiểu học.
  • Dữ liệu câu hỏi đang được lưu trữ và nạp trực tiếp trong các cấu trúc danh sách nội bộ của ứng dụng, chưa kết nối với hệ thống cơ sở dữ liệu từ xa (Database/Server) để cập nhật động.
  • Ứng dụng mới chỉ tập trung cấu hình và kiểm thử trên nền tảng Android, chưa triển khai đa nền tảng đồng bộ (iOS, WebGL, PC).

Hướng nghiên cứu tiếp

  • Bổ sung và đa dạng hóa ngân hàng câu hỏi, mở rộng phạm vi kiến thức cho các khối lớp khác (lớp 1, 2, 4, 5).
  • Phát triển hệ thống quản trị nội dung phía máy chủ (Backend/API) cho phép giáo viên và phụ huynh tùy biến thêm mới, chỉnh sửa câu hỏi và theo dõi tiến độ học tập của học sinh.
  • Tối ưu hóa giao diện, bổ sung thêm nhiều dạng minigame phong phú và đóng gói ứng dụng cho các hệ điều hành di động khác.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo hữu ích cho:

  • Sinh viên ngành Công nghệ thông tin, Hệ thống thông tin, Công nghệ phần mềm và Đa phương tiện: Tham khảo quy trình phân tích thiết kế hệ thống phần mềm trò chơi giáo dục bằng ngôn ngữ mô hình hóa UML (Use case, Class diagram, Sequence diagram).
  • Lập trình viên Unity mới bắt đầu: Học hỏi phương pháp tổ chức mã nguồn theo mô hình MVC trong Unity 2D, cách viết kịch bản C# điều khiển nhân vật với Rigidbody2D, xử lý va chạm qua OnTriggerEnter2D, quản lý danh sách dữ liệu bằng List<T>, và lập trình giao diện UI (Unity UI / TextMeshPro).
  • Người nghiên cứu về ứng dụng trò chơi hóa (Gamification): Tham khảo mô hình tích hợp nội dung giáo dục số học vào các cơ chế gameplay tương tác trực quan.

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

1. Ứng dụng DrimLearn được xây dựng nhằm phục vụ nhóm đối tượng nào và giải quyết bài toán gì?

Ứng dụng hướng đến đối tượng chính là học sinh lớp 3. Đồ án giải quyết bài toán đổi mới phương pháp học tập môn Toán, khắc phục sự khô khan của lối học truyền thống bằng cách kết hợp việc giải toán với các trò chơi tương tác trực quan trên thiết bị di động Android.

2. Bốn Unit bài học trong ứng dụng DrimLearn được phân chia theo cấu trúc chủ đề và dạng toán nào?

  • Unit 1 (Save Earth): Chủ đề bảo vệ môi trường; rèn luyện phép cộng, trừ số có 3 chữ số (không nhớ) qua thể loại trắc nghiệm.
  • Unit 2 (Christmas Eggs): Chủ đề nhặt trứng rồng cho Ông già Noel; rèn luyện phép cộng, trừ số có 3 chữ số (có nhớ 1 lần) qua thể loại đi cảnh 2D.
  • Unit 3 (Math Game): Chủ đề tính nhanh cùng bạn Sóc; rèn luyện phép tính ngẫu nhiên (+, -, ×, ÷) dưới dạng giải đố tính giờ đếm ngược.
  • Unit 4 (Game Dungeon): Chủ đề thoát khỏi mê cung; giải quyết các câu hỏi về kiến thức hình học.

3. Trong Unit 1, hệ thống lưu trữ thông tin câu hỏi và xử lý phản hồi khi người dùng chọn đáp án như thế nào?

Dữ liệu câu hỏi được cấu trúc qua lớp QuestInfor.cs gồm các thuộc tính: id, result, quest, A, B, C, D. Khi người dùng tương tác, phương thức ChoseBT(int index) trong lớp UI_QuestMng.cs sẽ so sánh lựa chọn với result. Nếu đúng, nút đổi sang màu xanh (cl_rightAns), tăng biến numRightAns, kích hoạt hoạt ảnh di chuyển xe rác dọn rác và hiển thị cây xanh; nếu sai, nút chọn chuyển sang màu đỏ (cl_wrongAns) và đáp án đúng hiển thị màu xanh.

4. Nhân vật trong Unit 2 (Christmas Eggs) được lập trình điều khiển và kiểm tra trạng thái tiếp đất bằng cơ chế nào?

Lớp CharacterMng.cs điều khiển nhân vật thông qua Rigidbody2D và Animator. Trạng thái tiếp đất được kiểm tra bằng phương thức IsGrounded() sử dụng hàm vật lý Physics2D.OverlapCircle (hoặc kiểm tra va chạm qua Physics2D) dựa trên các thông số: tọa độ chân nhân vật groundPoint, bán kính quét radius và mặt nạ lớp whatIsGround.

5. Những hàm vòng đời (Life-cycle methods) nào của Unity được tác giả hệ thống hóa trong đồ án?

Đồ án trình bày 8 hàm vòng đời cơ bản trong Script của Unity: Awake(), Start(), Update(), FixedUpdate(), LateUpdate(), OnEnable()/OnDisable(), OnDestroy() và OnGUI().


Kết luận

Đồ án tốt nghiệp "Xây dựng ứng dụng học tập DrimLearn bằng Unity" của sinh viên Nguyễn Văn Đạt đã hoàn thành trọn vẹn mục tiêu thiết kế và cài đặt một phần mềm học toán trực quan trên nền tảng Android dành cho học sinh lớp 3. Công trình thể hiện sự kết hợp chặt chẽ giữa quy trình phân tích thiết kế hệ thống theo mô hình MVC và kỹ thuật lập trình game 2D trên nền tảng Unity Engine sử dụng ngôn ngữ C#. Hệ thống 4 đơn vị bài học với các cơ chế gameplay đa dạng đã chứng minh tính khả thi của việc ứng dụng công nghệ trò chơi vào nâng cao hiệu quả giáo dục tiểu học.