Chương 1: GIỚI THIỆU DE TÀI 1. Tổng quan Hiện nay, với sự phô cập rộng rãi của mạng internet va các thiết bị điện tử trong thời đại công nghệ 4.0, nhu cầu về việc giải trí của mọi người cũng ngày càng tăng và một trong những lựa chọn đó là chơi game, đặc biệt là sau đại dịch covid thì game ngày càng được biết đến rộng rãi. Tính riêng tại nước ta đã có khoảng 50 triệu người chơi game, chiếm 50% dân số. Điều đó cho thay thị trường game là một trong những thi trường lớn nhất trong lĩnh vực giải trí.
Hiện nay, có rất nhiều công cụ phát triển game trên thị trường như Unity, Unreal, Godot, Armory, CryEngine, GameMaker,. được các nhà phát triển và cộng đồng của họ trang bị rất nhiều công cụ và giải pháp giúp cho người sử dụng có thé phát triển game của mình một cách nhanh chóng và hiệu quả. Mục đích chính của dé tài là nghiên cứu và phát triển một trò chơi đa người chơi, thêm vào đó là áp dụng các nguyên lý thiết kế, mẫu thiết kế, các phương pháp và thuật toán tôi ưu dé mang đến một sản phẩm tốt nhất. Điều này yêu cầu khả năng tìm hiểu và lượng kiến thức tong hợp cực kỳ lớn dé có thé áp dụng nó vào quy trình thực hiện, rat phù hợp dé làm minh chứng cho kiến thức va kỹ năng mà bản thân có được trong quá trình học tập tại trường.
Mục tiêu thực hiện Mục tiêu của đề tài là xây dựng một game phối hợp trực tuyến hỗ trợ tối đa 4 người chơi trên nền tảng Window 10. Game sẽ được phát triển dựa trên công cụ Unity Engine và các tính năng mà công cụ này cung cấp. Ngoài ra còn có việc tìm hiểu và áp dụng thêm các thuật toán tối ưu phù hợp dé game chạy mượt mà, giảm tải chi phí ở mức tối đa. Phạm vi - Pham vi môi trường: Ung dụng chạy trên hệ điều hành Microsoft Window.
- Pham vi chức năng: o Đối với game:. Game 3D, góc nhìn nghiêng từ trên xuống. Hình anh, đồ hoa low poly. Có khả năng choi co-op từ 1 đến 4 người.
o Đố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 dé 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: e Chức năng coop: người chơi có thé chơi với nhau bang cách tạo phòng va mời người chơi khác tham gia vào trận đấu của mình.
e _ Hệ thống đánh giá kết quả: sau khi kết thúc màn chơi, hệ thống sẽ trả về kêt quả mà người chơi có được dựa trên thang tính diém. Đối tượng sử dụng: Người chơi có đam mê với thê loại game co-op, có thê chơi từ 1 dén 4 người cùng nhau trên nền tảng window 10. Phương thức thực hiện: o Tìm hiểu cách làm model va animation với blender và mixamo. o Tìm hiểu Netcode For GameObject dé triển khai tính năng co-op.
© Nghiên cứu và sử dụng các dịch vụ của Unity Cloud để lưu trữ, chạy server. o Sử dụng Github dé quan ly source code. Các game tương tự trên thị trường: 1. The Ascent i The Ascent là game trực tuyến bắn súng nhập vai, được đặt trong một thé giới cyberpunk tap nap trên hành tinh Veles.
Trò chơi có tính năng chơi đơn va choi đa người cho phép người chơi kết hợp cùng những game thủ khác trên toàn cầu chiến đấu cùng nhau. Bước vào game, bạn sẽ vào vai một nô lệ dưới quyền của tập đoàn Ascent Group. Việc của bạn là nhận nhiệm vụ của tập đoàn này và hoàn thành nó. Khả năng nâng cấp nhân vật theo ý thích, vũ khí đa dạng kết hợp với âm thanh và đồ họa đã mang đến sự thành công của trò chơi này.
Zombie Blast Crew là một game lay chủ dé là vào dai dịch xác sông lan truyền khắp mọi nơi. Tham gia vào game, bạn sẽ vào vai một người sống sót và đi giải cứu những người sống sót khác và chiến đấu, bạn phải tìm cách tiêu diệt hết những con xác sống dé hoàn thành game, và dé thực hiện được điều đó thi bạn có trang bi cho người chơi của mình các loại súng hoặc các loại vũ khí khác nhau. Tiêu diệt càng nhiều xác sống, bạn nhận được càng nhiều tiền thưởng để nâng cấp trang bị và mở khóa các kỹ năng mới có thé kích hoạt trong quá trình chơi. Hệ thống vũ khí đa dạng, đồ họa gọn nhẹ phù hợp với nhiều thiết bị là điểm mạnh của trò chơi nay.
Chương 2: CƠ SỞ LÝ THUYÉT VÀ CÔNG NGHỆ 2. Unity: Ky Unity Hinh 2.1: Unity Unity là công cụ phat trién game được tạo ra va phát trién cho đến nay bởi tập đoàn Unity Technologies từ năm 2005. Công cụ này hỗ trợ cả đồ họa 2D và 3D, sử dụng C# là ngôn ngữ lập trình chính. Ngoài việc dùng để phát triển game thì nó cũng được sử dụng dé làm các video ngăn.
Một vài diém mạnh cua unity: — Đa nền tảng : chúng ta có thé sử dung Unity dé tạo ra trò chơi chạy được trên các nên tảng máy tính, điện thoài, consle cùng lúc. Nó cũng có thể dùng để phát triển các ứng dụng trên nền tang thực tế ảo và thực tế ảo tăng cường. — Công cụ đa dang: 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 ly, AI,.
— Cộng đồng: một điểm mạnh khác khi sử dụng công cụ này là nó có một cộng đồng đông dảo và nhiệt tình, bạn có thể lên đây tìm kiếm câu trả lời cho các vấn đề mình gặp phải trong quá trình phát triển trò chơi. Unity cũng có tổ chức 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 nha phát triên khác. Và trên thực tế thì đã có rất nhiều sản phẩm như Among us, Fall Guys, Genshin Impact,. đã dat được những kết quả nhất định trong nền công nghiệp game.
Chứng minh sức mạnh của công cụ này. Netcode for GameObjects NETCODE FOR Hinh 2.2: Netcode for GameObjects Netcode for gameobject (NGO) là là một thu viện mang cấp cao cho Unity, giúp xây dung game nhiều người chơi với Unity. Với NGO, người dùng có thé bỏ qua các van đề liên quan đến giao thức mang cấp thấp mà tập trung vào phát triển trò chơi của mình. Cầu trúc liên kết mạng Câu trúc liên kêt mạng định nghĩa cách sắp xêp một mạng.
Trong bôi cảnh của các trò chơi nhiêu người chơi, điêu này chủ yêu liên quan đên cách các máy khách, máy chủ va máy chủ trung tâm được kêt nôi và giao tiép. Các câu trúc liên kêt mạng khác nhau 10 có những lợi ích và hạn chê khác nhau, tùy thuộc vao loại trò chơi ma chúng ta muôn tạo ra. NGO hỗ trợ 2 cấu trúc liên kết mạng là mô hình client — server và mô hình mạng phân tán. Mô hình client — server Mô hình client — server có thê triển khai theo 2 hướng là dedicated game server và client-hosted listen server 2.1 Dedicated game server Hình 2.3: Mô hình dedicated game server Mô hình dedicated game server bao gồm I máy chủ đồng bộ và xử lý hầu hết toàn bộ dữ liệu của trò chơi, người dùng tham gia game bằng cách kết nối với máy chủ này ở vai tro client.
11 Ưu điểm của mô hình dedicated game server là chúng ta có thé quản lý toàn bộ trò chơi của mình, ngăn ngừa người chơi sử dụng các phương pháp gian lận một cách tốt nhất. Đôi lại thi mô hình này tốn khá nhiều chi phí để duy trì máy chủ.2 Client-hosted listen server Hình 2.4: Mô hình client-hosted listen server Khác với mô hình ở trên thi với client-hosted listen server, chúng ta sẽ không có máy chủ của riêng mình mà sẽ do một máy khách đảm nhận công việc này gọi là host. Ưu điểm của mô hình client-hosted listen server này là chúng ta không tốn chi phí dé duy tri máy chu, nhưng kéo theo đó là việc tốc độ của trò chơi phụ thuộc hoàn toàn vào máy host, ngoài ra thì các phương pháp chống gian lận cũng khó thực hiện được do máy khách hoàn toàn quản lý trò chơi. Mô hình mạng phân tán 12 Hinh 2.5: M6 hinh mang phan tan Đặc trưng của mô hình mạng này là không có máy chủ trung tâm, các máy của những người chơi khác nhau sẽ liên kết trực tiếp với nhau và quyền quản trị của các máy là như nhau, hay còn có nghĩa là mỗi máy của người chơi là một máy chủ riêng và hoạt động độc lập.
Điều đó giải quyết được nhược điểm mô hình client— server là trong trường hợp có máy gặp sự có thì nó không ảnh hướng đến các máy khác và trò chơi vẫn chơi được bình thường. Tuy nhiên nhược diém của mô hình này là phức tạp hon đê triên khai và các van dé về chống gian lận cũng khó dé thực hiện. Các khái niệm cơ bản trong NGO Dé kết nối qua mạng cần có : - NetworkManager: Là lớp đóng vai trò trung tâm điều khiển của mọi hoạt động NGO. NetworkManager 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.
13 - NetworkVariables: các thuộc tinh của một lớp trong trò chơi muốn đồng bộ qua mang cần được khai báo trong một wrapper gọi là NetworkVariables. - NetworkBehavior: là một lớp kế thừa từ lớp MonoBehavior của unity, dé đồng bộ trạng thái và giá tri của NetworkVariables của một lớp thì các lớp này phải được kế thừa từ NetworkBehavior. - NetworkObject: một gameobject muốn tương tác và phản hồi với netcode thì phải chứa NetwordObject và ít nhất một class kế thừa từ NetworkBehavior. Đề đồng bộ hóa các trạng thái và sự kiện, NGO có ba tùy chọn dé đồng bộ hóa trạng thai và sự kiện của trò chơi : - Messaging system : o Remote procedure calls: là cách gửi thông báo sự kiện cũng như cach xử ly liên lạc trực tiếp giữa máy chủ và máy khách hoặc giữa máy khách và dịch vụ ủy quyền phân tán.
o Custom Message: là một cách dé bạn có thé tùy chỉnh cách gửi thông báo của mình. - NetworkVariables: được xử lý bởi hệ thống nhắn tin nội bộ. Nghiên cứu và áp dụng NGO trong đồ án Game sẽ được xây dựng theo mô hình dedicated game server với máy chủ do chúng ta quản lý, người chơi muốn tham gia vào game thì sẽ kết nối với máy chủ này ở vai trò client.