ĐẶT VẤN ĐỀ NGHIÊN CỨU 1.1 Hiện trạng Xã hội ngày càng phát triển, nhu cầu giải trí của con người ngày càng tăng cao. Cùng với sự phát triển của công nghệ thông tin, điện tử, các thiết bị chơi game ngày càng phổ biến. Trong những năm gần đây ngành công nghệ game nổi lên và đem lại doanh thu khổng lồ. Có thể nói game không chỉ là một phương tiện giải trí cơ bản, nó còn là một lĩnh vực đáng quan tâm và theo đuổi.
Thiết kế game là một công việc không dễ dàng đòi hỏi rất nhiều thời gian và công sức, tuy nhiên quá đó ta có thể biến những dòng code khô khan thành những trải nghiệm thú vị cho người chơi, đồng thời có thể học hỏi những kiến thức mới về nền tảng Unity Framework và củng cố ngôn ngữ C#. Sản phẩm công nghệ ngày càng chịu sự đánh giá khắt khe hơn từ phía những người dùng, đặc biệt là về sản phẩm Game được nhận rất nhiều sự đánh giá từ phía các Game thủ, hay chỉ là những người chơi bình thường. Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độ phát triển đến chóng mặt, rất nhiều những Game hay và hấp dẫn đã được ra đời trong thời gian qua. Phía sau những Game phát triển và nổi tiếng như vậy đều có một Game Engine.
Game Engine là một công cụ hỗ trợ, một Middleware giúp người phát triển viết Game một cách nhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng các tài nguyên và mã nguồn cao do có thể phát triển nhiều Game từ một Game Engine. Từ xu hướng phát triển và những bất cập trên, em quyết định tìm hiểu và thực hiện đề tài: “Phát triển game 3D bắn súng FPS Final Battleground trên nền tảng Unity”. Chuẩn bị kiến thức và kỹ năng cho định hướng nghề nghiệp (phát triển Game) sau này, góp phần vào sự phát triển của ngành công nghiệp Game nước nhà.2 Mục tiêu Xây dựng và phát triển game Final Battleground nhằm mục đích sẽ giúp chúng ta có một trải nghiệm game thú vị hơn với góc nhìn thứ nhất. Nghiên cứu lĩnh vực lập trình game, một lĩnh vực cũng đang dần phát triển trong xã hội hiện nay.
Nghiên cứu các công nghệ mới trong Unity Engine giúp tối ưu một cách tốt nhất hiệu quả trong lập trình game.2 PHẠM VI CỦA ĐỀ TÀI 1.1 Về cơ sở lý thuyết Vận dụng lý thuyết lập trình căn bản đã học để xây dựng đề tài. Nắm vững các phương pháp tổ chức, phân tích và thiết kế một game căn bản. Có kiến thức cơ bản về lập trình game. Nghiên cứu, tìm hiểu quy trình xây dựng của một game ứng dụng vào thực tiễn.
Sử dụng ngôn ngữ lập trình C#. Nắm vững kiến trúc xây dựng game trên nền tảng Unity.2 Về kỹ thuật Xây dựng giao diện thân thiện. Tốc độ truy xuất nhanh. Game dễ mở rộng và phát triển.
Sử dụng ngôn ngữ lập trình C# Có thể build game sang một số hệ điều hành như Windows, MacOS, IOS, Android,… 1.3 PHƯƠNG PHÁP NGHIÊN CỨU 1.1 Thu thập dữ liệu Tham khảo từ một số nguồn trên Internet.2 Công cụ và công nghệ phát triển Bảng 1.1 Các phần mềm sử dụng STT Tên phần mềm Chức năng 1 Unity Lập trình game 2 Visual Studio Code Lập trình ngôn ngữ C# 3 Photoshop CS6 Thiết kế cắt ghép logo, hình ảnh, banner,. 2 CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN VỀ UNITY ENGINE 2.1 Unity là gì? Unity là một “Cross - Flatform Game Engine” tạm hiểu là công cụ phát triển game đa nền tảng được phát triển bởi Unity Technologies. Game engine này được sử dụng để phát trển game trên PC, consoles, thiết bị di động (Android, IOS ) và trên websites. Unity3D là phần mềm làm games trực tiếp theo thời gian thực, mà không cần render, cho phép người design game có thể thiết kế InterfaceGraphic, map hay character,… từ một phần mềm thứ 2 (thường là các phần mềm thiết kế đồ họa chuyên nghiệp như 3Dsmax, Blender, Maya, XSL, Cinema4D, Cheetah3D, Modo, Autodesk FBX, LightWave,…) sau đó chỉ việc import nó vào trong Unity với định dạng của tập tin là *.2 Quá trình phát triển của Unity Ra mắt đầu tiên vào năm 2005 tại sự kiện Apple’s Worldwide Developer Conference bởi nhà sáng lập David Helgason, trải qua nhiều năm phát triển, Unity đã có version 5.5 hoàn thiện hơn về rất nhiều mặt.
Tháng 5-2012 theo cuộc khảo sát Game Developer Megazine được công nhận là Game engine tốt nhất cho mobile. Năm 2014 Unity thắng giải “Best Engine” tại giải UK’s annual Develop Industry Exellence. Phiên bản mới nhất hiện nay là 2018.2 với nhiều tính năng nổi trội.3 Một số thống kê về Unity Vào năm 2016, tính đến quý 3, đã có 5 tỉ lượt download game và ứng dụng được phát triển bởi Unity. 2,4 tỉ thiết bị di động đã từng tải ít nhất 1 ứng dụng bởi unity.
Trong top 1000 game Mobile miễn phí thì số lượng game tạo ra bởi Unity chiếm tới 34%. Số lượng người dùng (gamer) của Unity đạt tới con số 770 triệu, trong khi đó số người thường xuyên sử dụng Twitter là 310 triệu người (Nguồn: Thống kê từ Internet).4 Ưu điểm của Unity Chức năng cốt lõi đa dạng bao gồm: cung cấp công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát 3 hiện va chạm), âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, tạo dòng dữ liệu xử lý, quản lý bộ nhớ, dựng ảnh đồ thị và kết nối mạng. Nhờ có các engine mà công việc làm game trở nên ít tốn kém và đơn giản hơn. Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity3D chính là khả năng hỗ trợ gần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash.
Nói cách khác, chỉ với một gói engine, các studio có thể làm game cho bất kỳ hệ điều hành nào và dễ dàng convert chúng sang những hệ điều hành khác nhau. Đồng thời, đây cũng là giải pháp cho các game online đa nền tảng – có thể chơi đồng thời trên nhiều hệ điều hành, phần cứng khác nhau như Web, PC, Mobile, Tablet,.1 Một số Platform mà Unity hỗ trợ (Nguồn: Internet) Dễ sử dụng: Unity3D được built trong một môi trường phát triển tích hợp, cung cấp một hệ thống toàn diện cho các lập trình viên, từ soạn thảo mã nguồn, xây dựng công cụ tự động hóa đến trình sửa lỗi. Do được hướng đến đồng thời cả lập trình viên không chuyên và studio chuyên nghiệp, nên Unity3D khá dễ sử dụng. Hơn nữa, đây là một trong những engine phổ biến nhất trên thế giới, người dùng có thể dễ dàng tìm kiếm kinh nghiệm sử dụng của “tiền bối” trên các forum công nghệ.
Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity3D cho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100. Với bản Pro, người dùng phải trả 1.500 USD/năm – một con số rất khiêm tốn so với những gì engine này mang lại.5 Các khái niệm trong Unity 2.1 Asset Đây là kho tài nguyên cho việc xây dựng game trong một project của Unity. Các tài nguyên này có thể là hình ảnh, âm thanh, hoặc một mô hình 3D có sẵn. Unity sẽ tham chiếu đến các tập tin chúng ta sẽ sử dụng để tạo ra các 4 tài nguyên cho trò chơi.
Đây là lý do tại sao trong bất kỳ thư mục chứa project sử dụng Unity thì tất cả các tập tin tài nguyên phải được lưu trữ trong một thư mục con tên là Assets.2 Assets trong Unity 2.2 Scene Trong Unity, chúng ta có thể xem Scenes là các màn chơi, cấp độ chơi riêng lẻ, hoặc các vùng của nội dung trò chơi. Ví dụ như Main menu, Options, About,. Bằng cách xây dựng trò chơi với nhiều cảnh, chúng ta sẽ có thể phân phối thời gian tải và thử nghiệm các phần khác nhau của trò chơi riêng lẻ một cách nhanh chóng và chính xác.3 Scenes trong Unity 2.3 Game Object Khi một tài nguyên được sử dụng trong một scene, khi đó chúng ta có thể coi tài nguyên này là một “Game Object” mới. Mỗi GameObject phải chứa ít nhất một thành phần, đó là thành phần “Transform”.
Transform chứa các phép để biến đổi góc quay, tỷ lệ hay tịnh tiến của đối tượng.4 Game Object trong Unity 2.4 Component Component là các thành phần trong một Game Object của Unity. Bằng cách đính kèm các thành phần vào cho một đối tượng, chúng ta có thể áp dụng ngay các phần mới của game engine vào đối tượng. Thông thường các thành phần này được Unity xây dựng sẵn như ánh sáng, camera, particle, hiệu ứng vật lý,… Hình 2.5 Component trong Unity 6 2.5 Script Script là thành phần quan trọng nhất trong Unity, có thể xem scripts như là linh hồn của game. Chúng ta có thể viết kịch bản cho game bằng C#, Java Scripts hoặc Boo (một dẫn xuất của ngôn ngữ Python).
Theo nhiều người đã sử dụng Unity thì code bằng C# sẽ giúp game chạy nhanh hơn và giúp kiểm soát code tốt hơn do tất cả các biến phải được khai báo rõ ràng. Để viết Script, chúng ta sẽ làm việc với một trình biên tập Script độc lập của Unity, hoặc với chương trình Mono Developer được tích hợp và đồng bộ với Unity trong những phiên bản mới nhất hiện nay. Một đoạn script muốn thực thi được thì nó phải được gắn vào một đối tượng.6 Tạo một Script trong Unity 2.6 Prefab Prefab là một bản sao lưu các vật thể chúng ta đã tạo, bao gồm các kịch bản cho hành động (khởi tạo, di chuyển, hay hủy đối tượng). Ta có thể sử dụng đối tượng này nhiều lần trong trò chơi, và cũng có thể sử dụng lại cho project khác.
Prefab cho phép chúng ta lưu trữ các đối tượng, toàn bộ thành phần bên trong và cấu hình hiện tại.7 Prefab trong Unity 2.7 Material và Shader Shader là đoạn Script qui định cách thức render của chất liệu trên bề mặt vật thể. Material sử dụng shader để làm chất liệu cho mô hình. Giữa materials và shaders có mối liên hệ với nhau. Shaders qui định các thuộc tính cần để shader làm việc.
Còn material cho phép gán hình ảnh vào các thuộc tính đó từ Asset.8 Material trong Unity 2.8 UnityAPI UnityAPI chứa rất nhiều lớp hỗ trợ lập trình game, trong đó có một số lớp quan trọng như: MonoBehaviour: tất cả các script muốn gắn vào một đối tượng game bắt buộc phải kế thừa từ lớp này. GameObject: lớp cha của tất cả các thực thể trong scene. Component: lớp cha của tất cả các thành phần có thể gắn vào đối tượng.