Nhờ những điều đó, nên C# được sử dụng rộng rãi trong việc phát triển các ứng dụng Windows dành cho máy tính để bàn, game, ứng dụng web và các ứng dụng dành cho thiết bị di động.. Ngoài
Trang 1BAI TAP LON KIEN TRUC PHAN MEM
Đề tài: Mô hình Unity Game MVC
Sinh viên thực hiện:
Giảng viên hướng dân:
Lớp:
Sao Đó, ngày
Tang Quang Nghia Nguyễn Văn Phương Nguyễn Văn Thanh Nguyễn Thị Bích Ngọc DK12 - CNTT
thang nam 2024
Trang 2
TRƯỜNG ĐẠI HỌC SAO ĐỎ KHOA CONG NGHE THONG TIN
BÀI TẬP LỚN KIEN TRUC PHAN MEM
Đề tài: Mô hình Unity Game MVC
Sinh viên thực hiện: Tang Quang Nghia
Nguyễn Văn Phương Nguyễn Văn Thanh Giảng viên hướng dẫn: Nguyễn Thị Bích Ngọc
Lớp: DK12 —- CNTT2
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 3NHẬN XÉT
(Lời nhdn xét cua GVHD)
Sao Do, ngay 23 thang 3 nam 2024
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 4Lời mở đầu
Với sự phát triển nhảy vọt của công nghệ thông tin hiện nay, Internet ngày cảng giữ vai trò quan trọng trone các lĩnh vực khoa học kĩ thuật và đời sống Dĩ
nhiên các bạn đã được nghe nói nhiều về Internet, nói một cách đơn giản, Internet là
một tập hợp máy tính nỗi kết với nhau, là một mạng máy tính toàn cầu mà bắt kì ai
cũng có thể kết nối bằng máy PC của họ Với mạng Internet, tin học thật sự tạo nên
một cuộc cách mạng trao đổi thông tin trong moi lĩnh vực văn hóa, xã hội, chính trị,
kinh tế
Trong thời đại ngày nay, thời đại mà “người người làm Game, nhà nhà làm Game” thì việc có một Ứng dụng Game để giải trí không còn là điều gì xa xỉ nữa
Thông qua Game chúng ta có thể thư giãn, giải trí hơn sau những stress căng thắng
Với lí do đó, được sự hướng dẫn và giúp đỡ của cô Nguyễn Thị Bích Ngọc,
em da chon dé tai “Game MVC” lam dé tai cho bai tập lớn môn học Kiến trúc phần
mềm cua minh
Song vì thời gian có hạn, và còn thiếu nhiều kinh nghiệm và kỹ năng còn hạn chế Nên chắc chắn không tránh khỏi những thiểu sót Vì vậy em rất mong nhận
được nhiều ý kiến đóng góp từ thầy cô và bạn bè để chúng em hoàn thành tốt đề tài
này Chân thành cảm ơn thầy cô và các bạn
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 5Lời cảm ơn
Đề bải tập này đạt kết quả tốt đẹp, em đã nhận được sự hỗ trợ, giúp đỡ của thầy cô Với tỉnh cảm sâu sắc, chân thành, cho phép em được bày tỏ lòng biết ơn
sâu sắc đến tất cả quý thầy cô đã tạo điều kiện giúp đỡ trong quá trình học tập và
nghiên cứu đề tài
Trước hết chúng em xin gửi tới quý thầy cô Khoa Công Nghệ Thông Tin trường Đại học Sao Đỏ lời chào trân trọng, lời chúc sức khỏe và lời cảm ơn sâu sắc
nhất Với sự quan tâm, dạy dỗ, chỉ bảo tận tình chu đáo và những kiến thức mà các
thầy cô đã truyền đạt đã giúp em có thế hoàn thành đề tài môn Kiến trúc phần mềm
Đặc biệt em xin gửi lời cảm ơn chân thành nhất đến giảng viên Nguyễn Thị Bích Ngọc đã quan tâm giúp đỡ tận tình chúng em hoàn thành tốt đỗ án này trong
thời gian qua
Với điều kiện thời gian cũng như kinh nghiệm còn hạn chế, đồ án này sẽ
không thể tránh được những thiếu sót Em rất mong nhận được sự chỉ bảo, đóng góp
ý kiến của các thầy cô, để em có thê bổ sung, nâng cao kinh nghiệm và kỹ năng của
ban than dé phục vụ cho công việc thực tế sau này
Em xin chân thành cảm ơn!
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 6MỤC LỤC
1.1.2, Uu didn cia CHa ecceeeesesssesssesssneesneessiesssnnessnnsesnnesenees 2
1.1.3 Nhược điểm cotta CHa cccccccccccccccscscscecececscsssssesevsvevesevetsssesevsvestevescevsees 3 1.1.4 Sự khác biệt piữa C# với các ngôn neữ lập trình khác 3
In t na 4
1.2.2 Tính năng cơ bản của nIÉy S11 1112111211111 11112221 2 11 ke 4
1.2.3 Ưu điểm của Unity 5 s S22 11211212112112117221 2E rrrreg 5
1.2.4 Nhược điểm của Uniiy - s1 HH 21212121 erreg 5
2.2.1 Yêu cầu chức năng ©1112 E1 111212112111111 1111211111211 tu 8
2.2.2 Yêu cầu hệ thống 2-2 ST EEE111112111111111121111121 1112111 tu 9
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 73.1 Giao Diện Game MVC 10
3.3.1 Giao Diện Menu Came 022011011111 11v HH ky se 10 3.3.2 Giao Diện Các Màn Chơi cccccccesccssecececseeeeseseceseusaenseeeess 11
3.2.1 Di chuyén va Animation playet i c cccccccccccccseccsseseeesteeseseseeen 12 3.2.2 Xử lý va chạm cho Payer - ¿+ c2 2 2132221112111 122111222 x+2 17 3.2.3 Xử lý va chạm cho Enemy 2 2 22122221112 111111111112 x+2 34
E2: an 37
3.2.5 Tắm bật nhảy - - S1 1111111 1111121121111 1101101111 rưyu 40 3.2.6 Nút dừng và tiếp tục game +- 122211 11211112112112.11 151 etg 43
3.2.7 Hình ảnh chuyên động trong Menu - 2 s22 czczxzzze 45
Nguyễn Văn Phương
Nguyễn Văn Thanh
Trang 8DANH MỤC HÌNH ÁNH
Hình 3.1 Ảnh giao diện menu game MVC
Hình 3.2 Ảnh giao diện menu hướng dẫn game MVC -
Hinh 3.5 Giao digén Game MVC Man 2
Hình 3.7, Giao diện thém animation cho nhan vat
Hình 3.9 Tạo Ui thời gian và điểm số
Hình 4.0 Thiết đặt slider cho thanh máu
Hình 4.1 GameObject chứa các file âm thanh
Hình 4.2 Thiết đặt Bệ Bay trong Unity
Hình 4.4 Thiết đặt nút tạm dừng và tiếp tục
Hình 4.5 Thiết dat raw image
Trang 9CHUONG 1: CO SO LY THUYET
1.1 Sơ lược về ngôn ngữ lập trình C#
C# (hay còn gọi là C Sharp, là ngôn ngữ lập trình hướng đối tượng, hiện đại do
Microsoft phát triên như một phần của nền tảng NET Nó được giới thiệu lần đầu
tiên vào năm 2000 và kê từ đó đã trở thành một trong những ngôn ngữ lập trình
được sử dụng rộng rãi nhất trong ngành
C# có thiết kế đơn giản, mạnh mẽ và linh hoạt Sở hữu một cú pháp tương tự
như các ngôn ngữ lập trình phô biến, bao gồm Java và C++, giúp các nhà phát triển
đã quen thuộc với các ngôn ngữ nảy dễ làm quen
Một trone những tính năng chính của C# là an toàn kiểu của nó, giúp ngăn ngừa
các lỗi lập trình có thể xảy ra với các ngôn ngữ khác Không những vậy, nó còn hỗ
trợ quản lý bộ nhớ tự động thông qua trình thu gom rác, giúp đễ dàng viết mã đáng
tin cậy mà không làm rò rỉ bộ nhớ hay gây ra bất kỳ sự cố nào
Nhờ những điều đó, nên C# được sử dụng rộng rãi trong việc phát triển các ứng
dụng Windows dành cho máy tính để bàn, game, ứng dụng web và các ứng dụng
dành cho thiết bị di động Ngoài ra, nó còn được sử dụng trong phát triển phần mềm
doanh nghiệp, với nhiều công ty lớn sử dụng C# để xây dựng các ứng dụng kinh
doanh của họ
Với tông quan những điều trên, thì chúng ta dễ dàng nhận thấy C# là một ngôn
ngữ mạnh mẽ và linh hoạt, phù hợp với nhiều nhiệm vụ lập trình Cho dù bạn mới
bắt đầu làm quen với lập trình hay là một nhà phát triển có kinh nghiệm, thì C# luôn
là một ngôn ngữ tuyệt vời để học và sử dụng khi muốn xây dựng các ứng dụng
mạnh mẽ, đáng tin cậy và có thể mở rộng
1.1.1 Ứng dụng của ngôn ngữ C#
- Phát triển ứng dụng Desktop: C# được sử dụng rộng rãi để xây dựng ứng
dụng máy tính trên nền tảng Windows Bằng việc sử dụng cac framework như
Windows Forms hodc WPF (Windows Presentation Foundation), lap trinh vién có
thé tạo ra các ứng dụng giao diện người dùng (GUI) đa dạng và mạnh mẽ
-_ Phát triển ứng dụng di động: C# được sử dụng trong việc phát triển ứng dụng
di động trên các nền tảng như ¡iOS (sử dụng Xamarin), Android (sử dụng Xamarin
hoặc Native Android Development), và Windows Phone (sử dụng Windows Phone
SDK)
- Phat trién img dung web: C# cé thé duge str dung dé phat triển các ứng dụng
web théng qua framework ASP.NET ASP.NET cung cấp nhiều công cụ vả thư viện
Trang 10hỗ trợ để xây dựng các trang web động, ứng dụng web theo mô hinh MVC (Model-
View-Controller), va web service
- Game Development: C# ciing duoc su dung trong viée phat triển game Với
sự hỗ trợ của engine nhu Unity, lap trinh vién có thé tạo ra các trò chơi 2D và 3D
trên nhiều nền tảng khác nhau C# cung cấp tính năng mạnh mẽ và dễ sử dụng để xử
lý dé hoa, vat ly, trí tuệ nhân tao va nhiều khía cạnh khác của game
- Phat trién ung dung dia trén IoT: Voi su phat trién cua Internet of Things
(IoT), C# cung cấp các thư viện và amework như Windows loT Core để xây đựng
các ứng dụng điều khiến thiết bị thông qua vi điều khiên nhúng hoặc Raspberry Pi
- Phat trién ứng dụng trong lĩnh vực khoa học và công nghệ: C# có thể được
sử dụng để phát triển các ứng dụng trong lĩnh vực khoa học, công nghệ và tính toán
số Các thư viện như Math.NET Numerics cung cấp các công cụ va thuật toán để xử
lý dữ liệu số học và tính toán khoa học
1.1.2 Ưu điểm của C#
- Ngôn ngữ mạnh mẽ và linh hoạt: C# là một ngôn ngữ mạnh mẽ và linh hoạt,
kết hợp các tính năng hiện đại và cú pháp dễ hiểu Nó cung cấp nhiễu tính năng như
lập trình hướng đối tượng, thuộc tính, sự kiện, xử lý ngoại lệ, phân tích cú pháp
LINQ (Language Integrated Query) va nhiều khái niệm tiện ích khác
- H6 tro đa nền tảng: C# không chỉ hỗ trợ phát triển trên nền tảng Windows,
mà còn có thể sử dụng để phát triển ứng dụng trên nhiều nền tảng khác như iOS,
Anđroid và Linux Điều này được thực hiện thông qua các céng cu va framework
nhu Xamarin va NET Core
- Sy phat trién manh mé cua hé sinh thai NET: C# la mét phan cua hé sinh
thai NET, cung cap một tập hợp rộng rãi các thư viện và framework hỗ trợ phát
triển ứng dụng Các framework như ASP.NET, WPEF, Windows Forms và Entity
Framework giúp giảm đáng kế thời gian và công sức trong quá trình phát triển ứng
dụng
- Tich hop tốt với công nghệ Microsoft: C# được phát triển bởi Microsoft và
có tích hợp tốt với các công nghệ và dịch vụ của Microsoft như Azure, SQL Server,
SharePoint và Office Điều nảy giúp lập trình viên dễ dàng tích hợp ứng dụng vào
hệ thống va dich vu cua Microsoft
- Cộng đồng lớn và hỗ trợ mạnh mẽ: C# có một cộng đồng lập trình viên rộng
lớn và nhiều tài liệu hướng dẫn, diễn đàn và nguồn tài nguyên trực tuyến khác Điều
nảy giúp lập trình viên dễ dàng tìm kiếm giải pháp, chia sẻ kiến thức, và nhận được
sự trợ giúp khi gặp khó khăn trong quá trình phát triển
Trang 11- An toan và bảo mật: C# có hệ thống kiểm tra kiểu mạnh mẽ và cung cấp các
cơ chế an toàn bảo mật như quản lý bộ nhớ tự động (parbagpe collection), kiểm tra
ngoai 1é (exception handling) va phan quyén (permission) Diéu nay giup giam thiéu
lỗi và tăng cường tính bảo mật của ứng dụng
1.1.3 Nhược điểm của C#
Mặc dù C# là một ngôn ngữ lập trình phố biến và mạnh mẽ, nhưng nó cũng
có một số nhược điểm Dưới đây là một số nhược điểm của C#:
-_ Giới hạn nền tảng: Mặc dù C# đã phát triển và hỗ trợ đa nền tảng thông
qua NET Core và Xamarin, nhưng nó vẫn chủ yếu tập trung vào nền tảng
Windows Việc phát triển ứng dụng trên các nền tảng khác như macOS và Linux có
thể sặp một số hạn chế và khó khăn
-_ Tính tương thích ngược: Một số phiên bản mới của C# và NET Framework
có thê không tương thích ngược với các phiên bản cũ hơn Điều này có thể gây khó
khăn khi cần phải cập nhật hoặc duy trì các dự án sử dụng các phiên bản cũ của
ngôn ngit va framework
- Quản lý bộ nhớ: Mặc dù C# hỗ trợ quản lý bộ nhớ tự động thông qua
øarbage collector, điều này có thể gây ra sự trễ hệ thống (latency) và sử dụng tài
nguyên hệ thống nhiều hơn so với việc quản lý bộ nhớ thủ công Điều này đặc biệt
quan trọng trong các ứng dụng yêu cầu hiệu năng cao hoặc thời gian thực
-_ Tốc độ thực thi: Mặc dù C# là một ngôn ngữ được biên dịch, tuy nhiên, nó
thường chậm hơn so với các ngôn ngữ gần sát mã máy như C+ hay C Điều này có
thể ảnh hưởng đến hiệu năng của các ứng dụng yêu cầu xử lý số lượng lớn dữ liệu
hoặc thời gian thực
-_ Hạn chế trong lĩnh vực nhúng: C# không phải là ngôn ngữ phô biến trong
lĩnh vực nhúng (embedded systems) Việc sử dụng C# tronp các ứng dụng nhúng có
thể gặp hạn chế về tài nguyên hệ thống, khả năng tích hợp với phần cứng và hiệu
năng
~- Sự phụ thuộc vào công nghệ Microsoft: Mặc dù có thể coi là một ưu điểm
trong một số trường hợp, sự phụ thuộc vào công nghệ và công cụ của Microsoft có
thể là một nhược điểm khi muốn phát triên ứng dụng đa nền tảng hoặc không muốn
bị ràng buộc bởi một nhà cung cấp duy nhất
1,1,4 Sự khác biệt giữa C# với các ngôn ngữ lập trình khác
- Lập trình hướng đối tượng: C# được thiết kế chủ yếu để hỗ trợ lập trình
hướng đối tượng (OOP) Nó cung cấp các tính năng như class, object, kế thừa, đa
hình và đóng gói Sự hỗ trợ mạnh mẽ cho OOP giúp xây dựng và quản lý mã dễ
dàng hơn, và cung cấp cấu trúc chặt ché va dé bao tri
Trang 12-_ Hệ sinh thái NET: C# là một phần của hệ sinh thái NET, bao gồm NET
Framework va NET Core Hé sinh thái này cung cấp một tập hợp rộng rãi các thư
vién va framework dé phat triển ứng dụng Điều này giúp giảm thiểu công sức và
thời gian phát triển, và cung cấp các giải pháp tiện ích cho các tình huống phát triển
khác nhau
-_ Quản lý bộ nhớ tự động: C# sử dụng øarbage collector để quản lý bộ nhớ tự
động Điều này giúp giảm khó khăn và lỗi liên quan đến quản lý bé nhé, vi garbage
collector tự động thu gom các đối tượng không sử dụng và giải phóng bộ nhớ
Trong khi đó, các ngôn ngữ khác như C vả C+ yêu cầu lập trình viên tự động quản
lý bộ nhớ thủ công
- Tính đa nền tảng: Mặc dù C# ban đầu được phát triển cho nền tảng
Windows, nhưng hiện nay nó hỗ trợ đa nền tảng thông qua NET Core Điều này
cho phép phát triển ứng dụng C# trên các hệ điều hành khác nhau như Windows,
macOS và Linux Ngoài ra, C# cũng có thể được sử dụng trong việc phát triển ứng
dụng di động trên 1OS và Android thông qua Xamarin
- Tich hop véi công nghệ Microsoft: C# là ngôn ngữ chính thức của công nghệ
Microsoft và có tích hợp tốt với các công nghệ và địch vụ của Microsoft như Azure,
SQL Server và SharePoint Điều này giúp lập trình viên đễ dàng tích hợp và phát
triển các ứng dụng trên nền tảng của Microsoft
Cú pháp và cầu trúc ngôn ngữ: C# có cú pháp sạch sẽ và đễ đọc, với các quy tắc
cú pháp rõ ràng và nhiều khả năng biểu diễn Nó cũng cung cấp các tính năng tiện
ich nhu thuséc tinh (attributes), sy kién (events) va LINQ (Language Integrated
Query) đề truy vấn đữ liệu
1.2 Tổng quan về Unity
1.2,1 Khái niệm
Unity là một game engine đa nền tảng được phát triển bởi công ty Unity
Technologies, chu yéu duge ding dé phat trién video game cho 21 nén tang bao
gồm may tinh, game consoles (nhu PlayStation) va dién thoai,
1.2.2 Tinh nang co ban cua Unity
- Tao giao dién UI cua Game nhw tao drop bar, textbox,
- Hién thi mô hình 3D, 2D - hệ thống vật ly 2D, 3D
- Networking: H6 tro tạo game chơi nhiều người cùng lúc
-_ Hỗ trợ nền tảng dac biét moi: AR — Augmented reality (Thue té tang cuong),
VR — Virtual reality (Thue té ảo)
- AI—H6 tro con bot trong man hinh game, hé tro package tao nén bot trong
game
Trang 13-_ Hỗ trợ hiển thị chữ bằng font đặc biệt
Trong tất cả các tính năng của Unity thì cá nhân Huy để cao nhất giao diện
ứng dụng Editor Unity Editor, với nhiều công cụ (tool), hỗ trợ các đầu việc phát
triển same như tạo mô hinh 3D (vat lý, ánh sáng) và viết Script, chi bang thao
tác kéo thả hình ảnh
Nhờ vào tính năng này, Unity hỗ trợ tốt cho cả những vị trí khác trong quá
trình phat trién Game nhu Game Designer
1.2.3 Ưu điểm của Unity
- Editor: Voi Editor, nhà phát triển không cần thiết phải viết Code để sắp đặt
các đối tượng trong Game như những Engine khác mà Developer có thế kéo thả,
thay đổi vị trí của từng đối tượng trong Game trực tiếp trên Editor
- Đa nên tảng là lợi ích thứ 2 rất quan trọng với nhiều công ty cũng như
developer Vì với việc bạn tạo ra Game mà Game đó có thé chạy được trên hầu hết
những hệ điều hành quan trọng như Desktop (Mac, Window và Linux) hay Mobile
(iOS, Android) hoặc Web (WebGL) thì cũng đã tiết kiệm công sức cũng như chí phí
rất nhiều cho doanh nghiệp đó
-_ Miễn phí: Và yếu tố cuối cùng chính là chí phí Với Unity, miễn phí là một
điểm thu hút rất nhiều Developer chọn làm việc với game engine này Tuy nhiên,
với các game được tạo ra miễn phí thì bắt buộc phải có Logo Unity trong Game
1.2.4 Nhược điểm của Unity
- Dung luong Unity game bundle kha Ién: So với những game ensine khác,
Unity sản xuất game có dung lượng nặng nên đây là một điểm trừ lớn Theo Huy,
một øame tốt nhất chỉ nặng dưới 100MB Thậm chí, same web do Unity sản xuất có
thể có dung lượng lên đến cả trăm MB nên web chạy không nôi Chính vi thế, cũng
cùng mét game d6 thi game mobile lại chạy tốt trong khi game web lai giat, lag
-_ Hiệu năng: Unity có thể gặp vẫn đề về hiệu năng trong một số trường hợp
Việc xử lý đồ họa phức tạp, vật lý và AI trong các trò chơi có thể đòi hỏi tài nguyên
hệ thống lớn và gây giảm hiệu năng Việc tối ưu hóa mã và tài nguyên trở nên quan
trọng để đảm bảo trải nghiệm chơi game mượt mà
-_- Kích thước tệp tin: Các ứng dụng được phát triển bằng Unity thường có kích
thước tệp tin lớn Điều này có thể gây khó khăn khi tải xuống và cài đặt trò chơi,
đặc biệt trên các thiết bị di động với không gian lưu trữ hạn chế
- Khả năng quản lý mã lớn: Khi phát triển các dự án lớn và phức tạp, việc
quản lý mã nguồn trong Unity co thé trở nên khó khăn Thiếu một hệ thống quản lý
phiên bản tích hợp có thé lam tăng khó khăn trong việc làm việc nhóm và theo dối
các phiên bản mã nguồn
-_ Hạn chế trong việc phát triển ứng dụng ngoài game: Mặc đù Unity là một
môi trường phát triển trò chơi mạnh mẽ, nhưng nó có hạn chế khi phát triển các ứng
Trang 14dụng ngoài lĩnh vực trò chơi Việc xây dựng ứng dụng di động không phải trò chơi
có thể gặp khó khăn và có thê yêu cầu kiến thức và công cụ bố sung
- Sự phụ thuộc vào nguồn lực bên thứ ba: Để làm việc hiệu quả với Unity, lập
trình viên thường phải phụ thuộc vào các tải liệu và tài nguyên bên thứ ba, bao gồm
các plugin va asset Điều nảy có thể tạo ra sự phụ thuộc và khó khăn khi quản lý các
tài liệu và cập nhật phiên bản
-_ Khả năng mở rộng: Mặc dù Unity có một cộng đồng đông đảo và nhiều tài
liệu học tập, nhưng việc tìm kiếm các lập trình viên có kỹ năng Unity có thé gap
khó khăn Điều này đặc biệt đúng đối với các dự án phát triển trò chơi lớn và phức
tạp
1.3 Tông quan về kiên trúc phần mềm
1.3.1 Các kiến trúc truyền thống và hiện đại
1.3.1.1 Các kiến trúc truyền thống
- Kién trúc monolithic (đơn khối): Đây là một kiểu kiến trúc cổ điển, trong đó
toàn bộ hệ thống được xây dựng thành một khối lớn duy nhất Ứng dụng này
thường không chia thành các thành phân riêng lẻ, điều nảy có thê dẫn đến sự khó
khăn trong việc bảo trì và mở rộng
-_ Kiến trúc hướng dịch vụ (SOA): Kiến trúc này tách hệ thống thành các dịch
vụ độc lập, mỗi dịch vụ thực hiện một nhiệm vụ cụ thể Các dịch vụ nay g1a0 tiép
thông qua giao thức được chuẩn hóa (thường là REST hoặc SOAP) SOA có thể
giúp tăng tính linh hoạt và tái sử dụng mã nguồn
1.3.1.2 Các kiến trúc hiện đại
- Kiến trúc dựa trên microservices (kiến trúc hướng microservices): Đây là
một mô hình phổ biến trong phát triển phần mềm hiện đại Hệ thông được chia
thành các dịch vụ nhỏ, độc lập, mỗi dịch vụ thực hiện một chức năng cụ thé Cac
dịch vụ này có thể được triển khai, quản lý và mở rộng độc lập nhau, tăng khả năng
mở rộng và linh hoạt
-_ Kiến trúc dựa trên điện toán dam mây (Cloud-native architecture): Kiến trúc
này tối ưu hóa sự linh hoạt, khả năng mở rộng và hiệu suất thông qua việc sử dụng
các dịch vụ đám mây như lưu trữ đâm mây, tính toán đám mây và các dịch vụ khác
Nó thường đi kèm với việc sử dụng các công nghệ như Docker, Kubernetes dé tu
động hóa quản lý và triển khai ứng dụng
-_ Kiến trúc dựa trên sự kiện (Event-driven architecture): Trong kién tric nay,
các thành phần của hệ thống phản ứng và phản hồi với các sự kiện xảy ra trong hệ
thống Các sự kiện này có thể được gửi, nhận và xử ly bất đồng bộ, ø1úp tạo ra các
hệ thống linh hoạt và có khả năng mở rộng tốt Kiến trúc hướng sự kiện giúp tách
Trang 15biệt logic xử lý sự kiện và giao điện người dùng, tạo ra một hệ thông linh hoạt và dễ
bảo trì
1.3.2 Giới thiệu về kiến trúc mô hình MVC Unity
-_ Mô hình MVC (Model-View-Controller) trong Unity là một kiến trúc phố
biến được sử dụng khi phát triển giao diện người dùng trong ứng dụng phần mềm
1.3.2.1 Tổng quan
- Model: La phan chứa đữ liệu Model không thực hiện logIc trò chơi hoặc tính
toàn
- View: Dinh dang va hiển thị biểu đồ của dữ liệu trên màn hình
- Controller: Xu ly logic nó xử lý dữ liệu trò chơi và tính toán cách giá trị thay
đi trong thời gian chạy Controller không chứa bắt kỳ đữ liệu trò choi nao
1.3.2.2 Ưu điểm
- Tach biét vé logic: MVC tách biệt phần logic của trò chơi thành các thành
phần riêng biệt như dữ liệu (Model), hiển thị (View) và logic điều khiển tương tác
giữa hai phần này (Controller)
- Dé bao tri va mé rong: Tach biét các phần giúp dễ dàng bảo trì mã nguồn và
mở rộng ứng dụng
- Giảm sự phụ thuộc không cần thiết: MVC giúp giảm sự phụ thuộc không cần
thiết piữa các phần của ứng dụng
1.3.2.3 Nhược điểm
-_ Phức tạp: Mô hình MVC có thê phức tạp hơn so với một kiến trúc đơn giản
hơn
-_ Khó khăn trong việc tìm hiểu ban đầu: Đối với những người mới làm quen
với MVC, việc hiểu và triển khai có thê đòi hỏi thời gian học tập
1.3.2.4 Lý do lựa chọn
- Tach biét rd rang: MVC giúp tách biệt rõ ràng iữa các phần của ứng dụng,
giúp đễ dàng quản lý và phát triển mã nguồn
- Tinh mở rộng và bảo trì: Sử dụng MVC cung cấp một nền tảng vững chắc
cho việc phát triển và bảo trì ứng dụng Unity
Trang 16CHUONG 2: THIET KE KIEN TRUC PHAN MEM
2.1 Mo hinh MVC Unity
2.1.1 Model
- Lép nay dai dién cho dit ligu va logic cua tro choi
- Trong Unity , model thuong duoc trién khai dưới dạng các class hoặc scripts
điều khiến dữ liệu và các hành động của các đối tượng trong trò chơi
- Vi dy, một mô hình có thế là một class để quản lý thông tin về người chơi,
điểm số, cấp độ, vật phẩm, v.V
2.1.2 View
- View 1a phan hiển thị giao diện của trò chơi cho người chơi
- Trong Unity, các view thường được thế hiện thông qua UI (User Interface)
elements nhu cac hộp thoại, nut bam, thanh tién trinh, v.v
- View thường được kết nỗi với mô hình thông qua các trình điều khiển
(Controllers) đề hiển thị dữ liệu từ mô hình và cập nhật nó khi có sự thay đổi
2.1.3 Controller
- Controller 1a thành phan chiu trach nhiém diéu khién luéng logic cua tro choi
dựa trên các tương tác của người chơi
- Trong Unity, các controller thường là các scripts điều khiến các hành động
của người chơi và các sự kiện trong trò chơi
- Controller git vai trò trung gian gitra Model và View, nhận dữ liệu từ Model
và cập nhật View tương ứng
2.1.4 Kết nối
-_ Mỗi thành phần (Model, View, Controller) trong mô hình MVC được thiết
kế đề hoạt động độc lập và tái sử dụng
-_ Kết nối giữa các thành phần thường được thực hiện thông qua các phương
thức giao tiếp hoặc sự kiện
-_ Trong Unity, các kịch bản (scripts) thường được sử dụng để kết nối giữa các
phần tử khác nhau trong mô hình MVC
-_ Triển khai mô hình MVC trong Unity giúp cho việc phát triển trò chơi trở
nên dễ quản lý hơn, code trở nên dễ đọc và bảo trì hơn, và tạo điều kiện thuận lợi
cho việc mở rộng và cải tiến trò chơi trong tương lai
2.2 Phân tích yêu cầu
2.2.1 Yêu cầu chức năng
- Chức năng di chuyên, nhảy
-_ Chức năng cộng điểm, thời gian, xử lí va chạm
- Máu cho player
- Enemy , man choi
- Xử lý hiệu ứng hình ảnh nhân vật , nền , âm thanh
Trang 172.2.2 Yêu cầu hệ thống
-_ Chương trình được viết trên Visual Studio 2022 với ngôn ngữ C#
- Phién ban Unity 2022
2.3 Thiết kế hệ thống
- Su dung Tile map dé tao map, giao dién, player va cac vat thé trong game
củng với đó là các sự kiện chức năng ở tựa game vượt chướng noại vật
-_ Chức năng di chuyên sang trái, sang phải, nhảy
- Xu li Text, button, Image, c6 Animation cho nhan vat khi chuyén dong ,
nhảy , bắn chưởng , enemy di chuyén cac chuéng ngai vat nhu dinh gai , lira , dung
nham , ngoai ra con co cac vat pham để hồi máu cho nhân vật
- Có âm thanh nền, âm thanh va chạm, âm thanh khi Win, âm thanh
gameOvcr, thanh máu khi va chạm vật thể có thế gây mất máu cho player, thời gian
đếm ngược mà player phải thu thập đầy đủ đồng xu trước khi thời gian kết thúc để
mở cánh của qua màn pame hoặc khi bị mắt hết máu là sẽ thua
Trang 18CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG
3.1 Giao Diện Game MVC
3.3.1 Giao Diện Menu Game
Hình 3.1 Ảnh giao dién menu game MVC
Trang 19Trong|trojchounay|nguatchoucanithu thap}10 dong vangidelmorcanhicong
@fhia ae) atin 3 CRin a PER dic CAD motiman khúc
Hình 3.2 Ảnh giao điện menu hướng dẫn game MIUC
3.3.2 Giao Diện Các Màn Chơi
Trang 20
Hình 3.5 Giao dién Game MVC Man 2
Hinh 3.6 Giao dién Game MVC Man 3
3.2 Tổng quan các bước Game MVC
3.2.1 Di chuyển và Animation player
Trang 21- Đầu tiên trong unity ta cần thêm animation vào cho nhân vật, nhấn vảo
øameobject của nhân vật rồi add các frame hình ảnh chuyển đông chạy , bật nhảy
- Sau d6 sé cai 214 tr bool trong Animator cua game object nhân vật đó , với
di chuyén sé dat 1 kiéu bool réi set trạng thái giữa trạng thái mặc định là đứng im với trạng thái khi di chuyển Còn với trạng thái nhảy sẽ tạo 1 kiểu trigger va | kiéu bool rồi set trạng thái với trạng thái mặc định là đứng im riêng nhảy ta sẽ bỏ lặp
‘loop’ trong setting dé tranh lặp lại việc hiệu ứng bị lặp đi nhiều lần
Hình 3.8 Thiết đặt trang thdi trong animator
- Tiếp theo với phan script 3 Iép ta sé chia 3 file 14 moveController,
moveModel, move View c6 chic nang va vai trò như sau :
using System.Collections;
using System.Collections.Generic;
Trang 22using UnityEngine;
public class moveModel : MonoBehaviour
{
public static float tocDo = 5.0f;
public static float lucBatNhay = 7.0f;
public bool matDat;
}
- Lớp này chứa dữ liệu và logic của đối tượng di chuyên, bao gồm thông tin
như tôc độ di chuyên (tocDo), lực bật nhảy (lucBatNhay), và trạng thái của đôi
tượng như liệu có đang ở trên mặt đât hay không (matDat)
Dữ liệu trong moveModel có thê được truy cập tir bat ky noi nao trong img
dụng thông qua các biên và phương thức tĩnh
private Animator anim;
private Rigidbody2D body;
// Start is called before the first frame update void Start()
{
anim = GetComponent<Animator>();
body = GetComponent<Rigidbody2D>();
// Di chuyen public void UpdateMovement(float horizontalInput)
{
Trang 23body.velocity = new Vector2 (horizontallnput * moveModel.tocDo, body.velocity.y);
}
// Nhay public void UpdateJump(bool matdat, float lucBatNhay)
public void UpdateRotation(float horizontalInput)
{
if (horizontallnput > 0.014) transform.localScale = new Vector3(1, 1, 1);
else if (horizontalInput < -0.01f) transform.localScale = new Vector3(-1, 1, 1);
public void UpdateAnimation(float horizontalInput, bool matdat)
{
anim.SetBool("chay", horizontallnput != 0);
anim.SetBool("matdat", matdat);
}
- Lớp này làm nhiệm vụ hiển thị và tương tác với người chơi hoặc môi trường
- Trong trường hợp này, moveView đảm nhiệm việc điều khiển hiến thị vả
animation của đối tượng di chuyền Nó sử dụng Animator để điều khiển animation
va Rigidbody2D để điều khiến vật lý
Trang 24- Phuong thức UpdateMovement, Update]ump, và UpdateRotation cập nhật vị
trí, nhảy, và hướng của đôi tượng dựa trên đữ liệu từ moveModeal
public static float tocDo;
public static float lucBatNhay;
private bool matDat;
private moveView view;
float horizontalInput = Input.GetAxis("Horizontal");
view UpdateMovement(horizontal Input);
1ƒ (Input.GetKey(KeyCode.Space) && matDat)
{
vIew.Update]ump(matDat, lucBatNhay);
matDat = false;
Trang 25}
- Lép nay lam nhiệm vụ điều khiến luồng dữ liệu giữa Model và View, cũng
như xử lý sự kiện từ người chơi hoặc môi trường
- Trong trường hợp này, moveController đọc đữ liệu từ Input, sau đó cập nhật
dữ liệu của moveModel (như trạng thái matDat) và gọi các phương thức của
moveView để cập nhật hiển thị
- moveController giữ vai trò trung gian giữa dữ liệu và hiển thị, đảm bảo rằng
logic và dữ liệu không bị trộn lẫn với giao diện người dùng
3.2.2, Xứ lý va chạm cho Player
3.2.2.1 UI Thời gian, điểm số, thất bại, chiến thắng
- Trong unity ta sé tao UI chita 2 gameobject kiéu Text la Score và Time , kiểu
2 gameobject Image la anh That Bai va Chién Thang
Trang 26- Tiép theo trong phan Script ta co 3 file la uiModel, uiView va
public int score;
public float timeRemaining;
public uiModel (float initial Time)
- Lớp này chứa đữ liệu và logic liên quan đến giao diện người dùng, trong
trường hợp nảy là điểm số (score) và thời gian còn lại (timeRemaining)
- Phuong thirc UpdateTime cap nhật thời ø1an còn lại dựa trên delta time
-_ Phương thức AddScore thêm điểm số mới vào điểm số hiện tại
© uiView (View):
Trang 27public Text scoreText;
public Text timeText;
public Image gameOverlmage;
public Image gameWinImage;
public void UpdateScore(int newScore)
{
scoreText.text = "Coin : " + newScore.ToString() + "/ 100";
public void UpdateTime(float time)
{
timeText.text = "Time : "+ Mathf.Round(time) ToString();
public void ShowGameOver(bool isGameOver)
Trang 28Lớp này điều khiến hiển thị của giao diện người dùng, bao gồm điểm số, thời
gian, hình ảnh kết thúc game (Game Over hoặc Game Win)
- Phương thức UpdateScore cập nhật hiển thị điểm số trên giao diện người
dùng
- Phương thức UpdateTime cập nhật hiển thị thời gian con lại trên giao diện
người dùng
- Phương thức ShowGameOver và ShowGameWIn điều khiến việc hiển thị
hình ảnh kết thúc game trên giao diện người dùng
-_ Ta sẽ kéo 4 gameobject vừa tạo ở trong Unity vào 4 biến tương đương trong
code đề hiển thị ra ngoài màn hình