khóa luận tốt nghiệp xây dựng game coop build coop game

81 0 0
Tài liệu đã được kiểm tra trùng lặp
khóa luận tốt nghiệp xây dựng game coop build coop game

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

+ Một trò chơi hoàn chỉnh, đáp ứng được các chức năng mong muốn:  Chức năng coop: người chơi có thể kết nối và chơi với nhau qua mạng phạm vi là người dùng steam..  Hệ thống công thức

Trang 1

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Trang 2

ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHÓA LUẬN TỐT NGHIỆP

Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……… ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin

1 – Chủ tịch 2 – Thư ký 3 – Ủy viên 4 – Ủy viên

Trang 5

LỜI CẢM ƠN

Khóa luận tốt nghiệp với đề tài “XÂY DỰNG GAME COOP” là minh chứng cho quá trình nỗ lực không ngừng nghỉ trong công việc tìm tòi, học hỏi suốt hơn 4 năm học tập tại trường Đại học Công nghệ Thông tin

Trong quá trình thực hiện khóa luận, em đã nhận được sự hướng dẫn tận tình từ quý thầy cô, cũng như sự hỗ trợ về mặt chuyên môn, tinh thần từ phía gia đình, bạn bè Em xin chân thành cảm ơn toàn thể quý thầy cô trường Đại học Công nghệ Thông tin nói chung và quý thầy cô trong Khoa Công nghệ Phần mềm nói riêng đã dìu dắt em trên chặng hành trình tìm kiếm tri thức Đó là món quà vô giá, cũng như hành trang hữu ích trên con đường sự nghiệp của bản thân sau này

Em xin được gửi lời cảm ơn sâu sắc đến cô TS Đỗ Thị Thanh Tuyền và thầy ThS Trần Anh Dũng, người đã trực tiếp hướng dẫn, chỉ bảo Những lời khuyên hữu ích của thầy đã giúp em kịp thời thích ứng và hoàn thành đúng tiến độ, đúng yêu cầu được đặt ra ban đầu Cảm ơn giảng viên phản biện và quý thầy cô trong hội đồng chấm luận văn về những góp ý quý báu Cuối cùng, xin gửi lời cảm ơn chân thành nhất đến những người đã, đang và sẽ tiếp tục đồng hành, gắn bó cùng em trong từng chặng đường đời

TP.HCM, 31 tháng 12 năm 2023 Nhóm sinh viên thực hiện NGUYỄN NGỌC THẠCH

Trang 6

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: XÂY DỰNG GAME COOPGiảng Viên Hướng Dẫn:

- TS Đỗ Thị Thanh Tuyền - ThS Trần Anh Dũng

Thời gian thực hiện: Từ ngày 5/9/2023 đến ngày 31/12/2023 Sinh viên thực hiện:

Nguyễn Ngọc Thạch – 19520265 Nội dung đề tài

1 Lý do chọn đề tài:

- Ngày nay số lượng người sở hữu thiết bị có thể chơi game ngày càng gia tăng, theo đó nhu cầu chơi game tăng theo Tại Việt Nam số lượng người chơi game đạt mức 50 triệu người, khoảng 50% dân số - cao nhất trong khu vực Đông Nam Á Tỷ lệ người chơi game sẵn sàng chi trả cũng đứng đầu khu vực Trong 10 studio game hàng đầu châu Á Thái Bình Dương và Úc, Việt Nam chiếm một nửa Những con số này cho thấy tiềm năng thị trường game tại Việt Nam rất lớn, và chứng tỏ Việt Nam có vị thế quan trọng trên toàn cầu trong việc sản xuất game

- Hiện nay có nhiều game engine trên thị trường như Unity, Unreal, Godot, Armory, CryEngine, GameMaker, được nhà phát triển và cộng đồng trang bị rất nhiều công cụ, giải pháp để hỗ trợ quá trình phát triển game nhanh và tốt hơn

-Mục đích của đề tài này là nghiên cứu áp dụng các nguyên lý thiết kế, mẫu thiết kế phù hợp nhằm quản lý vòng đời của game, triển khai mẫu thiết kế phù hợp cho các module, tăng khả năng mở rộng, giảm sự phụ thuộc vào engine, tái sử dụng cho dự án khác Mặt khác, trong phát triển game thì hướng đối tượng (OOP) là kiến thức rất quan trọng và là yếu tố ảnh hưởng lớn đến dự án Vì vậy phát triển game cũng là đề tài phù hợp để áp dụng các kiến thức OOP đã học trên trường

2 Mục tiêu thực hiện:

- Tham khảo các game có nội dung tương tự trên thị trường, viết Game Design Document - Tìm hiểu cách triển khai co-op (Steamwork.Net)

- Tìm hiểu các mẫu thiết kế, nguyên lý thiết kế

- Tìm hiểu shader code để cải thiện đồ họa và tối ưu hiệu năng cho game

Trang 7

kiến trúc luôn có thể mở rộng dễ dàng 3 Phạm vi:

Phạm vi môi trường: Ứng dụng chạy trên Microsoft Window Phạm vi chức năng:

- Đối với game:

+ Game 3D, góc nhìn nghiêng từ trên xuống + Hình ảnh, đồ họa Low poly

+ Có khả năng chơi co-op từ 1 đến 4 người - Đối với gameplay:

+ Game tuyến tính, chơi theo màn, hoàn thành mục tiêu của từng màn chơi để qua màn tiếp theo + Các màn chơi có thiết kế độ khó theo interest curve nhằm kích thích hứng thú qua từng màn game

+ Một trò chơi hoàn chỉnh, đáp ứng được các chức năng mong muốn:

 Chức năng coop: người chơi có thể kết nối và chơi với nhau qua mạng (phạm vi là người dùng steam) Người dùng có thể tạo phòng, mời bạn bè vào phòng, xem danh sách phòng đang mở, tham gia phòng

 Hệ thống khối: map sẽ được xây dựng bởi các khối như minecraft

 Hệ thống công thức khối: các khối sẽ được tạo ra từ sự kết hợp giữa các vật liệu khác nhau như nước, cát, đá,

 Hệ thống vật liệu: các vật liệu sẽ được khai thác từ môi trường, hoặc được cung cấp từ sự chuẩn bị ở đầu màn chơi Các vật liệu đó ở môi trường sẽ có hình dạng gì, vật liệu đó khi được khai thác sẽ có hình dạng gì, làm sao để tương tác

 Hệ thống tương tác, thể loại game hợp tác thường được thiết kế đơn giản về hoạt động trong màn chơi, chỉ tập trung vào một số ít hoạt động cụ thể và phải lặp đi lặp lại với cường độ cao, các tương tác chính:

o Tương tác giữa người chơi với người chơi, hợp tác nhưng vẫn phải có yếu tố cản trở lẫn nhau:

 Đẩy: khi người chơi lướt đụng trúng người khác sẽ làm cả 2 rơi đồ vật trên tay

Trang 8

 Thùng hàng: mỗi thùng là 1 loại vật liệu, người chơi có thể dùng xô để lấy vật liệu hoặc thêm vật liệu vào thùng

 Máy móc: máy để tổng hợp vật liệu từ các vật liệu, máy để tạo khối từ các vật liệu,

 Bản vẽ, bảng công thức: người chơi sẽ phải luôn nhìn bản vẽ và bảng công thức liên tục để biết mình cần làm gì

o Tương tác giữa người chơi với sinh vật, môi trường (tùy bối cảnh và bị động):  Các môi trường tự nhiên nguy hiểm như nước, lửa, dung nham sẽ làm

người chơi biến mất và hồi sinh sau vài giây Các môi trường không tốt như tuyết, băng, rừng rậm sẽ ảnh hưởng đến các khả năng của người chơi (đi chậm, trượt, )

 Các sự kiện từ môi trường nguy hiểm: đá rơi từ trên cao, bão, sấm sét, sẽ làm người chơi biến mất và hồi sinh sau vài giây

 Sinh vật gây cản trở như trâu, sư tử, ma, sẽ làm ảnh hưởng đến người chơi như chặn đường, làm choáng,

 Hệ thống sự kiện biến đổi map: sẽ có 2 sự kiện chính trong 1 màn chơi, sự kiện mở đầu, sự kiện giữa màn chơi Sự kiện mở đầu thường là sự kiện mà trực quan hóa việc map được tải lên thế nào hoặc là giới thiệu map Sự kiện giữa màn chơi là sự kiện map thay đổi trong lúc chơi, ví dụ như: map bị chia làm đôi, cây đổ chắn đường,

 Hệ thống chế độ chơi: chế độ chơi sẽ gồm chơi theo thời gian, chơi 2 đội đua thời gian, Chỉ tập trung chế độ chơi theo thời gian, chế độ còn lại sẽ được cập nhật sau

 Hệ thống nhiệm vụ nhỏ trong màn chơi: màn chơi sẽ có nhiệm vụ nhỏ, nếu hoàn thành sẽ cộng thêm điểm khi kết thúc màn chơi Ví dụ: 2 người chơi không được húc vào nhau, chặt 5 cây gỗ, chỉ 1 người được xem bản vẽ nhà,

 Hệ thống đánh giá điểm: sau khi kết thúc màn chơi, hệ thống sẽ đánh giá sản phẩm của người chơi giống được bao nhiêu phần trăm so với yêu cầu, được bao nhiêu điểm vào bao nhiêu sao

Trang 9

- Sử dụng Trello để quản lý tiến trình và tài liệu - Sử dụng Github để quản lý source code Phương pháp nghiên cứu:

- Phân tích yếu tố làm game trở nên đáng chơi và thu hút người dùng - Nghiên cứu các tài liệu liên quan

- Tìm hiểu các nguyên lý, mẫu thiết kế làm trọng tâm xây dựng ứng dụng - Tìm hiểu các phương pháp kết nối chơi game qua mạng

6 Nền tảng công nghệ: - C# Unity Engine 7 Kết quả mong đợi:

- Game có thể chơi được, đồ họa được mắt, gameplay lôi cuốn, có thể chơi nhiều người

- Các mẫu thiết kế, nguyên lý thiết kế được áp dụng đúng nơi đúng chỗ, có khả năng tái sử dụng - Triển khai demo game lên steam

8 Hướng phát triển của đề tài:

- Nghiên cứu và thử nghiệm các cách xây dựng gameplay

- Mở rộng thêm nhiều tính năng trong game Đồng thời đánh giá để mở rộng code, thay đổi mẫu thiết kế cho phù hợp nếu cần thiết

- Tối ưu kết nối co-op 9 Kế hoạch làm việc:

Thời gian thực hiện từ ngày 5 /9/2023 đến ngày 31/12/2023 Chia thành 5 giai đoạn:

Giai đoạn 1: Tìm hiểu các game tương tự trên thị trường, viết game design document Từ game design document, xác định kiến thức cần tìm hiểu, ticket (scrum) cần hoàn thành

Giai đoạn 2: Tìm hiểu các mẫu thiết kế hay sử dụng trong phát triển game Từ các ticket tính năng của game đã xác định ở giai đoạn 1, tìm hiểu các cách triển khai

Giai đoạn 3: Triển khai các tính năng của game và viết tài liệu về kiến trúc đã triển khai (Giai đoạn này một phần sử dụng các model, hình ảnh miễn phí trên mạng)

Trang 10

Giai đoạn 1 5 ngày

(5/9/2023 – 14/9/2023)

- Ngày 1, 2: Tìm hiểu và chơi các game tương tự trên thị trường - Ngày 3: Viết game design document

- Ngày 4, 5: Từ game design document, xác định kiến thức cần tìm hiểu, ticket (scrum) cần hoàn thành

(15/9/2023 – 22/9/2023)

- Tìm hiểu các mẫu thiết kế hay sử dụng trong phát triển game, và thường được áp dụng ở tính năng nào trong game

- Từ các ticket tính năng của game đã xác định ở giai đoạn 1, tìm hiểu các cách triển khai

- Triển khai coop với Steamwork

(26/11/2023 – 19/12/2023)

- Hoàn thành model, animation, hình ảnh

- Thiết kế màn chơi - Thêm âm thanh

- Kiểm tra hiệu năng game, tìm cách cải thiện nếu hiệu năng kém (hình ảnh quá nét, model quá nhiều lưới, quá nhiều đối tượng để render, code chưa tối ưu, kiến trúc không phù hợp, )

(20/12/2023 – 31/12/2023)

- Kiểm thử toàn bộ game, viết tài liệu báo cáo

Trang 11

(Ký tên và ghi rõ họ tên) (Ký tên và ghi rõ họ tên)

Nguyễn Ngọc Thạch

Trang 13

3.1 Sơ đồ thiết kế hệ thống: 21

Hình 3.1 Sơ đồ thiết kế hệ thống 21

3.2 Sơ đồ Use case: 21

3.3 Danh sách Actor: 22

3.4 Danh sách Use case: 22

3.5 Danh sách đặc tả Use case: 23

Trang 14

4.4.1 Giao diện Main Menu: 57

4.4.2 Giao diện Select Play: 59

4.4.3 Giao diện Select Play: 60

4.4.4 Giao diện HostRoom: 61

4.4.5 Giao diện Map Selecting: 63

4.4.6 Giao diện Playing: 64

Trang 15

DANH TỪ VIẾT TẮT

1 OOP Object Oriented Programming Lập trình hướng đối tượng 2 GDD Game Design Document Tài liệu thiết kế game 3 CO-OP Cooperative games Game có sự hợp tác giữa

nhiều người 4 FSM Finate State Machine

Trang 16

TÓM TẮT KHÓA LUẬN

Đề tài “Xây dựng game COOP” là một trò chơi hợp tác nhiều người chơi Trò chơi nhằm mong muốn mang đến trải nghiệm nhiều người chơi hợp tác thú vị trong môi trường trực tuyến Đề tài nhằm mục tiêu xây dựng trò chơi mà nhiều người có thể tham gia cùng nhau, làm việc hợp tác để giải quyết các thách thức và nhiệm vụ của trò chơi Tăng cường liên kết giữa người chơi với nhau từ trong trò chơi cũng như đời thật, có thể chơi cùng bạn bè, gia đình

Với việc sử dụng các công nghệ phát triển game tiên tiến hiện có và các giải pháp, em đã gần hoàn thành được trò chơi đa người chơi

Cấu trúc báo cáo bao gồm:

- Chương 1: Giới thiệu đề tài

- Chương 2: Cơ sở lý thuyết và công nghệ - Chương 3: Phân tích thiết kế hệ thống

- Chương 4: Xây dựng game

- Chương 5: Kết luận

Trang 17

Chương 1 GIỚI THIỆU ĐỀ TÀI

1.1 Tổng quan:

- Ngày nay số lượng người sở hữu thiết bị có thể chơi game ngày càng gia tăng, theo đó nhu cầu chơi game tăng theo Tại Việt Nam số lượng người chơi game đạt mức 50 triệu người, khoảng 50% dân số - cao nhất trong khu vực Đông Nam Á Tỷ lệ người chơi game sẵn sàng chi trả cũng đứng đầu khu vực Trong 10 studio game hàng đầu châu Á Thái Bình Dương và Úc, Việt Nam chiếm một nửa Những con số này cho thấy tiềm năng thị trường game tại Việt Nam rất lớn, và chứng tỏ Việt Nam có vị thế quan trọng trên toàn cầu trong việc sản xuất game

- Hiện nay có nhiều game engine trên thị trường như Unity, Unreal, Godot, Armory, CryEngine, GameMaker, được nhà phát triển và cộng đồng trang bị rất nhiều công cụ, giải pháp để hỗ trợ quá trình phát triển game nhanh và tốt hơn

-Mục đích của đề tài này là phát triển trò chơi đa người chơi Kèm theo áp dụng các nguyên lý thiết kế, mẫu thiết kế phù hợp nhằm quản lý vòng đời của game, triển khai mẫu thiết kế phù hợp cho các module, tăng khả năng mở rộng, giảm sự phụ thuộc vào engine, tái sử dụng cho dự án khác Mặt khác, trong phát triển game thì hướng đối tượng (OOP) là kiến thức rất quan trọng và là yếu tố ảnh hưởng lớn đến dự án Vì vậy phát triển game cũng là đề tài phù hợp để áp dụng các kiến thức OOP đã học trên trường 1.2 Mục tiêu thực hiện:

- Tham khảo các game có nội dung tương tự trên thị trường, viết Game Design Document

- Tìm hiểu cách triển khai co-op (Steamwork.Net, Mirror) - Tìm hiểu các mẫu thiết kế, nguyên lý thiết kế

- Tìm hiểu shader code để cải thiện đồ họa và tối ưu hiệu năng cho game - Tìm hiểu cách tối ưu hiệu năng game

Trang 18

1.3 Phạm vi:

Phạm vi môi trường: Ứng dụng chạy trên Microsoft Window Phạm vi chức năng:

- Đối với game:

+ Game 3D, góc nhìn nghiêng từ trên xuống + Hình ảnh, đồ họa Low poly

+ Có khả năng chơi co-op từ 1 đến 4 người - Đối với gameplay:

+ Game tuyến tính, chơi theo màn, hoàn thành mục tiêu của từng màn chơi để qua màn tiếp theo

+ Các màn chơi có thiết kế độ khó theo interest curve nhằm kích thích hứng thú qua từng màn game

+ Một trò chơi hoàn chỉnh, đáp ứng được các chức năng mong muốn:

 Chức năng coop: người chơi có thể kết nối và chơi với nhau qua mạng (phạm vi là người dùng steam) Người dùng có thể tạo phòng, mời bạn bè vào phòng, xem danh sách phòng đang mở, tham gia phòng

 Hệ thống khối: map sẽ được xây dựng bởi các khối như minecraft  Hệ thống công thức khối: các khối sẽ được tạo ra từ sự kết hợp giữa các vật liệu khác nhau như nước, cát, đá,

 Hệ thống vật liệu: các vật liệu sẽ được khai thác từ môi trường, hoặc được cung cấp từ sự chuẩn bị ở đầu màn chơi Các vật liệu đó ở môi

Trang 19

trường sẽ có hình dạng gì, vật liệu đó khi được khai thác sẽ có hình dạng gì, làm sao để tương tác

 Hệ thống tương tác, thể loại game hợp tác thường được thiết kế đơn giản về hoạt động trong màn chơi, chỉ tập trung vào một số ít hoạt động cụ thể và phải lặp đi lặp lại với cường độ cao, các tương tác chính:

o Tương tác giữa người chơi với người chơi, hợp tác nhưng vẫn phải có yếu tố cản trở lẫn nhau:

 Đẩy: khi người chơi lướt đụng trúng người khác sẽ làm cả 2 rơi đồ vật trên tay

 Khiêng: người chơi này có thể khiêng người chơi kia và thẩy như đồ vật

 Tương tác giữa người chơi với dụng cụ lao động:

 Cuốc: dùng để đập tất cả mọi thứ trong trò chơi: khối, gỗ, động vật,

 Xô: dùng để đựng các vật liệu

o Tương tác giữa người chơi với đồ khác trong màn chơi:

 Thùng hàng: mỗi thùng là 1 loại vật liệu, người chơi có thể dùng xô để lấy vật liệu hoặc thêm vật liệu vào thùng

 Máy móc: máy để tổng hợp vật liệu từ các vật liệu, máy để tạo khối từ các vật liệu,

 Bản vẽ, bảng công thức: người chơi sẽ phải luôn nhìn bản vẽ và bảng công thức liên tục để biết mình cần làm gì

o Tương tác giữa người chơi với sinh vật, môi trường (tùy bối cảnh và bị động):

Trang 20

trường không tốt như tuyết, băng, rừng rậm sẽ ảnh hưởng đến các khả năng của người chơi (đi chậm, trượt, )

 Các sự kiện từ môi trường nguy hiểm: đá rơi từ trên cao, bão, sấm sét, sẽ làm người chơi biến mất và hồi sinh sau vài giây  Sinh vật gây cản trở như trâu, sư tử, ma, sẽ làm ảnh hưởng đến người chơi như chặn đường, làm choáng,

 Hệ thống sự kiện biến đổi map: sẽ có 2 sự kiện chính trong 1 màn chơi, sự kiện mở đầu, sự kiện giữa màn chơi Sự kiện mở đầu thường là sự kiện mà trực quan hóa việc map được tải lên thế nào hoặc là giới thiệu map Sự kiện giữa màn chơi là sự kiện map thay đổi trong lúc chơi, ví dụ như: map bị chia làm đôi, cây đổ chắn đường,

 Hệ thống chế độ chơi: chế độ chơi sẽ gồm chơi theo thời gian, chơi 2 đội đua thời gian, Chỉ tập trung chế độ chơi theo thời gian, chế độ còn lại sẽ được cập nhật sau

 Hệ thống nhiệm vụ nhỏ trong màn chơi: màn chơi sẽ có nhiệm vụ nhỏ, nếu hoàn thành sẽ cộng thêm điểm khi kết thúc màn chơi Ví dụ: 2 người chơi không được húc vào nhau, chặt 5 cây gỗ, chỉ 1 người được xem bản vẽ nhà,

 Hệ thống đánh giá điểm: sau khi kết thúc màn chơi, hệ thống sẽ đánh giá sản phẩm của người chơi giống được bao nhiêu phần trăm so với yêu cầu, được bao nhiêu điểm vào bao nhiêu sao

Trang 21

- Tìm hiểu cách làm model và animation với Maya

- Tìm hiểu Steamwork.Net, Mirror để triển khai tính năng Coop - Sử dụng Trello để quản lý tiến trình và tài liệu

- Sử dụng Github để quản lý source code

1.6 Các game trên thị trường: 1.6.1 Unrailed:

Hình 1.1 Trò chơi Unrailed

Unrailed là một game hợp tác nhiều người chơi nơi mà game thủ phải làm việc cùng bạn bè để xây dựng đường ray cho một đoàn tàu qua các thế giới được tạo ngẫu nhiên vô tận Trên chuyến đi nhiệm vụ bạn phải đụng độ với các sinh vật sống khác, bạn phải nâng cấp đoàn tàu và ngăn nó không bị trật đường Game có thể chơi trực tuyến hoặc trên cùng một máy với tối đa bốn người chơi trong một đội Game có nhiều chế độ khác nhau, như không giới hạn, cát bụi, hay đối đầu Game cũng có nhiều loại toa xe khác nhau để bạn có thể tùy biến đoàn tàu của mình Game có đồ họa dễ thương và hài hước, phù hợp cho những người muốn chơi game giải trí cùng bạn bè.

Trang 22

1.6.2 MovingOut:

Hình 1.2 Trò chơi Moving Out

Moving Out là một game hợp tác nhiều người chơi nơi bạn phải làm việc cùng bạn bè để chuyển đồ đạc từ nhà ra xe tải trong thời gian giới hạn Bạn phải đối phó tính toán nên khiêng các vật nặng nề theo cách nào, và các chướng ngại vật (như cái cào, lửa, băng, hay ma) trong quá trình chuyển hàng Bạn có thể ném đồ đạc, đập vỡ cửa sổ Game có thể chơi 4 người qua mạng Game có nhiều nhân vật với hình ảnh dễ thương khác nhau để người chơi tùy biến theo sở thích Game có đồ họa sặc sỡ và hài hước, phù hợp cho những người muốn chơi game giải trí cùng bạn bè

Trang 23

1.6.3 Overcooked 2:

Hình 1.3 Trò chơi Overcooked 2

Overcooked 2 là một game mô phỏng nấu ăn hợp tác Trong game này, bạn sẽ vào vai một đầu bếp sushi và phải làm việc cùng bạn bè để chuẩn bị, nấu và phục vụ các món ăn cho khách hàng trong thời gian giới hạn Bạn phải chăm lo với các món ăn của bạn, và vượt qua các chướng ngại vật trong quá trình nấu ăn Game có thể chơi trực tuyến tối đa bốn người Game có đồ họa sặc sỡ và hài hước, phù hợp cho những người muốn chơi game giải trí cùng bạn bè

Trang 24

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ

2.1 Unity:

Hình 2.1 Unity

- Unity là một công cụ phát triển game đa nền tảng được phát triển bởi Unity Technologies từ năm 2005 Unity hỗ trợ đồ họa 2D và 3D, ngôn ngữ lập trình được sử dụng chủ yếu là ngôn ngữ C#

- Đa nền tảng : Unity có thể được dùng để tạo game cho máy tính, điện thoại, console và web Unity cũng hỗ trợ các nền tảng thực tế ảo và thực tế tăng cường Unity cung cấp một môi trường làm việc trực quan và linh hoạt hơn so với đa số các engine khác

- Công cụ: Unity cũng cung cấp nhiều công cụ cần thiết trong quá trình phát triển game Animator, Timeline, Cinemachine Unity cũng có một Asset Store lớn, người dùng có thể mua hoặc tải về miễn phí các tài nguyên như mô hình 3D, âm thanh, vật lý, AI,…

- Cộng đồng: Một điểm mạnh khác là Unity cũng có một cộng đồng lập trình viên rất đông đảo và nhiệt tình, nơi có thể học hỏi, trao đổi kinh nghiệm và giải quyết các vấn

Trang 25

những khóa học hay sự kiện và cuộc thi nâng cao kỹ năng cộng đồng và tạo môi trường giao lưu với các nhà phát triển khác

- Bên cạnh đó Unity là một công cụ phát triển game rất mạnh mẽ và phổ biến, đã được dùng để tạo ra nhiều game nổi tiếng như Among Us, Fall Guys, Genshin Impact,…

2.2 Mirror Networking:

Hình 2.2 Mirror Networking

- Mirror là một chương trình mạng cho Unity, giúp xây dựng game nhiều người chơi với Unity Là một dự án được phát triển bởi cộng đồng, dự án được fork từ Unet - Chương trình mạng đã bị khai tử bởi Unity, hiện Unity đang phát triển chương trình mạng mới nhưng vẫn ít người sử dụng

- Mirror cung cấp khả năng kết nối qua mạng, tích hợp các tính năng giúp chơi game qua mạng mượt mà hơn Mirror hỗ trợ cả mô hình P2P và client-server

- Mirror cũng cung cấp khả năng đồng bộ nhiều loại dữ liệu giữa các người chơi Ngoài những dữ liệu cơ bản của ngôn ngữ C#, Mirror còn đồng bộ hoạt ảnh, vị trí, vật lý,

Nói chung Mirror được thiết kế với mục tiêu làm cho phát triển trò chơi nhiều người chơi qua mạng trở nên dễ hơn

2.2.1 Các khái niệm cơ bản trong Miror:

Trang 26

- Network Behavior: Là lớp kế thừa từ MonoBehavior của Unity Lớp này chứa các phương thức, thuộc tính cần có để tương tác qua mạng

- Network Manager: Là lớp đóng vai trò trung tâm điều khiển của mọi hoạt động mạng của Mirror Network Manager xử lý việc khởi động, quản lý kết nối và cung cấp phản ứng kết nối giữa client và server

- Rpc: Dùng để gửi yêu cầu từ server đến client

+ ClientRpc: Dùng để gửi yêu cầu đến tất cả client + TargetRpc: Dùng để gửi yêu cầu đến client cụ thể

Hình 2.4 Phương thức Client Rpc

2.2.2 Nghiên cứu và áp dụng Mirror trong đồ án:

Trang 27

- Đồ án phát triển theo mô hình client-server, Mirror có cung cấp khả năng này - Người tạo phòng sẽ vừa là client và server, còn gọi là host

- Người tham gia phòng sẽ là client 2.3 Steam:

Hình 2.5 Steam

Steam là nền tảng phân phối và chơi trò chơi trên console đứng đầu thế giới, được phát triển và quản lý bởi Valve Corporation Là nhà phát triển của tựa game nổi tiếng Half Life Steam có phần giống như Google Play hay App Store, nhưng kèm theo đó còn là các dịch vụ liên quan khác như:

- Tích hợp xã hội và cộng đồng: Steam cung cấp các tính năng tính năng như thêm bạn bè, nhắn tin, tặng quà, mở và tham gia cộng đồng, đánh giá trò chơi,

- Steam WorkShop: cung cấp khả năng chia sẻ nội dung tùy chỉnh giữa người chơi với nhau như cho phép người dùng thiết kế và chia sẻ màn chơi mới, góp phần làm

Trang 28

2.3.1 Steamworks SDK:

Steamworks SDK là một bộ công cụ phát triển phần mềm của Steam, giúp nhà phát triển tích hợp trò chơi của họ với nền tảng Steam SDK này bao gồm nhiều tính năng như lưu trữ đám mây, thống kê và thành tựu trong trò chơi, cũng như hỗ trợ cho việc phát hành và cập nhật trò chơi Steamworks SDK là một công cụ mạnh mẽ và linh hoạt, giúp các nhà phát triển mở rộng tầm ảnh hưởng của trò chơi trên một trong nền tảng phân phối trò chơi lớn nhất thế giới

2.3.2 Nghiên cứu và áp dụng Steam trong đồ án:

- Tận dụng sức mạnh cở sở hạ tầng của Steam để kết nối qua mạng mà không cần 1 server bên ngoài

- Ra mắt game trên Steam

- Tích hợp Steamworks SDK để tạo phòng, tìm phòng và tham gia phòng - Tích hợp Steam Cloud để lữu trữ dữ liệu trò chơi

- Tận dụng kỹ thuật mạng sẵn có của Steam 2.4 Hệ thống màn chơi:

- Mỗi màn chơi gồm 8 yếu tố:

+ Người chơi: người chơi có thể tương tác với một số đồ vật trong map Nhiệm vụ của người chơi là thu thập vật liệu và tạo ra các khối để xây nhà Màn chơi kết thúc khi hết giờ hoặc cả 4 người chơi đều bước vào vùng được đánh dấu là “hoàn thành”

+ Khối: người chơi có thể cầm và đặt khối, dùng để xây nhà + Xô: người chơi có thể cầm và đựng vật liệu

+ Thùng hàng: người chơi có thể cầm xô và lấy vật liệu

+ Máy tạo khối: hấp thụ vật liệu được cung cấp bởi người chơi và tạo ra các khối

+ Vùng xây nhà: là vùng có các khối cơ bản để người chơi đặt khối khác lên và xây nhà

Trang 29

+ Vùng hoàn thành: khi người chơi muốn kết thúc và tính điểm thì tất cả người chơi phải cùng đứng vào vùng này

+ Tác nhân cản trở: là nhân tố cản trở người chơi trong quá trình xây nhà 2.5 Thiết lập màn chơi:

- Dữ liệu màn chơi được lưu vào 1 loại dữ liệu của Unity là Scriptable Object Dữ liệu được lấy trong giai đoạn tạo map trên editor, sao chép tất cả trạng thái map, dữ liệu này có:

+ MapIndex (byte): Số thứ tự của màn chơi, dùng để xác định màn chơi nào đang được chơi

+ PlayerSpawnPos (list<Vector3>): Vị trí mà người chơi có thể được sinh ra + BlockMachinePos (list<Vector3>): Số lượng máy tạo khối và vị trí máy được sinh ra

+ SupplyBoxPos (list<Vector3>): Số lượng thùng hàng và vị trí được sinh ra + SupplyBoxSettings (List<BoxSettings>): Dữ liệu để khởi tạo thùng hàng + PickableObjectPos (list<PickableObject>): Danh sách đồ vật người chơi có thể cầm lên được

+ GameObjectInfo (Tree): là cây GameObject được sao chép nguyên như trên editor, để khởi tạo bản đồ

+ EnvironmentInfo: là các thuộc tính để khởi tạo môi trường của màn chơi

Trang 30

Hình 2.7 Kiểu dữ liệu của màn chơi

Trang 31

2.6 Công thức tạo block:

- Một block sẽ được tạo ra bởi sự kết hợp của một số vật liệu, dữ liệu gồm: + Settings (List<BuilddingMaterialSettings): Danh sách vật liệu cấu thành + OutputBlock (GameObject): Khối được tạo ra tương ứng

Hình 2.8 Dữ liệu công thức tạo block

Trang 32

2.7.2 Vật liệu có thể đốt được: - Gồm các dữ liệu:

+ Icon (sprite): hình ảnh sẽ được hiển thị khi đựng trong thùng hàng + Name (string): tên vật liệu

+ Burnable Time (byte): thời gian đốt cung cấp thêm năng lượng cho máy tạo khối

Hình 2.10 Dữ liệu vật liệu cháy được

2.8 Cảnh chọn màn chơi:

Cảnh chọn màn chơi là nơi mà tất cả người chơi chọn màn mình muốn 2.8.1 Các màn chơi (cột cờ):

- Bản đồ màn chơi gồm nhiều cột cờ mà người chơi có thể tương tác

- Mỗi cột cờ tượng trưng cho một màn chơi, cột cờ sẽ chứa thông tin màn chơi như số thứ tự màn chơi, hình ảnh xem trước màn chơi và kết quả đã chơi (nếu có)

Trang 33

+ Nếu nhân vật muốn bắn cầu lửa, nhân vật phải có kỹ năng “FireBallSkill” Nếu muốn nhân vật có thể bắn cầu lửa nhanh hơn, ta có thể tăng cấp “FireBallSkill

- Nhân vật gồm có các dữ liệu sau:

+ move_skill_level_index (byte): cấp độ di chuyển + jump_skill_level_index (byte): cấp độ nhảy + pickup_skill_level_index (byte): cấp độ nhặt

+ throw_skill_level_index (byte): cấp độ quăng đồ vật

+ block_interact_skill_level_index (byte): cấp độ tương tác với block + bucket_interact_skill_level_index (byte): cấp độ tương tác với xô + smash_axe_skill_level_index (byte): cấp độ vung rìu

+ interact_skill_level_index (byte): cấp độ tương tác

+ skin_skill_level_index (byte): skin và animator hiện tại đang sử dụng

Trang 34

Hình 2.11 Dữ liệu player

Hình 2.11 Dữ liệu một skill

Trang 35

2.9.1 Cấu trúc hệ thống kỹ năng:

- Các Skill được thiết kế để có thể “gắn” và “gỡ” Hệ thống có khả năng đa dạng hóa trạng thái của một người chơi

- Các Skill sẽ được Skill System quản lý thêm, xóa, lên cấp, xuống cấp

- Các Skill được thiết kế theo observer pattern Các Skill sẽ theo dõi input của người chơi và phản ứng

2.10 Lập trình phản ứng (Reactive Programming) với Unirx:

Hình 2.12 Thư viện Unirx

- Để dễ dàng thiết kế observer pattern cho hệ thống kỹ năng cũng như hệ thống khác trong trò chơi Em sử dụng thư viện Unirx, là một thư viện lập trình phản ứng

- Ưu điểm khi sử dụng Unirx là logic trò chơi được giảm thiểu Một số logic như thời gian hồi chiêu, kiểm tra điều kiện trước khi hành động sẽ được đơn giản hóa Ví dụ:

Trang 36

CHƯƠNG 3: PHÂN TÍCH THIÊT KẾ HỆ THỐNG GAME

3.1 Sơ đồ thiết kế hệ thống:

Hình 3.1 Sơ đồ thiết kế hệ thống

3.2 Sơ đồ Use case:

Hình 3.2: Sơ đồ Use Case tổng quát

Trang 37

3.3 Danh sách Actor:

Bảng 3.1: Danh sách Actor

3.4 Danh sách Use case:

Bảng 3.2: Danh sách Use case

2 Tìm phòng bằng mã Người chơi Tham gia phòng bạn bè với mã phòng

3 Chọn màn chơi Người chơi Chọn màn chơi trong cảnh chọn màn chơi

4 Bắt đầu màn chơi Người chơi Bắt đầu màn chơi trong cảnh chọn màn chơi

5 Bắt đầu lại màn chơi Người chơi Bắt đầu lại màn chơi khi đang trong màn chơi

6 Chọn lại màn chơi Người chơi Chọn lại màn chơi khác khi đang trong màn chơi

7 Chủ động kết thúc màn chơi

Người chơi Khi đã hoàn thành xây dựng, tất cả người chơi cần di chuyển vào đúng vị trí để kết thúc màn chơi 8 Điều chỉnh âm thanh Người chơi Điều chỉnh âm thanh

9 Kích hoạt kỹ năng Người chơi Người chơi thao tác trong màn chơi

Trang 38

3.5 Danh sách đặc tả Use case: a Tạo phòng

Hình 3.3: Sơ đồ hoạt động Tạo phòng Bảng 3.3: Use case Tạo phòng

phòng chơi qua mạng Mã phòng sẽ được tạo ra sau khi tạo phòng, mã này dùng để tham gia phòng từ người chơi khác

Điều kiện bắt đầu - Người chơi có kết nối mạng

- Người chơi phải đang mở ứng dụng Steam

Điều kiện kết thúc - Người chơi tạo được phòng - Có thể tham gia bằng mã phòng - Có thể tham gia từ thanh bạn bè của Steam

Trang 39

Dòng sự kiện chính - Người chơi ở màn hình “Main Menu” chọn “Play”

- Người chơi ở màn hình “Select Play”, chọn “Create Room”

- Người chơi đã tạo được phòng và xem được mã phòng

Dòng sự kiện khác - Người chơi mời bạn bè từ thanh bạn bè của Steam

- Người chơi đã vào được phòng và thấy bạn bè

b Tìm phòng bằng mã

Hình 3.4: Sơ đồ hoạt động Tìm phòng bằng mã

Trang 40

Bảng 3.4: Use case Tìm phòng bằng mã

gia phòng bạn bè với mã phòng của bạn bè

Điều kiện bắt đầu - Người chơi có kết nối mạng - Người chơi mở ứng dụng Steam Điều kiện kết thúc - Người chơi vào được phòng bạn bè

- Người chơi thấy được bạn bè

Ngày đăng: 15/05/2024, 09:23

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan