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

Game space shooter

50 11 0

Đ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

Nội dung

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC & KỸ THUẬT MÁY TÍNH LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC Game Space Shooter Ngành: Khoa học Máy tính Hội đồng: GVHD: GVPB: SV thực hiện: Khoa Học Máy Tính Vương Bá Thịnh Trần Huy Vũ Minh Dương Tp Hồ Chí Minh, Tháng 12/2022 1810885 ĐẠI HỌC QUỐC GIA TP.HCM -TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA:KH & KT Máy tính BỘ MƠN: KHMT _ CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN ÁN TỐT NGHIỆP Chú ý: Sinh viên phải dán tờ vào trang thuyết trình HỌ VÀ TÊN: Vũ Minh Dương MSSV: 1810885 NGÀNH: Khoa học máy tính _ LỚP: MT18 Đầu đề luận án: Game Space Shooter _ Nhiệm vụ (yêu cầu nội dung số liệu ban đầu): Mô tả đề tài: ● Hiện thực game combat môi trường không gian Nhiệm vụ (yêu cầu nội dung số liệu ban đầu): ● Tìm hiểu lập trình game engine cụ thể ● Mơ việc di chuyển có qn tính mơi trường không trọng lực, kèm theo hiệu ứng môi trường thiên thạch hay thiên thể có trọng lực ● Hệ thống combat cân giáp - máu nhiệt ● Tìm hiểu networking game ● Tìm hiểu AI cho NPC ● Thiết kế game phù hợp ● Hiện thực game có kiểm thử Ngày giao nhiệm vụ luận án: 03/09/2022 Ngày hoàn thành nhiệm vụ: 12/12/2022 Họ tên giảng viên hướng dẫn: Phần hướng dẫn: 1) Vương Bá Thịnh 2) 3) Nội dung yêu cầu LVTN thông qua Bộ môn Ngày tháng năm CHỦ NHIỆM BỘ MÔN GIẢNG VIÊN HƯỚNG DẪN CHÍNH (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) PHẦN DÀNH CHO KHOA, BỘ MÔN: Người duyệt (chấm sơ bộ): Đơn vị: _ Ngày bảo vệ: Điểm tổng kết: _ Nơi lưu trữ luận án: _ Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Lời cam đoan Đề cương thực dựa vào tìm hiểu, nghiên cứu tác giả thực hướng dẫn thầy Vương Bá Thịnh Tác giả cam đoan nội dung, số liệu, mơ hình đưa thực tác giả với hỗ trợ Giảng viên hướng dẫn có trích dẫn rõ ràng lấy nguồn từ bên ngồi Sản phẩm đạt qua trình làm luận văn, ngồi cơng cụ asset bên ngồi đa nêu tác giả phát triển Nếu lời cam đoan khơng thật, tác giả chịu hồn tồn trách nhiệm chịu xử lý theo qui định Đại học Bách Khoa - Đại học quốc gia TP HCM Luận văn tốt nghiệp Trang i/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Lời cảm ơn Đầu tiên, tác giả xin gửi lời cám ơn chân thành đến Thầy, Cô, Anh Chị giảng viên trợ giảng, cán công nhân viên Khoa Khoa học Kỹ thuật Máy Tính trường Đại học Bách Khoa - Đại học Quốc Gia Thành phố Hồ Chí Minh cung cấp cho tác giả tảng vững tự tin để xây dựng đề tài Những năm dùi mài kinh sử giảng đường dìu dắt Khoa móng khơng thể thiếu luận văn Tác giả xin chân thành cảm ơn thầy Vương Bá Thịnh, giảng viên hướng dẫn đề tài dẫn nhiệt tình đắn suốt trình thực luận văn Sự đồng hành thầy yếu tố mà khơng có luận văn khơng thể hồn thiện Cuối khơng phần quan trọng, tác muốn gửi lời cảm ơn đến anh chị khóa trên, người bạn khóa đàn em khóa ln bên cạnh gắn bó, chia sẻ kiến thức, tạo động lực niềm tin để tác giả tiến bước tới Luận văn tốt nghiệp Trang ii/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tóm tắt báo cáo Trong báo cáo này, tác giả trình bày thành đạt trình nghiên cứu phát triển đề tài game Space Shooter 2D Nội dung cụ thể sau: • Mơ tả nêu mục tiêu đề tài • Trình bày trị chơi liên quan công nghệ sử dụng • Phân tích thiết kế hệ thống cần có game • Hiện thực hệ thống • Nêu kết đạt được, đánh giá kết luận Luận văn tốt nghiệp Trang iii/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Mục lục Lời cam đoan i Lời cảm ơn ii Tóm tắt báo cáo iii Lời mở đầu vii Giới thiệu 5.1 Mô tả sản phẩm 5.2 Mục tiêu Những trò chơi liên quan 6.1 Soul Knight 6.2 Starsector Công nghệ sử dụng 7.1 Game Engine 7.2 Thư viện mạng 10 7.3 Giải pháp tìm đường cho AI 13 Phân tích & thiết kế hệ thống 19 8.1 Thiết kế tổng quan 19 8.2 Hệ thống điều khiển 21 8.3 Hệ thống vũ khí 21 8.4 Hệ thống kiểm soát đồng đạn 21 8.5 Hệ thống sát thương sinh lực 21 8.6 Sinh phá hủy tàu vũ trụ 21 8.7 Các thiên thể chơi 22 8.8 Kiểm soát trạng thái chơi 22 8.9 Tàu máy điều khiển 22 8.10 Lobby, tạo vào phòng chơi 22 Hiện thực hệ thống 23 9.1 Hệ thống điều khiển 23 9.2 Hệ thống vũ khí 24 9.3 Hệ thống kiểm soát đồng đạn 24 9.4 Hệ thống sát thương sinh lực 25 9.5 Sinh phá hủy tàu vũ trụ 25 9.6 Các thiên thể chơi 26 9.7 Kiểm soát trạng thái chơi 26 9.8 Tàu máy điều khiển 28 9.9 Lobby, tạo vào phòng chơi 29 Luận văn tốt nghiệp Trang iv/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 10 Đánh giá kết đạt 32 11 Kết luận 38 Luận văn tốt nghiệp Trang v/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Danh sách hình vẽ Game Loop Unity Game Loop vật lý Unity Hai client đoán trạng thái tương lai dựa Tick server kiểm chứng 11 Các tính Photon Fusion 12 Đồng hai client với độ trễ khác với server 13 Các bước hành vi nhân vật chuyển động 14 Một trường hợp mà Steering Behaviour cho biểu không tự nhiên 15 Context Map tròn 15 Context Map dạng phẳng dùng cho game đua xe 16 10 Context Map mang tên interest cho hành vi tiến tới mục tiêu 16 11 Context Map mang tên danger cho hành vi tránh vật cản 16 12 Sinh Context Map sau 17 13 Chọn hướng di chuyển sau cho nhân vật 17 14 Hành vi Seek chọn mục tiêu gần hay nhiều mục tiêu tùy theo cách viết vào objective 18 15 Input người chơi 23 16 GameStateControllerBase Tick 26 17 GameStateControllerBase lần Render 27 18 GameStateControllerBase trước Tick 28 19 Menu khởi đầu 29 20 Menu tạo phòng 29 21 Menu chọn phòng 30 22 Menu staging PvP 30 23 Menu staging PvE 31 Luận văn tốt nghiệp Trang vi/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Phần luận lý chứa thông tin cho phép phần vật lý phục dựng viên đạn Tick xác định Phần Projectile Manager đồng tất client • Quá trình phục dựng viên đạn từ luận lý thành vật lý thực cục client Các thông tin, chức Fusion mà phần vật lý không truy cấp Projectile Manager cung cấp Phương pháp có lợi sau: • Chỉ cần Network Object • Đáp ứng hầu hết loại đạn • Sử dụng băng thơng vừa đủ Các nhược điểm bao gồm: • Đạn khơng thể tồn độc lập mà phải có Projectile Manager kiểm sốt nó, đồng nghĩa với vịng đời Projectile Manager phải dài viên đạn • Tương tác vật lý viên đạn phải xử lý thủ công 9.4 Hệ thống sát thương sinh lực Về bản, HP khiên lượng giống nhau, sinh lực, kích hoạt kiện cạn kiệt Vậy nên ta cần thực component để sử dụng cho hai Để thể cho sinh lực tàu vũ trụ, component khác mang tên ActorHealthBehaviour trung gian HP, khiên phần lại game Component (gọi Health) có cách thức hoạt động: bắt đầu trạng thái đầy, cạn kiệt hiệu cho component khác Người lập trình tùy chỉnh cho có khả hồi phục đến trạng thái đầy, lúc cạn kiệt sinh lực đếm ngược thời gian hồi phục Khi đếm ngược kết thúc, sinh lực hồi phụ theo tốc độ hồi phục xác định Component cung cấp hàm tăng, giảm sinh lực thao túng thời gian đếm ngược (nếu có hồi phục) cho component khác gọi, không trực tiếp tham gia xử lý gây sát thương Như vậy, sinh lực tàu vũ trụ gồm Health đại diện cho khiên lượng (có thể hồi phục) Health đại diện cho HP (không thể hồi phục) Một lần gây sát thương (gọi Hit) gồm hai chủ thể: vật gây sát thương vật bị sát thương Game thực hai interface IHitInstigator IHitTarget cho hai chủ thể Theo đó, tàu vũ trụ vừa IHitInstigator IHitTarget, vừa chủ thể đối tượng bị gây sát thương Khi cần tạo Hit, chẳng hạn từ viên đạn hay WeaponBeam, hệ thống gọi HitUtility.ProcessHit để tạo va chạm Hàm gọi hàm IHitTarget.ProcessHit để mục tiêu tự xử lý ý nghĩa Hit Một struct đại diện cho Hit HitData chứa thông tin cần biết Hit tạo hàm HitUtility.ProcessHit truyền vào IHitTarget.ProcessHit làm tham số Cách thực cho phép vật thể chơi bị ảnh hưởng cách khác bị trúng đạn Nếu trúng đạn, tàu vũ trụ bị máu thiên thể bị đẩy Trong môi trường nhiều người chơi, để logic diễn cách đắn, trình chạy server ActorHealthBehaviour đảm nhận việc xử lý logic bị trúng đạn (tức kế thừa interface IHitTarget Theo thiết kế, khiên lượng hấp thụ sát thương trước Khi khiên bị cạn kiệt, bị trúng đạn tiếp, việc HP khởi động lại đếm ngược tới lúc hồi phục Component không trực tiếp xử lý việc "chết" "hồi sinh" mà gọi kiện đến component chuyên dụng cho việc Ngoài ra, để phục vụ cho hiển thị hiệu ứng, server component đồng liệu Hit để client xử lý Tick sau 9.5 Sinh phá hủy tàu vũ trụ Tàu vũ trụ người chơi bị phá hủy hồi sinh lại nhiều lần chơi Điều đặt số yếu tố: • Các thơng tin liên quan đến chơi (ví dụ K/D/A) đặt tàu vũ trụ Luận văn tốt nghiệp Trang 25/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Nên có component phụ trách riêng việc sinh phá hủy tàu vũ trụ, theo quy tắc "sinh phá hủy nên thực script" • Việc sinh phá hủy Network Object nên thực server Khi vào chơi, server, component (tạm gọi Spawner) gọi để sinh tàu vũ trụ gán chúng cho người chơi Trong trình này, Spawner subscribe vào kiện người chơi "chết" để thực công đoạn phá hủy tàu Tùy theo chơi mà Spawner sinh lại tàu vũ trụ Tàu vũ trụ sinh khoảng không gian xác định với điều kiện khơng có vật thể khác chiếm chỗ Mỗi khoảng không gian quản lý Spawn Point Màn chơi tham chiếu dãy Spawn Point cung cấp cho Spawner để sinh tàu vũ trụ 9.6 Các thiên thể chơi Tương tự tàu vũ trụ, thiên thể sinh xóa từ Spawner riêng biệt Để làm đa dạng chơi, vị trí kích cỡ thiên thể chọn ngẫu nhiên khoảng xác định Thiên thể sinh chơi bắt đầu, trước sinh tàu vũ trụ cho khơng có hai thiên thể chiếm chỗ Thiên thể chắn đạn cho tàu vũ trụ, bị đạn tác động khác (bị đẩy đi, ) Thiên thể va chạm với tàu vũ trụ, gây sát thương lên tàu 9.7 Kiểm soát trạng thái chơi Trong lớp GameStateControllerBase, tùy theo trạng thái trò chơi mà script gọi hàm cập nhập khác (hình 16) Tại hàm FixedUpdateNetwork Fusion cung cấp chạy Tick, client xem sét trạng thái trò chơi Waiting, Starting, Running hay Ending để gọi hàm UpdateWaiting, UpdateStarting, UpdateRunning hay UpdateEnding cho phù hợp Các lớp kế thừa lớp ghi đè lên phương thức để thực logic đặc thù thể loại chơi, ví dụ kiểm tra số lượng người chơi cịn sống sót đồ Hình 16: GameStateControllerBase Tick Tương tự, để phục vụ cho logic hiển thị, hàm hiển thị gọi client theo trạng thái game (hình 17) với hàm tương ứng RenderWaiting, RenderStarting, RenderRunning hay RenderEnding Sở dĩ ta sử dụng hàm Render Fusion cung cấp mà Update Unity, Render thực sau Update Render bám theo Tick thực sau FixedUpdateNetwork, cho phép chức thực mục (thường hiển thị liên quan tới biến đồng bộ) cách xác Luận văn tốt nghiệp Trang 26/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Hình 17: GameStateControllerBase lần Render Bước xét chuyển trạng thái thực server trước Tick (hình 18) Thứ tự chuyển đổi Waiting -> Starting -> Ending với hàm kiểm tra điều kiện chuyển trạng thái StateAuthorityCheckStartingCondition, StateAuthorityCheckRunningCondition StateAuthorityCheckEndingCondition Waiting trạng thái mặc định bắt đầu nên khơng có hàm xét chuyển từ trạng thái khác Ending trạng thái cuối nên khơng có bước chuyển trạng thái sau mà có hàm StateAuthorityCheckAfterEndCondition kiểm tra để thực lần StateAuthorityInitAfterEnd dùng cho logic chuyển cảnh (ví dụ: chuyển người chơi hình chọn nhân vật sau thời gian chơi kết thúc) Tương tự, lần chuyển trạng thái Waiting -> Starting -> Ending, server gọi hàm StateAuthorityInitStarting, StateAuthorityInitRunning StateAuthorityInitEnding lần Waiting khơng có hàm init Khi tạo chế độ chơi mới, ta kế thừa GameStateControllerBase viết đè lên hàm hình để thực hóa logic riêng cho Luận văn tốt nghiệp Trang 27/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Hình 18: GameStateControllerBase trước Tick 9.8 Tàu máy điều khiển Tàu vũ trụ máy sử dụng chung component dành cho di chuyển, sử dụng vũ khí hiệu ứng với tàu người chơi điều khiển Điểm khác biệt nằm Game Object chứa component Polarith AI cung cấp Ngoài ra, chơi gồm Game Object chứa component môi trường để AI sử dụng Các vật thể sinh chơi (tàu vũ trụ, thiên thạch, ) gom vào Game Object khác để AI thấy Một ví dụ thực việc di chuyển có né tránh vật cản bao gồm hai objective interest danger Ta sử dụng hai component hành vi Pursue (hướng tới vị trí đốn mục tiêu), ghi nhận mục tiêu viết vào seek, ghi nhận vật thể cần tránh để ghi vào danger Do tàu môi trường không trọng lực nên ngồi việc bỏ hướng có vật cản trước mặt, tàu phải di chuyển để tránh vật cản hướng di chuyển Công việc thực hành vi Avoid (né tránh mục tiêu theo phương vng góc với vector khoảng cách nhân vật tới mục tiêu) nhận vật cản viết vào interest Sau trình tối ưu cho objective sau cùng, component hậu xử lý cho hướng phù hợp tự nhiên Tại thời điểm tại, tàu máy điều khiển có Spawner riêng để xử lý việc sinh phá hủy tàu Đây giải pháp tạm thời trước giải pháp tối ưu để tích hợp AI vào game tìm thấy Mục tiêu sau cho phép AI dùng tàu người chơi điều khiển, đồng thời tàu AI điều khiển xử lý chơi tàu người chơi bình thường Luận văn tốt nghiệp Trang 28/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 9.9 Lobby, tạo vào phịng chơi Tất client khởi động game hiển thị menu khởi đầu (hình 19) Tại thời điểm chưa có kết nối client với Hình 19: Menu khởi đầu Người chơi nhập tên vào ô trống Nếu người chơi bấm "Browse Session" hay "Host Session" mà không nhập tên, hệ thống cung cấp tên hiển thị phần placeholder ô trống "Host Session" dẫn người chơi đến menu tạo phịng (hình 20) Người chơi đặt tên phòng chế độ chơi Hiện game cung cấp hai chế độ chơi "Team Deathmatch" "Wave Defence" Sau bấm nút "Host Session", hệ thống gửi yêu cầu tạo phòng lên máy chủ Photon Fusion Quá trình vài giây sau đưa người chơi vào menu Staging chế độ chơi Hình 20: Menu tạo phịng Luận văn tốt nghiệp Trang 29/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính "Browse Session" gửi yêu cầu vào lobby tới máy chủ Sau vài giây chờ đợi, menu tìm phịng xuất (hình 21) Danh sách phịng hiển thị có phịng tạo người chơi bấm "Join" để vào phịng Quy trình sau bấm nuits giống với "Host Session", khác biệt chỗ người chơi dẫn vào phịng có sẵn Hình 21: Menu chọn phòng Hiện client kết nối hồn tồn với server q trình đồng bắt đầu Fusion khơng có khái niệm "phịng chuẩn bị" nên Staging bước game tự đặt để người chơi làm thao tác chuẩn bị (kiểm tra người phòng, thay đổi tàu vũ trụ) Staging khác cho chơi, PvP người chơi chia làm hai đội PvE tất người chơi nằm đội Hình 22: Menu staging PvP Luận văn tốt nghiệp Trang 30/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Hình 23: Menu staging PvE Người chơi phịng chơi cách nhấn "Exit" thông báo sẵn sàng cách nhấn "Ready" Chỉ người tạo phịng bắt đầu chơi sau tất người chơi sẵn sàng Luận văn tốt nghiệp Trang 31/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 10 Đánh giá kết đạt Một số hình ảnh prototype: • Chế độ PvP: Luận văn tốt nghiệp Trang 32/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Luận văn tốt nghiệp Trang 33/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Luận văn tốt nghiệp Trang 34/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính • Chế độ PvE: Sau trình thực hiện, Space Shooter hoàn thiện chức bản, sản phẩm chơi Tuy nhiên, tác giả tự nhận định game chưa trạng thái mắt Kết cụ thể sau: • Hệ thống điều khiển: Thử nghiệm sau cho thấy hệ thống điều khiển hoạt động với yêu cầu cho kết ổn định Quá trình thử nghiệm bao gồm điều khiển tàu client bất kỳ, sau xem xét kết server, client điều khiển tàu client thứ ba Kết cho thấy hành động di chuyển, xoay bắn đồng ba máy với độ trễ vừa phải Luận văn tốt nghiệp Trang 35/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tuy nhiên sau nghiên cứu kỹ tài liệu Photon Fusion, tác giả cảm thấy cách thực có nguy khó mở rộng tương lai (chỉ cho phép client điều khiển tàu, cịn coupling, ) • Hệ thống vũ khí: Hệ thống hoàn thiện toàn mặt cấu trúc Để thử nghiệm, tác giả dựng hai vũ khí, vũ khí đạn đạo xây dựng từ WeaponBarrel WeaponTrigger vũ khí tia lượng từ WeaponBeam WeaponTrigger Quá trình thử nghiệm thực server, client sở hữu vũ khí client thứ ba Thử nghiệm hai loại vũ khí cho thấy hai bắn nhận tín hiệu điều khiển (thể WeaponTrigger hoạt động với yêu cầu) Với vũ khí đạn đạo, Projectile triển khai với thông số tốc độ bắn WeaponBarrel Với vũ khí tia lượng, WeaponBeam thực Raycast xử lý Hit vơi dự đoán Các hiệu ứng thị giác bắn ba máy thử nghiệm giống • Hệ thống kiểm soát đồng đạn: Tương tự hai phần trên, hệ thống thử nghiệm server, client sở hữu client thứ ba Trong biến thể người chơi có Projectile Manager tồn suốt chơi Thử nghiệm cho thấy số lượng, chủng loại vị trí đạn chép ba máy Việc sinh ra, cập nhập xóa viên đạn diễn cách bình thường Tuy nhiên, cách thức cấp phát Projectile Manager tại, client (tính host) có Projectile Manager nhất, chưa thể sử dụng cho người chơi máy • Hệ thống sát thương sinh lực: Thử nghiệm cho tàu bị bắn tàu khác hai loại vũ khí mục cho thấy sát thương ghi nhận xử lý server với kết hiển thị tất máy với dự tính Cụ thể, tàu vũ trụ khiên HP theo số vũ khí bắn ra, tàu bị HP khiên cạn kiệt, khiên hồi phục sau thời gian xác định mà không bị trúng đạn đếm lại từ đầu bị trúng đạn trước Về mặt hiển thị, tình trạng hai sinh lực giống tàu tất client Về mặt cấu trúc, trình xử lý sát thương cần tổ chức lại để dễ sửa đổi tương lai Ngoài chức nhiệt lượng khiên định hướng, mức độ ưu tiên thấp nên chưa thực luận văn • Sinh phá hủy tàu vũ trụ: Do việc sinh phá hủy tàu vũ trụ (do người chơi AI điều khiển) thực server (phần đồng tàu vừa sinh phá hủy Fusion phụ trách) nên ta kiểm tra server client Kết cho thấy Spawner hoạt động theo yêu cầu đề Cụ thể, tất cá người chơi server sinh cấp phép tàu vũ trụ thời điểm bắt đầu chơi Khi HP tàu vũ trụ bị cạn kiệt, Spawner nhận tính hiệu kiện tiến hành phá hủy tàu Tick Sau khoảng thời gian định, Spawner sinh lại tàu vũ trụ cấp phát giống lúc bắt đầu chơi Trong trình thử nghiệm, tàu vũ trụ sinh khơng bị trùng vị trí với vật thể khác tồn chơi Những bước cải thiện dự tính bao gồm gộp Spawner cho AI người chơi lại với (kèm với việc cho phép AI người chơi dùng chung loại tàu) tách rời logic tái sinh tàu vũ trụ để tùy biến tùy theo chơi • Các thiên thể chơi: Do thiên thể thuộc quyền sở hữu server nên kiểm tra ta sử dụng server client Chạy thử cho thấy thiên thể sinh đầu chơi, trước sinh tàu vũ trụ Vị trí kích cỡ thiên thể ngẫu nhiên, giống server client Các thiên thể sinh khơng bị trùng vị trí với Thử nghiệm cho tàu client điều khiển bắn vào thiên thể cho thấy thiên thể bị đẩy theo hướng vũ khí (đạn tia lượng) hợp với hướng di chuyển trước Chuyển động này, ngồi xảy server diễn client Sát thương va chạm tàu vũ trụ thiên thể nói riêng sát thương va chạm nói chung chưa thực • Kiểm sốt trạng thái chơi: Màn chơi thử nghiệm có luật sau đây: – Màn chơi có trạng thái bắt đầu Waiting – Sau tất client đồng hiệu sẵn sàng, chơi tự động đổi sang trạng thái Starting Màn chơi giữ trạng thái khoảng thời gian hiển thị thời gian đếm ngược lên cho người chơi Trong Waiting Starting, tín hiệu điều khiển bị chặn tất người chơi không điều khiển tàu – Sau chơi chuyển trạng thái thành Running giữ trạng thái hết khoảng thời gian định Tín hiệu điều khiển bỏ chặn người chơi điều khiển tàu thường Luận văn tốt nghiệp Trang 36/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính – Khi thời gian chơi hết, chơi bước vào trạng thái Ending Trong trạng thái này, tín hiệu điều khiển bị chặn người chơi xem kết chơi Sau hết thời gian hiển thị, tất người chơi chuyển hình Staging Thử nghiệm server client cho thấy hệ thống hoạt động với dự tính đề Màn chơi vào Starting client (vốn kết nối ln có độ trễ) thông báo sẵn sàng, đồng thời bước chuyển đổi trạng thái server client thực Tick • Tàu máy điều khiển: Môi trường thử nghiệm gồm hai tàu máy điều khiển, mục tiêu thiên thạch sinh ngẫu nhiên Quan sát cho thấy hai tàu di chuyển tiếp cận mục tiêu, có phản ứng tránh né thiên thạch chắn đường Thử nghiệm cho tàu mục tiêu bắn trả cho thấy chế phá hủy tái sinh tàu AI hoạt động giống dự tính Tuy nhiên, hành vi AI chưa có chế nhắm bắn khả sử dụng vũ khí, đồng thời cần tàu vũ trụ riêng chứa component có AI dùng • Lobby, tạo vào phòng chơi: Chức đặt tên người chơi, tên phịng chế độ chơi hoạt động bình thường Việc tạo phòng diễn cách ổn định Màn hình tìm phịng kiểm tra ba máy, với hai máy tạo hai phòng khác máy thứ ba vào menu tìm phịng Quan sát cho thấy hai phòng tạo hiển thị danh sách máy thứ ba tham gia vào hai phịng cách bình thường Thử nghiệm kiểm tra hình Staging hai chế độ chơi Cả hai hình hiển thị người chơi màn, tàu vũ trụ người chơi chọn trạng thái sẵn sàng người chơi Riêng chế độ Team Deathmatch người chơi vào phịng phân chia vào đội có số lượng người chơi nhỏ • Việc kết nối component đồng (networked) với component cục (non-networked) nhiều bất cập Lý chủ yếu nằm việc networked component sản sinh tự động Fusion client khác server độc lập với non-networked component client ấy, dẫn đến khó khăn việc tham khảo Cũng lí mà phần kết nối giao diện logic game mức chắp vá, chưa thực đạt yêu cầu Luận văn tốt nghiệp Trang 37/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính 11 Kết luận Sau giai đoạn đề cương luận văn, đề tài thực thành công gameloop Spacewar! tảng đại, đồng thời thêm vào cải thiện tính nhiều người chơi, cho phép người chơi chọn tàu, thêm loại vũ khí thực ban đầu tàu máy điều khiển Tuy nhiên, sản phẩm cần trau chuốt để tiến đến trạng thái mắt thị trường Tác giá có ý định tiếp tục phát triển game ngồi phạm vi luận văn Những dự định cho giai đoạn bao gồm: • Giải vấn đề tồn đọng nêu mục trên, kể đến như: thực hệ thống điều khiển (cụ thể khâu truyền tín hiệu điều khiển từ client lên server), tái cấu trúc trình xử lý sát thương, viết Spawner tiêu chuẩn cho tất tàu vũ trụ nói chung, thực đầy đủ AI, • Hồn thiện phần giao diện, đặc biệt phương thức giao tiếp component đồng không đồng Do đặc thù việc đồng dẫn đến vòng đời hai loại component khơng khớp nhau, q trình cần thêm thời gian cơng sức • Tối ưu hóa game, cụ thể frame-per-second lượng băng thơng sử dụng Ngồi cịn thử nghiệm chạy mơi trường có độ trễ, bị gói tin tương lai chạy test với tester thực • Playtest game với số lượng cụ thể người chơi thực, tổng hợp đánh giá nhận xét • Trau chuốt mặt hình ảnh âm Hiện mặt hình ảnh game dừng lại bước prototype, hiệu ứng hình ảnh, âm chức quality-of-life chưa hồn thiện • Thêm nội dung cho game, ví dụ loại tàu vũ khí mới, chế độ chơi mới, hình thức kết nối kết nối LAN, Luận văn tốt nghiệp Trang 38/39 Trường Đại Học Bách Khoa Tp.Hồ Chí Minh Khoa Khoa Học Kỹ Thuật Máy Tính Tài liệu [1] R P Smith, “How the first popular video game kicked off generations of virtual adventure,” Dec 2018 [2] S De, “What is a gameplay loop in gaming?.” https://www.makeuseof.com/gameplay-loop-gaming/, Nov 2021 [3] “Google play store - soul knight.” https://play.google.com/store/apps/details?id=com ChillyRoom.DungeonShooter [4] “Starsector main page.” https://fractalsoftworks.com/ [5] J Halpern, “The what and why of game engines.” https://medium.com/@jaredehalpern/ the-what-and-why-of-game-engines-f2b89a46d01f [6] J Ford, “2021 gaming report: Unity insights from 2020 and predicted trends for 2021,” Feb 2021 [7] D Takahashi, “Unity targets indie game developers with new growth program.” https://venturebeat com/business/unity-launches-game-growth-program-for-indie-developers/, Oct 2020 [8] C Reynolds, “Steering behaviors for autonomous characters,” 06 2002 [9] A Fray, “Context steering: Behavior-driven steering at the macro scale,” 2015 [10] “Polarith documentation - understanding the concept.” https://polarith.com/docs/ai/ quickstart-aim-concept.html Luận văn tốt nghiệp Trang 39/39

Ngày đăng: 20/06/2023, 21:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w