GIỚI THIỆU CHUNG
Tổng quan đề tài
Tên đề tài: Lập trình Game 2D Top down trên Unity
Nền tảng công nghệ: Unity Engine, Microsoft Visual Studio 2022
Môi trường phát triển: Desktop
Lý do chọn đề tài
Ngành công nghiệp game đang phát triển mạnh mẽ và đóng góp lớn vào nền kinh tế toàn cầu Sự tiến bộ của công nghệ và nhu cầu giải trí ngày càng tăng đã khiến game trở thành lựa chọn phổ biến để giải tỏa căng thẳng và rèn luyện các kỹ năng như kiên trì và khả năng quan sát Mặc dù việc phát hành và tiếp cận game tại Việt Nam ngày càng dễ dàng, nhưng phần lớn game hiện có đều đến từ nước ngoài, trong khi số lượng game do người Việt phát triển vẫn còn hạn chế.
Do đó, em quyết định chọn đề tài này để thử sức mình trong việc phát triển một game 2D top down nhỏ
Chế độ xem từ trên cao, hay còn gọi là chế độ xem toàn cảnh, là một góc camera trong trò chơi điện tử cho phép người chơi nhìn thấy khu vực xung quanh từ một vị trí cao Phong cách này không chỉ phổ biến trong các trò chơi nhập vai 2D mà còn trong các trò chơi chiến tranh, mô phỏng quản lý như SimCity, Pokémon và Railroad Tycoon, cũng như trong các tựa game hành động như The Legend of Zelda và Grand Theft Auto Những trò chơi sử dụng chế độ xem Top-down thường thu hút người chơi nhờ cảm giác về một thế giới rộng lớn, tự do di chuyển và cốt truyện hấp dẫn, tạo ra một không gian tưởng tượng phong phú cho người chơi khám phá.
Unity is one of the most popular game engines today, developed by Unity Technologies as a cross-platform tool for game development It supports the creation of games for PCs, consoles, mobile devices, and websites First introduced by founder David Helgason at Apple's World Wide Developer Conference in 2005, Unity won the "Best Engine" award at the UK's annual Develop Industry Excellence in 2014 Notable games utilizing the Unity Engine include Pokémon Go, Hearthstone, Ori And The Blind Forest, Monument Valley, and Axie Infinity Its extensive versatility allows Unity to be applied across a wide range of game types, from heavy-hitting AAA titles to simple educational games for children.
Mục tiêu của đề tài
Mục tiêu nghiên cứu: Tìm hiểu, hiểu rõ Unity Engine và xây dựng được ứng dụng game 2D Top-down
• Viết đề cương chi tiết, viết báo cáo
• Phân tích bối cảnh, thiết kế gameplay
• Tra cứu tài liệu, nghiên cứu, tìm hiểu cách sử dụng Unity và cách xây dựng một game 2D Top-down bằng Unity Engine.
Đối tượng nghiên cứu
Công nghệ: Unity Engine, C#, Visual Studio 2022
Những người có đam mê với game nói chung và dòng game Top-down nói riêng.
Phạm vi nghiên cứu
Đề tài chính của bài viết này là xây dựng và hoàn thiện gameplay cơ bản cho thể loại game Top-down Mặc dù đồ họa và cốt truyện cũng rất quan trọng để thu hút người chơi, nhưng do hạn chế về nhân lực và kỹ năng thiết kế đồ họa, tôi quyết định tập trung chủ yếu vào gameplay, trong khi đồ họa sẽ được thiết kế ở mức thân thiện với người dùng.
Mã nguồn
- Github: DANGDINHDUNG/GAME_2D_TOPDOWN-UNITY (github.com)
KIẾN THỨC NỀN TẢNG
Unity và Unity2D URP
Unity là một công cụ phát triển trò chơi 3D/2D và IDE đa nền tảng mạnh mẽ, cung cấp nhiều tính năng tích hợp quan trọng cho các nhà phát triển Những tính năng này bao gồm vật lý, kết xuất 3D và phát hiện va chạm, giúp tối ưu hóa hiệu suất và trải nghiệm trò chơi.
Unity không chỉ là một công cụ trò chơi mà còn là một IDE (môi trường phát triển tích hợp), cung cấp giao diện truy cập tất cả các công cụ cần thiết cho việc phát triển Phần mềm này có trình chỉnh sửa trực quan, cho phép người sáng tạo dễ dàng kéo và thả các phần tử vào cảnh và thao tác với các thuộc tính của chúng.
Unity cung cấp nhiều tính năng và công cụ hữu ích, bao gồm khả năng điều hướng qua các thư mục trong dự án và tạo animations thông qua công cụ timeline.
Khi lập trình trong Unity, người dùng có thể chọn trình soạn thảo mã, phổ biến nhất là Visual Studio của Microsoft Unity sử dụng ngôn ngữ C# để xử lý mã và logic thông qua nhiều lớp và API Người dùng cũng có thể thực hiện nhiều nhiệm vụ trong Unity mà không cần viết mã quá nhiều, cho thấy việc nắm vững cách sử dụng Unity sẽ giúp tạo ra nhiều tùy biến trong phát triển ứng dụng Unity mang lại sự linh hoạt cho người dùng để thay đổi hầu hết mọi khía cạnh của dự án.
Những ưu điểm của Unity:
Các engine game cung cấp nhiều chức năng cốt lõi như công cụ dựng hình cho hình ảnh 2D và 3D, tính toán vật lý, âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, và quản lý bộ nhớ Những tính năng này giúp giảm chi phí và đơn giản hóa quy trình phát triển game, mang lại hiệu quả cao trong việc tạo ra sản phẩm chất lượng.
- 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ó
Unity là một công cụ phát triển game dễ sử dụng, được xây dựng trong một môi trường phát triển tích hợp, cung cấp hệ thống toàn diện cho lập trình viên Nó hỗ trợ từ soạn thảo mã nguồn đến xây dựng công cụ tự động hóa và trình sửa lỗi, phù hợp cho cả lập trình viên không chuyên lẫn studio chuyên nghiệp.
Unity Technologies cung cấp phiên bản miễn phí của engine cho cá nhân và doanh nghiệp có doanh thu dưới 100.000 USD/năm, mang lại tính kinh tế cao Đối với phiên bản Pro, người dùng chỉ cần trả 1.500 USD/năm, một mức chi phí hợp lý so với giá trị mà engine này cung cấp.
Các thành phần trong Unity Editor:
Hình 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,…
A GameObject consists of various components, including the Sprite Renderer for visuals, Animator for action animations, Collision for handling interactions, and Rigidbody for physics calculations, among others Each of these elements is referred to as a component of the 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 quan trọng trong Unity, cho phép người dùng tạo ra nhiều đối tượng giống nhau trong game chỉ bằng cách khởi tạo lại các giá trị như vị trí, tỷ lệ biến dạng và góc quay từ một đối tượng gốc.
• Sounds: Âm thanh trong game
Script là tập tin chứa mã nguồn, được sử dụng để khởi tạo và xử lý các đối tượng trong game Trong Unity, bạn có thể lập trình Script bằng các ngôn ngữ như C#, Java Script và BOO.
• Scenes: Quản lý tất cả các đối tượng trong một màn chơi của Game
• Assets: Bao gồm tất cả những gì phục vụ cho dự án game như Sprite, Animation, Sound, Script, Scenes,…
• Camera: Là một game object đặc biệt trong Scene, dùng để xác định tầm nhìn, quan sát các đối tượng khác trong game
• Transform: Là 3 phép biến đổi tịnh tiến, quay theo các trục và phóng to thu nhỏ một đối tượng
C#
C# (C sharp) là một ngôn ngữ lập trình đơn giản, hiện đại và hướng đối tượng, được phát triển bởi Microsoft vào năm 2000 Ngôn ngữ này được xây dựng dựa trên nền tảng của hai ngôn ngữ mạnh mẽ 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.
Inky
Plugin này cung cấp đầy đủ công cụ cần thiết để bạn bắt đầu viết tay trong Unity, tự động biên dịch các tập tin khi chỉnh sửa và đi kèm với một trình xem trước đơn giản, cho phép phát trực tiếp các câu chuyện trong Trình chỉnh sửa mà không cần mã hóa.
Màn hình Inky được chia thành hai phần: phần bên trái dùng để nhập mã bằng ngôn ngữ ink, trong khi phần bên phải hiển thị kết quả Ở phía trên bên phải, có hai nút mũi tên cho phép người dùng quay lại đoạn hội thoại trước hoặc đặt lại toàn bộ đoạn hội thoại.
2.3.2 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
Hình 15: Logo Microsoft Visual Studio
Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) phổ biến từ Microsoft, chủ yếu được sử dụng để lập trình C++ và C# Nó hỗ trợ phát triển phần mềm cho hệ điều hành Microsoft Windows, bao gồm các trang web, ứng dụng web và dịch vụ web Visual Studio tận dụng các nền tảng phát triển của Microsoft như Windows API, Windows Forms, Windows Presentation Foundation, Windows Store và Microsoft Silverlight, cho phép sản xuất cả mã máy và mã quản lý.
Visual Studio là một công cụ phát triển mạnh mẽ, bao gồm trình soạn thảo mã với hỗ trợ IntelliSense và cải tiến mã nguồn Nó tích hợp trình gỡ lỗi cho cả mã nguồn và máy, cùng với các công cụ thiết kế giao diện ứng dụng, web, lớp và cơ sở dữ liệu Ngoài ra, Visual Studio cho phép cài đặt plug-in để mở rộng chức năng, bao gồm hỗ trợ cho các hệ thống quản lý phiên bản như Subversion và các công cụ mới cho việc biên tập và thiết kế ngôn ngữ cụ thể, giúp tối ưu hóa quy trình phát triển phần mềm.
Visual Studio hỗ trợ nhiều ngôn ngữ lập trình khác nhau, cho phép biên soạn mã và gỡ lỗi cho hầu hết các ngôn ngữ Các ngôn ngữ tích hợp bao gồm C, C++, C++/CLI, VB.NET, C#, và F# Ngoài ra, Visual Studio cũng hỗ trợ các ngôn ngữ khác như J++, J#, Python và Ruby thông qua dịch vụ cài đặt riêng Nó còn hỗ trợ XML/XSLT, HTML/XHTML, JavaScript và CSS.
Microsoft offers free versions of Visual Studio, known as "Express" for versions prior to Visual Studio 2013 and "Community" for versions starting from Visual Studio 2015.
Github
GitHub là nền tảng quản lý dự án và phiên bản mã nguồn, hoạt động như một mạng xã hội dành cho lập trình viên Người dùng có thể clone mã nguồn từ các repository, và GitHub cung cấp dịch vụ máy chủ cho các repository công cộng Mỗi lập trình viên có thể tạo tài khoản để xây dựng kho chứa riêng, phục vụ cho công việc phát triển phần mềm.
Github cung cấp các tính năng social networking như feeds, followers, và network graph để các developer học hỏi kinh nghiệm của nhau thông qua lịch sử commit
Commit message trên GitHub đóng vai trò tương tự như comment trong mã nguồn, giúp mô tả và giải thích các hành động mà bạn thực hiện đối với source code.
Github đã trở thành một yếu tố quan trọng trong cộng đồng nguồn mở và được xem như một sự thay thế cho CV bên cạnh Linkedin Nhiều nhà tuyển dụng thường tham khảo hồ sơ Github để đánh giá khả năng lập trình của ứng viên.
XÂY DỰNG GAME 2D TOPDOWN
Tổng quan
Reincarnation là một game nhập vai RPG với góc nhìn Top-down, nơi người chơi điều khiển nhân vật trong một bản đồ rộng lớn Bản đồ bao gồm các vật thể cố định như núi, rừng, cây cối, nhà cửa cùng với NPC và quái vật có khả năng tấn công người chơi Người chơi có thể tiêu diệt quái vật bằng cách chém hoặc sử dụng kỹ năng, đồng thời game cũng tích hợp các yếu tố quan trọng của thể loại RPG như nhiệm vụ, giao dịch và chế tạo.
Lối chơi (Gameplay)
Người chơi có thể bắt đầu trò chơi bằng cách nhấn nút New để chơi mới hoặc Load để tiếp tục từ bản ghi trước đó, và sẽ được đưa vào một bản đồ 2D Trong môi trường này, họ sẽ điều khiển nhân vật để tiêu diệt quái vật, giảm lượng máu của chúng về 0 để thu thập vật phẩm rơi ra Những vật phẩm này sẽ tự động được đưa vào túi đồ của người chơi và có thể được sử dụng để hoàn thành nhiệm vụ công hội, bán cho cửa hàng, hoặc chế tạo vũ khí Sau khi hoàn thành nhiệm vụ, người chơi sẽ nhận được vàng và kinh nghiệm, trong đó vàng dùng để mua vật liệu và thuốc hồi phục, còn kinh nghiệm giúp nâng cấp Level nhân vật Với mỗi Level thăng cấp, người chơi nhận được 10 điểm để nâng cấp một trong năm chỉ số: máu, tấn công, tốc độ, phòng thủ và tấn công đặc biệt Trò chơi sẽ kết thúc khi máu của nhân vật giảm về 0.
0 và sẽ quay trở lại bản lưu trước đó.
ĐẶC TẢ USE-CASE
Sơ đồ Use-Case
Danh sách tác nhân
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 mà người chơi điều khiển được coi là đại diện cho người chơi trong các tình huống sử dụng, vì hành động của họ ảnh hưởng trực tiếp đến trò chơi giống như cách mà nhân vật tương tác trong game.
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 1: Danh sách các actor
Danh sách Use case
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 có thể nâng cấp chỉ số nhân vật thông qua hệ thống nâng cấp bằng cách sử dụng điểm nâng cấp Điểm nâng cấp này được kiếm được khi người chơi tăng cấp độ nhân vật của mình.
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í
13 Tương tác NPC 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
Khi người chơi giữ nút sử dụng vật phẩm và nhấn vào vật phẩm muốn sử dụng, hành động này chỉ áp dụng cho những vật phẩm có khả năng sử dụng.
17 Mở giao diện quản lý nhân vật
Khi người dùng truy cập vào giao diện quản lý nhân vật, họ có thể theo dõi và điều chỉnh các thông số quan trọng như máu, mana và thể lực, đồng thời trang bị vũ khí cho nhân vật.
Bảng 2: Danh sách các Use case
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
1 Người chơi ấn nút “New Game” trong Menu Scene
2 Game chuyển qua 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 Scene của người chơi
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 3: Đặ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 Luồng chính 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 Scene của người chơi
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: Đặ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ắn
Nhân vật có thể di chuyển tự do mà không bị cản trở bởi địa hình, và không đang thực hiện bất kỳ tác vụ nào khác Trước khi bắt đầu trò chơi, nhân vật cần ở trong màn hình Game Scene Sau đó, để đảm bảo chuyển động, vận tốc của nhân vật phải lớn hơn 0.
Bảng 5: Đặ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 6: Đặ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 xa Luồng sự kiện
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 7: Đặ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 8: Đặ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 9: Đặ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
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 10: Đặ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 11: Đặ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 12: Đặ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
Để mua vật phẩm, người chơi cần có lượng vàng bằng hoặc lớn hơn số vàng yêu cầu Giao diện của hàng hóa phải đang mở để thực hiện giao dịch.
Bảng 13: Đặ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í
Luồng sự kiện Luồng chính 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 cần có đủ vàng và vật phẩm cần thiết để chế tạo vũ khí Điều kiện này phải được đáp ứng trước khi mở giao diện rèn.
Bảng 14: Đặ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 15: Đặ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 16: Đặ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 17: Đặ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
Để sử dụng vật phẩm, nó phải thuộc loại sử dụng được Giao diện cửa hàng cần phải tắt và điều kiện trước khi vào game phải là trong Game Scene, trong khi điều kiện sau không có yêu cầu nào.
Bảng 18: Đặ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ện
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 19: Đặc tả chức năng “Mở giao diện quản lý nhân vật”
THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG
Danh sách màn hình
STT Tên màn hình Loại
5 Potion Shop Scene Hiển thị
7 Black Smith Scene Hiển thị
Bảng 20: Danh sách các màn hình của Game
Mô tả chi tiết từng màn hình
Menu Scene là màn hình đầu tiên xuất hiện khi người chơi vào Game, cho phép họ chọn giữa hai tùy chọn: “Chơi mới” hoặc “Chơi tiếp bản lưu” Ngoài ra, người chơi cũng có thể lựa chọn “Thoát trò 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 New Button Chơi mới game
2 Load Button Chơi lại bản lưu
4 REINCARNATION TextMeshPro Hiển thị tên game
Hình 20.2: Màn hình Game Scene
Hình 20.3: Giao diện quản lý nhân vật
Hình 20.5: Túi đồ nhân vật/ Rương đồ
Hình 20.6: 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 cho phép người chơi theo dõi và nâng cấp các chỉ số quan trọng như máu, mana, thể lực, tấn công, phòng thủ, tốc độ và tấn công đặc biệt bằng điểm tăng cấp Bên cạnh đó, người chơi còn có thể trang bị vũ khí cho nhân vật thông qua giao diện này, giúp tối ưu hóa sức mạnh và khả năng chiến đấu của nhân vật trong game.
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
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 giúp người chơi theo dõi trực quan lượng máu, mana, thể lực và cấp độ hiện tại của nhân vật Đồng hồ cung cấp thông tin về thời gian hiện tại, hỗ trợ người chơi trong quá trình trải nghiệm game.
(Thứ/Ngày/Năm/Giờ/Mùa) đ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 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
Dialogue STT Tên đối tượng Loại Chức năng
Dialogue Panel Hiển thị giao diện hội thoại NPC
2 Avatar NPC Image Hiển thị Potrait 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
Dungeon Scene là giao diện hiển thị màn chơi trong game, cho phép người chơi truy cập vào Dungeon qua cổng vào Tại đây, người chơi có cơ hội chiến đấu với nhiều quái vật và thu thập vật phẩm phong phú hơn so với khu vực 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 của việc triệu hồi quái vật sẽ diễn ra khi người chơi tiến lại gần, và sau một khoảng thời gian, nếu quái vật bị tiêu diệt hết, chúng sẽ được hồi sinh trở lại.
Hình 20.12: Giao diện mua hàng trong Shop Scene
Shop Scene là nơi người chơi có thể sử dụng vàng kiếm được trong quá trình chơi để mua sắm các vật phẩm cần thiết theo nhu cầu của mình.
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ị Potrait NPC
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
Hình 20.14: Giao diện mua bán trong Potion Shop Scene
Potion Shop Scene là nơi người chơi có thể mua sắm các vật phẩm hồi phục bằng vàng kiếm được trong quá trình chơi, giúp đáp ứng nhu cầu hồi phục sức khỏe của họ.
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ị Potrait NPC
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
Hình 20.16: Giao diện bảng nhiệm vụ trong Guild Scene
Guild Scene là giao diện hiển thị của Guild trong game, nơi người chơi thực hiện các nhiệm vụ yêu cầu để nhận vàng và điểm kinh nghiệm tương ứng với độ khó của từng 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ụ
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
Hình 20.18: Giao diện rèn vật phẩm của Black Smith Scene
Black Smith Scene là giao diện của tiệm rèn, cho phép người chơi sử dụng vàng và các vật phẩm cần thiết để chế tạo vũ khí.
Các đối tượng trên màn hình:
STT Tên đối tượng Loại Chức năng
Smith 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
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 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 người chơi
CÀI ĐẶT VÀ KIỂM THỬ
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.
Kết quả kiểm thử
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 21: Kết quả kiểm thử
TỔNG KẾT
Kết quả đạt được
- 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
- 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 là rất quan trọng, đồng thời nâng cao kỹ năng lấy thông tin từ các trang hướng dẫn và khả năng đọc tài liệu tiếng Anh sẽ giúp bạn phát triển tốt hơn trong lập trình.
- 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ế 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.
Hướng phát triển
Qua quá trình thực hiện, tôi nhận thấy rằng đồ án vẫn còn một số hạn chế có thể cải thiện và mở rộng Dưới đây là những hướng phát triển cụ thể để nâng cao chất lượng của đồ án.
Cải thiện AI quái vật:
Áp dụng các kỹ thuật như Gizmo direction và Steering Behavior giúp quái di chuyển một cách "thông minh", đồng thời tạo ra những thử thách thú vị cho 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 dang hơn lỗi chơi.