HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA ĐA PHƯƠNG TIỆN BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++ TÊN ĐỀ TÀI LẬP TRÌNH GAME “ZOMBIE SURVIAL” LỜI CẢM ƠN Đầu tiên, em xin gửi lời cảm ơn sâu sắc đến[.]
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA ĐA PHƯƠNG TIỆN BÁO CÁO LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG VỚI C++ TÊN ĐỀ TÀI LẬP TRÌNH GAME “ZOMBIE SURVIAL” LỜI CẢM ƠN Đầu tiên, em xin gửi lời cảm ơn sâu sắc đến Học viện Cơng nghệ Bưu Viễn thơng đưa học phần “Lập trình hướng đối tượng với C++” vào chương trình giảng dạy Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến giảng viên mơn thầy Tạ Chí Hiếu dạy dỗ, rèn luyện truyền đạt kiến thức quý báu cho em suốt thời gian học tập kỳ vừa qua Trong thời gian tham dự lớp học thầy, em tiếp thu thêm nhiều kiến thức bổ ích, học tâp tinh thần làm việc hiệu quả, nghiêm túc Đây thực điều cần thiết cho q trình học tập cơng tác sau em Bộ mơn “Lập trình hướng đối tượng với C+” mơn học thú vị, bổ ích Tuy nhiên, thời gian học tập lớp khơng nhiều với hoàn cảnh dịch Covid-19 diễn biến căng thẳng, cố gắng chắn hiểu biết kỹ mơn học em cịn nhiều hạn chế Do đó, sản phẩm cuối đề tài mà em lựa chọn khó tránh khỏi thiếu sót chỗ chưa chuẩn xác, kính mong giảng viên mơn xem xét góp ý giúp sản phẩm em hoàn thiện Em xin chân thành cảm ơn! I MỤC LỤC LỜI CẢM ƠN I I Phát biểu toán: II Giai đoạn tiền sản xuất Game: 1 Game Idea: Concept: Game Design Document: Pitch: III/ Phương pháp tiếp cận, xây dựng game: Phương pháp hướng đối tượng 1.1 Unity Game Engine 1.2 Ngơn ngữ lập trình C# Kiến trúc actor – component game .9 Kĩ thuật lập trình 12 VI Phương pháp tiếp cận, xây dựng game: .15 Class Diagram .15 Usecase 16 Usecase Scenario 16 3.1 Start Game 16 3.2 PlayAgain 17 3.3 Bắn súng (Shot) 17 3.4 Bullet va chạm với Enemy 17 3.5 Barrel phát nổ 18 3.6 Giao diện tương tác kỷ lục trò chơi 19 Sequence 20 4.1 Chức chơi lại 20 4.2 Chức bắn đạn Player 21 4.3 Chức Đạn (Bullet) va chạm với kẻ địch (Enemy) 22 4.4 Chức Thùng bom (Barrel) phát nổ 23 I Phát biểu toán: Dựa vốn kiến thức sẵn có học tập trường, em chọn thực đề tài “Lập trình game Zombie Survival” Mục tiêu đề tài tìm hiểu kiến thức để có nhìn tổng qt lập trình hướng đối tượng II Giai đoạn tiền sản xuất Game: Game Idea: Ý tưởng: Xây dựng game bắn súng với góc nhìn thứ Game dành cho người chơi, người chơi làm điều khiển nhân vật chống lại đợt công Zoombie cách dùng súng bắn vào chúng, phá hủy thùng bom, bắn mục tiêu để chơi lâu Concept: Target: người chơi Concept art: Đồ họa 3D Low polygon Game Design Document: - Player Control: Người chơi điều khiển nhân vật Di chuyển chuột để thay đổi hướng nhìn camera nhân vật Ấn chuột trái để bắn đạn Ấn chuột phải để ngắm bắn Ấn R để thay đạn, ấn T để inspect súng, ấn G để ném lựu đạn, ấn F Q để sử dụng vũ khí cận chiến - Gameplay: Trong q trình chơi, nhân vật Zoombie xuất tiến lại gần người chơi Nhiệm vụ người chơi bắn zombie, tận dụng bia đạn thùng bom để hồi phục tiêu diệt zombie Người chơi tiêu diệt zoombie để gia tăng điểm, thời gian chơi lâu, kỷ lục người chơi ghi lại - Challenge: Người chơi phải liên tục quan sát bắn Zoombie - Sound&Effect: Trò chơi xuyên suốt có nhạc Khi người chơi bán đạn, có sound effect Khi người chơi bắn trúng mục tiêu, có sound effect thơng báo trúng đạn Pitch: - Tên game : Zoombie Survival - Thể loại: Game người chơi, 3D, Góc nhìn thứ - Câu chuyện : Thế giới bờ vực diệt vong trước đại dịch Zombie Bạn người may mắn sống sót tình nguy nan Hãy cố sống sót lâu tốt đại nạn tìm kiếm người may mắn sống sót khác - Gameplay: Trò chơi dành cho người chơi, Góc nhìn thứ Di chuyển chuột click chuột để quan sát tiêu diệt Zoombie - Tuổi số ESRB Tuổi : – 45 Chỉ số ESRB dự kiến : E (Everyone) Chứa hình ảnh, hoạt cảnh, ngơn ngữ bạo lực trò chơi nhẹ nhàng - Nền tảng vận hành & yêu cầu phần cứng: Nền tảng vận hành : Window 7,8,10 Yêu cầu phần cứng : Máy tính laptop RAM 100mb trở lên III/ Phương pháp tiếp cận, xây dựng game: Phương pháp hướng đối tượng Tăng suất, đơn giản hóa độ phức tạp phần mềm bảo trì, nâng cấp Dễ tiếp thu Đa phần ngơn ngữ lập trình hỗ trợ lập trình hướng đối tượng nhiều mức độ khác 1.1 Unity Game Engine - Giới thiệu tổng quan Unity Engine: Unity game engine đa tảng phát triển Unity Technologies, mà chủ yếu để phát triển video game cho máy tính, consoles điện thoại Lần công bố chạy hệ điều hành OS X, Apple's Worldwide Developers Conference vào năm 2005, đến mở rộng 27 tảng phiên phần mềm phát hành Tại triển lãm WWDC năm 2006, Apple trao thưởng giải Best Use of Mac OS X Graphics cho ứng dụng Unity hỗ trợ đồ họa 2D 3D, chức viết chủ yếu qua ngôn ngữ C# Hai ngơn ngữ lập trình khác hỗ trợ: Boo, bị loại với việc phát triển Unity UnityScript bị loại vào tháng năm 2017 sau phát hành Unity 2017.1 UnityScript ngôn ngữ lập trình độc quyền có cú pháp tương tự JavaScript Phần mềm nhắm mục tiêu đồ họa APIs sau: Direct3D Windows Xbox One; OpenGL Linux, macOS, Windows; OpenGL ES Android iOS; WebGL web; APIs độc quyền máy chơi video game Ngoài ra, Unity hỗ trợ APIs cấp thấp Metal iOS macOS Vulkan Android, Linux, Windows, Direct3D 12 Windows Xbox One Trong 2D games, Unity cho phép nhập sprites renderer giới 2D tiên tiến Đối với 3D games, Unity cho phép thiết lập đập điểm kĩ thuật kết cấu độ phân giải mà cơng cụ trị chơi hỗ trợ, cung cấp hỗ trợ cho bump mapping, reflection mapping, parallax mapping, cảnh không gian ambient occlusion (SSAO), hiệu ứng bóng đổ cách sử dụng shadow maps, render thiết lập toàn cảnh đến hiệu ứng Unity cung cấp dịch vụ cho nhà phát triển, bao gồm: Unity Ads, Unity Analytics, Unity Certification, Unity Cloud Build, Unity Everyplay, Unity API, Unity Multiplayer, Unity Performance Reporting and Unity Collaborate Unity bật với khả xây dựng trò chơi chạy nhiều tảng Các tảng hỗ trợ Android, Android TV, Facebook Gameroom, Fire OS, Gear VR, Google Cardboard, Google Daydream, HTC Vive, iOS, Linux, macOS, Microsoft HoloLens, Nintendo 3DS family, Nintendo Switch, Oculus Rift, PlayStation 4, PlayStation Vita, PlayStation VR, Samsung Smart TV, Tizen, tvOS, WebGL, Wii U, Windows, Windows Phone, Windows Store, Xbox One Unity trước hỗ trợ tảng khác chạy Unity Web Player Unity Web Player plugin trình duyệt chạy Windows OS X, bị gỡ bỏ lợi ích WebGL Unity công cụ phát triển phần mềm mặc định (SDK) cho máy chơi game video game Wii U Nintendo, kèm theo miễn phí Nintendo với giấy phép phát triển Wii U Unity Technologies gọi việc kết hợp sản xuất SDK với bên thứ ba "industry first" - Lịch sử Unity Engine: Unity game engine khởi động năm 2005, nhằm "dân chủ hóa" phát triển game cách cung cấp cho nhiều nhà phát triển Năm tiếp theo, Unity vinh danh quân hạng mục Best Use of Mac OS X Graphics Apple Design Awards Apple Inc Unity ban đầu phát hành cho Mac OS X, sau bổ sung hỗ trợ cho Microsoft Windows trình duyệt Web Unity 2.0 mắt năm 2007 với khoảng 50 tính Bản phát hành bao gồm cơng cụ địa hình tối ưu hóa cho môi trường 3D, real-time dynamic shadows, directional lights spotlights, phát lại video tính khác Bản phát hành bổ sung tính nhờ nhà phát triển cộng tác dễ dàng Nó bao gồm Networking Layer để nhà phát triển tạo game nhiều người chơi dựa User Datagram Protocol, cung cấp Network Address Translation, State Synchronization, Remote Procedure Calls Khi Apple mắt App Store họ năm 2008, Unity nhanh chóng bổ sung hỗ trợ cho iPhone Trong vài năm, công cụ khơng thử nghiệm iPhone trở nên tiếng với nhà phát triển trò chơi iOS Unity 3.0 mắt tháng năm 2010 với tính mở rộng tính đồ họa engine cho máy tính để bàn video game consoles INgồi hỗ trợ Android, Unity cịn có tính tích hợp công cụ Beast Lightmap Illuminate Labs, deferred rendering, built-in tree editor, kết xuất phông chữ gốc, ánh xạ UV tự động lọc âm thanh, nhiều thứ khác Năm 2012, VentureBeat phát biểu "rất cơng ty đóng góp vào phát triển trị chơi độc lập Unity Technologies 1.3 triệu người dùng sử dụng Unity để phát triển game iOS, Android, máy chơi game, PC, trò chơi web Unity mở thời kỳ phát triển công cụ phát triển trò chơi đa tảng." Một khảo sát vào tháng 5/2012 tạp chí Game Developer Unity game engine hàng đầu dành cho tảng di động for mobile platforms Tháng 11 năm 2012, Unity Technologies phát hành Unity 4.0 Phiên bổ sung hỗ trợ cho DirectX 11 Adobe Flash, cơng cụ hoạt ảnh có tên Mecanim, quyền truy cập vào xem trước Linux Đối với Apple Design Awards triển lãm thương mại WWDC 2006, Apple, Inc gọi Unity Best Use of Mac OS X Graphics (tạm dịch: Ứng dụng tốt cho đồ họa tảng Mac OS X), năm sau Unity mắt triển lãm thương mại Unity Technologies cho biết lần công cụ phát triển game trao giải thưởng Một khảo sát tháng năm 2012 tạp chí Game Developer khẳng định Unity cơng cụ phát triển trị chơi hàng đầu di động Vào tháng 7/2014, Unity đạt giải "Best Engine" liên hoan trao giải thưởng công nghệ hàng năm Anh Unity nhận lời khen tương tự, với The Verge nói "Unity giúp việc phát triển game trở nên dễ dàng phổ biến Unity biến tiến đáng mong đợi tương lai." Sau phát hành Unity 5, Unity Technologies bị trích khổi lượng lớn game phát hành Steam nhà phát triển thiếu kinh nghiệm CEO John Riccitiello giải thích họp báo tác dụng phụ xã hội hóa việc phát triển game: "If I had my way, I'd like to see 50 million people using Unity – although I don't think we're going to get there any time soon I'd like to see high school and college kids using it, people outside the core industry I think it's sad that most people are consumers of technology and not creators The world's a better place when people know how to create, not just consume, and that's what we're trying to promote."(tạm dịch: chúng tơi có cách, tơi muốn 50 triệu người sử dụng Unity- dù chúng tơi biết khó đạt điều Tơi muốn thấy đứa trẻ trường Trung học Đại học sử dụng nó, người ngồi ngành Tơi nghĩ thật buồn hầu hết người người tiêu dùng công nghệ, người sáng tạo Thế giới nơi tốt đẹp người ta biết làm để tạo ra, không tiêu thụ, chúng tơi cố gắng để thúc đẩy.) Vào tháng 12 năm 2016, Unity Technologies thông báo họ thay đổi hệ thống số phiên Unity từ định theo thứ tự sang năm phát hành để xếp phiên với nhịp cập nhật thường xun 1.2 Ngơn ngữ lập trình C# C# (C Sharp, đọc x"i-sáp") ngôn ngữ lập trình hướng đối tượng đa năng, mạnh mẽ phát triển Microsoft, C# phần khởi đầu cho kế hoạch NET họ Tên ngôn ngữ bao gồm ký tự thăng theo Microsoft theo ECMA C#, bao gồm dấu số thường Microsoft phát triển C# dựa C++ Java C# miêu tả ngơn ngữ có cân C++, Visual Basic, Delphi Java C# thiết kế chủ yếu Anders Hejlsberg kiến trúc sư phần mềm tiếng với sản phẩm Turbo Pascal, Delphi, J++, WFC Phiên gần 9.0, phát hành vào năm 2020 với Visual Studio 2019 phiên 16.8 - Mục tiêu việc phát triển C#: Tiêu chuẩn ECMA liệt kê mục tiêu việc thiết kế ngôn ngữ C#: Ngôn ngữ dự định ngơn ngữ lập trình đơn giản, đại, hướng đến nhiều mục đích sử dụng, ngơn ngữ lập trình hướng đối tượng Ngơn ngữ việc triển khai đáp ứng nguyên tắc ngành kỹ thuật phần mềm kiểm tra chặt chẽ kiểu liệu, kiểm tra giới hạn mảng, phát trường hợp sử dụng biến chưa có liệu, tự động thu gom rác Tính mạnh mẽ, bền bỉ, suất việc lập trình quan trọng ngôn ngữ Ngôn ngữ sử dụng để phát triển thành phần phần mềm theo hướng thích hợp cho việc triển khai môi trường phân tán Khả di chuyển (portability) quan trọng, đặc biệt lập trình viên quen với C C++ Hỗ trợ quốc tế hóa (i18n) Ngôn ngữ thiết kế để phù hợp với việc viết ứng dụng cho hai hệ thống: hosted nhúng, từ phần mềm quy mơ lớn, đến phần mềm có chức đơn giản Mặc dù ứng dụng C# có tính kinh tế u cầu nhớ chế độ xử lý, ngôn ngữ không cạnh tranh trực tiếp hiệu kích thước ngơn ngữ C assembly - Ứng dụng C#: Phát triển web backend (ASP.NET MVC, ASP.NET core, Web API,Graph API,gPRC, Blazor sevver,Uno platform, Mono) Phát triển web front end (Blazor WebAssembly,Uno platform) Phát triển desktop app (Winform, WPF, UWP,WinUI, Mono, Uno, MAUI,Balzor desktop ) Phát triển game 2D, 3D đa tảng (Game engine:Unity, Monogame, Godot, Stride, CryEngine, NeoAxis ) Phát triển thực tế ảo (VR), thực tế tăng cường(AR), thực tế hỗn hợp (MR) (HoloLens,Unity,CryEngine, Oculus quest ) Phát triển ứng dụng đồ họa 2D,3D đa tảng ( 2D: SkiaSharp, ImageSharp ; 3D: OpenTK, SharpDX, SharpVulkan, Vulkan.NET, Veldrid, Silk.NET ) Phát triển mobile app, IOS native, Android native (Xamarin,MAUI,Uno platform) Phát triển đám mây (Azure,AWS,Google Cloud ) Học máy trí tuệ nhân tạo (ML.Net, TensorFlow, csiSharp ) Data science, bigdata (csiSharp, Apache Spark) Blockchain (NEO, Stratis) Microservices and containers Internet of thing (IoT,5G) Hệ thống nhúng (Raspberry pi, PLC) - Đặc điểm ngôn ngữ: C#, theo hướng đó, ngơn ngữ lập trình phản ánh trực tiếp đến NET Framework mà tất chương trình.NET chạy, phụ thuộc mạnh mẽ vào framework Mọi liệu sở đối tượng, cấp phát hủy bỏ trình dọn rác Garbage-Collector (GC), nhiều kiểu trừu tượng khác chẳng hạn class, delegate, interface, exception phản ánh rõ ràng đặc trưng của.NET runtime So sánh với C C++, ngôn ngữ bị giới hạn nâng cao vài đặc điểm đó, khơng bao gồm giới hạn sau đây: Các trỏ sử dụng chế độ khơng an tồn Hầu hết đối tượng tham chiếu an tồn, phép tính kiểm tra tràn đệm Các trỏ sử dụng để gọi loại kiểu giá trị; đối tượng thuộc gom rác (garbage-collector) gọi cách tham chiếu Các đối tượng giải phóng tường minh Chỉ có đơn kế thừa, cài đặt nhiều interface trừu tượng (abstract interfaces) Chức làm đơn giản hóa thực thi thời gian thực thi C# (typesafe) C++ Cú pháp khai báo mảng khác Kiểu thứ tự thay tên miền khơng gian (namespace) C# khơng có tiêu Có thêm Properties, phương pháp gọi Properties để truy cập liệu Có reflection Lập trình chức Hỗ trợ kiểu động - Đặc trưng ngôn ngữ C#: + C# ngôn ngữ đơn giản, mạnh mẽ C# dựng tảng C++ Java, ảnh hưởng Delphi, VisualBasic nên ngôn ngữ C# thừa hưởng ưu điểm vào loại bỏ yếu điểm ngơn ngữ trên, đơn giản, đồng thời loại bỏ cú pháp dư thừa thêm vào cú pháp cải tiến C# ngơn ngữ lâp trình bậc cao, đa tảng dễ dàng tiếp cận phù hợp cho người bắt đầu học, ví dụ câu lệnh kinh điển dành cho người băt đầu hoc in dòng chữ "Hello world", với C# ta cẩn câu lệnh: System.Console.WriteLine("Hello world"); + C# ngôn ngữ đa đại: C# phù hợp cho việc phát triển thời đại 4.0, bao gồm việc phát triển web, mobile app, game, học máy trí tuệ nhân tạo, phát triển đám mây, IoT, blockchain, microservices + C# ngôn ngữ lập trình hướng đối tượng đồng thời hỗ trợ lâp trình chức năng: C# hỗ trợ mạnh mẽ cho phương pháp lâp trình hướng đối tượng, ngồi C# cịn hỗ trợ phương pháp lập trình chức thơng qua biểu thức lamba, khớp mẫu, functions, thuộc tính bất biến + C# ngơn ngữ gõ tĩnh, định kiểu mạnh, hỗ trợ gõ động: C# gõ tĩnh nên mang đầy đủ ưu việt phương pháp gõ tĩnh bảo đảm an toàn kiểu, tự động phân tích nhận biết lỗi cú pháp trình viết mã Ngoài sử dụng C# kết hợp với IDE Visual Studio, C# hỗ trợ gợi ý code Visual Studio IntelliCode sử dụng trí tuệ nhân tạo giúp cho việc viết code trở nên nhanh chóng dễ dàng + C# ngơn ngữ từ khóa: C# có khoảng 80 từ khóa + C# ngơn ngữ lập trình phổ biến phát triển nhất: Theo TIOBE Index, tính đến tháng 10/2020, C# ngôn ngữ phổ biến thứ giới Theo PYPL, tính đến tháng 10/2020, C# ngôn ngữ cộng đồng quan tâm chia sẻ nhiều thứ giới Theo [./Https://github.com/ Github] (Kho lưu trữ mã nguồn lớn giới), tính đến tháng 10/2020, C# ngôn ngữ hoạt động nhiều thứ Cộng đồng phát triển số người theo học ngôn ngữ C# tăng khônng ngừng theo năm.Theo ước tính 10/2020, cộng đồng phát triển C# triệu người + C# kết hợp chặt chẽ với tảng.NET khung tảng đầu tư mạnh Microsoft + Ngồi C# cịn có ưu điểm: C# ngơn ngữ lập trình mã nguồn mở,vì C# miễn phí với tất người, đồng thời người tham gia phát triển, đề xuất thiết kế ngôn ngữ C# C# ngơn ngữ đa tảng biên dịch nhiều tảng máy tính khác (Windows, Linux, MacOS) C# có hiệu suất cao tốc độ thực thi nhanh sử dụng trình biên dich trung gian (CLR), điểm cộng tốc độ phát triển phần mềm nhanh chóng so với đa số ngơn ngữ C# có IDE Visual Studio nhiều plug-in vơ mạnh mẽ ngồi viết C# text editor khác Visual Studio Code, Vim, Netbeam C# có cấu trúc gần gũi với ngơn ngữ lập trình truyền thống, song bổ sung yếu tố mang tính đại nên dễ dàng tiếp cận cho người học học nhanh với C# C# có cộng đồng nhà phát triển vô lớn mạnh C# phát triển cải tiến không ngừng với tần suất phiên bản/ năm, đáp ứng mong muốn cải thiện, cải tiến cho phù hợp với nhu cầu cơng nghệ nhà phát triển C# có tài liệu tham khảo hướng dẫn vô phong phú chất lượng, đồng thời có buổi hội thảo giới thiệu tính định hướng phát triển ngôn ngữ tương lai C# và.NET đánh giá có design tốt, cú pháp logic quán, mã nguồn C# dễ đọc mở rộng C# thiết kế phát triển Microsoft nên Microsoft quan tâm hỗ trợ Kiến trúc actor – component game Camera (Component) (Gameobject) Player Player (Scripts) PlayerMovement (Scripts) AutomaticGun (Scripts) (Gameobject) Bullet Collider (Component) Rigidbody (Component) Bullet (Scripts) (Gameobject) GameController GameController(Scripts ) 10 AudioSource (Component) (Gameobject) SoundManager SoundManager (Scripts) Rigibody (Component) (Gameobject) Enemy Collider (Component) Enemy (Scripts) (Gameobject) Target Collider (Component) TargetHeal (Scripts) 11 Rigidbody (Component) (Gameobject) Barrel Collider (Component) ExplosiveBarrel (Scripts) Mesh Render (Component) (Gameobject) Text+2 TextMesh (Component) (Gameobject) UIController Canvas (Component) UI Controller (Scripts) Kĩ thuật lập trình - Kiến trúc Actor Component Game 12 + Gameobject Player : Camera, Player (Script lưu trữ máu người chơi), PlayerMovement (Scripts nhận input từ chuột người chơi để quay góc nhìn), AutomaticGun (Scripts nhận input từ chuột để bắn đạn, nút để điều khiển súng) + Gameobject Enemy : Collider, Enemy (Script logic đuổi theo người chơi, hành động AI ) + Gameobject GameControler : GameController (Script quản lý vịng lặp game) + Gameobject Sound : AudioSource, SoundManager (Script quản lý âm thanh, phát âm cho game) + Gameobject Bullet : Rigidbody, Collider, Bullet(Scripts xử lý viên đạn bay) + Gameobject Target : Collider, TargetHeal (Hồi máu cho player bắn vào) + Gameobject Barrel : Rigidbody, Collider, ExplosionBarrel (Scripts xử lý thùng xăng nổ) + Gameobject Text+2 : MeshRender, TextMesh (Text hiển thị Enemy chết bắn trúng mục tiêu, để hiển thị tăng máu cho người chơi + Gameobject UIController : Canvas, UIController (Scripts để hiển thị giao diện cho người chơi thực chức xem kỷ lục, chơi lại, lưu thông tin,… - Kỹ thuật điều khiển vịng lặp + PlayerMovement : Nhận Input từ bàn phím để di chuyển, nhận Input tọa độ chuột để thay đổi góc nhìn + AutomaticGun : Nhận Input chuột trái chuột phải để bắn ngắm, nút bàn phím thay đạn,… 13 - - - - - + GameController : Điều khiển vịng lặp Game, kiểm tra trạng thái Player, thay đổi trạng thái game, qua màn, sản sinh Enemy Target, Barrel… Tải lưu đệm liệu + Dữ liệu prefabs Bullet (Đạn) tải lên script AutomaticGun người chơi click chuột bắn đạn + Dữ liệu prefabs Enemy tải lên script GameController, zombie liên tục tạo suốt trò chơi + Dữ liệu prefabs Target, Barrel tải lên script GameController, vật phẩm liên tục tạo suốt trò chơi Xử lý nhập xuất + Game nhận liệu đầu vào từ tọa độ chuột để xoay camera người chơi (Thực script PlayerMovement) + Game nhận liệu đầu vào từ chuột trái để thực logic bắn đạn + Game có giao diện người dùng, kết thúc game có thơng tin nhập vào người dùng để thị tên, thời gian, điểm người chơi để lưu vào kỷ lục Lập trình giao diện + Để thị giao diện, ta dùng scripts GameController để quản lý UI hiển thị cho người chơi, giao diện Text hiển thị cập nhật xun suốt vịng lặp + Hiển thị giao diện kỷ lục người chơi, tương tác, ta dùng scripts UIController để hiển thị thơng tin kỷ lục trị chơi, thông tin kết chơi giao diện lưu thông tin người chơi, chơi lại, thoát game,… Xử lý âm hiệu ứng + Ta dùng script SoundManager để quản lý âm + Sử dụng Component AudioSource để chạy nhạc xử lý gọi Sound effect + Các hiệu ứng VFX tương ứng Gameobject sẵn có Xử lý va chạm + Xử lý va chạm Bullet chạm vào Enemy, Enemy Bullet biến mất, Effect text báo “+2” ra, Player tăng máu + Xử lý va chạm Bullet chạm Target, Target Bullet biến mất, Text báo “+2” ra, Player tăng máu + Xử lý va chạm Bullet chạm vào Barrel, Barrel phát nổ ảnh hưởng môi trường xung quanh, khiến Barrel khác phát nổ theo, Enemy gần bị tiêu diệt 14 VI Phương pháp tiếp cận, xây dựng game: Class Diagram 15 Usecase Usecase Scenario 3.1 Start Game Usecase Start Game Tác nhân Người chơi Điều kiện Game bật lên Đảm bảo thành công Chuyển đến Màn hình Game Kích hoạt Choi game Chuỗi kiện: Người chơi khởi động ứng dụng Màn hình Game xuất với Character mơi trường xung quanh khởi đầu chơi 16 3.2 PlayAgain Usecase Play Again Tác nhân Người chơi Điều kiện Chơi xong chơi Đảm bảo thành công Reset lại chơi Kích hoạt Ấn nút Space Chuỗi kiện: Người chơi chơi xong game Màn hình Game xuất text hiển thị dẫn Người chơi nút “Space” để chơi lại 3.3 Bắn súng (Shot) Usecase Bắn súng Tác nhân Người chơi Điều kiện Đang chơi Đảm bảo thành công Player bán viên đạn Kích hoạt Ấn chuột trái Chuỗi kiện: Người chơi game Người chơi ấn chuốt trái Súng Player sinh đạn bay theo hướng nhìn người chơi 3.4 Bullet va chạm với Enemy Usecase Tác nhân Điều kiện Bullet chạm Enemy Bullet Người chơi bắn Bullet, chạm vào Enemy Bullet Enemy biến mất, Player cộng thêm máu, Effect chữ lên, tiếng nhạc Enemy chết bật Ấn chuột trái, Bullet chạm vào Enemy Đảm bảo thành cơng Kích hoạt Chuỗi kiện: Người chơi game Người chơi ấn chuốt trái để bắn đạn Viên đạn bay chạm vào kẻ địch Bullet Enemy biến 17 Player cộng thêm máu Effect chữ lên Tiếng nhạc Enemy chết bật 3.5 Barrel phát nổ Usecase Tác nhân Điều kiện Barrel phát nổ Barrel Người chơi bắn Bullet, chạm vào Barrel Bullet Barrel biến mất, Effect phát nổ lên, âm phát nổ bật lên, Thay đổi prefabs Barrel thành Prefab Barrel bị phá hủy Vụ nổ ảnh hưởng đến thùng Barrel gần tiếp tục phát nổ, Enemy gần bị tiêu diệt Ấn chuột trái, Bullet chạm vào Barrel Đảm bảo thành cơng Kích hoạt Chuỗi kiện: Người chơi game Người chơi ấn chuốt trái để bắn đạn Viên đạn bay chạm vào thùng bom Bullet Barrel biến Effect phát nổ lên Âm phát nổ bật lên Thay đổi prefabs Barrel thành Prefab Barrel bị phá hủy Vụ nổ ảnh hưởng đến thùng Barrel gần tiếp tục phát nổ Enemy gần bị tiêu diệt 18 ... đề tài ? ?Lập trình game Zombie Survival” Mục tiêu đề tài tìm hiểu kiến thức để có nhìn tổng quát lập trình hướng đối tượng II Giai đoạn tiền sản xuất Game: Game Idea: Ý tưởng: Xây dựng game bắn... 1.1 Unity Game Engine 1.2 Ngơn ngữ lập trình C# Kiến trúc actor – component game .9 Kĩ thuật lập trình 12 VI Phương pháp tiếp cận, xây dựng game: ... khiển súng) + Gameobject Enemy : Collider, Enemy (Script logic đuổi theo người chơi, hành động AI ) + Gameobject GameControler : GameController (Script quản lý vòng lặp game) + Gameobject Sound