Đồ án Khoa học máy tínhLỜI MỞ ĐẦU Ngày nay, dưới sự phát triển ngày một lớn của thời đại công nghệ thông tin, nhucầu sử dụng của con người ngày càng cao, các sản phầm công nghệ muốn được
Lý do chọn đề tài
Để nắm bắt xu thế phát triển của ngành công nghiệp game, tôi đã chọn nghiên cứu Unity Engine - một công cụ phát triển game phổ biến Mục tiêu là phát triển một trò chơi 2D platformer, từ đó chuẩn bị kiến thức và kỹ năng cho định hướng nghề nghiệp tương lai.
Mục tiêu của đề tài
Khảo sát và nghiên cứu các tính năng nổi bật của Unity Engine giúp phát triển trò chơi hiệu quả, đảm bảo thực hiện đúng các kế hoạch đã đề ra.
- Game sẽ có các màn chơi khác nhau
- Xử lý được các va chạm trong game (Chạm quái hay rơi vực sẽ thua, chạm vào vật phẩm sẽ tăng điểm, chạm vào đích sẽ qua màn, )
- Nhân vật có sự luân chuyển giữa các animation mượt mà
Đây là một số mục tiêu tạm thời của em trong đề cương, quá trình làm sẽ có bổ xung thêm.
Giới thiệu ý tưởng và nội dung game
Game thuộc thể loại 2D Platformer, nơi người chơi phải vượt qua các chướng ngại vật để hoàn thành màn chơi Lối chơi chủ yếu dựa vào kỹ năng di chuyển của nhân vật, với việc va chạm vào quái vật hoặc rơi xuống vực sẽ làm mất máu Khi máu của nhân vật giảm xuống 0, người chơi sẽ phải bắt đầu lại từ đầu màn Mỗi màn chơi sẽ có số lượng quái vật và bẫy tăng dần, tạo ra độ khó cao hơn, từ đó kích thích sự hứng thú và thách thức cho người chơi.
Game dự kiến mang tên Red Hat Crossing, lấy cảm hứng từ tựa game nổi tiếng Mario, hứa hẹn sẽ quen thuộc với nhiều người chơi Trong trò chơi, người chơi sẽ đảm nhận vai trò của một nhân vật thú vị, khám phá thế giới đầy màu sắc và thử thách.
Phạm Văn Thanh – Khoa học máy tính K64 cậu bé mũ đỏ vượt qua các thử thách, thu thập các vật phẩm trên đường để hoàn thành màn chơi.
- Game sẽ có dạng là 2D, màn hình ngang phù hợp với mọi lứa tuổi.
- Người chơi sẽ sử dụng các nút di chuyển trái phải đề điều khiển nhân vật, nút Space để nhảy.
- Người chơi có thể thu thập các vật phẩm trong màn để tăng số điểm nhận được.
- Hoàn thành hết màn chơi về tới đích sẽ qua màn.
- Mỗi màn sẽ có 3 mạng chơi, nếu người chơi rơi xuống vực hoặc chạm vào trướng ngại vật 3 lần sẽ bị quay lại đầu màn chơi.
Phạm vi nghiên cứu
Các chương tiếp theo sẽ khám phá Engine Unity, bao gồm các đặc điểm, tính năng, công cụ và các thành phần quan trọng của nó Từ đó, chúng tôi sẽ trình bày một bản demo của một trò chơi 2D thuộc thể loại vượt màn.
Bố cục của đồ án
Chương 1: Tổng quan về đề tài
Chương 2: Tìm hiểu về Unity
Chương 3: Cơ sở lý thuyết và công nghệ
Chương 4: Phân tích và thiết kế đề tài
Chương 5: Thiết kế giao diện game
Chương 6: Kết quả thực nghiệm
Tổng quan về Unity
Unity is a cross-platform game engine developed by Unity Technologies, designed for creating multi-platform games This powerful tool enables developers to build games for PCs, consoles, mobile devices, and websites.
Unity, với tính năng đa nền tảng, đã trở thành lựa chọn phổ biến cho cả các nhà phát triển game tự do và các studio game Nền tảng này được sử dụng để phát triển nhiều trò chơi nổi tiếng như Hearthstone, Cuphead, Pokemon Go và Rimworld, cùng với hàng loạt trò chơi khác.
Unity là một nền tảng lập trình mạnh mẽ, hỗ trợ phát triển đồ họa 2D và 3D với nhiều chức năng phong phú, chủ yếu sử dụng ngôn ngữ lập trình C# Hai ngôn ngữ khác là Boo và UnityScript cũng từng được sử dụng nhưng đã bị loại bỏ kể từ phiên bản Unity 5 và Unity 2017.
2.1.2 Quá trình phát triển của Unity
Unity, first launched in 2005 at Apple's Worldwide Developer Conference by founder David Helgason, has undergone extensive development over the years, resulting in numerous enhanced versions that improve various aspects of the platform.
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.
2.1.3 Các tính năng cơ bản của Unity
Unity hỗ trợ mạnh mẽ rất nhiều tính năng, nổi bật là :
- Unity tạo giao diện UI của game như textbox, drop bar…
- Hiển thị các mô hình 2D, 3D – hệ thống vật lý 3D, 2D.
- Networking: hỗ trợ tạo game cho phép nhiều người chơi tham gia cùng một thời điểm.
- Hỗ trợ nền tảng đặc biệt mới như Virtual reality (VR) – thực tế ảo và Augmented reality (AR) – thực tế tăng cường.
- AI – hỗ trợ bot trong màn hình game và package tạo nên bot trong game.
- Hỗ trợ hiển thị ngôn ngữ bằng nhiều font chữ đặc biệt.
Phạm Văn Thanh – Khoa học máy tính K64
Trong số các tính năng cơ bản của Unity, giao diện ứng dụng Editor được đánh giá cao nhất Unity Editor cung cấp nhiều công cụ hỗ trợ phát triển game, bao gồm tạo mô hình 3D với ánh sáng và vật lý, cũng như viết Script, tất cả đều thông qua thao tác kéo và thả hình ảnh Nhờ vào tính năng này, Unity đã hỗ trợ hiệu quả cho các vị trí khác trong game, đặc biệt là Game Designer.
Các engine game cung cấp nhiều chức năng cốt lõi như công cụ dựng hình cho hình ảnh 2D và 3D, tính toán vật lý, âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, quản lý bộ nhớ và kết nối mạng Nhờ vào những công cụ này, quá trình phát triển game trở nên hiệu quả và tiết kiệm hơn.
Unity3D nổi bật với khả năng hỗ trợ đa nền tảng, cho phép phát triển game trên nhiều hệ điều hành như PlayStation 3, Xbox 360, Wii U, iOS, Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và Flash Với một gói engine duy nhất, các studio có thể dễ dàng tạo ra game cho mọi nền tảng và chuyển đổi chúng sang các hệ điều hành khác Điều này cũng mang lại giải pháp tối ưu cho các game online đa nền tảng, cho phép người chơi trải nghiệm trên nhiều thiết bị khác nhau như Web, PC, Mobile và Tablet.
Unity3D là một công cụ phát triển dễ sử dụng, được tích hợp trong một môi trường phát triển toàn diện, hỗ trợ lập trình viên từ việc soạn thảo mã nguồn đến tự động hóa và sửa lỗi Hướng đến cả lập trình viên không chuyên và các studio chuyên nghiệp, Unity3D mang lại trải nghiệm thân thiện và dễ tiếp cận Đây cũng là một trong những engine phổ biến nhất toàn cầu, giúp người dùng dễ dàng tìm kiếm kinh nghiệm và kiến thức từ cộng đồng trên các diễn đàn công nghệ.
Unity Technologies cung cấp phiên bản miễn phí của engine Unity3D cho người dùng cá nhân và doanh nghiệp có doanh thu dưới 100.000 USD mỗi năm, giúp tiết kiệm chi phí Đối với bản Pro, người dùng chỉ cần trả 1.500 USD mỗi năm, một mức giá hợp lý so với giá trị mà engine này mang lại.
Tìm hiểu về Unity Engine
2.2.1 Các thành phần trong Unity Editor
Phần này hiển thị trực quan các đối tượng trong các cảnh, cho phép người dùng lựa chọn, kéo thả, phóng to, thu nhỏ và xoay các đối tượng một cách linh hoạt.
Trong phần này, người dùng có thể thiết lập các thông số quan trọng như ánh sáng, âm thanh, và chế độ hiển thị 2D hoặc 3D Khung nhìn Scene đóng vai trò quan trọng trong việc bố trí các Game Object như cây cối, cảnh quan, kẻ thù, người chơi và camera trong game Sự bố trí hoạt cảnh là một trong những chức năng thiết yếu nhất của Unity.
Tab hierarchy là nơi hiển thị các Game Object trong Scenes hiện tại Khi các đối tượng được thêm hoặc xóa trong Scenes, cửa sổ Hierarchy sẽ tự động cập nhật để phản ánh những thay đổi này.
Trong tab Project, Hierarchy có một thanh tìm kiếm giúp nâng cao hiệu quả quản lý và thao tác với các Game Object, đặc biệt hữu ích cho các dự án lớn.
2.2.1.3 Ca s Game Đây là mạn hình demo Game, là góc nhìn từ camera trong game.
Thanh công cụ trong cửa sổ game cung cấp các tùy chỉnh về độ phân giải man hình, thông số (stats), gizmos, tùy chọn bật tắt các component
Phạm Văn Thanh – Khoa học máy tính K64 Đây là cưa sổ explorer của Unity, hiển thị thông tin của tất cả các tài nguyên (Assets) trong game của bạn.
Cột bên trái hiển thị tài sản và mục yêu thích dưới dạng cây thư mục giống như Windows Explorer Khi nhấp vào một nhánh, toàn bộ nội dung của nhánh đó sẽ hiển thị ở khung bên phải Người dùng có thể tạo thư mục mới bằng cách nhấp chuột phải và chọn Create -> Folder hoặc nhấn nút Create ở góc trên bên trái cửa sổ Project và chọn Folder Ngoài ra, các tài nguyên trong game cũng có thể được tạo ra theo cách này.
Mục Favorites trên cây thư mục cho phép người dùng truy cập nhanh vào các tài nguyên thường xuyên sử dụng thông qua thao tác kéo thả Đường dẫn của thư mục tài nguyên hiện tại giúp dễ dàng tiếp cận các thư mục con hoặc thư mục gốc chỉ với một cú click vào mũi tên hoặc tên thư mục.
Cửa sổ Inspector cung cấp thông tin chi tiết về Game Object, bao gồm các thành phần và thuộc tính đi kèm Người dùng có thể điều chỉnh và thiết lập mọi thông số cũng như chức năng của Game Object thông qua cửa sổ này.
Tất cả các thuộc tính hiển thị trong Inspector đều có thể được tùy chỉnh trực tiếp mà không cần sử dụng kịch bản trước Tuy nhiên, Scripting API cung cấp nhiều tính năng phong phú hơn, vì giao diện Inspector có những giới hạn nhất định.
Các thiết lập của từng component được đặt trong menu Các bạn có thể click chuột phải, hoặc chọn icon hình bánh răng nhỏ để xuất hiện menu.
Ngoài ra Inspector cũng thể hiện mọi thông số Import Setting của asset đang làm việc như hiển thị mã nguồn của Script, các thông số animation, …
2.2.2 Các khái niệm cơ bản trong Unity
Trong game, một đối tượng cụ thể được gọi là game object, có thể là nhân vật hoặc đồ vật như cây cối, xe cộ, nhà cửa và con người.
Một GameObject bao gồm nhiều thành phần như hình ảnh (sprite render), hành động (animator), xử lý va chạm (collision), tính toán vật lý (physical), mã điều khiển (script) và các thành phần khác Mỗi thành phần này được gọi là một component của GameObject.
Là một hình ảnh 2D của một game object có thể là hình ảnh đầy đủ, hoặc có thể là một bộ phận nào đó.
Là tập một hình ảnh động dựa trên sự thay đổi liên tục của nhiều sprite khác nhau.
Key Frame hay Frame là một trạng thái của một animation Có thể được tạo nên từ 1 sprite hay nhiều sprite khác nhau.
Trong Unity, khái niệm prefab cho phép sử dụng lại các đối tượng giống nhau trong game bằng cách khởi tạo lại các giá trị như vị trí, tỉ lệ biến dạng và góc quay từ một đối tượng ban đầu Chẳng hạn, các đồng tiền trong game Mario được xử lý giống nhau, vì vậy chỉ cần tạo một đối tượng ban đầu và các đồng tiền còn lại sẽ được tạo ra từ prefab Tương tự, khi lát gạch cho nền nhà, các viên gạch cũng được sử dụng dưới dạng prefab.
2.2.2.7 Sounds Âm thanh trong game.
Script là tệp tin chứa mã nguồn, được sử dụng để khởi tạo và xử lý các đối tượng trong game Trong Unity, bạn có thể lập trình Script bằng các ngôn ngữ như C#, Java Script và BOO.
Quản lý tất cả các đối tượng trong một màn chơi của game.
Bao gồm tất cả những gì phục vụ cho dự án game như sprite, animation, sound, script, scenes…
Phạm Văn Thanh – Khoa học máy tính K64
Là một game object đặc biệt trong scene, dùng để xác định tầm nhìn, quansát các đối tượng khác trong game.
Là 3 phép biến đổi tịnh tiến, quay theo các trục, và phóng to thu nhỏ một đối tượng.
CƠ SỞ LÝ THUYẾT VÀ CÔNG NGHỆ
Ngôn ngữ sử dụng để lập trình game trên Unity là ngôn ngữ C#.
C# là một ngôn ngữ lập trình hướng đối tượng do Microsoft phát triển, đánh dấu sự khởi đầu cho kế hoạch NET của họ Tên gọi của ngôn ngữ này bao gồm ký tự thăng theo Microsoft, nhưng theo tiêu chuẩn ECMA, nó chỉ được gọi là C# C# được xây dựng dựa trên nền tảng của C++ và Java, và được mô tả là ngôn ngữ kết hợp những ưu điểm của C++, Visual Basic, Delphi và Java Anders Hejlsberg, một kiến trúc sư phần mềm nổi tiếng, là người chủ yếu thiết kế C#, với nhiều kinh nghiệm từ các sản phẩm như Turbo Pascal, Delphi, J++, và WFC.
C# là ngôn ngữ lập trình phản ánh trực tiếp NET Framework, nơi tất cả các chương trình NET hoạt động, và nó phụ thuộc mạnh mẽ vào framework này Trong C#, mọi dữ liệu đều được coi là đối tượng, được quản lý bởi trình dọn rác Garbage-Collector (GC) Ngoài ra, C# còn hỗ trợ nhiều kiểu trừu tượng như class, delegate, interface và exception, thể hiện rõ nét các đặc trưng của NET runtime.
So sánh với C và C++, ngôn ngữ này bị giới hạn và được nâng cao ở một vài đặc điểm nào đó, nhưng không bao gồm các giới hạn sau :
Các con trỏ chỉ có thể sử dụng trong chế độ không an toàn, trong khi hầu hết các đối tượng được tham chiếu an toàn và các phép tính đều được kiểm tra tràn bộ đệm Chỉ những loại kiểu giá trị mới được gọi bằng con trỏ, trong khi các đối tượng thuộc bộ gom rác chỉ có thể được gọi thông qua tham chiếu.
- Các đối tượng không thể được giải phóng tường minh.
Ý tưởng
Mario, nhân vật biểu tượng với cái mũi to, mũ đỏ và bộ râu đen, đã trở thành trò chơi điện tử nổi tiếng nhất thế giới kể từ khi ra mắt bởi Hãng Nintendo, Nhật Bản Sự yêu thích dành cho Mario không chỉ giới hạn trong cộng đồng game thủ mà còn lan tỏa ra toàn cầu, khẳng định vị thế của trò chơi này trong ngành công nghiệp game.
Series Mario là thương hiệu game thành công nhất hiện nay, với nhiều sản phẩm nổi tiếng Trong đó, nhánh game Super Mario được coi là một trong những trò chơi điện tử hay nhất từng được sản xuất Super Mario cũng là trò chơi bán chạy nhất mọi thời đại, với hơn 776 triệu bản được tiêu thụ, trong đó có hơn 390 triệu bản thuộc về nhánh Super Mario Nhờ đó, Mario đã trở thành một trong những thương hiệu truyền thông có doanh thu cao nhất mọi thời đại.
Bản đồ và các đối tượng trong game
Bản đồ trong game được hình thành từ những chi tiết nhỏ như khối đất, cây cỏ và nấm, được sắp xếp một cách khéo léo để tạo nên một bản đồ hoàn chỉnh và sinh động.
Hình 4.2.1.1 Các chi tiết Map
Phạm Văn Thanh – Khoa học máy tính K64
Hình 4.2.1.2 Ghép các chi tiết trên Scene
Hình 4.2.1.3 Map khi run game 4.2.2 Các đối tượng trong game
Một số sự kiện của Player:
- Khi chạm vào quái vật
Phạm Văn Thanh – Khoa học máy tính K64