I. Tổng quan về đề tài Building a 2D game with Unity
Đề tài tốt nghiệp Building a 2D game with Unity được thực hiện tại Khoa Đào tạo Quốc tế thuộc Trường Đại học Sư phạm Kỹ thuật TP.HCM. Đồ án do sinh viên Nguyễn Minh Nhật nghiên cứu dưới sự hướng dẫn của Thạc sĩ Nguyễn Trần Thi Văn. Mục tiêu trọng tâm là xây dựng trò chơi hành động hai chiều mang tên FantasyHero. Dự án kéo dài trong 15 tuần làm việc nghiêm túc. Sản phẩm khai thác nền tảng Unity Engine hiện đại. Ngôn ngữ lập trình C# đóng vai trò xương sống cho toàn bộ logic vận hành. Trò chơi kết hợp phong cách đi cảnh cổ điển với yếu tố chặt chém kịch tính. Người chơi điều khiển nhân vật chính vượt qua nhiều màn thử thách hiểm nguy. Bản đồ chứa đựng vô số cạm bẫy chết người cùng các toán quái vật hung hãn tuần tra liên tục. Nhân vật sở hữu bộ kỹ năng đa dạng như chém kiếm, bắn xa và thi triển chiêu thức đặc biệt. Nhiệm vụ tối thượng là sinh tồn và kích hoạt cổng dịch chuyển cuối cùng để giành chiến thắng. Công trình phản ánh năng lực vận dụng kiến thức công nghệ thông tin vào sản xuất phần mềm giải trí.
1.1. Bối cảnh học thuật và mục tiêu tại HCMUTE
Trường Đại học Sư phạm Kỹ thuật TP.HCM chú trọng đào tạo thực hành chuyên sâu. Đề tài đáp ứng chuẩn đầu ra của ngành Kỹ thuật Phần mềm. Nghiên cứu tập trung vào quy trình sản xuất trò chơi hoàn chỉnh theo chuẩn công nghiệp. Thời gian thực hiện phân bổ rõ ràng từ cuối tháng 2 đến giữa tháng 5 năm 2025. Tác giả tiếp cận các khái niệm lập trình hướng đối tượng thông qua dự án cụ thể. Cấu trúc mã nguồn đòi hỏi tính module hóa cao. Việc quản lý tài nguyên số và chu kỳ phát triển được kiểm soát chặt chẽ. Đồ án giúp sinh viên nâng cao tư duy thiết kế hệ thống và làm chủ công cụ phát triển đồ họa kỹ thuật số hiện đại.
1.2. Giới thiệu dự án game FantasyHero
FantasyHero là sản phẩm game 2D hành động nhập vai màn hình ngang. Lối chơi đòi hỏi sự phối hợp nhịp nhàng giữa phản xạ và kỹ năng xử lý. Nhân vật chính sở hữu hệ thống di chuyển phong phú gồm chạy, nhảy, bám tường và lướt nhanh. Cơ chế chiến đấu cung cấp ba lựa chọn tấn công gồm chém cận chiến, phóng đạn từ xa và kỹ năng đặc biệt. Đối thủ trong trò chơi gồm nhiều chủng loại quái vật có khả năng tuần tra khu vực và tấn công khi phát hiện mục tiêu. Cạm bẫy môi trường gây sát thương tức thì khi va chạm. Dự án xây dựng nhiều màn chơi với độ khó tăng dần. Mục tiêu cuối cùng là vượt qua tất cả cửa ải để tiến vào cổng chiến thắng.
II. Phân tích thách thức Building a 2D game with Unity
Quy trình phát triển trò chơi hai chiều bằng Unity đặt ra nhiều thách thức kỹ thuật phức tạp. Người lập trình phải đối mặt với bài toán tối ưu hóa tài nguyên phần cứng. Việc quản lý bộ nhớ cho hình ảnh chuyển động và hiệu ứng âm thanh đòi hỏi sự tính toán cẩn trọng. Nếu không kiểm soát tốt, tốc độ khung hình sẽ sụt giảm nghiêm trọng trên các thiết bị cấu hình thấp. Thách thức tiếp theo nằm ở việc xây dựng hệ thống vật lý hai chiều chuẩn xác. Các tương tác va chạm giữa nhân vật, chướng ngại vật và quái vật dễ phát sinh lỗi xuyên tường. Logic tuần tra và phản ứng chiến đấu của kẻ địch cũng đòi hỏi thuật toán trạng thái linh hoạt. Thiết kế trạng thái không chặt chẽ dẫn đến hành vi quái vật bị giật lag hoặc đứng yên vô lý. Ngoài ra, việc thiết kế trải nghiệm người dùng là một áp lực lớn. Giao diện trò chơi cần đảm bảo tính mạch lạc giữa các trạng thái tạm dừng, hồi sinh và kết thúc. Sự thiếu cân bằng giữa độ khó màn chơi và kỹ năng người chơi cũng dễ gây ức chế. Do đó, việc xây dựng kiến trúc mã nguồn rõ ràng và chuẩn mực là yêu cầu sống còn.
2.1. Khó khăn trong xử lý vật lý và va chạm 2D
Công cụ vật lý hai chiều của Unity dựa trên Rigidbody2D và Collider2D. Việc kết hợp nhiều thành phần va chạm trên nhân vật đòi hỏi sự tinh chỉnh tỉ mỉ. Lỗi đường hầm thường xảy ra khi nhân vật di chuyển với vận tốc cao qua các chướng ngại vật mỏng. Hiện tượng kẹt góc hoặc trượt dốc không kiểm soát cũng làm hỏng cảm giác điều khiển. Nhân vật chính sở hữu các thao tác nhảy tường và lướt nhanh phức tạp. Trọng lực và vận tốc phải được lập trình chính xác theo từng khung hình FixedUpdate. Va chạm giữa đòn chém, tầm bắn và quái vật cần vùng kích hoạt chuẩn xác. Xung đột kích thước giữa các lớp va chạm có thể gây đứng hình đột ngột.
2.2. Vấn đề đồng bộ hoạt ảnh và hành vi AI
Hệ thống Animation Controller trong Unity đóng vai trò kiểm soát hoạt ảnh nhân vật. Khi số lượng động tác gia tăng, đồ thị trạng thái dễ trở nên rối rắm. Trạng thái chạy, nhảy, chém kiếm và thi triển phép thuật cần chuyển đổi mượt mà. Hiện tượng gãy hoạt ảnh xuất hiện khi các biến điều kiện không được đặt lại đúng lúc. Đối với kẻ địch, logic tuần tra yêu cầu kiểm tra ranh giới mặt đất và phát hiện vực sâu. Trí tuệ nhân tạo đơn giản phải tự động đổi hướng khi gặp chướng ngại vật. Quá trình chuyển từ trạng thái tuần tra sang trạng thái truy đuổi và tấn công đòi hỏi cự ly quan sát hợp lý. Sai số trong thuật toán khiến quái vật hành động thiếu tự nhiên.
III. Phương pháp triển khai Building a 2D game with Unity
Phương pháp nghiên cứu kết hợp mô hình phân tích kỹ thuật và phát triển phần mềm lặp. Tác giả tận dụng kho tài nguyên Unity Asset Store để tiếp cận hình ảnh, âm thanh và chuyển động mẫu chất lượng. Kiến trúc mã nguồn C# được tổ chức theo các nguyên lý hướng đối tượng chặt chẽ. Hệ thống quản lý trò chơi GameManager điều phối luồng dữ liệu chính và trạng thái chuyển cảnh. Lớp điều khiển nhân vật PlayerController đảm nhiệm việc thu thập tín hiệu đầu vào từ bàn phím. Bộ máy trạng thái hữu hạn Finite State Machine được áp dụng để kiểm soát hành vi kẻ địch. Thuật toán kiểm tra mặt đất Ground Check và chạm tường Wall Check sử dụng kỹ thuật Raycast2D chính xác. Hệ thống giao diện Canvas được thiết kế phân lớp khoa học. Người chơi dễ dàng tương tác với các màn hình Pause Menu, Game Over và Victory Screen. Chức năng hồi sinh Respawn và khởi động lại Restart hoạt động độc lập nhằm bảo đảm tính liền mạch của trò chơi. Sự kết hợp giữa các mẫu thiết kế phần mềm giúp giảm thiểu độ phụ thuộc giữa các khối lệnh.
3.1. Thiết kế cơ chế điều khiển và tương tác
Hệ thống điều khiển nhân vật được tối ưu qua phương thức Input Manager. Nhân vật di chuyển ngang bằng vận tốc Vector2 mượt mà. Kỹ thuật nhảy kép và nhảy bám tường được tính toán dựa trên lực đẩy AddForce và vận tốc tuyến tính. Khi thực hiện thao tác lướt Dash, trọng lực tạm thời đưa về giá trị không để tạo gia tốc tức thì. Kỹ thuật chiến đấu chém kiếm kích hoạt hoạt ảnh cùng hộp va chạm OverlapCircleAll. Đạn bắn ra sử dụng cơ chế đạn đạo Rigidbody2D độc lập. Các bẫy gai môi trường kích hoạt hàm nhận sát thương OnCollisionEnter2D hoặc OnTriggerEnter2D. Toàn bộ thông số máu và thể lực được đồng bộ tức thì lên thanh giao diện hiển thị.
3.2. Xây dựng giao diện UI và quản lý trạng thái màn chơi
Cấu trúc giao diện được xây dựng thông qua hệ thống Canvas phân cấp linh hoạt. Màn hình chọn độ khó cung cấp hai chế độ Normal và Hard. Khi người chơi nhấn nút Pause, thời gian hệ thống Time.timeScale chuyển về 0 để đóng băng chuyển động. Bảng tạm dừng cho phép lựa chọn Resume, Respawn hoặc thoát về Main Menu. Màn hình Game Over hiển thị khi điểm máu về mức 0, cung cấp hai tùy chọn hồi sinh tại chỗ hoặc chơi lại từ đầu. Màn hình Victory Screen xuất hiện khi nhân vật chạm vào cổng đích cuối cùng. Sự kiện nút bấm được gắn kết thông qua hệ thống UnityEvent an toàn. Cấu trúc giao diện rõ ràng giúp nâng cao trải nghiệm trực quan và tiện ích tương tác.
IV. Ứng dụng thực tiễn của Building a 2D game with Unity
Dự án hoàn thành đúng tiến độ đã chứng minh tính khả thi cao của quy trình phát triển game độc lập. Sản phẩm FantasyHero khẳng định vai trò đắc lực của động cơ Unity trong việc hiện thực hóa các ý tưởng thiết kế phức tạp. Kết quả nghiên cứu không chỉ mang lại một trò chơi giải trí hoàn chỉnh mà còn tạo lập cơ sở dữ liệu học thuật giá trị. Sinh viên ngành Công nghệ Thông tin tại Trường Đại học Sư phạm Kỹ thuật TP.HCM có thể tham khảo cấu trúc mã nguồn làm mẫu mực cho các đồ án chuyên ngành tiếp theo. Đề tài mở ra tiềm năng ứng dụng phong phú trong nhiều lĩnh vực công nghệ số. Nền tảng kiến trúc của dự án dễ dàng mở rộng sang các thể loại game đa nền tảng hoặc trò chơi nhập vai nhiều người chơi. Ngoài ra, các cơ chế vật lý và hệ thống chuyển động có thể ứng dụng trong thiết kế phần mềm mô phỏng giáo dục và huấn luyện trực quan. Nghiên cứu khẳng định giá trị thực tiễn to lớn trong việc kết nối đào tạo đại học với thị trường sản xuất phần mềm quốc tế.
4.1. Đóng góp đối với đào tạo kỹ thuật phần mềm
Đồ án tốt nghiệp đóng góp một tài liệu tham khảo thực nghiệm quý báu cho sinh viên kỹ thuật. Nghiên cứu chứng minh sự kết hợp hiệu quả giữa lý thuyết lập trình hướng đối tượng và thực tiễn phát triển phần mềm trò chơi. Bộ tài liệu trình bày chi tiết từ khâu lên ý tưởng, thiết kế cơ chế đến kiểm thử sản phẩm. Sinh viên có thể học hỏi cách xây dựng hệ thống trạng thái FSM cho AI kẻ địch. Cấu trúc phân tầng trong mã nguồn C# cung cấp ví dụ mẫu về việc chia tách trách nhiệm logic. Dự án cũng là minh chứng cho chất lượng giảng dạy và hướng dẫn khoa học tại Trường Đại học Sư phạm Kỹ thuật TP.HCM.
4.2. Khả năng mở rộng và định hướng nâng cấp dự án
Kiến trúc của trò chơi FantasyHero sở hữu tiềm năng phát triển và mở rộng to lớn. Hệ thống màn chơi có thể bổ sung thêm nhiều bối cảnh bản đồ và chướng ngại vật mới. Các chủng loại quái vật hoàn toàn có thể nâng cấp trí tuệ nhân tạo bằng thuật toán tìm đường nâng cao. Trò chơi có thể tích hợp thêm cây kỹ năng đa nhánh và trang bị phong phú cho nhân vật. Khả năng xuất bản đa nền tảng của Unity cho phép phân phối sản phẩm lên các hệ điều hành di động như Android hoặc iOS. Việc xây dựng chế độ lưu dữ liệu trực tuyến và bảng xếp hạng người chơi cũng là định hướng triển vọng. Đồ án mở ra tiền đề vững chắc cho việc thương mại hóa sản phẩm giải trí số.