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

Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch

43 8 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

Thông tin cơ bản

Tiêu đề Xây Dựng Game Ném Gạch
Tác giả Nguyễn Phi Hậu
Người hướng dẫn ThS. Nguyễn Thanh Cẩm
Trường học Trường Đại Học Công Nghệ Thông Tin Và Truyền Thông Việt - Hàn
Chuyên ngành Công Nghệ Thông Tin (Ứng Dụng Phần Mềm)
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 43
Dung lượng 1,52 MB

Cấu trúc

  • 1. Lý do chọn đề tài (8)
  • 2. Mục tiêu và nhiệm vụ nghiên cứu (8)
  • 3. Đối tƣợng và phạm vi nghiên cứu (9)
  • 4. Phương pháp nghiên cứu (9)
  • 5. Dự kiến kết quả (9)
  • 6. Ý nghĩa khoa học và thực tiễn (9)
  • 7. Nội dung đồ án tốt nghiệp (9)
  • CHƯƠNG 1: CƠ SỞ LÝ THUYẾT (10)
    • 1.1. TỔNG QUAN VỀ UNITY (10)
      • 1.1.1. Unity là gì? (10)
      • 1.1.2. Tính năng của Unity (10)
      • 1.1.3. Sơ lƣợc lịch sử hình thành và phát triển của Unity (12)
    • 1.2. TỔNG QUAN VỀ GAME ENGINE (13)
      • 1.2.1. Khái niệm (13)
      • 1.2.2. Mục đích (13)
      • 1.2.3. Ảo hóa phần cứng (trừu tƣợng hóa phần cứng – Hardware Abstraction) (14)
      • 1.2.4. Lịch sử (14)
      • 1.2.5. Xu hướng hiện tại (14)
      • 1.2.6. Phần mềm trung gian (15)
    • 1.3. TỔNG QUAN KIẾN TRÚC GAME ENGINE (15)
    • 1.4. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# (18)
      • 1.4.1 Tổng quan về C# (18)
      • 1.4.2 Các đặc điểm của C# (18)
      • 1.4.3 Ƣu điểm và nhƣợc điểm của C# (0)
    • 1.5. TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO (19)
      • 1.5.1 Giới thiệu (19)
      • 1.5.2 Lý do nên dùng Visual Studio (19)
    • 2.1. CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG (21)
      • 2.1.1. Rendering (kết xuất hình ảnh) (21)
      • 2.1.2. Lighting (ánh sáng) (21)
      • 2.1.3. Terrains (địa hình) (21)
      • 2.1.4. Substances (Texture thông minh) (21)
      • 2.1.5. Physics (vật lý) (21)
      • 2.1.6. Pathfinding (tìm đường) (22)
      • 2.1.7. Audio (âm thanh) (22)
      • 2.1.8. Programming (lập trình) (22)
      • 2.1.9. Networking (22)
    • 2.2. CÁC THÀNH PHẦN XÂY DỰNG GAME (22)
      • 2.2.1. GameObject (22)
      • 2.2.2. Component (23)
      • 2.2.3. Sprite (24)
      • 2.2.4. Animation (25)
      • 2.2.5. Key Frame (26)
      • 2.2.6. Prefabs (26)
      • 2.2.7. Sound (26)
      • 2.2.8. Script (27)
      • 2.2.9. Scene (28)
      • 2.2.10. Assets (28)
      • 2.2.11. Camera (29)
      • 2.2.12. Transform (30)
    • 2.3. MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME (30)
      • 2.3.1. Load hoạt họa (30)
      • 2.3.2. Thêm sự kiện vào chuyển động của nhân vật (31)
      • 2.3.3. Xây dựng giao diện Game (31)
      • 2.3.4. Âm thanh trong game (33)
  • CHƯƠNG 3: CHƯƠNG TRÌNH DEMO (37)
    • 3.1. GIỚI THIỆU GAME (37)
    • 3.2. CÁC QUY LUẬT CHƠI CHÍNH (37)
      • 3.2.2. Điểm (38)
      • 3.2.3. Tạm dừng game (38)
    • 3.3. DỮ LIỆU GAME NÉM GẠCH (39)
      • 3.3.1. Màn hình bắt đầu lập trình (39)
      • 3.3.2. Các Script có trong Game (40)
  • KẾT LUẬN (41)
  • TÀI LIỆU THAM KHẢO (43)

Nội dung

Mục tiêu nghiên cứu đồ án là xây dựng được game hoàn chỉnh, tạo hiệu ứng và âm thanh, tìm hiểu xây dựng kịch bản game trên Unity. Mời các bạn cùng tham khảo!

Mục tiêu và nhiệm vụ nghiên cứu

- Xây dựng đƣợc game hoàn chỉnh

- Tạo hiệu ứng và âm thanh

- Tìm hiểu xây dựng kịch bản game trên Unity.

Đối tƣợng và phạm vi nghiên cứu

- Lập trình game trên Unity

- Xây dựng game hoàn thành ở mức độ cơ bản

Phương pháp nghiên cứu

- Xây dựng game theo mục tiêu đề ra.

Dự kiến kết quả

- Hoàn thành game Ném gạch.

Ý nghĩa khoa học và thực tiễn

- Tìm hiểu về thị trường game

- Nghiên cứu cách làm game 2D

- Học hỏi và tích lũy kinh nghiệm về làm game

- Biết đƣợc cách tạo ra game

Nội dung đồ án tốt nghiệp

Ngoài phần mở đầu, kết luận và tài liệu tham khảo, nội dung của đồ án tốt nghiệp gồm các chương sau:

Chương 1 Cơ sở lý thuyết

Chương 2 Phân tích thiết kế hệ thống

CƠ SỞ LÝ THUYẾT

TỔNG QUAN VỀ UNITY

Unity is a cross-platform game engine developed by Unity Technologies, designed for creating games across multiple platforms, including PC, consoles, mobile devices, and websites.

Unity là một công cụ mạnh mẽ được sử dụng để 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 nền tảng 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 công cụ mạnh mẽ cho phép tạo ra nhiều loại game 2D và 3D đa dạng, dễ sử dụng cho cả những người mới bắt đầu trong ngành game Với chất lượng cao, Unity có khả năng chạy trên hầu hết các hệ điều hành, mang lại trải nghiệm tốt cho người chơi.

Hình 1.1 Hình minh họa đa nền

Các engine game cung cấp nhiều chức năng quan trọng như công cụ dựng hình cho hình ảnh 2D và 3D, công cụ vật lý để tính toán và phát hiện va chạm, cũng như hỗ trợ âm thanh, mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng và quản lý bộ nhớ Nhờ vào những tính năng này, việc phát triển game trở nên tiết kiệm và đơn giản hơn.

Môi trường phát triển tích hợp nhiều tính năng hữu ích như kế thừa, chỉnh sửa đồ họa, kiểm tra chi tiết và đặc biệt là khả năng xem trước game ngay trong quá trình xây dựng, giúp nâng cao hiệu quả và trải nghiệm cho người phát triển.

- Chương trình độc lập trên Windows mà Mac OS

- Trên web, thông qua Unity Web Player plugin cho Internet Explorer, FireFox, Safari, Opera, Chrome, cha 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)

Unity 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 hầu hết các 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 Điều này có nghĩa là các studio chỉ cần một gói engine để tạo ra game cho mọi nền tảng và dễ dàng chuyển đổi giữa các hệ điều hành khác nhau Hơn nữa, Unity còn cung cấp giải pháp 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ị như Web, PC, Mobile, và Tablet một cách đồng thời.

Unity là một công cụ phát triển game 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ệ thống này phù hợp cho cả lập trình viên không chuyên và các studio chuyên nghiệp, giúp người dùng nhanh chóng làm quen và sử dụng hiệu quả Với độ phổ biến cao trên toàn cầu, người dùng có thể dễ dàng tìm kiếm kinh nghiệm và hướng dẫn 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 Unity cho cá nhân và doanh nghiệp có doanh thu dưới 100.000 USD/năm, giúp tiết kiệm chi phí cho người dùng Đối với phiên bản Pro, mức phí chỉ 1.500 USD/năm, một khoản đầu tư hợp lý so với giá trị mà engine này mang lại.

Sự tiện lợi của Unity mang lại cho những người sử dụng 3Dmax, Maya hay Blender một lợi thế lớn trong việc phát triển game Việc tạo ra các mô hình 2D và 3D trở nên dễ dàng hơn, giúp tăng cường hiệu quả giữa lập trình viên và nhà thiết kế Unity cho phép nhập trực tiếp các file mô hình đang thiết kế, giảm thiểu thời gian và công sức so với việc sử dụng các công cụ khác, nơi mà mỗi lần sửa đổi đều phải xuất lại file Hơn nữa, Unity còn hỗ trợ người dùng tạo ra các mô hình ngay trong phần mềm và dễ dàng đặt các thuộc tính vật lý với nhiều chức năng sẵn có.

1.1.3 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 khởi đầu bởi Joachim Ante vào năm 2001, và chính thức thành lập công ty 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à vào tháng 9/2010, phiên bản 3.0 ra mắt với hỗ trợ Android 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 nhƣ sau:

Năm 2006, Unity đã giành giải Best Use of Mac OS X Graphics tại Apple’s WWDC, đánh dấu sự kiện lần đầu tiên một công cụ phát triển game nhận được 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 đạ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 hiện có hơn 250.000 người đăng ký, bao gồm nhiều 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ệ.

TỔNG QUAN VỀ GAME ENGINE

Game engine là phần mềm thiết kế và phát triển video game, đóng vai trò trung gian kết nối các ứng dụng trong hệ thống Có nhiều loại game engine phục vụ cho các hệ máy như console 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, phân luồng, quản lý bộ nhớ, và kết nối mạng 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à tái thích ứng.

Game Engine là một bộ công cụ phát triển trực quan, cho phép tái sử dụng các thành phần, cung cấp môi trường phát triển tích hợp đơn giản hóa cho việc phát triển ứng dụng game theo phương pháp lập trình hướng dữ liệu Chúng được xem như phần mềm trung gian cho game, mang lại nền tảng phần mềm linh hoạt, giúp giảm chi phí, độ phức tạp và đảm bảo thời hạn phát hành trong ngành công nghiệp game cạnh tranh Game Engine thường cho phép game hoạt động trên nhiều hệ máy khác nhau với một số điều chỉnh mã nguồn Ngoài ra, chúng được thiết kế với kiến trúc dựa trên các thành phần, cho phép thay thế hoặc mở rộng với các phần mềm 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, với các ví dụ như RealmForge, Truevision3D, OGRE, và JMonkey Engine.

1.2.3 Ảo hóa phần cứng (trừu tƣợng hóa phần cứng – Hardware Abstraction)

Hệ thống kết xuất đồ họa trong game Engine thường được xây dựng trên các nền tảng giao diện lập trình ứng dụng đồ họa như Direct3D và OpenGL, cung cấp khả năng ả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, nhờ vào khả năng truy cập phần cứng độc lập mà chúng mang lại.

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 Các thương hiệu nổi tiếng như Doom và Quake đã cho phép các nhà phát triển khác truy cập vào phần lõi của trò chơi, từ đó họ có thể thiết kế hình ảnh, nhân vật, vũ khí và các màn chơi riêng biệt mà không cần phải bắt đầu từ đầu.

Game Content, hay còn gọi là Game Assets, đã có sự phát triển mạnh mẽ từ những sản phẩm như Quake III Arena và Unreal của Epic Games Các game hiện đại được thiết kế với cách tiếp cận phân tách giữa Game Engine và nội dung Game, cho phép tái sử dụng engine và rút ngắn thời gian phát triển Điều này mang lại lợi thế lớn trong ngành công nghiệp game cạnh tranh Game Engine hiện đại là một trong những ứng dụng phức tạp nhất, yêu cầu nhiều tinh chỉnh để đảm bảo trải nghiệm người dùng chính xác Sự phát triển này đã tạo ra sự phân chia rõ rệt giữa các công việ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, dẫn đến việc đội ngũ phát triển game thường có số lượng họa sĩ gấp nhiều lần so với lập trình viên.

Với sự phát triển của công nghệ Game Engine, ứng dụng của nó đã mở rộng ra ngoài giải trí, bao gồm 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#, NET (ví dụ: TorqueX, Visual3D.NET) và Python (Panda3D) Mặc dù các game 3D có giới hạn về GPU, nhưng sự chậm trễ do các ngôn ngữ lập trình cao cấp gây ra là không đáng kể, trong khi năng suất mà chúng mang lại lại rất có lợi cho các nhà phát triển Game Engine.

Hiện nay, nhiều hãng phát triển phần mềm trung gian (Middleware) nhằm hỗ trợ các nhà phát triển game trong việc xây dựng trò chơi Các phần mềm này cung cấp các 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 (AI), giúp quá trình phát triển trở nên dễ dàng hơn Gamebryo và RenderWare là hai ví dụ tiêu biểu cho 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 mang lại hiệu quả vượt trội, 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 phổ biến nhất bao gồm Bink của RAD Game Tools, FMOD của Firelight, Havok, và GFx của Scaleform Bink hỗ trợ dựng hình video, FMOD cung cấp thư viện âm thanh giá rẻ, Havok mang lại hệ thống mô phỏng vật lý mạnh mẽ, và Scaleform GFx hỗ trợ các biểu diễn giao diện Flash cùng với giải pháp trình chiếu video chất lượng cao và hỗ trợ trò chuyện bằng ngôn ngữ Châu Á.

TỔNG QUAN KIẾN TRÚC GAME ENGINE

Quá trình phát triển game hiện nay đã tiết kiệm đáng kể thời gian và chi phí nhờ việc tái sử dụng và điều chỉnh một engine để tạo ra nhiều trò chơi khác nhau.

Game Engine không chỉ là công cụ tạo hình ảnh mà còn bao gồm nhiều thành phần quan trọng khác như điều khiển luồng, quản lý bộ nhớ và điều khiển âm thanh Nếu một engine chỉ đảm nhận chức năng render hình ảnh, nó thường được gọi là Graphic Engine.

Việc chọn lựa một Game Engine phù hợp trước khi bắt đầu phát triển phần mềm là rất quan trọng, vì nó giúp giảm thiểu sai sót không mong muốn trong quá trình phát triển Có một số tiêu chí cần chú ý khi lựa chọn Game Engine.

Khi lựa chọn Game Engine, giá thành là yếu tố quan trọng cần xem xét, đặc biệt khi một số Engine có giá lên tới 1500$ Đối với lập trình viên thông thường, chi phí này có thể trở thành rào cản lớn Tuy nhiên, hiện nay có nhiều Engine miễn phí với hiệu suất cao, do đó, trong phần tiếp theo, chúng ta sẽ chỉ tập trung vào các Engine miễn phí này.

Trước khi chọn một Engine, việc kiểm tra hiệu năng của nó trên nền tảng dự kiến là rất quan trọng Một Engine có thể hoạt động tốt trên PC nhưng lại kém hiệu quả hoặc không hỗ trợ đầy đủ trên Android Ví dụ, một Engine chỉ cung cấp 1-2 FPS (Khung Hình Mỗi Giây) trong khi một Engine khác có thể đạt 30 FPS với cùng một phương pháp lập trình.

Cộng đồng sử dụng một Engine có ảnh hưởng lớn đến chất lượng của nó Số lượng người dùng và lập trình viên đông đảo không chỉ giúp bạn dễ dàng nhận được câu trả lời nhanh chóng khi gặp vấn đề, mà còn đảm bảo rằng những câu trả lời đó có chất lượng cao hơn.

Một engine không có tài liệu cụ thể thường không được đánh giá cao Tài liệu chi tiết sẽ hỗ trợ người dùng mới làm quen với engine, đồng thời giúp giải quyết các vấn đề thiết kế và các sự cố phát sinh trong quá trình lập trình.

Mã nguồn là yếu tố quan trọng giúp chúng ta hiểu cách hoạt động của Engine, đặc biệt khi tài liệu không cung cấp đủ thông tin Một số Engine miễn phí nhưng lại có mã nguồn đóng, vì vậy cần lựa chọn cẩn thận Nếu mã nguồn không đáp ứng yêu cầu, chúng ta có thể sửa đổi nó Mã nguồn mở cũng hỗ trợ việc sửa lỗi nhanh chóng nhờ vào sự đóng góp từ nhiều người.

Các tính năng của Engine giúp tiết kiệm thời gian phát triển và đơn giản hóa quy trình phát triển Một Engine với nhiều tính năng sẽ mang lại lợi ích lớn hơn và phù hợp hơn cho nhiều ứng dụng khác nhau.

- Qua 6 điểm trên, chúng ta có thể đánh giá và đƣa ra quyết định của mình khi sử dụng một Engine nào đó

Unity cung cấp UnityAPI, một API lập trình mạnh mẽ cho việc viết script game UnityAPI bao gồm các đối tượng và phương thức hỗ trợ hầu hết mọi loại đối tượng và thành phần trong Unity, giúp lập trình viên dễ dàng phát triển game.

Trong một scene game, có nhiều đối tượng khác nhau, mỗi đối tượng có thể có hoặc không có script gắn kèm Để 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 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 game chạy.

Hình 1.2 Tổng quan kiến trúc Unity

- 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

- 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

- Rigibody: 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.

TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C#

C# là một ngôn ngữ lập trình theo phương pháp lập trình hướng đối tượng và lập trình trực quan đƣợc phát triển bởi Microsoft

C# là một ngôn ngữ lập trình được ra đời vào năm 2000, do Anders Hejlsberg, một kiến trúc sư phần mềm nổi tiếng, thiết kế Ngôn ngữ này được xây dựng dựa trên nền tảng của hai ngôn ngữ lập trình mạnh mẽ là C++ và Java, vì vậy C# được xem là sự kết hợp hoàn hảo giữa các yếu tố của C++, Pascal, Delphi và Java.

C# với sự hỗ trợ mạnh mẽ của.NET Framework giúp cho việc tạo một ứng dụng Windows Forms hay WPF (Windows Presentation Foundation)… trở nên rất dễ dàng

- Là một ngôn ngữ hướng đối tượng, trực quan

- Tám mươi từ khóa và hơn mười kiểu dữ liệu được dựng sẵn

- Cung cấp những đặc tính hướng thành phần (component - oriented) như là Property, Event

- C# không khuyến khích sử dụng con trỏ nhƣ C++

- C# có bộ Garbage Collector (thu gom rác) sẽ tự động thu gom vùng nhớ khi không còn sử dụng nữa

- C# đã loại bỏ đa kế thừa trong C++ mà thay vào đó C# sẽ hỗ trợ thực thi giao diện interface

Nguyên nhân lựa chọn C# là vì:

 C# là một ngôn ngữ đơn giản

 C# là một ngôn ngữ hiện đại

 C# là một ngôn ngữ mạnh mẽ và mềm dẻo

 C# là một ngôn ngữ ít từ khóa

 C# là một ngôn ngữ phổ biến

 C# mang sức mạnh của nhiều ngôn ngữ (C++, Java…)

1.4.3 Ƣu điểm và nhƣợc điểm của C#

- Một số ƣu điểm nổi bật của C#:

+ Gần gũi với các ngôn ngữ lập trình thông dụng (C++, Java, Pascal)

+ Xây dựng dựa trên nền tảng của các ngôn ngữ lập trình mạnh nên thừa hưởng những ƣu điểm của những ngôn ngữ đó

+ Đã cải tiến các khuyết điểm của C/C++ nhƣ con trỏ, các hiệu ứng phụ…

+ Dễ tiếp cận, dễ phát triển

+ Đƣợc hỗ trợ của.NET Framework

+ Nhƣợc điểm lớn nhất của C# là chỉ chạy trên nền Windows và có cài.NET Framework

+ Thao tác đối với phần cứng yếu hơn so với các ngôn ngữ khác Hầu hết phải dựa vào Windows.

TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO

Visual Studio is an Integrated Development Environment (IDE) developed by Microsoft, serving as a comprehensive software development tool It is widely utilized by programmers to create various software products.

1.5.2 Lý do nên dùng Visual Studio

- Hỗ trợ lập trình trên nhiều ngôn ngữ nhƣ C/C++, C#, F#, Visual Basic, HTML, CSS, JavaScript Phiên bảnVisual Studio 2015 có hổ trợ ngôn ngữ Python

Visual Studio là một công cụ mạnh mẽ giúp hỗ trợ việc Debug một cách dễ dàng, cho phép người dùng thiết lập Break Point, xem giá trị của biến trong quá trình thực thi và hỗ trợ debug từng câu lệnh một cách hiệu quả.

- Giao diện Visual Studio rất dễ sử dụng đối với người mới bắt đầu

Visual Studio supports the development of various applications, including desktop applications using MFC and Windows Forms, Universal Apps, and mobile applications for Windows Phone 8/8.1, Windows 10, Android (via Xamarin), and iOS Additionally, it facilitates web development through Web Forms and ASP.NET MVC, as well as Microsoft Office application development.

- Visual Studio hỗ trợ kéo thả để xây dựng ứng dụng một cách chuyên nghiệp, giúp các bạn mới bắt đầu có thể tiếp cận nhanh hơn

Visual Studio hỗ trợ tích hợp các extension bên ngoài như Resharper, giúp quản lý và viết mã nhanh chóng cho các ngôn ngữ thuộc NET Ngoài ra, người dùng có thể cài đặt thư viện một cách nhanh chóng thông qua NuGet.

- Visual Studio đƣợc sử dụng đông đảo bởi lập trình viên trên toàn thế giới

CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG

CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG

2.1.1 Rendering (kết xuất hình ảnh)

Giống như các engine game hoàn chỉnh 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ệ đồ họa 3D phổ biến nhằm nâng cao chất lượng hình ảnh Các phiên bản mới nhất của Unity đã được tối ưu hóa thuật toán để cải thiện hiệu suất kết xuất, đồng thời nâng cao chất lượng hình ảnh sau khi hoàn tất quá trình kết xuất.

2.1.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 cũng cung cấp nhiều giải pháp đa dạng cho phép chúng ta áp dụng ánh sáng một cách tốt nhất vào môi trường trong trò chơi với nhiều loại nguồn sáng như ánh sáng có hướng (Directional Light), á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 giúp thiết kế địa hình dễ dàng với các Brush tùy chỉnh cho việc tạo hình và lát Texture Bên cạnh đó, Tree Creator cho phép người dùng tạo ra cây cối với đa dạng hình dạng, kích thước và kiểu dáng.

Substance là một công cụ giúp tùy biến Textures, mang lại sự đa dạng cho chúng trong các điều kiện môi trường khác nhau Unity hỗ trợ tính năng này thông qua các API có sẵn trong thư viện, cho phép lập trình viên dễ dàng tùy chỉnh hình ảnh từ Texture.

PhysX is a powerful simulation and physics processing engine developed by NVIDIA, a leading graphics card manufacturer Unity has integrated this engine to handle various physics-related challenges, supporting features such as Soft Bodies, Rigidbodies, Ragdolls, Joints, and Cars.

2.1.6 Pathfinding (tìm đường) Đây là một tính năng rất mới mẻ đến từ phiên bản Unity 3.5 Với các phiên bản trước, để phát triển khả năng tìm đường cho trí thông minh nhân tạo (AI), nhà phát triển phải hoàn toàn tự xây dựng cho mình một hệ thống tìm đường riêng biệt Tuy nhiên ở phiên bản 3.5 đến nay, Unity hỗ trợ cho chúng ta tình năng Pathfinding cho phép tạo ra khả năng tìm đường cho AI nhờ vào khái niệm lưới định hướng (NavMesh)

Unity tích hợp FMOD, một trong những công cụ âm thanh mạnh mẽ nhất hiện nay, cho phép người dùng nhập và sử dụng nhiều định dạng tệp âm thanh khác nhau.

Lập trình đóng vai trò thiết yếu trong phát triển game, giúp nhà phát triển xây dựng khả năng tương tác, trí thông minh và các 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 Script và Boo

Networking cho phép phát triển các trò chơi trực tuyến, một thể loại game thu hút đông đảo người chơi Tính năng này hỗ trợ việc xây dựng các yếu tố phổ biến trong game online như hệ thống điểm kinh nghiệm, chat và tương tác thời gian thực.

Một số tính nă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 XÂY DỰNG GAME

- Một đối tƣợng cụ thể trong game gọi là một game object, có thể là nhân vật, đồ vật nào đó

Ví dụ: cây cối, xe cộ, nhà cửa, người…

A GameObject consists of various components that define its characteristics, including visual representation (sprite render), a collection of actions (animator), collision handling (collision), physics calculations (physical), control scripts (script), and other elements Each of these elements is referred to as a component of the GameObject.

Hình 2.2 Các thành phần trong đối tƣợng

- 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 này cho phép tái sử dụng các đối tượng tương tự 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 gốc.

Trong game Mario, các đồng tiền đều có cách xử lý giống nhau, vì vậy chúng ta chỉ cần tạo một đối tượng ban đầu, và các đồng tiền còn lại sẽ được sử dụng từ prefabs Tương tự, khi lát gạch cho nền nhà, các viên gạch cũng được lấy từ prefabs.

Script là tập tin chứa mã nguồn, có vai trò quan trọng trong việc khởi tạo và xử lý các đối tượng trong game Nó được coi như linh hồn của trò chơi, giúp định hình và điều khiển mọi hoạt động bên trong.

- Trong Unity có thể dùng ngôn ngữ lập trình C#, Java Script, BOO để lập trình Script

- Unity có hỗ trợ sẵn phần mềm MonoDeveloper dùng để lập trình

Hình 2.7 Lập trình Unity bằng C# trên Visual Studio

Hình 2.8 Các script cấu tạo game hoàn chỉnh

- 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…

Hình 2.10 Các thành phần trong file Assets

- Là một game object đặc biệt trong scene, dùng để xác định tầm nhìn, quan sá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 tu nhỏ một đối tƣợng

MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME

Game 2D được tạo ra từ nhiều mô hình 2D được sắp xếp một cách hài hòa trong không gian hai chiều, nhằm tạo nên cảnh vật hấp dẫn trong trò chơi Vì vậy, việc nạp và hiển thị các mô hình 2D trong game đóng vai trò vô cùng quan trọng.

Mô hình 2D hiện nay được cấu tạo từ nhiều đa giác, tạo nên các khối vật thể liên kết với nhau thông qua một khung xương Điều này cho phép mô hình linh hoạt hơn, không bị giới hạn bởi một chuyển động cố định và dễ dàng thay đổi các chuyển động khác nhau.

Các mô hình 2D và 3D thường được tạo ra bằng phần mềm thiết kế chuyên dụng như Adobe InDesign và Adobe Photoshop Sau khi hoàn thành, những mô hình này sẽ được nhập vào game engine để sử dụng trong các trò chơi.

Engine Unity hỗ trợ nhiều định dạng mô hình 2D và 3D như PNG và JPG Khi mô hình được tải vào dự án, bạn có thể chuyển đổi chúng thành Prefab để 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, cần tạo một file script và gán nó cho một đối tượng trong game để đoạn script có thể hoạt động Trong file script này, khai báo một đối tượng kiểu GameObject để lưu trữ mô hình, 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.

Giải phải ở đây là load mô hình từ Prefab

2.3.2 Thêm sự kiện vào chuyển động của nhân vật

Khi lập trình kịch bản game, việc xác định thời điểm một nhân vật hoàn thành chuyển động là rất quan trọng để thực hiện các bước xử lý tiếp theo Chẳng hạn, sau khi nhân vật thực hiện động tác chết, chúng ta cần phải xóa đối tượng đó khỏi bộ nhớ Trong Unity, khi một chuyển động kết thúc, hệ thống không tự động phát ra sự kiện để thông báo.

Tạo một file script chứa hàm sẽ thực thi sau khi sự kiện xảy ra Chẳng hạn, file script có nội dung chứa hàm hủy đối tƣợng:

Khi game đang hoạt động, sự kiện sẽ diễn ra khi đối tượng hoàn thành animation destroy Ngược lại, nếu đối tượng đang chạy animation khác, sự kiện sẽ không được kích hoạt.

Việc thêm sự kiện vào mô hình giúp ta kiểm soát chuyển động dễ dàng hơn và đƣa ra các xử lý thích hợp ở thời điểm nhất định

2.3.3 Xây dựng giao diện Game

Giao diện đồ họa người dùng (GUI) là yếu tố thiết yếu trong việc phát triển ứng dụng game và các ứng dụng khác, cho phép vẽ các đối tượng đồ họa như Button, Label, Checkbox, và Slider lên màn hình Trong Unity, hệ thống GUI được gọi là GUIUnity Để sử dụng các phương thức trong GUI, chúng ta cần gọi chúng từ hàm OnGUI(), tương tự như sự kiện Paint trong C# Ví dụ dưới đây sẽ minh họa cách tạo một button đơn giản.

Để tạo ra một Button hay thành phần GUI ấn tượng hơn, chúng ta sử dụng GUIStyle, một kiểu cài đặt cho các thành phần GUI GUIStyle bao gồm thông tin về font chữ, vị trí biểu tượng, hình nền, và khoảng cách Chỉ cần định nghĩa và áp dụng GUIStyle cho bất kỳ thành phần nào như Button, Label hay Checkbox Có thể xem GUIStyle tương tự như CSS trong thiết kế website.

Ví dụ dưới đây minh họa cách tạo một Label sử dụng định nghĩa GUIStyle với các thuộc tính: kích thước font 14, chữ in đậm, canh giữa, màu chữ đỏ, font Beckasin, vị trí vẽ cụ thể và kích thước hình chữ nhật bao quanh là 150x50.

Để vẽ một hình ảnh lên màn hình trong Unity, chúng ta sử dụng đối tượng Texture2D, tương tự như Bitmap hay Image trong C# Để tải hình từ thư mục Resources và hiển thị nó, chúng ta sử dụng phương thức DrawTexture().

Với lớp GUI trong Unity, chúng ta có khả năng tạo ra giao diện ấn tượng cho ứng dụng game Bên cạnh các phương thức đã đề cập, còn nhiều phương thức khác để vẽ các đối tượng như Radio, Checkbox, và Slider, giúp tăng cường tính tương tác và trải nghiệm người dùng.

2.3.4 Âm thanh trong game Âm thanh là yếu tố không kém phần quan trọng trong ứng dụng game Thật nhàm chán khi một cảnh đánh nhau, bắn nhau hay các hiệu ứng đẹp mắt mà không có âm thanh Âm thanh 3 chiều sẽ làm cho game thực hơn và sống động hơn Để chơi đƣợc một file âm thanh trong Unity có 2 cách: bằng code hoặc trên giao diện Dù chọn cách nào thì trước hết chúng ta phải có sẵn các file âm thanh và import vào project

Để sử dụng âm thanh trong dự án, bạn cần chọn đối tượng đã tạo và gắn thành phần AudioSource cho nó AudioSource là đối tượng quản lý âm thanh, cho phép bạn phát, dừng, thay đổi chế độ lặp và điều chỉnh âm lượng của nhạc một cách dễ dàng.

Sau khi thêm thành phần Audio Source vào đối tượng, bạn có thể dễ dàng điều chỉnh các thông số và gán tệp âm thanh cho thành phần này.

Hình 2.19 Thêm file âm thanh cho thành phần AudioSource

CHƯƠNG TRÌNH DEMO

GIỚI THIỆU GAME

Trò chơi tính điểm mà tôi đã phát triển chỉ dành cho một người chơi, trong đó người chơi điều khiển giá đỡ để tung quả bóng lên Khi quả bóng va chạm và phá vỡ các viên gạch, người chơi sẽ nhận được điểm Nếu không bắt được bóng, trò chơi sẽ kết thúc và hiển thị menu cho phép người chơi chọn chơi lại hoặc dừng Mục tiêu là phá hủy toàn bộ các viên gạch để tiến đến cấp độ tiếp theo Ở cấp độ đầu tiên, viên gạch vàng chỉ cần một lần va chạm để vỡ, trong khi ở các cấp độ sau, viên gạch đỏ và xanh có độ bền cao hơn, yêu cầu người chơi phải va chạm 2-3 lần mới có thể phá hủy.

12 level, độ khó cứ tăng dần theo mỗi level

Hình 3.1 Màn hình để bắt đầu chơi

CÁC QUY LUẬT CHƠI CHÍNH

Người chơi có thể di chuyển bằng cách chạm vào bên trái hoặc bên phải màn hình để đỡ quả bóng bay lên Họ chỉ có thể di chuyển trong phạm vi mà camera ghi lại.

Hình 3.2 Màn hình để chơi game

Người chơi sẽ được cộng điểm khi phá vỡ được những viên gạch thì người chơi sẽ đƣợc cộng 1 điểm

Khi đang chơi game nếu người chơi muốn tạm dừng chỉ cần ấn nút II là sẽ dừng Game

DỮ LIỆU GAME NÉM GẠCH

3.3.1 Màn hình bắt đầu lập trình

Game đƣợc hình thành bởi 2 Scene trên màn hình:

Hình 3.5 Tổng thể các scene để lập trình

3.3.2 Các Script có trong Game

Ngày đăng: 15/12/2021, 10:13

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Hình minh họa đa nền - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 1.1. Hình minh họa đa nền (Trang 10)
Hình 1.2. Tổng quan kiến trúc Unity - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 1.2. Tổng quan kiến trúc Unity (Trang 17)
Hình 2.1. Các GameObject - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.1. Các GameObject (Trang 23)
Hình 2.2. Các thành phần trong đối tƣợng - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.2. Các thành phần trong đối tƣợng (Trang 24)
Hình 2.3. Sprites - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.3. Sprites (Trang 25)
Hình 2.4. Animation - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.4. Animation (Trang 25)
Hình 2.6. Sound - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.6. Sound (Trang 26)
Hình 2.5. Các prefabs - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.5. Các prefabs (Trang 26)
Hình 2.7. Lập trình Unity bằng C# trên Visual Studio - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.7. Lập trình Unity bằng C# trên Visual Studio (Trang 27)
Hình 2.8. Các script cấu tạo game hoàn chỉnh - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.8. Các script cấu tạo game hoàn chỉnh (Trang 28)
Hình 2.11. Camera - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.11. Camera (Trang 29)
Hình 2.10. Các thành phần trong file Assets - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.10. Các thành phần trong file Assets (Trang 29)
Hình 2.12. Transform - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.12. Transform (Trang 30)
Hình 2.13. Các prefab - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.13. Các prefab (Trang 31)
Hình 2.16. Áp dụng GUIStyle lên Label - Đồ án tốt nghiệp Công nghệ thông tin: Xây dựng game ném gạch
Hình 2.16. Áp dụng GUIStyle lên Label (Trang 32)

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

TÀI LIỆU LIÊN QUAN

w