Về Unity
Unity là một công cụ trò chơi 3D/2D và IDE đa nền tảng mạnh mẽ dành cho các nhà phát triển Là một công cụ trò chơi, Unity có thể cung cấp nhiều tính năng tích hợp quan trọng nhất giúp trò chơi hoạt động Nó bao gồm những thứ như vật lý, kết xuất 3D và phát hiện va chạm
Cũng như một công cụ trò chơi, Unity là một IDE IDE là viết tắt của "môi trường phát triển tích hợp", mô tả một giao diện cho phép bạn truy cập vào tất cả các công cụ bạn cần để phát triển ở một nơi Phần mềm Unity có trình chỉnh sửa trực quan cho phép người sáng tạo chỉ cần kéo và thả các phần tử vào cảnh, sau đó thao tác với các thuộc tính của chúng.
Unity cũng cung cấp một loạt các tính năng và công cụ hữu ích khác: chẳng hạn như khả năng điều hướng qua các thư mục trong dự án hoặc tạo các animations thông qua timeline tool.
Khi nói đến việc coding, Unity sẽ tự động chuyển sang các trình duyệt code thay thế mà người dùng chọn Tùy chọn phổ biến nhất là Visual Studio của Microsoft
Unity sử dụng ngôn ngữ lập trình C# để xử lý các đoạn code và logic với rất nhiều class và API Người dùng cũng có thể xử lý các công việc trên Unity mà không cần phải code quá nhiều Điều đó cho thấy rằng, việc hiểu rõ cách thức sử dụng Unity sẽ có thể tạo ra nhiều tùy biến khác nhau trong việc phát triển ứng dụng và Unity sẽ mang đến cho người dùng sự linh hoạt để thay đổi hầu hết mọi thứ.
Những ưu điểm của Unity:
- Chức năng cốt lõi đa dạng bao gồm: cung cấp công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, tạo dò nguồn dữ liệu xử lý, quản lí bộ nhớ, dựng ảnh đồ thị và kết nối mạng Nhờ có các engine mà công việc làm game trở nên ít tốn kém và đơn giản hơn.
- Hỗ trợ đa nền tảng: một trong các thế mạnh của Unity chính là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có.
- Dễ sử dụng: Unity được built trong một môi trường phát triển tích hợp, cung cấp một hệ thống toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng công cụ tự động hóa đến trình sửa lỗi Do được hướng đến đồng thời cả lập trình viên không chuyên và studio chuyên nghiệp, nên Unity khá dễ sử dụng.
- Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine cho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100.000 USD/năm Với bản Pro, người dùng phải trả 1.500 USD/ năm – một con số rất khiêm tốn so với những gì engine này mang lại.
Các thành phần trong Unity Editor:
Hình 2.1.1.2: Các thành phần cơ bản trong Unity Editor
1 Cửa sổ Scenes o Phần này hiển thị các đối tượng trong scenes một các trực quan, có thể lựa chọn các đối tượng, kéo thả, phóng to, thu nhỏ, xoay đối tượng … o Phần này có để thiết lập một thông số như hiển thị ánh sáng, âm thanh, cách nhìn 2D hay 3D … o Khung nhìn Scenes là nơi bố trí các Game Object như cây cối, cảnh quan, enemy, player, camera,… trong game Sự bố trí hoạt cảnh là một trong những chức năng quan trọng nhất của Unity.
2 Cửa sổ Hierarchy o Tab hierarchy là nơi hiển thị các Game Object trong Scenes hiện hành Khi các đối tượng được thêm hoặc xóa trong Scenes, tương ứng với các đối tượng đó trong cửa sổ Hierarchy. o Tương tự trong tab Project, Hierarchy cũng có một thanh tìm kiếm giúp quản lý và thao tác với các Game Object hiệu quả hơn đặc biệt là với các dự án lớn.
3 Cửa sổ Game o Đây là màn hình demo Game, là góc nhìn từ Camera trong game. o Thanh công cụ trong cửa sổ Game cung cấp các tùy chỉnh về độ phân giải màn hình, thông số (stats), gizmo, tùy chọn bật tắt các component…
4 Cửa sổ Project o Đây là cửa sổ Explorer của Unity, hiển thị thông tin của tất cả các tài nguyên (Assets) trong game. o Cột bên trái hiển thị assets và các mục yêu thích dưới dạng cây thư mục tương tự như Windows Explorer Khi click vào một nhánh trên cây thư mục thì toàn bộ nội dung của nhánh đó sẽ được hiển thị ra ở khung bên phải. o Ta có thể tạo thư mục mới bằng cách Right Click -> Create -> Folder hoặc ấn vào nút Create ở góc trên bên trái cửa sổ Project và chọn Folder Các tài nguyên khác trong game cũng có thể được tạo bằng cách này. o Đường dẫn của thư mục tài nguyên hiện tại Chúng ta có thể dễ dàng tiếp cận các thư mục con hoặc thư mục gốc bằng cách Click chuột vào mũi tên hoặc tên thư mục.
5 Cửa sổ Inspector o Cửa sổ Inspector hiển thị chi tiết các thông tin về Game Object đang làm việc, kể cả những component được đính kèm và thuộc tính của nó Bạn có thể điều chỉnh, thiết lập mọi thông số và chức năng của Game Object thông qua cửa sổ Inspector. o Mọi thuộc tính thể hiện trong Inspector đều có thể dễ dàng tùy chỉnh trực tiếp mà không cần thông qua một kịch bản định trước. Tuy nhiên Scripting API cung cấp một số lượng nhiều và đầy đủ hơn do giao diện Inspector có giới hạn. o Các thiết lập Inspector cũng thể hiện mọi thông số Import Setting của asset đang làm việc như hiển thị mã nguồn của Script, các thông số Animator, Rect transform, Sprite Renderer,…
Các khái niệm cơ bản :
● GameObject: Một đối tượng cụ thể trong game gọi là một gameobject, có thể là player, enemy, đồ vật nào đó Ví dụ : cây cối, đường xá, nhà cửa,…
● Component: Một GameObject sẽ có nhiều thành phần cấu tạo nên nó như là Sprite Renderer, tập hợp các hoạt ảnh hành động (Animator), thành phần xử lý va chạm (Collision), tính toán vật lý (Rigidbody), các thành phần khác…Mỗi thứ như vậy gọi là một component của GameObject.
● Sprite: Là một hình ảnh 2D của một Game Object, có thể là hình ảnh đầy đủ, hoặc có thể là một bộ phận nào đó.
● Animation: Là tập các hình ảnh động dựa trên sự thay đổi liên tục của nhiều Sprite khác nhau.
● Key Frame: Key Frame hay Frame là một trạng thái của một animation Có thể được tạo nên từ 1 Sprite hay nhiều Sprite khác nhau.
● Prefabs: Là một khái niệm trong Unity, dùng để sử dụng các đối tượng giống nhau có trong game mà chỉ cần khởi tạo lại các giá trị vị trí, tỉ lệ biến dạng và góc quay từ một đối tượng ban đầu.
● Sounds: Âm thanh trong game.
Về Unity 2D URP
Unity 2D URP là một trong những Template được khởi tạo khi tạo một
Project mới Giống như Unity2D, Unity2D được sử dụng để tạo những game có phong cách đồ họa 2D Ngoài ra, Unity2D được tích hợp sẵn Universal Render Pipeline(URP), khi sử dụng URP với 2D Renderer, thành phần Light 2D giới thiệu cách áp dụng ánh sáng được tối ưu hóa 2D cho Sprites.
Các loại ánh sáng khác nhau sẽ xuất hiện để người dùng có thể lựa chọn trong thành phần Light2D Những loại ánh sáng hiện tại có sẵn trong gói là:
Hình 2.1.2.1: Các loại ánh sáng trong 2D URP
● Freeform: tạo ánh sáng từ đa giác có thể chỉnh sửa bằng trình chỉnh sửa spline.
Hình 2.1.2.2a: Freeform trong chế độ Edit Hình 2.1.2.2b: Ánh sáng đầu ra
● Sprite: tạo ánh sáng dựa trên Sprite đã chọn bằng cách gán Sprite đã chọn cho thuộc tính Sprite bổ sung.
Hình 2.1.2.3a: Sprite được chọn Hình 2.1.2.3b: Ánh sáng đầu ra
● Parametric: loại ánh sáng này hiện tại không được dùng nữa Để chuyển đổi từ Parametric lights to Freeform lights, Edit > Rendering > Lights > Upgrade Project > Scene URP Parametric lights to Freeform.
● Point: Chọn loại Spot light để kiểm soát tốt góc và hướng của ánh sáng đã chọn với các thuộc tính bổ sung.
Hình 2.1.2.4a: Point Light trong chế độ Edit
Hình 2.1.2.4b: Ánh sáng đầu ra
● Global: chiếu sáng tất cả các đối tượng trên các lớp phân loại được nhắm mục tiêu (Targeted sorting layers) Chỉ có thể sử dụng một loại Global Light mỗi Blend Style, và mỗi lớp phân loại.
C# (hay C sharp) là một ngôn ngữ lập trình đơn giản, được phát triển bởi đội ngũ kỹ sư của Microsoft vào năm 2000 C# là ngôn ngữ lập trình hiện đại, hướng đối tượng và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và Java.
Trong các ứng dụng Windows truyền thống, mã nguồn chương trình được biên dịch trực tiếp thành mã thực thi của hệ điều hành.
Trong các ứng dụng sử dụng NET Framework, mã nguồn chương trình (C#, VB.NET) được biên dịch thành mã ngôn ngữ trung gian MSIL (Microsoft intermediate language).
Sau đó mã này được biên dịch bởi Common Language Runtime (CLR) để trở thành mã thực thi của hệ điều hành.
C# 15 2.3 Inky 16 2.3.1 Inky – the editor
ink – the language
ink là ngôn ngữ kịch bản được xây dựng dựa trên ý tưởng đánh dấu văn bản thuần túy bằng dòng chảy để tạo ra các tập lệnh tương tác Ở mức cơ bản nhất, nó có thể được sử dụng để viết một câu chuyện theo phong cách Chọn của riêng bạn hoặc một cây đối thoại phân nhánh Nhưng sức mạnh thực sự của nó là viết các đoạn đối thoại với nhiều lựa chọn và nhiều sự kết hợp lại của dòng chảy ink cung cấp một số tính năng để cho phép những người viết không có kỹ thuật phân nhánh thường xuyên và giải quyết hậu quả của các nhánh đó, theo cả cách nhỏ và cách chính, mà không gây phiền phức Kịch bản nhằm mục đích rõ ràng và được sắp xếp hợp lý, vì vậy có thể kiểm tra các đoạn hội thoại phân nhánh "bằng mắt" Luồng được mô tả theo kiểu khai báo nếu có thể Nó cũng được thiết kế với mục đích phác thảo lại; vì vậy việc chỉnh sửa một luồng phải nhanh chóng.
Microsoft Visual Studio 18 2.5 Github 19 2.6 Perlin Noise 20 2.7 NavMesh 21 2.8 Edgar Unity 22 CHƯƠNG 3: XÂY DỰNG GAME 2D TOP DOWN 24 3.1 Tổng quan 24 3.1.1 Tên game
Thể loại
Reincarnation thuộc thể loại game nhập vai RPG, người chơi sẽ điều khiển nhân vật trong một bản đồ rộng lớn với góc nhìn Top-down Trên bản đồ sẽ bao gồm các vật thể cố định như núi, rừng, cây cối, nhà cửa và cả những NPC (Non playing character) cũng với những quái vật xuất hiện rải khác khắp nơi có khả năng tấn công người chơi với những chỉ số máu và tấn công xác định Người chơi sẽ tiêu diệt quái vật bằng cách chém hoặc tung kĩ năng trúng những con quái Ngoài ra game có những yếu tố cần thiết của những game RPG như cơ chế nhiệm vụ, giao dịch, chế tạo.
Người chơi sẽ ấn nút New (để chơi mới) hoặc ấn nút Load (để chơi lại bản ghi trước đó) để bắt đầu chơi và được đưa vào một bản đồ 2D Trong bản đồ 2D đó,người chơi sẽ điều khiển nhân vật di chuyển, tiêu diệt quái vật bằng cách làm giảm lượng máu của quái vật về 0, vật phẩm sẽ rơi ra tùy thuộc vào loại quái vật Khi người chơi chạm vào vật phẩm rơi ra, nó sẽ tự động được đưa vào túi đồ của người chơi Những vật phẩm này sẽ được sử dụng để hoàn thành nhiệm vụ của công hội, dùng để bán cho cửa hàng hoặc dùng để chế tạo vũ khí Khi người chơi hoàn thành một nhiệm vụ công hội sẽ được nhận một lượng vàng và kinh nghiệm nhất định, vàng dùng để mua vật liệu hoặc mua những lọ thuốc dùng để hồi máu hoặc hồi mana, còn điểm kinh nghiệm dùng để thăng cấp Level nhân vật, với mỗiLevel được thăng cấp, người chơi sẽ nhân được 10 điểm thăng cấp, điểm này sẽ được người chơi dùng để năng cấp 1 trong 5 chỉ số: máu, tấn công, tốc độ, phòng thủ và tấn công đặc biệt Game sẽ kết thúc khi máu của người chơi về 0 và sẽ quay trở lại bản lưu trước đó.
CHƯƠNG 4 CHƯƠNG 4: ĐẶC TẢ USE-CASE
STT Tác nhân Mô tả/ Ghi chú
1 Người chơi Người chơi điều khiển nhân vật để di chuyển, tấn công quái cũng như tương tác với các NPC
Nhân vật do người chơi điều khiển, được xem như người chơi trong các use case, do hành động của người chơi tác động vào game tương tự như nhân vật
3 Enemy Quái vật do hệ thống quản lý chuyển động và tấn công
4 NPC Dân làng do hệ thống quản lý có khả năng tương tác với
Bảng 4.2: Danh sách các actor
STT Tính năng Mô tả/ Ghi chú
1 New game Người chơi bắt đầu chơi mới game.
2 Load game Người chơi bắt đầu game từ bản lưu game
3 Di chuyển Người chơi điều khiển nhân vật di chuyển xung quanh bản đồ game, có thể chạy hoặc lướt
4 Tấn công tầm gần Người chơi tấn công quái vật bằng cách vung kiếm tầm gần
5 Tung kĩ năng tầm xa Người chơi tấn công quái vật bằng cách tung kĩ năng tầm xa
6 Trang bị vũ khí Người chơi trang bị vũ khí để tăng chỉ số nhân vật bằng cách kéo thả vũ khí vào ô trang bị vũ khí
Người chơi nâng cấp chỉ số thông qua hệ thống nâng cấp chỉ số bằng cách sử dụng điểm nâng cấp, kiếm điểm nâng cấp bằng cách tăng cấp độ nhân vật
Người chơi hoàn thành nhiệm vụ công hội sẽ nhận được điểm kinh nghiệm, khi điểm kinh nghiệm đạt tới một mốc nhất định nhân vật sẽ thăng cấp
9 Nhận sát thương Xảy ra khi người chơi hoặc quái tấn công trúng nhau
10 Chết Xảy ra khi chỉ số máu của người chơi hoặc quái về 0
Người chơi tương tác với NPC để mở ra giao diện cửa hàng, từ đó sử dụng vàng để có thể mua những vật phẩm cần thiết
Người chơi tương tác với NPC để mở ra giao diện rèn, từ đó sử dụng vàng và những vật phẩm yêu cầu để có thể rèn vũ khí
Người chơi có thể lại gần NPC và ấn nút tương tác để có thể trò chuyện với NPC hoặc mở giao diện tương ứng
14 Thu thập vật phẩm Xảy ra khi người chơi chạm vào vật phẩm rơi ra từ quái
15 Cất giữ vật phẩm Vật phẩm khi người chơi thu thập được sẽ được bỏ vào túi đồ hoặc rương
Xảy ra khi người chơi giữ nút sử dụng vật phẩm và ấn vào vật phẩm muốn sử dụng (Chỉ áp dụng cho những vật phẩm có thể sử dụng)
17 Mở giao diện quản lý nhân vật
Xảy ra khi người dùng mở giao diện quản lý nhân vật,giao diện sẽ quản lý các thông số của nhân vật như máu, mana, thể lực, …, có thể dùng để trang bị vũ khí
Khi người dùng trang bị vật phẩm “Nhẫn” vào ô trang bị, tùy thuộc vào từng loại “Nhẫn “ mà người chơi sẽ có thể sử dụng được những kỹ năng khác nhau.
19 Chuyển đổi kỹ năng sử dụng
Người chơi có thể trang bị tối đa 3 loại nhẫn, tùy thuộc vào ô mà nhẫn đó trang bị kỹ năng sẽ được đặt vào ô kỹ năng tương ứng.
20 Kích hoạt CutScene Khi người chơi bắt đầu game hoặc đi vào một vùng nào đấy chứa CutScene, sẽ tự động kích hoạt CutScene.
Bảng 4.3: Danh sách các Use case
4.4 Mô tả chi tiết Use case
Mô tả chi tiết tính năng “New Game”
Mô tả chi tiết Người chơi bắt đầu chơi mới game.
“New Game” trong Menu Scene
Game Scene, người chơi bắt đầu chơi game
Luồng phụ Lưu trạng thái truy cập vào Game
Yêu cầu đặc biệt Game đang mở Điều kiện trước Game đang ở màn hình Menu Scene Điều kiện sau Không
Bảng 4.4.1: Đặc tả chức năng “New Game”
Mô tả chi tiết tính năng “Load Game”
Mô tả chi tiết Người chơi bắt đầu game từ bản lưu game Luồng sự kiện
1 Người chơi ấn vào nút “Load Game” trong Menu Scene
2 Game chuyển quan Load Scene, người chơi chọn bản ghi cần chọn để bắt đầu chơi game
Luồng phụ Lưu trạng thái truy cập vào Game
Yêu cầu đặc biệt Game đang mở Điều kiện trước Game đang ở màn hình Menu Scene Điều kiện sau Không
Bảng 4.4.2: Đặc tả chức năng “Load Game”
Mô tả chi tiết tính năng “Di chuyển”
Mô tả chi tiết Người chơi di chuyển nhân vật
1 Người chơi ấn vào các nút mũi tên hoặc các phím WASD để di chuyển
2 Người chơi có thể di chuyển theo đúng hướng mong muốn
1 Người chơi giữ phím di chuyển càng lâu, nhân vật càng chạy nhanh tới một tốc độ nhất định
2 Người chơi nhấn phím “Space” để có thể lướt tới một đoạn ngắnYêu cầu đặc biệt Hướng nhân vật đang di chuyển không bị địa hình cản trở, hoặc nhân vật đang không trong một tác vụ nào khác Điều kiện trước Game đang ở màn hình Game Scene Điều kiện sau Vận tốc của nhân vật lớn hơn 0
Bảng 4.4.3: Đặc tả chức năng “Di chuyển”
Mô tả chi tiết tính năng “Tấn công tầm gần”
Mô tả chi tiết Người chơi cho nhân vật tấn công tầm gần Luồng sự kiện
1 Người chơi nhấn chuột trái
2 Nhân vật sẽ vung kiếm chém tầm gần theo hướng di di chuyển của nhân vật
1 Có một khoảng trễ giữa mỗi lần tấn công
2 Khi người chơi tấn công sẽ tiêu hao một lượng thể lực nhất định
Yêu cầu đặc biệt Nhân vật đang còn thể lực Điều kiện trước Game đang ở màn hình Game Scene Điều kiện sau Không
Bảng 4.4.4: Đặc tả chức năng “Tấn công tầm gần”
4.4.5 Tung kĩ năng tầm xa
Mô tả chi tiết tính năng “Tung kĩ năng tầm xa”
Mô tả chi tiết Người chơi cho nhân vật tung kĩ năng tầm xaLuồng sự kiệnLuồng chính 1 Người chơi nhấn chuột phải
2 Nhân vật sẽ tung một kĩ năng theo hướng của chuột
1 Có một khoảng trễ giữa mỗi lần tung kĩ năng
2 Khi người chơi tấn công sẽ tiêu hao một lượng mana nhất định
Yêu cầu đặc biệt Nhân vật đang còn mana Điều kiện trước Game đang ở màn hình Game Scene Điều kiện sau Không
Bảng 4.4.5: Đặc tả chức năng “Tung kĩ năng tầm xa”
Mô tả chi tiết tính năng “Trang bị vũ khí”
Mô tả chi tiết Người chơi trang bị vũ khí cho nhân vật để tăng chỉ số Luồng sự kiện
Luồng chính Người chơi kéo một vũ khí trong túi đồ vào ô trang bị vũ khí
Căn cứ vào loại vũ khí đang được trang bị mà các chỉ số tương ứng sẽ được cộng thêm
Yêu cầu đặc biệt Vật phẩm muốn trang bị phải thuộc loại
“Vũ khí” Điều kiện trước Giao diện quản lý nhân vật đang được mở Điều kiện sau Không
Bảng 4.4.6: Đặc tả chức năng “Trang bị vũ khí”
Mô tả chi tiết tính năng “Nâng cấp chỉ số”
Mô tả chi tiết Người chơi tăng điểm các chỉ số mong muốn Luồng sự kiện
1 Người chơi nhấn vào nút có biểu tượng “+” trước mỗi thanh chỉ số để có thể cộng thêm một điểm chỉ số đó
2 Số điểm tối đa có thể cộng của một chỉ số là 100
1 Mỗi lần tăng một điểm chỉ số bất kì sẽ tiêu hao một điểm tăng cấp
2 Với mỗi điểm chỉ số công thêm sẽ tăng các chỉ số tương ứng
1 Điểm tăng cấp phải lớn hơn 0
2 Điểm chỉ số phải bé hơn hoặc bằng 100 Điều kiện trước Giao diện quản lý nhân vật đang được mở Điều kiện sau Không
Bảng 4.4.7: Đặc tả chức năng “Nâng cấp chỉ số”
Mô tả chi tiết tính năng “Tăng cấp độ”
Mô tả chi tiết Người chơi tăng cấp độ nhân vật
Luồng sự kiện Luồng chính 1 Người chơi hoàn thành một nhiệm vụ từ công hội để có thể nhận được điểm kinh nghiệm tương ứng
2 Điểm kinh nghiệm đạt mốc tối đa của cấp độ đó yêu cầu thì cấp độ của nhân vật sẽ được tăng lên một bậc
1 Khi cấp độ nhân vật được tăng thêm một bậc thì điểm kinh nghiệm sẽ được làm mới về 0 và mốc kinh nghiệm tối đa sẽ được tăng lên tương ứng.
2 Với mỗi một cấp độ nhân vật được tăng lên thì nhân vật sẽ nhận được 10 điểm tăng cấp
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.8: Đặc tả chức năng “Tăng cấp độ”
Mô tả chi tiết tính năng “Nhận sát thương”
Mô tả chi tiết Nhân vật bị quái vật đánh trúng
Luồng chính 1 Nhân vật bị quái vật tấn công trúng
2 Chỉ số máu của nhân vật bị giảm
Luồng phụ Nhân vật sẽ chết khi chỉ số máu của nhân vật về 0
Yêu cầu đặc biệt Không Điều kiện trước
Game đang trong Game Scene Nhân vật còn sống
Nhân vật bị tấn công trúng Điều kiện sau Máu của nhân vật bị giảm đi
Bảng 4.4.9: Đặc tả chức năng “Nhận sát thương”
Mô tả chi tiết tính năng “Chết”
Mô tả chi tiết Nhân vật bị chết
Luồng sự kiện Luồng chính Chỉ số máu của nhân vật giảm về 0
Luồng phụ Game kết thúc và sẽ quay trở về bản lưu trước đó
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.10: Đặc tả chức năng “Chết”
Mô tả chi tiết tính năng “Mua đồ”
Mô tả chi tiết Người chơi điều khiển nhân vật mua đồ
1 Người chơi sử dụng tiền mà nhân vật đang sở hữu để mua vật phẩm
2 Vật phẩm vừa được mua sẽ được thêm vào túi đồ
Luồng phụ Nhân vật sẽ bị mất một lượng vàng tương ứng với vật phẩm vừa mua
Lượng vàng hiện có của người chơi phải lớn hơn hoặc bằng lượng vàng cần để mua vật phẩm Điều kiện trước Giao diện của hàng đang mở Điều kiện sau Không
Bảng 4.4.11: Đặc tả chức năng “Mua đồ”
Mô tả chi tiết tính năng “Chế tạo vũ khí”
Mô tả chi tiết Người chơi chế tạo vũ khí
1 Người chơi sử dụng tiền và vật phẩm yêu cầu để chế tạo vũ khí tương ứng
2 Vũ khí vừa được chế tạo sẽ được thêm vào túi đồ
1 Vật phẩm dùng để chế tạo vũ khí sẽ bị mất
2 Nhân vật sẽ bị mất một lượng vàng tương ứng với vũ khí vừa chế tạo
Nhân vật phải sỡ hữu lượng vàng và vật phẩm mà vũ khí cần được chế tạo yêu cầu Điều kiện trước Giao diện của rèn đang mở Điều kiện sau Không
Bảng 4.4.12: Đặc tả chức năng “Chế tạo vũ khí”
Mô tả chi tiết tính năng “Tương tác NPC”
Mô tả chi tiết Nhân vật tương tác NPC
1 Người chơi nhấn phím “E” để có thể tương tác với NPC
2 Tùy vào từng NPC mà sẽ có hội thoại tương ứng
Nhấn chuột vào hộp thoại được hiện lên để có thể chuyển sang câu thoại tiếp theo hoặc kết thúc đoạn hội thoại
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.13: Đặc tả chức năng “Tương tác NPC”
Mô tả chi tiết tính năng “Thu thập vật phẩm”
Mô tả chi tiết Người chơi điều khiển nhân vật thu thập vật phẩm Luồng sự kiện
1 Nhân vật chạm vào vật phẩm rớt ra từ quái để thu thập
2 Vật phẩm được thu thập sẽ được cho vào túi đồ
Yêu cầu đặc biệt Túi đồ nhân vật còn ô trống Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.14: Đặc tả chức năng “Thu thập vật phẩm”
Mô tả chi tiết tính năng “Cất giữ vật phẩm”
Mô tả chi tiết Người chơi cất giữ vật phẩm vừa kiếm được vào túi hoặc bỏ vào rương đồ Luồng sự kiện
1 Người chơi thu thập vật phẩm bằng các cách khác nhau, vật phẩm kiếm được sẽ được bỏ vào túi
2 Vật phẩm được thu thập sẽ được cho vào túi đồ
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.15: Đặc tả chức năng “Cất giữ vật phẩm”
Mô tả chi tiết tính năng “Sử dụng vật phẩm”
Mô tả chi tiết Người chơi điều khiển nhân vật sử dụng vật phẩm trong túi Luồng sự kiện
1 Người chơi giữ nút “Ctrl” và nhấn chuột vào vật phẩm để sử dụng
2 Vật phẩm sử dụng sẽ biến khỏi túi đồ
Tùy thuộc vào loại vật phẩm sử dụng mà mang lại các hiệu ứng khác cho cho nhân vật
Vật phẩm phải thuộc loại sử dụng được để có thể sử dụng
Giao diện cửa hàng phải đang tắt Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.16: Đặc tả chức năng “Sử dụng vật phẩm”
4.4.17 Mở giao diện quản lý nhân vật
Mô tả chi tiết tính năng “Sử dụng vật phẩm”
Mô tả chi tiết Người chơi mở giao diện quản lý
Luồng chính Người chơi nhấn phím “G” để mở giao diệnLuồng phụ Người chơi có thể thực hiện các tác vụ như trang bị vũ khí, nâng cấp chỉ số trong giao diện quản lý nhân vật
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Mở rộng Nhấn phím “G” một lần nữa để tắt giao diện quản lý
Bảng 4.4.17: Đặc tả chức năng “Mở giao diện quản lý nhân vật”
Mô tả chi tiết tính năng “Trang bị kỹ năng”
Mô tả chi tiết Người chơi trang bị kỹ năng
Luồng sự kiện Luồng chính Người chơi trang bị nhẫn vào ô trang bị
Tùy thuộc vào ô trang bị nhẫn mà kỹ năng sẽ được trang bị vào ô kỹ năng tương ứng
Yêu cầu đặc biệt Không Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.18: Đặc tả chức năng “Trang bị kỹ năng”
Mô tả chi tiết tính năng “Chuyển đổi kỹ năng”
Mô tả chi tiết Người chơi chuyển đổi qua lại giữa các kỹ năng để sử dụng Luồng sự kiện
Người chơi ấn các phím ‘1’, ‘2’, ‘3’ để chuyển đổi qua lại giữa các kỹ năng ở từng ô.
Yêu cầu đặc biệt Ô chuyển đổi kỹ năng phải được trang bị nhẫn Điều kiện trước Game đang trong Game Scene Điều kiện sau Không
Bảng 4.4.19: Đặc tả chức năng “Chuyển đổi kỹ năng”
Mô tả chi tiết tính năng “Kích hoạt CutScene”
Mô tả chi tiết Người chơi kích hoạt CutScene khi đi vào khu vực có CutScene Luồng sự kiện
Người chơi chạm vào khu vực có CutScene hoặc bắt đầu chơi mới trò chơi
Một số CutScene sẽ kích hoạt hội thoại
Khi kích hoạt CutScene người chơi sẽ bị bất động
Yêu cầu đặc biệt Không Điều kiện trước
Game đang trong Game Scene Người chơi chưa từng kích hoạt
CutScene trước đó Điều kiện sau Không
Bảng 4.4.20: Đặc tả chức năng “Kích hoạt CutScene”
CHƯƠNG 5: PHÂN TÍCH THIẾT KẾ
Class diagram
Hình 5.1.1.1: Sơ đồ Class chức năng Save/Load, Inventory, Equipment, Time, Light
Hình 5.1.1.2: Sơ đồ Class chức năng quản lý Player, Enemy
Hình 5.1.1.3: Sơ đồ Class chức năng Dialogue, Shop, Craft, Quest
Danh sách các class
STT Tên Class Chức năng
1 SaveData Định nghĩa các thuộc tính có thể lưu vào file JSON
2 SaveLoad Thực hiện chức năng Save/Load/Delete file JSON
3 SaveGameManager Quản lý các chức năng
Save/Load/Delete trong Game
4 PlayerSaveData Lưu các chỉ số của nhân vật
5 ItemPick Class quản lý vật phẩm mà người chơi có thể nhặt
6 EquipmentHolder Quản lý việc lưu trữ vũ khí trong túi nhân vật
7 EquipmentSlotUI Quản lý slot trang bị vũ khí
8 EquipmentDisplay Hiển thị hình ảnh vũ khí đi theo nhân vật khi người chơi trang bị
9 PlayerWeapon Quản lý các hiệu ứng nhân vật có thể nhận được khi trang bị các vũ khí khác nhau
10 InventoryHolder Class định nghĩa các phương thức, thuộc tính để lưu trữ vật phẩm trong túi đồ của nhân vật
11 InventorySystem Quản lý hệ thống Inventory
12 InventorySlots Quản lý các slot đồ trong túi của nhân vật
13 ItemSlot Quản lý thông tin của vật phẩm đang có trong Slot đồ nhân vật
14 InventoryItemData Quản lý thông tin của từng loại vật phẩm
15 Database Quản lý danh sách các vật phẩm hiện có trong Game
16 MouseItemData Quản lý thông tin vật phẩm đang được tạm lưu trữ trong con trỏ chuột
17 InventorySlot_UI Quản lý giao diện Slot đồ nhân vật
18 PlayerInventoryHolder Quản lý lưu trữ vật phẩm trong
19 ChestInventory Quản lý lưu trữ vật phẩm trong rương đồ
20 IInteractable Quản lý khả năng tương tác môi trường của nhân vật
Class định nghĩa các phương thức, thuộc tính để nhân vật có thể tiến hành tương tác môi trường
22 StaticInventoryDisplay Thể hiện giao diện PlayerHotboard lên màn hình Game
23 DynamicInventoryDisplay Thể hiện giao diện Chest và Backpack lên màn hình Game
Quản lý các thông số vật phẩm hiện có trong từng Slot đồ để thể hiện lên màn hình Game
25 InventoryUIController Quản lý khả năng bật/tắt giao diện
26 TimeManager Quản lý thời gian trong Game
27 ClockManager Quản lý giao diện đồng hồ dùng để thể hiện thời gian trong Game
28 UniqueID Dùng để tạo giá trị ID ngẫu nhiên cho từng loại GameObject trong Game
Dùng để làm mờ môi trường khi người dùng đi qua để có thể nhìn rõ hơn được nhân vật
30 SavePlayerPos Class định nghĩa các phương thức, thuộc tính dùng để Save/Load vị trí của nhân vật
31 DoorManager Dịch chuyển nhân vật đến các Scene của các công trình khác nhau
32 ExitDoorManager Dịch chuyển nhân vật từ Scene các công trình khác nhau đến Scene chính của Game
33 DungeonDoorManager Dịch chuyển nhân vật đến các Dungeon khác nhau của Game
34 MainMenu Quản lý các chức năng trong giao diện
35 LoadSceneController Quản lý bật/tắt màn hình danh sách các file Save trong Game
36 TabGroup Thể hiện màn hình xuất hiện khi di chuyển qua lại giữa các Tabs
Class định nghĩa các phương thức, thuộc tính để người chơi có thể di chuyển qua lại giữa các tab để thể hiện các màn hình khác nhau
38 PlayerStatusController Singleton class để quản lý các chỉ số của nhân vật
39 PlayerMovement Quản lý khả năng di chuyển và lướt của nhân vật
40 PlayerStatus Quản lý trạng thái của nhân vật bao gồm: Nhận sát thương, Chết
41 PlayerCombat Quản lý khả năng tấn công của nhân vật
42 PlayerInformationManager Thể hiện thông tin chỉ số hiện của của nhân vật lên màn hình giao diện
43 PlayerSkillSystem Quản lý khả năng tung kỹ năng của nhân vật
44 Skills Quản lý hiệu ứng của các loại kỹ năng khác nhau
45 SkillSO Quản lý thông tin của từng loại skill khác nhau
46 RotationSkill Quản lý khả năng định vị của skill
47 AgilityBar Quản lý thanh tốc độ được cộng thêm
48 AttackBar Quản lý thanh tấn công được cộng thêm
49 DefendBar Quản lý thanh phòng thủ được cộng thêm
50 HPBar Quản lý thanh máu được cộng thêm
51 SpAttackBar Quản lý thanh tấn công đặc biệt được cộng thêm
52 HealthBar Quản lý thanh máu của nhân vật
53 ManaBar Quản lý thanh mana của nhân vật
54 Energybar Quản lý thanh thể lực của nhân vật
55 AgentMove Quản lý khả năng di chuyển của quái vật
Class định nghĩa các phương thức, thuộc tính để thể hiện các chức năng cơ bản của quái vật tầm gần như: tấn công, hoạt ảnh, di chuyển
Class định nghĩa các phương thức, thuộc tính để thể hiện các chức năng cơ bản của quái vật tầm xa như: tấn công, hoạt ảnh, di chuyển
Quản lý các khả năng của quái vật như: tấn công, di chuyển, theo đuổi nhân vật, phát hiện vật cản,…
59 AIData Quản lý thông tin nhân vật và vật cản mà quái vật có thể xác định
60 EnemyStatus Quản lý trạng thái của quái vật tầm gần như: Nhận sát thương, Chết
61 RangeEnemyStatus Quản lý trạng thái của quái vật tầm xa như: Nhận sát thương, Chết
62 SteeringBehaviour Định nghĩa phương thức Steering
63 Detector Định nghĩa phương thức Detect
Thể hiện khả năng xác định phương hướng của quái vật từ đó quyết định hành động tiếp theo của quái vật
Quản lý khả năng tránh né vật cản của quái vật để có thể tiếp tục truy đuổi người chơi
Quản lý khả năng quyết định hướng di chuyển của quái vật để có thể truy đuổi người chơi khi người chơi di chuyển vào trong khu vực quan sát của quái vật
67 ObstacleDetector Thể hiện khả năng phát hiện vật cản của quái vật
68 TargetDetector Thể hiện khả năng phát hiện người chơi của quái vật
69 DialogueVariables Class định nghĩa các phương thức, thuộc tính để có thể đọc được các thông tin cốt truyện được viết trong Inky
70 DialogueTrigger Quản lý khả năng tương tác bật/tắc giao diện hội thoại
Quản lý giao diện đoạn hội thoại bao gồm: avatar NPC, tên NPC, thông tin hội thoại đang diễn ra, các lựa chọn của nhân vật
72 ShopSystem Quản lý hệ thống của hàng
73 ShopKeeper Quản lý thông tin chủ cửa hàng và khả năng tương tác để bật/tắt giao diện mua bán
74 ShopkeeperDisplay Thể hiện giao diện mua bán
75 ShopItemList Quản lý vật phẩm mà cửa hàng đang bán
76 ShopSlotUI Quản lý giao diện của từng loại vật phẩm đang được bán
77 ShopSlot Quản lý hệ thống Slot vật phẩm trong cửa hàng
78 CraftingRecipe Quản lý công thức cần để có thể rèn vũ khí
79 CraftingBench Quản lý thông tin chủ lò rèn và khả năng tương tác bật/tắt giao diện rèn
80 CraftListItem_UI Quản lý giao diện của từng loại vũ khí có thể rèn
81 IngredientSlot_UI Quản lý giao diện hình ảnh của từng loại vật phẩm yêu cầu để có thể rèn vũ khí
82 CraftingDisplay Quản lý giao diện thể hiện thông tin của các loại vũ khí
83 QuestList_UI Quản lý giao diện các loại nhiệm vụ hiện có trong Game
84 QuestIngredientSlot_UI Thể hiện hình ảnh các loại vật phẩm yêu cầu để hoàn thành nhiệm vụ
85 QuestInformation Quản lý thông tin từng loại nhiệm vụ trong Game
86 QuestBoard Quản lý thông tin bảng nhiệm vụ và khả năng bật/tắt giao diện bảng nhiệm vụ
87 QuestDisplay Quản lý giao diện thể hiện thông tin của các loại nhiệm vụ trong Game
88 WeatherManager Quản lý thời tiết trong Game
89 SeasonSprite Thay đổi Sprite các Object trong Game tùy theo thời tiết hiện tại.
90 LampManager Quản lý bật tắt đèn hoặc lửa tùy theo thời gian hiện tại của Game
91 SceneShakeController Rung Camera khi nhân vật thực hiện tấn công trúng quái vật
92 SkillCooldown Quản lý thời gian hồi chiêu của từng loại kỹ năng
Class định nghĩa các phương thức, thuộc tính để thể hiện các chức năng cơ bản của quái vật tầm xa như: tấn công, hoạt ảnh, di chuyển
94 ArcherEnemyStatus Quản lý trạng thái của quái vật tầm xa như: Nhận sát thương, Chết
Quản lý các trạng thái của quái vật như máu, thủ, vật phẩm, tính sát thương nhận vào
96 FloatingHealthBar Thể hiện lượng máu hiện tại của quái vật khi bị người chơi tấn công
97 FloatingText Hiển thị lượng sát thương mà quái vật phải nhận từ người chơi
98 EnemySO Quản lý thông tin của từng loại quái vật khác nhau
99 Active CutScene Quản lý kích hoạt CutScene
100 SetSpawnPoint Quy định địa điểm xuất hiện của người chơi
101 TileMap_PerlinNoise Quản lý tạo bản đồ tự động sử dụng thuật toán Perlin Noise
102 NPCMovement Quản lý lịch trình và di chuyển của NPC tùy theo mùa, thời tiết, thời gian
103 Projectile Quản lý đạn bắn ra từ quái vật
104 Shooter Quản lý khả năng bắn đạn của quái vật
Bảng 5.1.2: Danh sách các Class
State diagram 51 1 Player State
Slime State
Hình 5.2.2.1: Sơ đồ State của Slime
Hình 5.2.2.2: Sơ đồ State trạng thái Idle của Slime
Hình 5.2.2.3: Sơ đồ State trạng thái Movement của Slime
Hình 5.2.2.4: Danh sách các Parameters của Slime Animator
Skeleton State
Hình 5.2.3.1: Sơ đồ State của Skeleton
Hình 5.2.3.2: Sơ đồ State trạng thái Idle của Skeleton
Hình 5.2.3.3: Sơ đồ State trạng thái Movement của Skeleton
Hình 5.2.3.4: Sơ đồ State trạng thái Attack của Skeleton
Hình 5.2.3.5: Sơ đồ State trạng thái Dead của Skeleton
Hình 5.2.3.6: Danh sách các Parameters của Skeleton Animator
Toaster State
Hình 5.2.4.1: Sơ đồ State của ToasterBot
Hình 5.2.4.2: Danh sách các Parameters của ToasterBot Animator
Skeleton Archer
Hình 5.2.5.1: Sơ đồ State của Skeleton Archer
Hình 5.2.5.2: Sơ đồ State trạng thái Idle của Skeleton Archer
THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG 59 6.1 Danh sách màn hình 59 6.2 Mô tả chi tiết từng màn hình 60 6.2.1 Menu Scene
Game Scene
Hình 6.2.2.1: Màn hình Game Scene
Hình 6.2.2.2: Giao diện quản lý nhân vật
Hình 6.2.2.4: Túi đồ nhân vật/ Rương đồ
Hình 6.2.2.5: Thanh trạng thái nhân vật
Game Scene là màn hình hiển thị mọi thông số game bao gồm nhân vật, NPC, bối cảnh, bản đồ,…
Giao diện quản lý nhân vật dùng để người chơi có thể quản lý các chỉ số của nhân vật bao gồm máu, mana, thể lực, tấn công, phòng thủ, tốc độ, tấn công đặc biệt Người chơi có thể nâng cấp các chỉ số ấy bằng cách sử dụng điểm tăng cấp Ngoài ra, giao diện quản lý nhân vật còn dùng để người chơi trang bị vũ khí cho nhân vật.
Túi đồ nhân vật/ rương đồ dùng để lưu trữ vật phẩm mà người chơi thu thập được qua nhiều cách khác nhau.
Các ô trang bị vật phẩm để người chơi trang bị các vật phẩm nhằm tăng chỉ số cơ bản hoặc để trang bị kỹ năng Ô kỹ năng để hiển thị kĩ năng hiện tại của người chơi sau khi trang bị nhẫn, người chơi chỉ được sử dụng 1 kỹ năng và có thể chuyển đổi qua lại giữa các kỹ năng
Player hotboard dùng để lưu trữ vật phẩm mà người chơi có thể dùng vật phẩm trực tiếp mà không cần phải mở giao diện túi đồ.
Thanh trạng thái nhân vật dùng để thể hiện một cách trực quan cho người chơi biết được lượng máu/mana/thể lực/cấp độ hiện tại của nhân vật. Đồng hồ dùng để giúp người chơi có thể quan sát được thời gian hiện tại (Thứ/Ngày/Năm/Giờ/Mùa/Thời tiết) đang chạy trong game.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
1 Nhân vật GameObject Hiển thị hình ảnh nhân vật người chơi điều khiển
2 Bản đồ Tile map Hiển thị bản đồ trong game
3 Đồng hồ Panel Hiển thị giao diện đồng hồ
4 Player hotboard Panel Hiển thị vật phẩm chứ trong hotboard
5 Thanh trạng thái nhân vật Panel Hiển thị các trạng thái hiện tại của nhân vật
6 Ô kỹ năng Panel Hiển thị các kỹ năng người chơi có thể sử dụng Giao diện quản lý nhân vật
STT Tên đối tượng Loại Chức năng
1 Thẻ tab Button Chuyển qua lại giữa các trang trong giao diện
2 Trang giao diện Panel Hiển thị các thông tin của từng loại thẻ tab
3 Các thông số TextMeshPro Hiển thị các thông số của nhân vật
4 Thanh nâng cấp chỉ số Slider Hiển thị số điểm nâng cấp hiện tại của từng loại chỉ số
5 Nút “+” Button Nâng cấp chỉ số mong muốn
6 Ô trang bị Button Cho phép người chơi đặt một vũ khí bất kì vào ô
7 Nút Save game Button Lưu thông số hiện tại của game
8 Nút Quit game Button Thoát game
Túi đồ nhân vật/ Rương đồ
STT Tên đối tượng Loại Chức năng
1 Giao diện túi đồ Panel Hiển thị giao diện túi đồ
2 Ô vật phẩm Button Cho phép người chơi đặt vật phẩm bất kì vào ô Thanh trạng thái nhân vật
STT Tên đối tượng Loại Chức năng
1 Giao diện thanh trạng thái Panel Hiển thị giao diện thanh trạng thái
2 Thanh trạng thái Slider Hiển thị từng loại thì số hiện tại của nhân vật
3 Cấp độ TextMeshPro Hiển thị cấp độ hiện tại của nhân vật Đồng hồ
STT Tên đối tượng Loại Chức năng
1 Giao diện đồng hồ Panel Hiển thị giao diện đồng hồ
Giờ TextMeshPro Hiển thị Thứ/Ngày/Năm/Giờ hiện tại trong game
3 Mùa Image Hiển thị hình ảnh mùa hiện tại
4 Chu kỳ ngày đêm Image
Hiển thị kim đồng hồ quay theo chiêu kim đồng hồ thể hiện chu kỳ ngày đêm
STT Tên đối tượng Loại Chức năng
1 Giao diện Dialogue Panel Hiển thị giao diện hội thoại NPC
2 Avatar NPC Image Hiển thị Portrait NPC
3 Tên NPC TextMeshPro Hiển thị tên NPC đang tương tác
4 Dialogue TextMeshPro Hiển thị hội thoại của người chơi với NPC
Dungeon Scene
Dungeon Scene là một màn hình hiển thị giao diện màn chơi của game, người chơi có thể vào Dungeon thông qua cổng vào Dungeon Dungeon giúp người chơi có thể farm được nhiều quái và thu lượm được nhiều vật phẩm hơn so với bên ngoài bản đồ.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
Khi người chơi chạm vào cổng Dungeon sẽ được chuyển sang màn hình Dungeon Scene
2 Giao diện Dungen Tile Map Hiển thị bản đồ Dungeon
3 Quái vật GameObject Hiển thị quái vật trong màn chơi
Tác dụng triệu hồi quái vật khi người chơi lại gần và sau một khoảng thời gian quái vật bị người chơi tiêu diệt hết, sẽ hồi sinh lại quái vật
Shop Scene
Hình 6.2.4.2: Giao diện mua hàng trong Shop Scene
Shop Scene là màn hình hiển thị cửa hàng mua đồ, nơi người chơi sử dụng vàng kiếm được trong thời gian chơi để mua những vật phẩm cần thiết tùy theo nhu cầu của người chơi.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
1 Giao diện cửa hàng Tile Map Hiển thị giao diện cửa hàng
2 NPC GameObject Người chơi có thể tương tác với
NPC để mở giao diện mua hàngGiao diện mua hàng
STT Tên đối tượng Loại Chức năng
1 NPC Avatar Image Hiển thị Portrait NPC
2 Danh sách vật phẩm Panel & ScrollBar Hiển thị danh sách vật phẩm có thể mua được ở cửa hàng
Người chơi có thể nhấn vào vật phẩm để có thể mua hàng Ô vật phẩm thể hiện tên, hình ảnh và giá bán của vật phẩm
4 Vàng TextMeshPro Hiển thị số vàng hiện có của người chơi
Potion Shop Scene
Hình 6.2.5.2: Giao diện mua bán trong Potion Shop Scene
Potion Shop Scene là màn hình hiển thị cửa hàng bán thuốc hồi phục, nơi người chơi sử dụng vàng kiếm được trong thời gian chơi để mua những vật phẩm hồi phục cần thiết tùy theo nhu cầu của người chơi.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
1 Giao diện cửa hàng Tile Map Hiển thị giao diện cửa hàng
2 NPC GameObject Người chơi có thể tương tác với
NPC để mở giao diện mua hàng Giao diện mua hàng
STT Tên đối tượng Loại Chức năng
1 NPC Avatar Image Hiển thị Portrait NPC
2 Danh sách vật phẩm Panel & ScrollBar Hiển thị danh sách vật phẩm có thể mua được ở cửa hàng
Người chơi có thể nhấn vào vật phẩm để có thể mua hàng Ô vật phẩm thể hiện tên, hình ảnh và giá bán của vật phẩm
4 Vàng TextMeshPro Hiển thị số vàng hiện có của người chơi
Guild Scene
Hình 6.2.6.2: Giao diện bảng nhiệm vụ trong Guild Scene
Guild Scene là màn hình hiển thị giao diện Guild của game, nơi người chơi có thể tới để hoàn thành những nhiệm vụ mà Guild yêu cầu để có thể nhận được lượng vàng và điểm kinh nghiệm tương ứng tùy theo độ khó của nhiệm vụ.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
1 Giao diện Guild Tile Map Hiển thị giao diện cửa hàng
Người chơi có thể tương tác với bảng nhiệm vụ để mở ra danh sách nhiệm vụ
Giao diện bảng nhiệm vụ
STT Tên đối tượng Loại Chức năng
1 Giao diện bảng nhiệm vụ Panel Hiển thị giao diện bảng nhiệm vụ
2 Danh sách nhiệm vụ Panel & ScrollBar Hiển thị danh sách nhiệm vụ hiện có của Guild
Người chơi có thể ấn vào nhiệm vụ để có thể hiển thị chi tiết nhiệm vụ ở màn hình bên cạnh
4 Tên nhiệm vụ TextMeshPro Hiển thị tên nhiệm vụ
5 Mô tả nhiệm vụ TextMeshPro Hiển thị mô tả chi tiết về nhiệm vụ đó
Hiển thị lượng vàng và kinh nghiệm người chơi có thể nhận khi hoàn thành nhiệm vụ
7 Vật phẩm yêu cầu Image &
Hiển thị hình ảnh và số lượng vật phẩm yêu cầu để có thể hoàn thành nhiệm vụ
Người chơi có thể ấn vào nút để có thể hoàn thành nhiệm vụ và nhận được những vật phẩm tương ứng
9 Vàng TextMeshPro Hiển thị số vàng hiện có của người chơi
Black Smith Scene
Hình 6.2.7.2: Giao diện rèn vật phẩm của Black Smith Scene
Blacksmith Scene là màn hình hiển thị giao diện tiệm rèn, nơi người chơi có thể sử dụng vàng và những vật phẩm yêu cầu để có thể chế tạo ra một loại vũ khí để có thể sử dụng.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
Blacksmith Scene Tile Map Hiển thị giao diện tiệm rèn
2 NPC GameObject Người chơi có thể tương tác với
NPC để mở giao diện rèn Giao diện rèn vật phẩm
STT Tên đối tượng Loại Chức năng
1 Giao diện tiệm rèn Panel Hiển thị giao diện tiệm rèn
2 Danh sách vũ khí có thể rèn Panel & ScrollBar Hiển thị danh sách vũ khí có thể rèn
Người chơi có thể ấn vào vũ khí để có thể hiển thị chi tiết vũ khí ở màn hình bên cạnh
4 Tên vũ khí TextMeshPro Hiển thị tên vũ khí
5 Mô tả vũ khí TextMeshPro Hiển thị mô tả về vũ khí đó
6 Vàng của vũ khí TextMeshPro Hiển thị lượng vàng người chơi cần phải trả để có thể rèn vũ khí
7 Vật phẩm yêu cầu Image & Hiển thị hình ảnh và số lượng vật
TextMeshPro phẩm yêu cầu để có thể rèn vũ khí
8 Nút rèn Button Người chơi có thể ấn vào nút đó để rèn vũ khí
9 Vàng TextMeshPro Hiển thị số vàng hiện có của
CutScene Scene
CutScene Scene là một màn hình hiển thị khi người chơi mới bắt đầu chơi, tại đây sẽ có các đoạn hội thoại và các cắt cảnh để người chơi có thể làm quen với lối chơi của trò chơi trước khi bắt đầu.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
1 Hộp thoại Panel Hiển thị đoạn hội thoại của người chơi với người hướng dẫn
CutScene Tile Map Hiển thị bản đồ CutScene
3 Quái vật GameObject Hiển thị quái vật trong màn chơi
4 CutScene Trigger GameObject Kích hoạt một đoạn cắt cảnh khi người chơi chạm vào
Ruins Scene
Ruins Scene là một màn hình hiển thị giao diện màn chơi của game, người chơi có thể vào Ruins thông qua cổng vào Ruins Ruins giúp người chơi có thể farm được nhiều quái và thu lượm được nhiều vật phẩm hơn so với bên ngoài bản đồ.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
Khi người chơi chạm vào cổng Dungeon sẽ được chuyển sang màn hình Ruins Scene
2 Giao diện Ruins Tile Map Hiển thị bản đồ Ruins
3 Quái vật GameObject Hiển thị quái vật trong màn chơi
GameObject Tác dụng triệu hồi quái vật khi người chơi lại gần và sau một khoảng thời gian quái vật bị người chơi tiêu diệt hết, sẽ hồi sinh lại quái vật
CHƯƠNG 7: CÀI ĐẶT VÀ KIỂM THỬ
7.1 Môi trường cài đặt và kiểm thử
Môi trường cài đặt: Window 10 hoặc hơn
Thiết bị cài đặt: Máy tính cá nhân chạy Window 11 với con chip Core i7.
STT Tính năng Mức độ hoàn thiện Ghi chú
5 Tung kĩ năng tầm xa 100%
17 Giao diện quản lý nhân vật 100%
Bảng 7.2: Kết quả kiểm thử
- Hoàn thành tất cả các tính năng theo kế hoạch dự kiến được đưa ra trong bản đề cương chi tiết.
- Hiểu được thêm về cách hoạt động của Unity Engine cũng như một phần kiến thức về quy trình thiết kế một game.
- Hiểu được cách sử dụng Inky cũng như tích hợp nó vào trong Unity Engine
- Hiểu được cách sử dụng và cài đặt Light 2D material trong Unity2D URP
- Hiểu được cách làm CutScene
- Hiểu được cách áp dụng Perlin Noise và sử dụng Unity Plugin để tạo map tự động.
- Biết cách sử dụng NavMesh vào tìm đường.
- Biết cách quản lý mã nguồn thông qua Github.
- Cải thiện khả năng lập trình, cách áp dụng các Design Pattern như Singleton và cách kiểm tra cũng như tự sửa lỗi.
- Cải thiện khả năng đọc hiểu code cũng như cải tiến thêm từ code kiếm được từ các trang hướng dẫn và khả năng đọc tài liệu bằng tiếng Anh.
- Các tính năng và code vẫn còn thô và nhiều lỗi vặt nhỏ.
- Giao diện, đồ họa game chỉ ở mức tạm được.
- Còn nhiều tính năng vẫn chưa thiết thực, còn gây nhiều khó khăn đối với người chơi.
- Cơ chế tương tác NPC cũng như Dialogue vẫn còn sơ xài, chưa thật sự có nhiều sự thiết thực.
- Cơ chế thay đổi thời tiết và hoạt ảnh tùy theo từng loại thời tiết vẫn chỉ là prototype, chưa thể áp dụng vào thực tiễn.
- NPC và quái vẫn còn ít, chưa được đa dạng.
- Cơ chế tấn công của nhân vật cũng như AI của quái vẫn còn đơn giản.
Qua quá trình thực hiện, em nhận thấy có những hạn chế của đồ án vẫn còn có thể cải thiện được và được mở rộng thêm nữa Cụ thể hóa bằng những hướng phát triển sau:
Cải thiện AI quái vật:
- Áp dụng những kỹ thuật như Gizmo direction, Steering Behavior để làm quái di chuyển “thông minh” cũng như có thể gây ra một chút khó khăn để thử thách người chơi.
Cải thiện tương tác NPC:
- Áp dụng kỹ thuật Path Finding cũng như tích hợp nhiều hơn Inky để làm cho NPC trở nên sinh động hơn
- Cải thiện đồ họa trò chơi trở nên trực quan hơn.
- Thêm nhiều chi tiết cho bản đồ để mang lại cảm giác chân thực hơn cho người chơi.
- Phát triển thêm nhiều khả năng cho nhân vật để làm đa dạng hơn lối chơi.