TỔNG QUAN VỀ ENGINE UNITY VÀ KHÔNG GIAN 2D, 3D
TỔNG QUAN VỀ ENGINE UNITY
Thời kỳ làm game trên nền Flash đã qua, nhường chỗ cho sự phát triển mạnh mẽ của công nghệ Unity, mang đến cho nhân vật sự sống động trong không gian 3 chiều huyền ảo Công nghệ này tạo ra bước đột phá trong ngành game, mang lại trải nghiệm mới lạ và hào hứng cho người chơi Việc áp dụng Unity vào game Việt Nam hứa hẹn sẽ mở ra một trang mới cho thế giới game 2D và 3D, nâng cao chất lượng và sự sáng tạo trong thiết kế trò chơi.
Unity là một công cụ mạnh mẽ để phát triển video game và các nội dung tương tác như kiến trúc, hoạt hình 2D và 3D thời gian thực Nó tương tự như các phần mềm như Director, Blender game engine, Virtools và Torque Game Builder, vì đều sử dụng môi trường đồ họa tích hợp trong quá trình phát triển game.
Unity là một engine game rất được ưa chuộng bởi khả năng phát triển trò chơi đa nền tảng Trình biên tập của Unity hỗ trợ cả Windows và Mac OS, cho phép xuất game cho nhiều hệ điều hành như Windows, Mac, Wii, iOS và Android Ngoài ra, game còn có thể chơi trên trình duyệt web thông qua plugin Unity Web Player Gần đây, Unity đã bổ sung khả năng xuất game trên widget cho Mac, cùng với hỗ trợ cho Xbox 360 và PlayStation 3.
Chỉ với 1.500 USD, người dùng có thể sở hữu phiên bản pro, tuy nhiên, tại Việt Nam, số tiền này vẫn khá lớn May mắn thay, phiên bản Unity Free cũng có sẵn, mặc dù một số tính năng quan trọng như Network bị cắt giảm Điều này không phải là vấn đề lớn nếu bạn muốn phát triển một tựa game tầm trung.
Vào năm 2009, Unity đã vươn lên trở thành một trong năm game engine hàng đầu cho sản xuất game chỉ sau bốn năm phát triển, xếp thứ tư sau Unreal Engine 3, Gamebryo Engine và Cry Engine 2 Unity cung cấp một lượng tài liệu hướng dẫn phong phú và có một cộng đồng lớn với diễn đàn riêng, nơi người dùng có thể dễ dàng đặt câu hỏi và nhận được phản hồi nhanh chóng, tận tâm.
Quá trình tạo địa hình và xuất dữ liệu từ các phần mềm như 3DSMax, Maya, và Cinema4D diễn ra nhanh chóng và hiệu quả Unity mang đến sức mạnh và tiện lợi vượt trội, phù hợp cho những người làm game chưa chuyên nghiệp Dự án tốt nghiệp game bắn máy bay có chất lượng cao và khả năng chạy trên hầu hết các hệ điều hành.
Unity mang đến sự tiện lợi vượt trội cho những người sử dụng các phần mềm như 3Dmax, Maya hoặc Blender, giúp quá trình phát triển game trở nên dễ dàng hơn Việc kết hợp giữa lập trình viên và nhà thiết kế mô hình diễn ra nhanh chóng và hiệu quả, nhờ vào khả năng nhập trực tiếp các file mô hình đang thiết kế Điều này cho phép người dùng tiếp tục hoàn thiện mô hình mà không cần phải xuất ra định dạng khác, tiết kiệm thời gian đáng kể so với việc sử dụng các công cụ khác Thêm vào đó, Unity còn hỗ trợ người dùng trực tiếp tạo các mô hình trong phần mềm, mang lại sự linh hoạt tối ưu cho quá trình phát triển game.
Việc đặt các thuộc tính vật lý trong Unity cũng cực kỳ dễ dàng và hỗ trợ sẵn nhiều chức năng
1.1.2 Sơ Lƣợc Lịch Sử Hình Thành Và Phát Triển Của Unity a Hình Thành
Unity được phát triển lần đầu bởi Joachim Ante vào năm 2001, và công ty chính thức được thành lập vào năm 2005 với phiên bản 1.0 Đến năm 2007, Unity đã nâng cấp lên phiên bản 2.0, và bắt đầu hỗ trợ iPhone vào năm 2008 Vào tháng 6/2010, Unity chính thức hỗ trợ Android, và phiên bản 3.0 với tính năng này ra mắt vào tháng 9/2010 Hiện tại, Unity đã phát triển đến phiên bản 5, cho thấy tốc độ phát triển nhanh chóng của nền tảng này.
Unity đã đoạt được nhiều giải lớn với những giải chính sau:
Năm 2006, Unity đã được vinh danh với giải thưởng "Best Use of Mac OS X Graphics" tại WWDC của Apple, đánh dấu lần đầu tiên một công cụ phát triển game nhận được sự công nhận chất lượng từ giải thưởng uy tín này.
Năm 2009, Unity Technologies có tên trong "Top 5 công ty game của năm" do Gamasutra tổ chức
Năm 2010, Unity đoạt giải Best Engine Finalist do Develop Magazine bình chọn, giải Technology Innovation Award của Wall Street Journal ở thể loại phần mềm c Khách Hàng
Unity đã thu hút hơn 250.000 người dùng, bao gồm các tên tuổi lớn như Bigpoint, Cartoon Network, Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft, Warner Bros, cùng với các hãng phim, chuyên gia độc lập, sinh viên và những người đam mê công nghệ.
1.1.3 Tính Năng Của Engine Unity
Môi trường phát triển tích hợp nhiều tính năng nổi bật như kế thừa, chỉnh sửa đồ họa, kiểm tra chi tiết và đặc biệt là tính năng xem trước game ngay trong quá trình xây dựng, giúp nâng cao hiệu quả phát triển trò chơi.
Triển khai được trên nhiều nền tảng:
Chương trình độc lập trên Windows và Mac OS
Trên web, thông qua Unity Web Player plugin cho Internet Explorer, Firefox, Safari, Opera, Chrome, cho cả Windows và Mac OS
Trên Mac OS Dashboard widget
Cho Nintendo Wii (cần mua license thêm.)
Cho iPhone, iPad application (cần mua license thêm.)
Cho Google Android (cần mua license thêm.)
Cho Microsoft Xbox 360 (cần mua license thêm.)
Cho Sony PlayStation 3 (cần mua license thêm.) ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY từ 3DS Max, Maya, Blender, Cinema 4D và Cheetah3D
Graphics engine sử dụng Direct3D (Windows), OpenGL (Mac, Windows), OpenGL ES (iPhone OS), và các API khác trên Wii
Hỗ trợ bump mapping, reflection mapping, parallax mapping, Screen Space Ambient Occlusion v v
Unity Asset Server là một tính năng mới của Unity, cung cấp hệ thống quản lý phiên bản cho tất cả tài nguyên và script Đây là kho chứa cần thiết cho việc phát triển game, cho phép cập nhật trạng thái của tài nguyên ngay lập tức khi thực hiện import hoặc sửa chữa.
The server operates on the open-source PostgreSQL database and is accessible on Mac, Windows, and Linux platforms The Asset Server requires an additional fee of $499 for each Unity copy, along with a Unity Pro license This project focuses on a shooting game involving aircraft.
TỔNG QUAN VỀ GAME ENGINE
Game Engine là phần mềm thiết kế và phát triển video Game, hỗ trợ tạo Game cho các hệ máy như Consoles và PC Chức năng chính của Game Engine bao gồm công cụ dựng hình cho hình ảnh 2D và 3D, công cụ vật lý, âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, và quản lý bộ nhớ Việc sử dụng Game Engine giúp tiết kiệm thời gian và chi phí trong quá trình phát triển Game nhờ khả năng tái sử dụng và thích ứng cho nhiều Game khác nhau.
Game Engine cung cấp một bộ công cụ phát triển trực quan và có thể tái sử dụng, tạo ra một môi trường phát triển tích hợp đơn giản hóa Điều này hỗ trợ phát triển ứng dụng nhanh (Rapid Application Development) cho game theo phương pháp lập trình hướng dữ liệu.
Các Game Engine, hay còn gọi là phần mềm trung gian cho Game, cung cấp nền tảng phần mềm linh hoạt, dễ sử dụng với các chức năng cốt lõi cần thiết để phát triển ứng dụng Game, giúp giảm chi phí, độ phức tạp và đảm bảo tiến độ phát hành Chúng thường cho phép Game chạy trên nhiều hệ máy khác nhau, bao gồm console và máy tính cá nhân, với một số thay đổi nhỏ trong mã nguồn Ngoài ra, Game Engine còn hỗ trợ kiến trúc dựa trên các thành phần khác, cho phép thay thế hoặc mở rộng với các phần mềm trung gian chuyên biệt như Havok cho vật lý, Miles Sound System cho âm thanh, và Bink cho video Một số Game Engine chỉ tập trung vào khả năng dựng hình 3D thời gian thực, được gọi là "Graphics Engine".
A "Rendering Engine" or "3D Engine" is more specific than the broader term "Game Engine." Examples of graphic engines include RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Vision Engine, Irrlicht, and JMonkey Engine.
2.1.3 Ảo hóa phần cứng (trừu tƣợng hóa phầncứng - Hardware Abstraction)
Engine 3D, hay hệ thống kết xuất đồ họa trong Game Engine, thường được xây dựng trên nền tảng giao diện lập trình ứng dụng đồ họa như Direct3D và OpenGL, cung cấp một hệ ảo hóa cho GPU Các thư viện mã nguồn cấp thấp như DirectX, SDL, và OpenAL cũng được sử dụng phổ biến trong game, vì chúng cho phép truy cập phần cứng một cách độc lập.
Thuật ngữ "Game Engine" ra đời vào giữa những năm 90, đặc biệt liên quan đến Game 3D, với các thương hiệu nổi tiếng như Doom và Quake Thay vì phải phát triển từ đầu, các nhà phát triển khác có thể truy cập vào mã nguồn của game (nếu được cấp phép) để thiết kế hình ảnh, nhân vật, vũ khí và màn chơi riêng, được gọi là Game Content hay "Game Assets" Các game sau này, như Quake III Arena và sản phẩm năm 1998 của Epic Games, đã tiếp tục phát triển dựa trên nền tảng này.
Unreal Engine được phát triển với cách tiếp cận mới, phân chia rõ ràng giữa Game Engine và nội dung game, giúp tái sử dụng và rút ngắn thời gian phát triển cho các dự án tiếp theo Điều này tạo ra lợi thế lớn trong ngành công nghiệp game cạnh tranh Các Game Engine hiện đại là những ứng dụng phức tạp, yêu cầu tinh chỉnh liên tục để đảm bảo trải nghiệm người dùng tốt nhất Sự phát triển này đã dẫn đến việc phân chia công việc mạnh mẽ giữa các lĩnh vực như dựng hình, viết kịch bản, thiết kế hình ảnh và thiết kế màn chơi, với đội ngũ phát triển thường có số lượng họa sĩ nhiều hơn gấp vài lần so với lập trình viên.
Công nghệ Game Engine ngày càng phát triển và dễ sử dụng, mở rộng ứng dụng không chỉ trong giải trí mà còn trong các lĩnh vực như mô phỏng, huấn luyện ảo, y tế ảo và ứng dụng quân sự Nhiều Game Engine hiện nay được phát triển bằng các ngôn ngữ lập trình cao cấp như Java, C# hay NET (ví dụ: TorqueX, Visual3D.NET) và Python (như Panda3D).
Hầu hết các game 3D hiện nay đều bị giới hạn bởi sức mạnh của card đồ họa, khiến khả năng gây chậm máy của các ngôn ngữ lập trình cấp cao trở nên không đáng kể Điều này cho thấy rằng việc tăng năng suất từ các ngôn ngữ này mang lại lợi ích lớn cho các nhà phát triển Game Engine.
Hiện nay, nhiều hãng tập trung phát triển phần mềm trung gian (Middleware) để hỗ trợ các nhà phát triển game Các phần mềm này cung cấp những công cụ cần thiết như hình ảnh, âm thanh, hệ thống vật lý và trí tuệ nhân tạo, giúp việc phát triển game trở nên dễ dàng hơn Gamebryo và RenderWare là hai ví dụ tiêu biểu về phần mềm trung gian phổ biến Một số Middleware, như SpeedTree, chuyên về một chức năng cụ thể nhưng lại rất hiệu quả, như việc tạo hình ảnh cây cối chân thực trong game The Elder Scrolls IV: Oblivion Bốn gói phần mềm trung gian nổi bật bao gồm Bink của RAD Game Tools, FMOD của Firelight, Havok và GFx của Scaleform RAD Game Tools phát triển Bink cho dựng hình video, FMOD cung cấp thư viện âm thanh giá rẻ, Havok chuyên về mô phỏng vật lý, và Scaleform hỗ trợ các biểu diễn giao diện cao cấp cùng với giải pháp trình chiếu video chất lượng.
2.1.7.Phân loại Game Engine theo mức độ chuyên biệt a Roll-your-own Game Engine
Roll-your-own Engine được coi là những engine cơ bản nhất, với nhiều công ty hiện nay tự phát triển engine riêng bằng cách tận dụng các gói ứng dụng phổ biến và API như XNA, DirectX, OpenGL, cùng với SDL trên Windows và Linux Họ cũng sử dụng các thư viện từ nhiều nguồn khác nhau, bao gồm cả thư viện mua hoặc mã nguồn mở, như Havok và ODE cho vật lý, OpenSceneGraph cho Scene-Graph, và AntTweakBar cho GUI Hệ thống "tự sản xuất" này giúp lập trình viên dễ dàng tương tác hơn, vì họ có thể lựa chọn các thành phần phù hợp để tạo ra sản phẩm theo nhu cầu cụ thể của mình.
Việc sử dụng các Engine game dạng này thường tốn nhiều thời gian và gặp phải nhiều lỗi do sự không tương thích giữa các thư viện từ nhiều nguồn khác nhau Điều này làm giảm hiệu quả của Engine và khiến chúng không được ưa chuộng, ngay cả với những Engine được thiết kế chuyên nghiệp.
Các Game Engine ở tầng trung, hay còn gọi là Mostly-ready Game Engine, được ưa chuộng bởi các nhà thiết kế game nghiệp dư nhờ tính năng đầy đủ như vẽ, tương tác, GUI và vật lý Chúng đi kèm với nhiều công cụ mạnh mẽ và có sự đa dạng từ các Engine mã nguồn mở như ORGE và Genesis3D, đến những lựa chọn giá rẻ như Torge và các Engine cao cấp như Unreal, id Tech và Gamebryo Tuy nhiên, để tạo ra một game hoàn chỉnh, người dùng vẫn cần thực hiện lập trình bổ sung để kết nối các thành phần lại với nhau Mặc dù các Engine này được phát triển bởi nhiều nhà phát triển qua thời gian, chúng vẫn có những hạn chế so với việc tự xây dựng Engine riêng, do nhu cầu và phong cách phát triển game của từng khách hàng là khác nhau.
Engine point-and-click được đánh giá cao vì tính phổ biến và tính thân thiện với người dùng, cho phép người dùng dễ dàng tạo ra game chỉ bằng cách chọn và click Những engine như GameMaker, Torque Game Builder và Unity3D yêu cầu ít lập trình hơn so với các loại engine khác, mặc dù lập trình vẫn cần thiết Tuy nhiên, nhược điểm lớn nhất của các engine này là sự hạn chế trong khả năng sáng tạo, vì chúng thường sản xuất ra các giao diện tương tự nhau Dù vậy, những hạn chế này lại kích thích sự sáng tạo của con người và giúp tăng tốc độ phát triển game, cho phép người dùng hoàn thiện sản phẩm nhanh chóng mà không cần quá nhiều công sức.
TỔNG QUAN KIẾN TRÚC GAME ENGINE
Unity cung cấp UnityAPI, một công cụ mạnh mẽ để lập trình game UnityAPI bao gồm nhiều đối tượng và phương thức, hỗ trợ hầu hết các loại thành phần trong Unity, giúp lập trình viên dễ dàng viết script cho trò chơi của mình.
Trong mỗi scene của game, có nhiều đối tượng khác nhau, mỗi đối tượng có thể có hoặc không có đoạn script gắn liền Để gắn script vào đối tượng, cần kế thừa từ lớp MonoBehaviour trong UnityAPI và đảm bảo tên class trùng với tên file script Khi một script được gắn lên đối tượng game, nó sẽ được xem như một thành phần bên trong và được cấp phát vùng nhớ khi trò chơi chạy.
Hình 1.1.2 Tổng quan kiến trúc Unity Bên trong 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 ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Transform: giúp thay đổi vị trí, xoay, biến đổi tỉ lệ mô hình
Input: hỗ trợ lập trình với chuột, cảm ứng đa điểm, cảm biến gia tốc
Camera: giúp lập trình camera
Light: giúp tạo ánh sáng trong game
Projector: giúp chiếu texture lên bề mặt vật thể
ParticleEmitter: hỗ trợ tạo các hiệu ứng particle đẹp mắt
Audio: hỗ trợ lập trình với âm thanh
Animation: chạy chuyển động của mô hình nhân vật
Rigidbody: giúp tạo hiệu ứng vật lý liên quan đến trọng lực như bóng nẩy, lăn,
CharacterController: giúp điều khiển nhân vật di chuyển theo độ cao địa hình
Collider: hỗ trợ lập trình va chạm giữa các vật thể
GUI: giúp lập trình giao diện người dùng trên Unity ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
UNITY ENGINE
GIỚI THIỆU CHUNG
Hình 2.1.1: Logo của Unity Engine
Nhà phát triển: Unity Technologies
Phiên bản mới nhất : 5 (phát hành vào ngày 11/4/2012)
Được viết bởi ngôn ngữ : C++, C#
Phát triển game cho các hệ điều hành như Windows, Mac OS X, Wii, iPhone/iPad, Xbox 360, Android và PS3 (chỉ đóng gói) đòi hỏi sự chú ý đến quy trình tạo và đóng gói Lưu ý rằng để phát hành trên từng nền tảng, cần có giấy phép bổ sung.
Unity là một 3D Game Engine, là một công cụ thiết kế Game dành cho PC, Mac và nhiều hệ máy di động khác
Unity hỗ trợ Just-In-Time Compilation (JIT) thông qua thư viện mã nguồn mở C++ Mono, cho phép tăng tốc độ biên dịch Nhờ vào JIT, Unity có thể biên dịch mã code mà người dùng viết thành Mono trước khi thực thi, điều này rất quan trọng cho việc thực thi code trong suốt thời gian chạy (Runtime) của trò chơi.
Unity không chỉ sử dụng thư viện Mono mà còn tích hợp nhiều thư viện phần mềm khác như PhysicX của Nvidia cho mô phỏng vật lý, OpenGL và DirectX cho kết xuất hình ảnh 3D, cùng OpenAL cho âm thanh Tất cả các thư viện này được chuyển hóa thành các tính năng tự động và công cụ trực quan trong Unity, giúp người dùng không cần phải học cách sử dụng từng thư viện một cách riêng lẻ.
Unity có một cộng đồng người dùng rất mạnh (rất lớn) luôn chia sẻ những Plugins, công cụ của họ dưới hình thức gói phần mềm bổ sung
Unity là một trong những Game Engine phát triển nhanh nhất, cho phép sản xuất trò chơi chuyên nghiệp và xuất bản 3D cho cả Mac và PC, cùng với một Web Player riêng Ngoài ra, Unity còn hỗ trợ phát triển game cho hệ máy Wii của Nintendo và iPhone của Apple, mở ra cơ hội không chỉ cho game trên máy tính cá nhân mà còn cho console và thiết bị di động.
CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG CỦA UNITY
Giống như các công cụ phát triển game khác, Unity cung cấp khả năng kết xuất hình ảnh toàn diện và hỗ trợ nhiều công nghệ phổ biến trong đồ họa 3D, giúp nâng cao chất lượng hình ảnh.
Các phiên bản mới nhất của Unity đã được cải tiến với thuật toán tối ưu hóa, giúp nâng cao hiệu suất kết xuất hình ảnh và cải thiện chất lượng hình ảnh sau khi kết xuất Đây là một bước tiến quan trọng cho các dự án như Đồ án tốt nghiệp game bắn máy bay.
Unity cung cấp sẵn 100 Shaders với đầy đủ các loại phổ biến nhất
Hỗ trợ Surface Shaders, Occlusion Culling, GLSL Optimizer
2.2.2 Lighting (ánh sáng) Ánh sáng là một điều thiết yếu giúp môi trường trở nên đẹp và thực tế hơn
Unity cung cấp nhiều giải pháp đa dạng cho việc áp dụng ánh sáng hiệu quả trong môi trường trò chơi, bao gồm các loại nguồn sáng như ánh sáng có hướng (Directional Light) và ánh sáng điểm (Point Light).
Một số công nghệ và kỹ thuật về ánh sáng được Unity hỗ trợ: Lingtmapping, Realtime Shadows, hiệu ứng Sunshafts và Lens Flares
Terrains còn gọi chung là địa hình bao gồm phần đất nền của môi trường trong trò chơi cùng các đối tượng gắn liền như cây, cỏ, …
Unity cung cấp công cụ Terrains Tools, cho phép thiết kế địa hình hiệu quả với các công cụ vẽ dạng Brush Công cụ này đi kèm nhiều tùy chỉnh để tạo hình và lát Texture cho địa hình một cách linh hoạt.
Tree Creator là một công cụ mạnh mẽ, kết hợp cùng Terrain Tools, cho phép người dùng tạo ra cây cối với nhiều hình dạng, kích thước và kiểu dáng đa dạng.
Substances là một dạng Textures tùy biến, giúp đa dạng hóa hình ảnh trong nhiều điều kiện môi trường khác nhau Unity cung cấp các API sẵn có trong thư viện, hỗ trợ lập trình viên tùy biến hình ảnh kết xuất của Texture, đặc biệt trong các dự án như Đồ án tốt nghiệp game bắn máy bay.
PhysX là một engine mô phỏng và xử lý vật lý mạnh mẽ do NVIDIA phát triển, được tích hợp vào Unity để giải quyết các vấn đề vật lý Unity hỗ trợ nhiều tính năng vật lý như Soft Bodies, Rigidbodies, Ragdolls, Joints và Cars, giúp nâng cao trải nghiệm người dùng trong các trò chơi và ứng dụng.
Tính năng Pathfinding, được giới thiệu trong phiên bản Unity 3.5, mang đến sự đổi mới cho việc phát triển trí thông minh nhân tạo (AI) Trước đây, các nhà phát triển phải tự xây dựng hệ thống tìm đường riêng, nhưng với Unity 3.5, tính năng này đã được cải thiện đáng kể nhờ vào khái niệm lưới định hướng (NavMesh), giúp đơn giản hóa quá trình tạo ra khả năng tìm đường cho AI.
Unity tích hợp FMOD, một trong những công cụ âm thanh mạnh mẽ nhất hiện nay, giúp người dùng dễ dàng nhập và sử dụng nhiều định dạng tập tin âm thanh khác nhau.
Lập trình là một trong những yếu tố quan trọng nhất trong phát triển Game
Lập trình cho phép nhà phát triển tạo nên khả năng tương tác, trí thông minh và yếu tố Gameplay cho trò chơi
Unity cho phép chúng ta lập trình bằng nhiều ngôn ngữ mạnh mẽ và phổ biến với các lập trình viên như: C#, Java Scrip và Boo
Networking cho phép phát triển trò chơi trực tuyến, một trong những thể loại thu hút đông đảo người chơi Tính năng ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY hỗ trợ đầy đủ các khía cạnh quan trọng như hệ thống điểm kinh nghiệm, chat và tương tác thời gian thực trong game online.
Một số tính tăng cung cấp bởi Networking như: State Synchronization, Realtime Networking, Remote Procedure Calls, Backend Connectivity, Web Browser Integration, Web Connectivity.
CÁC THÀNH PHẦN TRONG UNITY
Tài sản (Assets) trong Unity là các tài nguyên thiết yếu cho việc xây dựng dự án, bao gồm hình ảnh, mô hình 3D và âm thanh Tất cả các tệp và thư mục liên quan đến trò chơi đều được lưu trữ trong thư mục "Assets", cho thấy vai trò quan trọng của chúng trong quá trình phát triển game.
Trong Unity, một cảnh (hay phân đoạn) đại diện cho một màn chơi riêng biệt hoặc khu vực trong nội dung trò chơi, chẳng hạn như menu game Việc tạo ra nhiều Scenes cho trò chơi giúp phân phối thời gian tải và kiểm tra các phần khác nhau một cách hiệu quả Đồ án tốt nghiệp về game bắn máy bay là một ví dụ điển hình cho việc áp dụng kiến thức này.
Hình 2.1.3 Các Scene của Unity
Khi Assets được sử dụng trong Scene, chúng trở thành Game Object, một thuật ngữ quan trọng trong Unity, đặc biệt trong lập trình Mỗi Game Object đều có ít nhất một thành phần là Transform, chứa thông tin về vị trí, góc xoay và tỉ lệ của đối tượng, được mô tả bằng bộ 3 số.
X, Y, Z trong hệ trục tọa độ Thành phần này có thể được tùy biến lại trong quá trình lập trình nhằm thay đổi vị trí, góc quay và tỉ lệ của đối tượng qua các đoạn mã Từ các thành phần cơ bản này, chúng ta sẽ tạo ra Game Object với các thành phần khác, bổ sung chức năng cần thiết để xây dựng nên bất kỳ một thành phần nào trong kịch bản Game mà chúng ta đã tưởng tượng
Hình 2.1.4 Kéo tài nguyên vào Scene để sử dụng ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Components trong Unity có nhiều hình thức khác nhau, xác định hành vi và ảnh hưởng đến chức năng của Game Object trong trò chơi Bằng cách "gắn" chúng vào Game Object, chúng ta có thể ngay lập tức áp dụng tác động lên đối tượng Unity hỗ trợ nhiều Components phổ biến trong phát triển trò chơi, như Rigidbody, ánh sáng, Camera và nhiều thành phần khác Để tạo ra các yếu tố tương tác trong trò chơi, Script (mã kịch bản) cũng được sử dụng như một Components trong Unity.
Hình 2.1.5 Các thành phần trong đối tượng Camera
2.3.5 Scripts Được Unity xem như một Components, Script là một thành phần thiết yếu ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY trong quá trình phát triển trò chơi và đáng được đề cập đến như một khái niệm
“chìa khóa” Unity cung cấp cho chúng ta khả năng viết Script bằng cả 3 loại ngôn ngữ là: JavaScript, C# và Boo (một dẫn xuất của ngôn ngữ Python)
Unity không yêu cầu người dùng phải học lập trình, nhưng việc sử dụng Script là cần thiết cho mọi thành phần trong kịch bản phát triển Unity cung cấp một bộ lớp và hàm phong phú mà người dùng có thể áp dụng trong quá trình lập trình trò chơi Để viết script, người dùng có thể làm việc với 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 trong các phiên bản mới nhất.
Mono Developer là một IDE hiệu quả cho lập trình, với nhiều tính năng tương tự như Visual Studio Mã nguồn được phát triển trên Mono Developer sẽ được cập nhật và lưu trữ trong dự án Unity, hỗ trợ tốt cho việc thực hiện đồ án tốt nghiệp về game bắn máy bay.
Hình 2.1.6 Cách tạo file script mới 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
Hình 2.1.7 Một file Script đang gắn vào đối tượng
Prefabs cho phép lưu trữ các đối tượng cùng với các Components và thiết đặt đầy đủ, tương tự như khái niệm MovieClip trong Adobe Flash Chúng có thể được xem như một Container rỗng, nơi mà người dùng có thể đưa vào bất kỳ đối tượng hoặc dữ liệu mẫu nào để tái sử dụng sau này.
Hình 2.1.8 Một số đối tượng trong Prefabs
GIAO DIỆN CỦA UNITY
Giao diện của Unity cho phép người dùng tùy chỉnh bố trí một cách linh hoạt, tương tự như nhiều môi trường làm việc khác Một trong những kiểu bố trí điển hình trong Unity giúp tối ưu hóa quy trình làm việc và nâng cao hiệu suất phát triển game.
Hình 2.1.9 Giao diện của Unity ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Scene (1): Nơi mà trò chơi sẽ được xây dựng
Hierarchy (2): Danh sách các Game Object trong scene
Inspector (3): Những thiết lập, thành phần, thuộc tính của đối tượng (hoặc Asset) đang được chọn
Game (4): Cửa sổ xem trước, nó chỉ hoạt động trong chế độ
Project (5): Danh sách các Assets của dự án, được ví như thư viện của dự án
2.4.2 Cửa sổ Scene và Hierarchy
Cửa sổ scene là không gian để xây dựng các thực thể và đối tượng trong dự án Nó cung cấp góc nhìn phối cảnh 3D, cho phép chuyển đổi giữa các góc nhìn như từ trên xuống, từ dưới lên, từ trái sang phải, và từ trước ra sau Cửa sổ này giúp hiển thị đầy đủ hình ảnh trong thế giới trò chơi, tạo điều kiện cho việc biên tập và chỉnh sửa trực tiếp.
Khi bạn kéo thả Assets vào cửa sổ Scene, chúng sẽ chuyển đổi thành Game Object Cửa sổ Scene được liên kết với cửa sổ Hierarchy, nơi liệt kê tất cả các Game Object trong Scene theo thứ tự chữ cái từ A-Z.
Hình 2.1.10 Các nút chức năng cho cửa sổ Scene
Cửa sổ Scene được trang bị bốn nút chức năng hữu ích, hiển thị dưới dạng hình ảnh Người dùng có thể chọn các nút này thông qua các phím Q, W, E và R trên bàn phím Mỗi nút đảm nhận những chức năng riêng biệt, hỗ trợ tối đa cho người chơi trong trò chơi bắn máy bay.
Công cụ bàn tay (Q): Công cụ này cho phép chúng ta di chuyển đến một khu vực nào đó trong Scene bằng thao tác kéo thả thuộc trái
Công cụ di chuyển (W) cho phép người dùng chọn một đối tượng trong cảnh và thay đổi vị trí của nó Khi đối tượng được chọn, các trục và mặt phẳng liên quan sẽ hiển thị, giúp người dùng dễ dàng di chuyển đối tượng theo các trục, mặt phẳng hoặc tự do tùy ý.
Công cụ xoay (E) có chức năng tương tự như công cụ di chuyển, nhưng thay vì thay đổi vị trí của đối tượng, nó cho phép người dùng xoay đối tượng xung quanh trục hoặc tâm của nó.
Công cụ điều chỉnh tỉ lệ (R) cho phép người dùng tùy chỉnh kích thước và tỉ lệ của đối tượng một cách linh hoạt, tương tự như các công cụ di chuyển và xoay.
Hình 2.1.11 Cửa sổ Hierarchy ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Cửa sổ Inspector là công cụ hữu ích giúp người dùng tùy chỉnh các thiết đặt và thành phần của Game Object hoặc Assets đã được chọn.
Cửa sổ này hiển thị toàn bộ các thành phần của đối tượng đã chọn, cho phép điều chỉnh các biến của các thành phần thông qua các hình thức như: ô nhập liệu, thanh trượt, nút bấm và menu thả xuống.
Cửa sổ Inspector không chỉ hiển thị các Component của đối tượng được chọn mà còn cung cấp các thiết đặt chung của hệ thống hoặc trò chơi, cho phép người dùng dễ dàng truy cập thông tin cần thiết từ menu Edit.
Cửa sổ Inspector hiển thị các thuộc tính và Components của đối tượng được chọn, bao gồm Transform và Animation Người dùng có thể thay đổi các thiết đặt và tạm thời vô hiệu hóa từng Component bằng cách bỏ chọn Checkbox ở góc trên bên trái Điều này rất hữu ích cho việc kiểm tra và thử nghiệm các Components trong dự án tốt nghiệp game bắn máy bay Ngoài ra, toàn bộ đối tượng cũng có thể được vô hiệu hóa bằng cách bỏ chọn Checkbox ở góc trên cùng của cửa sổ Inspector.
Cửa sổ Project trong Unity cho phép người dùng xem trực tiếp nội dung của thư mục Assets trong dự án Mỗi dự án Unity được lưu trữ trong một thư mục cha, bao gồm ba thư mục con: Assets, Library và Temp (chỉ xuất hiện khi Unity đang chạy) Khi tất cả các Assets được đặt vào thư mục Assets, chúng sẽ ngay lập tức hiển thị trong cửa sổ Project Ngoài ra, việc thay đổi vị trí của Assets trong thư mục hoặc lưu tệp từ ứng dụng khác như Photoshop sẽ khiến Unity tự động nhập lại (Re-Import) các Assets, phản ánh ngay lập tức sự thay đổi này trong cửa sổ Project và Scene liên quan.
Cửa sổ Project được tích hợp nút Create, nút này cho phép chúng ta tạo mới bất kì một Assets mới nào, ví dụ như Script, Prefabs, Materials, …
2.4.5 Cửa sổ Game ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Khi nhấn nút Play để thực hiện test trò chơi, cửa sổ Game sẽ được gọi ra Cửa sổ này cho phép người dùng tùy chỉnh thiết lập tỉ lệ màn hình, ảnh hưởng đến phạm vi mà người chơi có thể quan sát trong Scene Mỗi tỉ lệ màn hình, như 4:3 hay 16:9, sẽ mang đến một trải nghiệm nhìn khác nhau cho người chơi.
Khi nhấn nút Play, chúng ta chuyển sang chế độ Testing, trong đó mọi thay đổi về thuộc tính và Components của đối tượng sẽ chỉ mang tính tạm thời Sau khi kết thúc chế độ Testing, các thay đổi này sẽ trở về trạng thái ban đầu, tức là trước khi nhấn nút Play.
Hình 2.1.14 Các loại hình ảnh trong cửa sổ game ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME ENGINE TRÊN UNITY
LOAD HOẠT HỌA
Game 2D được thiết kế từ nhiều mô hình 2D được sắp xếp hài hòa trong không gian hai chiều, tạo nên cảnh vật sống động cho trò chơi Do đó, việc nạp và hiển thị các mô hình 2D trong game đóng vai trò rất quan trọng.
Mô hình 2D hiện đại được tạo thành từ nhiều đa giác, không chỉ đơn thuần là một khối vật thể mà còn bao gồm nhiều khối vật thể liên kết trên một khung xương Cấu trúc này cho phép mô hình linh hoạt hơn, không bị gò bó bởi một chuyển động cố định, và dễ dàng thay đổi các chuyển động cho mô hình.
Các mô hình 2D và 3D thường được tạo ra bằng các phần mềm thiết kế chuyên dụng như Adobe InDesign, Adobe Photoshop và CorelDRAW Sau khi hoàn thành, các mô hình này sẽ được tích hợp vào game engine để phục vụ cho việc phát triển trò chơi.
Engine Unity hỗ trợ rất nhiều định dạng mô hình 2D, 3D khác nhau như:
PNG, JPG khi mô hình được load vào project ta sẽ chuyển mô hình sang mục Prefab để có thể tái sử dụng nhiều lần
Unity có hỗ trợ load mô hình bằng cách kéo thả Prefab vào vị trí bất kỳ trong Scene
Tuy nhiên, để linh hoạt hơn thì chúng ta có thể xử lý bằng code
Để bắt đầu, chúng ta cần tạo một file script và gắn nó vào một đối tượng kiểu GameObject trong dự án tốt nghiệp game bắn máy bay Sau đó, sử dụng hàm Instantiate() để khởi tạo mô hình tại vị trí và góc quay mong muốn.
Tuy nhiên, câu hỏi là đối tượng GameObject trên chứa mô hình nào.ở đây có 2 giải pháp để trỏ GameObject vào mô hình
Load mô hình từ prefab chứa bên ngoài resource
Trên cửa sổ Inspector của đối tượng game được gắn script vào xuất hiện thuộc tính Obj Ta chọn Prefab mong muốn và kéo thả vào thuộc tính Obj
Hình 3.1.1 Minh họa kéo thả prefab vào thuộc tính của script public class LoadObject : MonoBehaviour { public GameObject Obj; void Awake() {
GameObject NewObj = Instantiate(Obj, new Vector3(0, 0, 0), Quaternion.identity);
}} ĐỒ ÁN TỐT NGHIỆP GAME BẮN MÁY BAY
Để tải mô hình từ Prefab trong thư mục Resources, bạn cần đặt Prefab vào thư mục này trong dự án Sau đó, sử dụng hàm Resources.Load() với tham số là đường dẫn của Prefab tính từ thư mục Resources để thực hiện việc tải.