1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập lớn lập trình game Đề tài xây dựng game 2d crab crawler

32 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Game 2D Crab Crawler
Tác giả Nguyễn Mạnh Hùng, Võ Nhân Quý, Nguyễn Thị Thắm, Trần Thị Anh Thơ
Người hướng dẫn ThS. Trịnh Thị Ngọc Linh
Trường học Đại học Đà Nẵng
Thể loại bài tập lớn
Năm xuất bản 2024
Thành phố Đà Nẵng
Định dạng
Số trang 32
Dung lượng 2,22 MB

Cấu trúc

  • CHƯƠNG 1. XÂY DỰNG KỊCH BẢN GAME (9)
    • 1.1 Khái niệm trò chơi (9)
    • 1.2 Yếu tố trò chơi (9)
    • 1.3 Nhân vật người chơi (Đối tượng người chơi) (9)
    • 1.4 Kẻ thù quái vật (9)
    • 1.5 Tăng sức mạnh di chuyển (13)
    • 1.6 Level (13)
    • 1.7 Cảnh chơi (13)
    • 1.8 Các thành phần giao diện người dùng (15)
  • CHƯƠNG 2. KẾT QUẢ XÂY DỰNG GAME (17)
    • 2.1 Mô tả các scene (17)
    • 2.2 Mô tả các game object và các component liên quan (21)
    • 2.3 Mô tả các lớp C# script (21)
    • 2.4 Các phương thức chính (22)
    • 2.5 Phương thức Start() (26)
    • 2.6 Âm thanh (27)
    • 2.7 Các nội dung khác (nếu có) (chẳng hạn AI, công nghệ mới…) (28)
  • TÀI LIỆU THAM KHẢO (32)

Nội dung

- Đôi mắt to tròn, luôn mở to như đang ngạc nhiên về mọi thứ xung quanh - Trò chơi sẽ có nhiều không gian khác nhau buộc Cua Vàng phải đi xa Chức năng: - Di chuyển theo mọi hướng bằng p

XÂY DỰNG KỊCH BẢN GAME

Khái niệm trò chơi

Trò chơi này dành cho những ai yêu thích phiêu lưu và khám phá, đòi hỏi sự kiên nhẫn và khéo léo Người chơi cần nhanh nhẹn vượt qua các vùng nước khô hạn, tránh né những loài săn mồi hung dữ và các cạm bẫy sắc nhọn như san hô Để bảo đảm an toàn, nhân vật Crabby cần tìm kiếm các vũng nước trên đường đi nhằm duy trì độ ẩm và tránh mất sức.

- Xây dựng 5 level với nhiều độ khó khác nhau, để người chơi có thể thử sức

Nhân vật người chơi (Đối tượng người chơi)

Người chơi sẽ vào vai Cua Vàng Crabby trong hành trình trở về lâu đài cát Trên đường đi, Cua Vàng Crabby phải vượt qua nhiều chướng ngại vật, và nếu chạm phải, sẽ ngay lập tức bị quay về vị trí ban đầu.

- Đôi mắt to tròn, luôn mở to như đang ngạc nhiên về mọi thứ xung quanh

- Trò chơi sẽ có nhiều không gian khác nhau buộc Cua Vàng phải đi xa

- Di chuyển theo mọi hướng bằng phím mũi tên, nhảy lên bằng phím space

- Có thêm các kỹ năng đặc biệt như: nhảy cao

Kẻ thù quái vật

Quái vật là những con bot AI tự động xác định vị trí và tiêu diệt nhân vật Khi nhân vật va chạm với quái vật, nhân vật sẽ bị tiêu diệt và màn chơi sẽ kết thúc.

- Cá nóc: Đôi mắt to tròn dễ thương nhưng ẩn chứa sự nguy hiểm, có thể phóng to thu nhỏ cơ thể.

Chức năng:Di chuyển lên xuống trong khe nước, phóng to cơ thể khi nổi lên và thu nhỏ cơ thể khi lặn xuống.

Hình 1: Quái vật kẻ thù Al (Cá nóc)

- San hô: Mọc rải rác trên đường đi và dưới đáy nước, bản chất san hô có nhiều gai góc và độc tố.

Chức năng: Làm cho Cua Vàng kết thúc cuộc hành trình

Hình 2: Quái vật kẻ thù Al (San Hô)

- Rùa biển: Rùa biển màu xanh bơi sấp với chiếc mai to dày.

Chức năng: Platform cho người chơi nếu nhảy lên mai.Người chơi bị hạ gục nếu va chạm trực tiếp.

Hình 3: Quái vật kẻ thù Al (San Hô)

- Chim hải âu: Chim hải âu trắng

Chức năng:Lao đến hạ gục người chơi.

Hình 4: Quái vật kẻ thù Al (Chim Hải Âu)

- Cá mú: Cá mú màu đỏ

Chức năng: Lao vào người chơi khi đến gần.Người chơi bị hạ gục nếu va chạm trực tiếp.

Tăng sức mạnh di chuyển

- Vũng nước: Vũng nước biển trên bãi cát

+ Hồi phục độ ẩm cho cua

+ Người chơi di chuyển nhanh hơn, nhảy cao hơn di chuyển bên trong.

Vũng nước không chỉ làm giảm thanh độ ẩm mà còn có thể chứa các vật phẩm đặc biệt hoặc cất giấu những con đường bí mật.

Level

- Khi level tăng lên thì đồng thời độ khó cũng tăng dần

- Nhiều chướng ngại xuất hiện hơn và con đường đến cánh cửa sẽ khó khăn và cản trở hơn các level trước đó

- Level càng cao thì độ ẩm tụt nhanh hơn.

Cảnh chơi

- Các thành phần trò chơi: Nhân vật Crabby, các kẻ thù, chướng ngại vật, vũng nước, cờ check point, , lâu đài cát

Mục tiêu chính là vượt qua các chướng ngại vật trong suốt hành trình để đến được lâu đài cát, đồng thời hoàn thành các màn chơi từ dễ đến khó.

Khám phá đại dương Mở rộng bản đồ, tìm kiếm các khu vực mới, khám phá :

- Cờ checkpoint: Ghi lại địa điểm đã vượt qua, khi chết sẽ quay lại điểm checkpoint, checkpoint thành công được cộng thêm 1 lượt chơi.

Các thành phần giao diện người dùng

Thanh máu (Health Bar): Hiển thị sức khỏe của Crabby Khi gặp phải kẻ thù hoặc chướng ngại vật, Crabby sẽ mất máu.

Thanh độ ẩm (Moisture Bar): Vì Crabby là sinh vật biển, độ ẩm rất quan trọng.

Nếu Crabby lên bờ quá lâu, độ ẩm sẽ giảm và cuối cùng chết nếu không tìm được vũng nước Thanh độ ẩm hiển thị lượng nước còn lại.

Hình 9: Thanh độ ẩm Biểu tượng cảnh báo độ ẩm: Một biểu tượng sẽ xuất hiện khi thanh độ ẩm của

Crabby giảm xuống mức nguy hiểm, cảnh báo người chơi cần tìm vũng nước ngay lập tức.

KẾT QUẢ XÂY DỰNG GAME

Mô tả các scene

+ Background: Hình nền cát và biển đầy mát mẻ

+ Buttons: Các nút New Game, New Plus Game, Settings

+ Title: Tên game “CRAB CRAWLER”

Mô tả: có thiết kế tối giản, dễ sử dụng với các mục chính được phân chia rõ ràng. + Các thành phần chính:

+ Background: Hình nền bờ biển, và các địa hình.

+ Buttons: Các nút Volume, Turn On/ Off Music, Full Screen

+ Mô tả: Màn hình kết thúc trò chơi, hiển thị trở về menu, hoặc Retry, Settings. + Các thành phần chính:

+ Buttons: Các nút “Retry”, Settings và Quit

Hình 4: Giao diện win game

Màn hình kết thúc trò chơi hiển thị tùy chọn trở về menu hoặc chuyển sang màn chơi khác Lâu đài cát có thể đóng vai trò là điểm cuối của mỗi màn chơi, đồng thời cũng là khu vực trung tâm để người chơi thực hiện mua sắm, nâng cấp và tham gia các hoạt động mini-game.

- Hiển thị thông báo “Level Complete”:

+ Buttons: Các nút Quit Menu, Settings và Next Level

Hình 5: Nhân vật người chơi

Trong trò chơi, nhân vật người chơi Crabby phải sử dụng trí tuệ và kỹ năng nhạy bén để vượt qua các thử thách Mặc dù không có giới hạn thời gian, người chơi cần tránh chướng ngại vật và kẻ thù để duy trì sự sống và tiếp tục hành trình khám phá về lâu đài cát Điều khiển nhân vật bằng các phím “a”, “s”, “d”, “w” hoặc các phím mũi tên để di chuyển lên, xuống, trái và phải.

Mô tả các game object và các component liên quan

 Transform: Xác định vị trí, hướng và tỉ lệ của nhân vật.

 Character Controler: Áp dụng vật lý để nhân vật có thể di chuyển.

 Animator: Quản lý các hoạt ảnh của nhân vật

 Kẻ thù: Quái vật AI, chướng ngại vật

● Transform: Xác định vị trí, hướng và tỉ lệ của quái vật.

● Animator: Quản lý các hoạt ảnh của quái vật

● Nav Mesh Agent:Giúp nhân vật di chuyển thông minh trong trò chơi

Mô tả các lớp C# script

Để quản lý các sprite trong thẻ project, bạn cần thực hiện bước đầu tiên là nhấp chuột phải vào folder Scripts mà bạn đã tạo Sau đó, chọn "Create C# Script" nếu bạn sử dụng ngôn ngữ lập trình C#, hoặc chọn "Javascript" nếu bạn đang dùng ngôn ngữ lập trình Java.

● Bước 2: Ta kéo Script mới tạo vào game object cần sử dụng nó.

● Bước 3: Mở Script mới tạo và các câu lệnh bằng C#.

Một số class quan trọng

PlayerController.cs là một script trong Unity được sử dụng để điều khiển nhân vật người chơi trong trò chơi 2D Nó bao gồm các chức năng chính như di chuyển, nhảy, cúi người và tương tác với môi trường xung quanh.

Move: Người chơi di chuyển nhân vật bằng cách điều chỉnh giá trị “horizontal” từ input.

Crouch: Khi người chơi nhấn phím cúi, nhân vật sẽ thay đổi kích thước và động tác của collider (lớp con của crabCollider)

CreateDust: Tạo ra hiệu ứng bụi khi người chơi nhảy từ mặt đất.

CreateWaterIn / CreateWaterOut: Tạo ra các hiệu ứng nước khi vào hoặc ra khỏi nước.

HandleStepSounds: Phát các âm thanh bước chân khi nhân vật di chuyển trên các mặt đất khác nhau.

HandleWaterSounds: Quản lý âm thanh nước khi người chơi vào hoặc ra khỏi nước.

Các phương thức chính

Chức năng: Khởi tạo số mạng và cập nhật giao diện sức khỏe khi trò chơi bắt đầu. Cách hoạt động:

○ Tải số mạng từ hệ thống lưu trữ (SaveSystem).

○ Cập nhật sprite sức khỏe dựa trên số mạng hiện tại.

○ Nếu hết mạng: Kích hoạt kết thúc trò chơi (GameOver).

 Di chuyển nhân vật về điểm hồi sinh (currentCheckSpawnpoint).

 Khôi phục oxy của nhân vật (oxygenScript.Add()).

 Sau 0.4 giây, gọi hàm ReturnPlayerMovement để khôi phục di chuyển.

 Đặt trạng thái isDead thành false và tắt hoạt ảnh chết.

Chức năng: Khôi phục khả năng di chuyển của nhân vật sau khi hồi sinh. Cách hoạt động:

○ Mở khóa các ràng buộc vật lý.

○ Đặt Rigidbody để chỉ giới hạn xoay (không xoay ngang/dọc).

Chức năng: Thêm một mạng cho người chơi khi đạt checkpoint.

○ Nếu số mạng hiện tại ít hơn 3 và lớn hơn 0:

 Cập nhật sprite sức khỏe để phản ánh thay đổi.

Hình 6: Code script PlayerHealth.cs

Hình 7: Code script PlayerHealth.cs

Đoạn script MainMenuBehaviour.cs quản lý hành vi của menu chính trong trò chơi, tập trung vào việc hiển thị các nút như "Resume" (Tiếp tục) và xử lý trạng thái ban đầu của menu.

Biến: o resumeButton: Tham chiếu đến đối tượng GameObject đại diện cho nút

Resume the game from a saved state using the EventSystem in Unity, which facilitates the management of button selections within the interface.

Phương thức Start()

Phương thức này được gọi khi menu chính được khởi tạo Nó thực hiện các bước:

Kiểm tra dữ liệu lưu trữ

○ Kiểm tra xem có dữ liệu trò chơi đã lưu hợp lệ hay không.

○ Nếu không có dữ liệu:

 Ẩn nút Resume (resumeButton.SetActive(false)).

 Đặt nút được chọn mặc định là New Game

(eventSystem.SetSelectedGameObject(newGameButton)). Hiển thị chế độ Hard Mode

Lấy đối tượng con đầu tiên của nút Resume (có thể là một chỉ báo hoặc biểu tượng).

 Kiểm tra xem chế độ Hard Mode có được bật trong dữ liệu lưu hay không.

 Nếu có, chỉ báo (indicator) sẽ được hiển thị (indicator.SetActive(true)).

Hình 8: Code script MainMenuBehaviour.cs

Âm thanh

 Background Music: sử dụng 1 âm thanh xuyên suốt game.

Âm thanh trong trò chơi bao gồm hiệu ứng âm thanh khi va chạm với quái vật và khi nhân vật chết, âm thanh khi nhảy ra khỏi nước, âm thanh tại các điểm checkpoint, âm thanh trước khi vào game và âm thanh trong quá trình chơi.

Thêm âm thanh vào game

 Sử dụng AudioSource component để phát âm thanh.

 Thêm AudioClip vào AudioSoure và gọi Play() khi cần

Các nội dung khác (nếu có) (chẳng hạn AI, công nghệ mới…)

Quái vật AI : sử dụng thuật toán A* để tìm đường đi đến nhân vật Vẽ đường đi v tính toán bằng Gizmos.

Class c# quan trọng : Seeker.cs

Các biến thuộc tính của đường đi trong hệ thống bao gồm: `drawGizmos`, cho phép vẽ đường đi đã tính toán bằng Gizmos; `detailedGizmos`, cho phép vẽ đường đi chi tiết trước khi xử lý hậu kỳ; `startEndModifier`, là đối tượng sửa đổi điểm bắt đầu và kết thúc của đường đi; `traversableTags` và `tagPenalties`, xác định các thẻ mà Seeker có thể đi qua và hình phạt tương ứng cho mỗi thẻ; và `graphMask`, xác định các đồ thị mà Seeker có thể sử dụng.

Các phương thức chính bao gồm: Awake() để khởi tạo các biến và gọi phương thức Awake của startEndModifier; GetCurrentPath() trả về đường đi hiện tại; CancelCurrentPathRequest(bool pool) để hủy bỏ yêu cầu đường đi hiện tại; OnDestroy() giúp dọn dẹp các biến và giải phóng các đường đi đã được yêu cầu; RegisterModifier(IPathModifier modifier) cho phép đăng ký một bộ sửa đổi; và DeregisterModifier(IPathModifier modifier) để hủy đăng ký bộ sửa đổi Cờ drawGizmos kích hoạt tính năng này và chi tiếtGizmos cung cấp trực quan hóa đường dẫn chi tiết hơn.

Công cụ sửa đổi cho phép tùy chỉnh các đường dẫn bằng cách điều chỉnh độ mịn và xác định điểm bắt đầu cũng như điểm kết thúc Trong đó, startEndModifier là một công cụ sửa đổi tích hợp, trong khi các công cụ sửa đổi bổ sung có thể được đăng ký và sắp xếp theo thứ tự thực hiện của chúng.

Những rng buộc v hình phạt về đường dẫn:

Người tìm kiếm có thể được cấu hình để chỉ duyệt qua một số thẻ nhất định và tránh các thẻ khác thông qua việc thiết lập các Thẻ có thể truyền tải Hệ thống cũng có thể áp dụng hình phạt cho các thẻ cụ thể, làm cho chúng ít được ưa chuộng hơn trong quá trình tìm đường bằng cách sử dụng mảng tagPenalties GraphMask cho phép chỉ định biểu đồ nào cần được xem xét trong quá trình tìm đường, điều này rất hữu ích cho các cảnh phức tạp với nhiều biểu đồ tìm đường.

Lớp Seeker cung cấp các lệnh gọi lại cho phép thực thi mã tùy chỉnh tại nhiều giai đoạn trong quá trình tìm đường, bao gồm các lệnh gọi lại trước khi xử lý đường dẫn (preProcessPath), sau khi xử lý đường dẫn (postProcessPath), và khi đường dẫn hoàn tất (pathCallback và tmpPathCallback).

Chức năng cốt lõi của Người tìm kiếm l quản lý các yêu cầu đường dẫn.

Seeker hỗ trợ khởi tạo các đường dẫn mới và hủy bỏ các yêu cầu đường dẫn đang diễn ra, đồng thời xử lý việc hoàn thành các đường dẫn Nó đảm bảo rằng chỉ một đường dẫn được xử lý tại một thời điểm, đồng thời thực hiện việc hủy và dọn dẹp đường dẫn một cách chính xác để ngăn ngừa rò rỉ bộ nhớ.

Khởi tạo v dọn dẹp đường dẫn:

Phương thức Awake khởi tạo Seeker và công cụ sửa đổi bắt đầu/kết thúc của nó Đồng thời, phương thức OnDestroy đảm bảo rằng tất cả các đường dẫn đã được xác nhận quyền sở hữu sẽ được giải phóng, nhằm ngăn chặn rò rỉ bộ nhớ và thực hiện các phương thức dọn dẹp cần thiết.

KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN

Unity là phần mềm phát triển game đa nền tảng do Unity Technologies phát triển, cho phép tạo ra trò chơi trên PC, console, thiết bị di động và website Phần mềm này nổi bật với tính năng hỗ trợ đa nền tảng, giao diện dễ sử dụng và chi phí hợp lý, bao gồm cả phiên bản miễn phí.

The Unity interface consists of five main windows: Scene, Hierarchy, Game, Project, and Inspector The Scene view allows for the arrangement of Game Objects, while the Hierarchy displays the Game Objects present in the current Scene The Game window serves as a demo screen for the game, and the Project window shows detailed information about all the resources in your game Lastly, the Inspector provides detailed information about the selected Game Object, including its attached components and properties.

Qua trò chơi demo, chúng em đã tiếp cận công nghệ làm game, tìm hiểu phương pháp và nền tảng tối ưu Trong quá trình xây dựng game, chúng em nhận thấy nhiều vấn đề phát sinh và khó khăn hơn dự kiến, với nhiều lỗi trong code cần khắc phục Một lỗi nhỏ có thể làm hỏng toàn bộ hệ thống, vì vậy khi thiết kế game, việc chia nhỏ từng công việc và module là cần thiết để dễ dàng xây dựng và kết nối các thành phần khi chúng đã hoạt động ổn định Việc viết game rất tốn thời gian cho các công việc này.

+ Tạo âm thanh cho trò chơi và một số chức năng khác.

 Nội dung chưa làm được:

+ Do kiến thức về Unity còn hạn hẹp nên còn thiếu một số chức năng trong game

+ Chưa xây dựng được một game hoàn chỉnh với nhiều chức năng như mong đợi.

2 Hướng phát triển cho game

+ Thiết kế thêm và hoàn thiện về player (vũ khí và các nâng cấp).

+ Thiết kế thêm và thêm chức năng cho Enemy (phù hợp với bản đồ).

+ Thiết kế thêm các màn chơi, các vật phẩm tăng sức mạnh

+ Chức năng unlock vũ khí, điều chỉnh độ khó của màn chơi.

+ Các chức năng điều chỉnh options (âm thanh, ánh sáng).

Ngày đăng: 11/12/2024, 10:18

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN