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 dung giao diện game.
- Chương 5: Kết luận. GIỚI THIỆU ĐÈ TÀI 1.1 Tổng quan: - Ngày này, nhu cầu giải trí bằng game trên thế giới nói chung và Việt Nam nói riêng hiện này rất lớn. Đối tượng sử dụng từ người trẻ đến người già. Tại Việt Nam, có khoảng hơn nửa dân số Việt Nam đã và đang tiếp cận với game và chiếm khoảng 65% từ độ tuổi 17 đến 30, nhất là thời kỳ covid thì lượng người chơi còn tăng đột biến hơn.
Hơn thế, thị phần doanh thu của ngành công nghiệp game ở Việt Nam hiện nay vượt qua 500 triệu USD. Tắt cả điều cho thấy ngành công nghiệp game dang lớn mạnh lên từng ngày. - Người chơi càng tăng, sự cạnh tranh của các nhà phát triển càng lớn. Song song, việc tạo dựng một game tốn nhiều thời gian cho các khâu khác nhau, chúng ta cần phải tìm cách giảm bớt, tự động hoá dan dé tiết kiệm được thời gian và công sức.
- Việc tạo ra nhưng game có màn chơi phong phú, đa dạng giúp thu hút thêm những tệp người chơi là những yếu tốt then chốt tạo nên sự thành công của game đó. Tuy nhiên, việc tạo thủ công ra nhiều màn chơi gây mat nhiều thời gian và công sức. Do đó, việc sử dụng những phương pháp, thuật toán giúp quá trình ấy tự động hoá, linh hoạt hơn rất cần thiết. - Mục đích của đề tài này là nghiên cứu áp dụng các thuật toán, giải pháp từ Map Generator để tạo ra những thử thách trong game trở nên đa dạng, giúp sự trải nghiệm của người chơi phong phú, hấp dẫn hơn.
Thông qua việc tìm hiểu và áp dụng Map Generator dé tự động tạo màn chơi cho game, nhóm chúng em hy vọng sẽ nâng cao chất lượng va hiệu quả trong quá trình phát triển game.2 Phạm vi thực hiện: Phạm vi môi trường: Game được chạy trên hệ điều hành Windows hay macOS. Phạm vi chức năng - Đối với game: + Game 3D, góc nhìn bao quát từ trên xuống. - Đối với gameplay: + Game ban súng map rộng, hạ được kẻ địch và né các chướng ngại vật sẽ hoàn thành màn chơi va qua man mới. + Các màn chơi có độ khó tăng lên qua từng màn và từng dạng map.
+ Các chức năng chính trong game: e Hệ thống người chơi: là nhân vật chính trong game, ta có thể chọn nhân vật khác nhau với loại súng khác nhau. o Di chuyên: người chơi có điêu khiên nhân vật di chuyên băng các phim WASD hoặc các phím mũi tên. o Tân công: người chơi có thê băn ra những viên đạn theo hướng bang chuột. e Hệ thống kẻ địch: các kẻ địch khác nhau sẽ gây ảnh hưởng sát thương khác nhau đên người chơi.
o_ Kẻ địch cầm dao: Di chuyên: nó sẽ tuân tra xung quanh nơi nó xuât hiện, khi gap người chơi nó sẽ đuôi theo người chơi và tan công. Tân công: nó vào tâm tân công sẽ câm dao đâm người chơi, gây mât máu cho người chơi. o Kẻ địch cam boom: Di chuyên: nó sẽ tuân tra xung quanh nơi no xuât hiện, khi gap người chơi nó sẽ đuôi theo người chơi và tân công. Tân công: khi chạm vào được người chơi nó sẽ phát nô, gây sát thương cho người chơi và nó cũng chết.
o Kẻ địch cam súng luc: Di chuyên: nó sẽ tuân tra xung quanh nơi nó xuât hiện, khi gặp người chơi nó sẽ đuôi theo người chơi và tân công. Tân công: khi vào tâm tân công, nó sẽ băn súng gây sát thương cho người chơi. o Kẻ địch cam súng lục có khiên: = Di chuyền: nó sẽ tuần tra xung quanh nơi nó xuất hiện, khi gặp người chơi nó sẽ đuổi theo người chơi và tan công. = Tấn công: khi vào tầm tan công, nó sẽ ban súng gây sát thương cho người chơi.
= Khả năng riêng: có thé tạo khién chắn đạn của người chơi. o Kẻ địch cầm súng boom: “Di chuyên: nó sẽ tuần tra xung quanh nơi nó xuất hiện, khi gặp người chơi nó sẽ đuôi theo người chơi và tấn công. = Tấn công: khi vào tầm tan công, nó sẽ ban súng gây sát thương cực lớn vao | vùng. e Hệ thống chướng ngại vật: các chướng ngại vật sẽ gây khó khăn cho người chơi, các map khác nhau sẽ có chướng ngại vật khác nhau.
o Map đỏ: = Các u súng sẽ phun lửa vào một hướng và một thoi gian nhất quán, khi người chơi đi qua sẽ bị mất máu. » Thảm lửa: Thảm lửa sẽ gây sát thương liên lục cho người chơi khi đứng trên đó buộc người chơi phải đi hướng khác hoặc chịu mat một lượng máu. = Boom lửa: sát thương n6 gây ra khi người chơi va chạm có hiệu ứng thiêu rụi, gây mất máu liên tục trong một khoảng thời gian ngắn sau đó. o Map xanh nước: = Mưa băng rơi: Sau một thời gian nhất định các cột băng sẽ đồ xuống theo góc nghiêng.
Nếu người chơi đi qua lỡ va chạm sẽ gây sát thương, choáng và làm mât máu người chơi. = Tang băng đây: xuất hiện tang băng đây qua lại khi người chơi đi ngang sẽ bị cuốn đây theo chiều của nó mà không thể di chuyên. " Boom băng: khi va chạm sẽ khiến người bị mat máu kèm hiệu ứng bị làm chậm trong một thời gian ngăn. o Map xanh lá, vàng: = Bay hó: Hồ sâu sẽ được làm mờ đi một tý, khi người chơi đi qua bay sẽ nứt dần ra và khiến người rơi xuống vực va mat mạng.
= Bay bua: Cây búa sẽ đập quanh qua qua lại 180 độ khiến người chơi bị mất một lượng máu và đây ra xa khi va chạm, ở cuối đoạn va chạm người chơi sẽ bị choáng một thời gian ngắn. = Bay lay: Tạo những bãi lầy hình tròn khiến người chơi khi đứng trên đó sẽ liên tục bị mất máu và làm chậm. e Hệ thống máu: Người chơi sé bi mat máu khi bị kẻ địch tan công hoặc va chạm với chướng ngại vật. Hon thé, khi người choi di chuyển ra khỏi phạm vi cho phép (rơi xuống vực) người chơi sẽ hết máu ngay lập tức.
Nếu hết máu, người chơi sẽ thua. Người chơi có thé tìm giết các kẻ địch, đôi khi sẽ rơi ra viên hồi phục mau. e Hệ thống kết thúc màn chơi: khi người chơi chết có thé chơi lại, hoặc trở về màn hình chính. e Hệ thống màn chơi mới: khi người chơi tiêu diệt hết kẻ địch ở màn chơi hiện tại sẽ xuất hiện một cánh công dịch chuyền cho phép người chơi khi chạm vào sẽ tiến đến màn chơi mới.3 Đối tượng sử dụng: - Tất cả người chơi muốn giải trí với game.4 Phương pháp thực hiện: Phương pháp làm việc: - Làm việc nhóm với 2 thành viên, dưới sự chỉ dẫn của giảng viên hướng dẫn.
Phương pháp công nghệ: - Tìm hiểu cách làm việc với Unity. - Tìm hiểu các thực toán áp dụng cho Map Generator. - Sử dụng Trello dé quản lý tiến độ và công việc. - Sử dụng Github dé quan lý source code.
CHƯƠNG 2: CƠ SỞ LÝ THUYÉT VÀ CÔNG NGHỆ 2.1: Unity - Unity là một công cu phat trién game da nền tang được phát triển bởi Unity Technologies từ năm 2005. Unity hỗ trợ đồ họa 2D va 3D, ngôn ngữ lập trình được sử dung chủ yếu là ngôn ngữ C#. - Đa nền tang: Unity có thé duoc dung dé tao 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 cap một môi trường làm việc trực quan va 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 dao và nhiệt tinh, nơi có thé học hỏi, trao đôi kinh nghiệm và giải quyết các van đề khi phát triển game một cách đa dang và nhanh chong.
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 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 dé tạo ra nhiều game nổi tiếng như Among Us, Fall Guys, Genshin Impact, .2 Map Generator: Map generator trong lập trình game là tap hợp các giải pháp cho phép tạo va quan lý các loại hình bản đồ, địa hình và đối tượng một cách tự động, giúp tiết kiệm thời gian cho các nhà phát triển game.2: Map generator Dé tạo ra một man choi cho game bao gôm nhiêu bước thực hiện: - Ap dụng giải pháp Perlin Noise được sử dụng dé tạo ra một ma trận chứa các giá trị noise, từ đó dựa vào các giá tri noise xác định được địa hình như mặt dat và vực thăm phụ thuộc vào đặc tả game. - Ap dụng giải thuật BFS dé tìm ra các mảng kiến tạo, đồng thời tìm ra các vùng rơi trong mảng kiến tạo đó. - Ap dụng giải thuật A* đê tìm ra đường đi ngăn nhât giữa điêm xuât hiện nhân vật chơi và điêm qua màn mới.
Từ đó sinh ra các yêu tô chướng ngại vật cũng như quái vật trên đường đi của nhân vật chính. - Đề xuất một giải pháp mới, từ đó, áp dụng vô đề tạo ra các vùng tuần tra cho kẻ địch.1 Giải pháp Perlin Noise: - Đầu tiên khởi tạo một ma trận 2 chiều có kích thước là n x n. - Tạo các tọa độ ngẫu nhiên (x, y) tương ứng với mỗi ô vuông. Ví dụ tại ô vuông đầu tiên, giá trị x = 0 + offset (offset là giá trị ngẫu nhiên), tương tự VỚI gia tri y và các tọa độ khác.
9 - Khởi tạo ma trận 2 chiều gồm các gradient vector tương ứng với mỗi điểm trong ma trận. Vì các vector này đêu ngau nhiên nên có thê dan tới địa hình của map sẽ không tự nhiên. Vì vậy, làm cách nào chúng ta tạo ra địa hình một cách tự nhiên hơn? Random gradient vectors Tì- U~ị 1 Ũ () (i n Hinh 2.4: Khoi tao cac gradient vector - Xét từ một hình vuông chứa toa độ (x, y) bất kỳ, ta sẽ thu được tọa độ các góc của nó gồm: (xạ, Vo). (Xt V1)» (Xo, yị) như trên Hình 2.
Và các gradient vector: Øo,o› Ø[t,o]› Ø1,+J› Jfo,1] tương ứng như Hình 2.