Phần 1 - Giới thiệu sẽ tìm hiểu tổng quát về đồ án, bao gồm tóm tắt, đối tượng mục tiêu, mô tả, game design và tổng quan quá trình triển khai.1.1 Tổng quanMục tiêu chính của người chơi l
GIỚI THIỆU
Tổng quan
Mục tiêu chính của người chơi là vượt qua màn chơi hiện tại, giải các câu đố trong bản đồ cũng như chiến đấu chống lại các enemy để có thể tiếp tục cuộc hành trình Tùy thuộc vào gamemode của màn chơi mà người chơi phải thực hiện các mục tiêu khác nhau để có thể vượt qua màn chơi đó Nếu người chơi chết khi thanh máu tuột về 0 thì sẽ được respawn lại vị trí checkpoint mới nhất.
Trong ProjectNo5, người chơi sẽ vào vai Kwang, một chiến binh bị nhốt trong hầm ngục và phải tìm cách để thoát ra ngoài.
ProjectNo5 được phát triển dành cho thiết bị Windows với đối tượng hướng đến là các gamer từ 15 tuổi, thích try hard và hứng thú với thể loại topdown, RPG, action và adventure Có thể kể đến các tựa game như Hades, Death Door, Tunic,
Người chơi sẽ vào vai một chiến binh tên Kwang, chiến đấu chống lại kẻ thù cũng như tìm đường thoát ra khỏi hầm ngục Các màn chơi sẽ được thiết kế sẵn với vô số quái vật mà người chơi phải chiến đấu để vượt qua Trong quá trình chơi, người chơi có thể thay đổi vũ khí, trang bị, nhặt các item ngẫu nhiên trên bản đồ và item khi tiêu diệt được quái để tiếp tục hành trình.
Mục tiêu và yêu cầu
Mục tiêu và yêu cầu chính của dự án:
- Tạo ra một game topdown action adventure có thể chơi được.
- Thiết kế và xây dựng các hệ thống trong game với độ linh hoạt và mở rộng cao.
- Các hệ thống hướng tới: AI system, item and inventory system, stats and level system, levels, game modes.
- Sử dụng VFX và SFX hợp lý.
- User Interface dễ nhìn, dễ tiếp cận.
Tại sao chọn project game
Video game không chỉ giống các phần mềm khác được tạo ra để mang lại lợi ích cho cuộc sống hằng ngày của người dùng, mà hơn hết game tập trung phục vụ cho mục đích giải trí của người dùng Vì vậy, hơn bất cứ thứ gì khác, cần tập trung vào trải nghiệm của người dùng, người dùng muốn gì từ game, làm sao để nó giải trí hơn, làm sao để người dùng muốn chơi hơn Bên cạnh đó, game yêu cầu nhiều về thiết kế, kịch bản chi tiết để các hệ thống trong game có thể liên kết được với nhau tạo ra một sản phẩm hoàn chỉnh Vì vậy em nghĩ game là một đồ án phù hợp và đủ thử thách để báo cáo hoàn thành môn học.
Mô hình quản lý dự án
Mô hình quản lý dự án được chọn để phát triển và thực hiện là mô hình Agile - là một phương pháp phát triển phần mềm sử dụng các vòng lặp ngắn Ý tưởng chính là không thực hiện toàn bộ dự án từ bắt đầu đến kết thúc mà thực hiện từng hệ thống, chức năng, các phần nhỏ của project trong một khoảng thời gian ngắn nhất định Kết quả của mỗi vòng lặp như vậy được dùng để điều chỉnh kế hoạch của dự án.
NGHIÊN CỨU KHẢ THI
Khía cạnh tài chính
ProjectNo5 là game offline, free to play nên sẽ không cần phí hosting server, không cần phí tải game, các item và nhân vật được mở hoàn toàn miễn phí, không áp dụng quảng cáo trên game nên cũng không tiêu thụ internet data.
Khía cạnh kỹ thuật
Các công cụ và công nghệ được sử dụng trong quá trinh thực hiện ProjectNo5:
- Game Engine: Unreal Engine 4 (version 4.27.2).
- Image Editor: Adobe Photoshop CC 2022.
Khía cạnh kinh tế
Nguồn tài nguyên yêu cầu cho dự án:
- Máy phát triển: laptop/PC Ram tối thiểu 16GB và GPU tối thiểu GTX 1080 hoặc RTX 2070.
- Asset được sử dụng của dự án là asset miễn phí hoặc asset có phí nhưng được tải từ các nguồn miễn phí.
- Các công cụ và phần mềm sử dụng miễn phí và crack.
Khía cạnh hợp pháp
Dự án chỉ phục vụ mục đích học tập và nghiên cứu, không đem lại lợi nhuận nên các asset được sử dụng có bao gồm các asset tính phí, có license.
CHỨC NĂNG VÀ KỊCH BẢN
Danh sách chức năng
- Quản lý skill tree system.
Danh sách kịch bản
3.2.1 Usecase tương tác world item object
Trigger overlapping với world item object
Kiểm tra overlapping actor có phải player và item object type để thực hiện tương tác tương ứng:
- Add can interact item object nếu là equipment, thực hiện interact nếu là usable object
Kiểm tra list các item object có thể tương tác
Thực hiện tương tác với item có priority cao nhất (nếu có)
Cập nhật và trả về kết quả Xem kết quả
Hiển thị TabCanvas, mở CharacterStatTab, cập nhật thông tin Tab.
Trả về kết quả Xem kết quả
3.2.3 Usecase xem upgrade advance stat
Hiển thị TabCanvas, mở CharacterStatTab, cập nhật thông tin Tab.
Lấy giá trị UpgradePoints của AdvanceStat, set button increase enable hoặc disable dựa vào giá trị UpgradePoints Click vào ButtonIncrease
Nếu click thành công, tăng giá trị
AdvanceStat tương ứng lên 1 dựa vào id của button Cập nhật và trả về kết quả Xem kết quả
3.2.4 Usecase xem thông tin skill tree node
Hiển thị TabCanvas, mở CharacterStatTab, cập nhật thông tin Tab
Hiển thị SkillTreeTab, cập nhật thông tin Chọn SkillTreeNode
Lấy thông tin SkillTreeNode từ DataAsset tương ứng, hiển thị thông tin Node Trả về kết quả
3.2.5 Usecase unlock skill tree node
Hiển thị TabCanvas, mở CharacterStatTab, cập nhật thông tin Tab
Hiển thị SkillTreeTab, cập nhật thông tin Chọn SkillTreeNode
Lấy thông tin SkillTreeNode từ DataAsset tương ứng, hiển thị thông tin Node Chọn UpgradeNode button
Lấy thông tin SkillTreeNode, thực hiện unlock nếu chưa unlock Trả về kết quả Xem kết quả
3.2.6 Usecase thay đổi camera view
Trigger scroll middle mouse button
Kiểm tra giá trị scroll, kiểm tra và thực hiện zoom camera in nếu giá trị scroll > 0, zoom out nếu < 0 Cập nhật và trả về kết quả Xem kết quả
3.2.7 Usecase thực hiện light attack
Trigger light attack input (left mouse button)
Kiểm tra State hiện tại của StateMachine, truyền giá trị input vào State Kiểm tra điều kiện và thực hiện light attack nếu thõa
Cập nhật và trả về kết quả Xem kết quả
3.2.7 Usecase thực hiện heavy attack
Trigger heavy attack input (right mouse button)
Kiểm tra State hiện tại của StateMachine, truyền giá trị input vào State Kiểm tra điều kiện và thực hiện light attack nếu thõa
Cập nhật và trả về kết quả Xem kết quả
SƠ ĐỒ LỚP
Sơ đồ lớp chính
Sơ đồ lớp AI
Sơ đồ lớp Enemy AI
Sơ đồ lớp item
THIẾT KẾ GAME
Gameplay
Player Controller là class chính của người chơi, dùng để xử lý các widget (user interface), nhận input từ người chơi, quản lý các chỉ số, skill tree,… Phần game demo chỉ sử dụng một Player Controller là PlayerController_PlayerGameplay.
Các components của PlayerController_PlayerGameplay.
Player Character là nhân vật mà người chơi điều khiển Input từ người chơi được PlayerController xử lý và truyền cho Player Character, Player Character sẽ cho ra output dựa trên input đó Output khác nhau với các nhân vật khác nhau, tạo sự đa dạng và linh hoạt cho nhân vật mà người chơi điều khiển Mỗi PlayerCharacter sẽ có một StateMachineComponent,CombatComponent riêng, phù hợp với từng nhân vật Phần game demo chỉ sử dụng mộtPlayerCharacter.
THIẾT KẾ CHI TIẾT
Player
Player Controller là class chính của người chơi, dùng để xử lý các widget (user interface), nhận input từ người chơi, quản lý các chỉ số, skill tree,… Phần game demo chỉ sử dụng một Player Controller là PlayerController_PlayerGameplay.
Các components của PlayerController_PlayerGameplay.
Player Character là nhân vật mà người chơi điều khiển Input từ người chơi được PlayerController xử lý và truyền cho Player Character, Player Character sẽ cho ra output dựa trên input đó Output khác nhau với các nhân vật khác nhau, tạo sự đa dạng và linh hoạt cho nhân vật mà người chơi điều khiển Mỗi PlayerCharacter sẽ có một StateMachineComponent,CombatComponent riêng, phù hợp với từng nhân vật Phần game demo chỉ sử dụng mộtPlayerCharacter.
AWSD để di chuyển nhân vật lần lượt theo hướng trái, lên, xuống, phải theo hướng của camera.
Chuột trái để sử dụng Light Attack.
Chuột phải để sử dụng Heavy Attack.
Esc để pause và unpause game.
Tab để mở tab menu.
Enemy
AIController được xem như là bộ não của enemy, sử dụng để đưa ra các quyết định và phản ứng với input từ game Khác với PlayerController nhận input từ người chơi, AIController nhận input từ môi trường và các điều kiện khác của game.
Mỗi AIController của mỗi loại enemy sẽ chạy một BehaviorTree riêng biệt, tạo nên sự đa dạng trong output của enemy.
EnemyCharacter là nhân vật mà AIController điều khiển Mỗi EnemyCharacter sẽ có một AIController riêng biệt.
Phần demo sẽ có 3 loại enemy khác nhau: Skeleton (short range), SkeletonBow (long range) vàNarbash (mini boss).
Item
Item bao gồm những vật phẩm mà player có thể nhặt và tương tác được trong game.
Phần demo có 3 lại item: Equipment, UsableItem và TriggerOnlyItem.
Có 2 lại item trang bị là spear và bow Khi đổi trang bị, các state của người chơi cũng đổi.
Item có thể sử dụng được.
Level Design
Level là một map, một scene thực tế có trong game, là một phần của game Level chứa tất cả những gì người chơi có thể thấy và tương tác với, ví dụ như môi trường, vật thể, giao diện, nhân vật,…