Xem mẫu

  1. TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH  NGUYỄN PHI HẬU XÂY DỰNG GAME NÉM GẠCH ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN (ỨNG DỤNG PHẦN MỀM) NIÊN KHÓA: 2017 - 2020 Đà Nẵng, 01/2021
  2. TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN KHOA KHOA HỌC MÁY TÍNH  NGUYỄN PHI HẬU MÃ HSSV: CCCT17A003 XÂY DỰNG GAME NÉM GẠCH ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN (ỨNG DỤNG PHẦN MỀM) Giảng viên hƣớng dẫn: ThS. Nguyễn Thanh Cẩm Đà Nẵng, 01/2021
  3. LỜI CẢM ƠN Chúng em xin chân thành cảm ơn Khoa Khoa học máy tính, trƣờng ĐH CNTT và Truyền thông Việt Hàn đã tạo điều kiện tốt cho em thực hiện đề tài này. Em xin chân thành cảm ơn Thầy Nguyễn Thanh Cẩm, là ngƣời đã tận tình hƣớng dẫn, chỉ bảo em trong suốt thời gian thực hiện đề tài. Em xin cảm ơn sâu sắc đến quý Thầy Cô trong Khoa đã tận tình giảng dạy, trang bị cho chúng em những kiến thức quí báu trong những năm vừa qua. Em xin gửi lòng biết ơn sâu sắc đến Ba, Mẹ, các anh chị và bạn bè đã an ủng hộ, giúp đỡ và động viên chúng em trong những lúc khó khăn cũng nhƣ trong suốt thời gian học tập và nghiên cứu. Mặc dù em đã cố gắng hoàn thành đồ án trong phạm vi và khả năng cho phép, nhƣng chắc chắn không thể tránh những thiếu sót, kính mong sự thông cảm và tận tình chỉ bảo của quí Thầy Cô và các bạn. Sinh viên thực hiện Nguyễn Phi Hậu i
  4. MỤC LỤC LỜI CẢM ƠN ...................................................................................................................i MỤC LỤC ...................................................................................................................... ii DANH MỤC HÌNH ẢNH ...............................................................................................v LỜI MỞ ĐẦU .................................................................................................................1 1. Lý do chọn đề tài ...................................................................................................1 2. Mục tiêu và nhiệm vụ nghiên cứu .........................................................................1 3. Đối tƣợng và phạm vi nghiên cứu .........................................................................2 4. Phƣơng pháp nghiên cứu .......................................................................................2 5. Dự kiến kết quả .....................................................................................................2 6. Ý nghĩa khoa học và thực tiễn ...............................................................................2 7. Nội dung đồ án tốt nghiệp .....................................................................................2 CHƢƠNG 1: CƠ SỞ LÝ THUYẾT ................................................................................3 1.1. TỔNG QUAN VỀ UNITY ................................................................................3 1.1.1. Unity là gì? ..................................................................................................3 1.1.2. Tính năng của Unity ....................................................................................3 1.1.3. Sơ lƣợc lịch sử hình thành và phát triển của Unity .....................................5 1.2. TỔNG QUAN VỀ GAME ENGINE .................................................................6 1.2.1. Khái niệm ....................................................................................................6 1.2.2. Mục đích ......................................................................................................6 1.2.3. Ảo hóa phần cứng (trừu tƣợng hóa phần cứng – Hardware Abstraction)...7 1.2.4. Lịch sử .........................................................................................................7 1.2.5. Xu hƣớng hiện tại ........................................................................................7 1.2.6. Phần mềm trung gian ..................................................................................8 1.3. TỔNG QUAN KIẾN TRÚC GAME ENGINE .................................................8 1.4. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# .............................................11 1.4.1 Tổng quan về C# ............................................................................................11 1.4.2 Các đặc điểm của C# .....................................................................................11 1.4.3 Ƣu điểm và nhƣợc điểm của C# ....................................................................12 1.5. TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO ..................................12 1.5.1 Giới thiệu .......................................................................................................12 1.5.2 Lý do nên dùng Visual Studio .......................................................................12 ii
  5. CHƢƠNG 2: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ...................................................14 2.1. CÁC ĐẶC ĐIỂM VÀ TÍNH NĂNG ...............................................................14 2.1.1. Rendering (kết xuất hình ảnh) ...................................................................14 2.1.2. Lighting (ánh sáng) ...................................................................................14 2.1.3. Terrains (địa hình) .....................................................................................14 2.1.4. Substances (Texture thông minh)..............................................................14 2.1.5. Physics (vật lý) ..........................................................................................14 2.1.6. Pathfinding (tìm đƣờng) ............................................................................15 2.1.7. Audio (âm thanh) ......................................................................................15 2.1.8. Programming (lập trình) ............................................................................15 2.1.9. Networking ................................................................................................15 2.2. CÁC THÀNH PHẦN XÂY DỰNG GAME ...................................................15 2.2.1. GameObject ...............................................................................................15 2.2.2. Component ................................................................................................16 2.2.3. Sprite .........................................................................................................17 2.2.4. Animation ..................................................................................................18 2.2.5. Key Frame .................................................................................................19 2.2.6. Prefabs .......................................................................................................19 2.2.7. Sound .........................................................................................................19 2.2.8. Script .........................................................................................................20 2.2.9. Scene .........................................................................................................21 2.2.10. Assets ........................................................................................................21 2.2.11. Camera ......................................................................................................22 2.2.12. Transform ..................................................................................................23 2.3. MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY DỰNG GAME....................23 2.3.1. Load hoạt họa ............................................................................................23 2.3.2. Thêm sự kiện vào chuyển động của nhân vật ...........................................24 2.3.3. Xây dựng giao diện Game .........................................................................24 2.3.4. Âm thanh trong game ................................................................................26 CHƢƠNG 3: CHƢƠNG TRÌNH DEMO .....................................................................30 3.1. GIỚI THIỆU GAME ..........................................................................................30 3.2. CÁC QUY LUẬT CHƠI CHÍNH .......................................................................30 iii
  6. 3.2.1. Di chuyển ......................................................................................................30 3.2.2. Điểm..............................................................................................................31 3.2.3. Tạm dừng game .........................................................................................31 3.3. DỮ LIỆU GAME NÉM GẠCH ......................................................................32 3.3.1. Màn hình bắt đầu lập trình ........................................................................32 3.3.2. Các Script có trong Game .........................................................................33 KẾT LUẬN ...................................................................................................................34 TÀI LIỆU THAM KHẢO ..............................................................................................vi iv
  7. DANH MỤC HÌNH ẢNH Hình 1.1. Hình minh họa đa nền......................................................................................3 Hình 1.2. Tổng quan kiến trúc Unity .............................................................................10 Hình 2.1. Các GameObject ............................................................................................16 Hình 2.2. Các thành phần trong đối tƣợng ....................................................................17 Hình 2.3. Sprites ............................................................................................................18 Hình 2.5. Các prefabs ....................................................................................................19 Hình 2.7. Lập trình Unity bằng C# trên Visual Studio..................................................20 Hình 2.8. Các script cấu tạo game hoàn chỉnh ..............................................................21 Hình 2.9. Các Scene ......................................................................................................21 Hình 2.10. Các thành phần trong file Assets .................................................................22 Hình 2.12. Transform ....................................................................................................23 Hình 2.13. Các prefab ....................................................................................................24 Hình 2.14. Hàm destroy.................................................................................................24 Hình 2.15. GUI Button ..................................................................................................25 Hình 2.16. Áp dụng GUIStyle lên Label .......................................................................25 Hình 2.17. Vẽ hình ảnh trên GUI ..................................................................................26 Hình 2.18. Thêm thành phần Audio Source ..................................................................27 Hình 2.19. Thêm file âm thanh cho thành phần AudioSource ......................................27 Hình 2.20. Thông tin âm thanh ......................................................................................28 Hình 3.1. Màn hình để bắt đầu chơi ..............................................................................30 Hình 3.2. Màn hình để chơi game .................................................................................31 Hình 3.3. Màn hình GameOver .....................................................................................31 Hình 3.4. Pause Game ...................................................................................................32 Hình 3.5. Tổng thể các scene để lập trình .....................................................................32 v
  8. Xây dựng Game ném gạch LỜI MỞ ĐẦU 1. Lý do chọn đề tài Trong thời đại công nghệ thông tin nhƣ hiện nay, 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 chóng mặt, rất nhiều những Game hay và hấp dẫn đƣợc ra đời trong thời quan 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à 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 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, đồ án này sẽ khảo sát và nghiên cứu về Engine Unity – một Game Engine rất phổ biến và không kém mạnh mẽ hiện nay nhằm thực nghiệm việc phát triển một trò chơi (Demo) Ném gạch 2D. 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 của chúng em, góp phần vào sự phát triển của ngành công nghiệp Game nƣớc nhà. Các chƣơng đầu trong tài liệu sẽ trình bày lần lƣợt các khái niệm chung về Game Engine và thế giới 2D. Các chƣơng tiếp theo sẽ giới thiệu về Engine Unity bao gồm các đặc điểm, tính năng, công cụ và thành phần trong Engine này. Sau những nội dung về thiết kế, tài liệu sẽ trình bày về việc lập trình trên Unity khi giới thiệu về ngôn ngữ lập trình cùng các lớp, hàm trong thƣ việc dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển một game Ném gạch. Cuối cùng là giới thiệu về bối cảnh, cốt truyện, tài liệu hƣớng dẫn sử dụng của trò chơi Demo cùng chƣơng tổng kết về các khó khăn và những thành quả trong suốt quá trình phát triển trò chơi Demo trên Unity. 2. Mục tiêu và nhiệm vụ nghiên cứu  Mục tiêu nghiên cứu - Xây dựng đƣợc game hoàn chỉnh. - Tạo hiệu ứng và âm thanh  Nhiệm vụ nghiên cứu - Tìm hiểu xây dựng kịch bản game trên Unity. Nguyễn Phi Hậu – Lớp CCCT17A 1
  9. Xây dựng Game ném gạch 3. Đối tƣợng và phạm vi nghiên cứu  Đối tƣợng nghiên cứu - Lập trình game trên Unity  Phạm vi nghiên cứu - Xây dựng game hoàn thành ở mức độ cơ bản 4. Phƣơng pháp nghiên cứu - Nghiên cứu lý thuyết. - Tham khảo internet. - Xây dựng game theo mục tiêu đề ra. 5. Dự kiến kết quả - Hoàn thành game Ném gạch. 6. Ý nghĩa khoa học và thực tiễn  Ý nghĩa khoa học - Tìm hiểu về thị trƣờng game - Nghiên cứu cách làm game 2D  Ý nghĩa thực tiễn - 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 7. 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. Chƣơng 3. Chƣơng trình Demo. Nguyễn Phi Hậu – Lớp CCCT17A 2
  10. Xây dựng Game ném gạch CHƢƠNG 1: CƠ SỞ LÝ THUYẾT 1.1. TỔNG QUAN VỀ UNITY 1.1.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 và trên websites. Unity đƣợc dùng để làm video game, hoặc những nội dung có tính tƣơng tác nhƣ thể hiện kiến trúc, hoạt hình 2D, 3D thời gian thực. Unity hao hao với Director, Blender game engine, Virtools hay Torque Game Builder trong khía cạnh dùng môi trƣờng đồ họa tích hợp ở quá trình phát triển game là chính. Sức mạnh Unity có thể tạo ra đƣợc nhiều loại game 2D. 3D đa dạng, dễ sử dụng với ngƣời làm game chƣa chuyên nghiệp, chất lƣợng cao, chạy hầu hết trên các hệ điều hành. Hình 1.1. Hình minh họa đa nền 1.1.2. Tính năng 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 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. Nguyễn Phi Hậu – Lớp CCCT17A 3
  11. Xây dựng Game ném gạch - Môi trƣờng phát triển đƣợc tích hợp với tính năng kế thừa, khả năng chỉnh sửa đồ họa, chức năng kiếm tra chi tiết, và đặc biệt tính năng xem trƣớc game trong ngay lúc xây dựng (live game preview). - 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) - Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity 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…. - Dễ sử dụng: Unity đƣợ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 Unity 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 Unity cho ngƣời dùng cá nhân và các doanh nghiệp có doanh thu dƣới 100.000 USD/năm. 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. - Sự tiện lợi: Nếu chùng ta là một ngƣời chuyên dùng 3Dmax. Hay Maya hoặc phần mềm mã nguồn mở Blender thì quả là thật tuyệt, chúng ta sẽ có một lợi thế lớn Nguyễn Phi Hậu – Lớp CCCT17A 4
  12. Xây dựng Game ném gạch khi viết game trên Unity này, bởi công việc tạo các mô hình 2D, 3D sẽ trở nên dễ dàng hơn rất nhiều, việc kết hợp giữa ngƣời lập trình và ngƣời thiết kế các mô hình sẽ nhanh và hiệu quả hơn. Trong Unity chúng ta có thể import trực tiếp các file mô hình đang thiêt kế và sẽ thiết kế hoàn thiện tiếp nếu nhƣ chƣa xong trong đó công việc import chỉ diễn ra một lần. Không nhƣ việc phải dùng các công cụ khác để thực hiện viết game chúng ta sẽ phải xuất chúng ra một dạng nào đó và mỗi lần sửa lại phần mô hình chúng ta lại phải import lại, và nhƣ thế là quá mất thời gian trong việc tạo và chỉnh sửa các mô hình theo ý muốn. Ngoài ra Unity còn cho chúng ta trực tiếp tạo các mô hình nếu muốn. 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.3. Sơ lƣợc lịch sử hình thành và phát triển của Unity a) Hình thành Phần lõi của Unity ban đầu đƣợc viết với Joachim Ante vào năm 2001. Sau đó công ty đƣợc hình thành vào năm 2005 và bắt đầu phiên bản 1.0. Đến năm 2007, Unity đƣợc nâng lên phiên bản 2.0. Unity chính thức hỗ trợ Android và cho ra đời phiên bản 3.0 có hỗ trợ Android vào tháng 9/2010 và bây giờ là phiên bản Unity 5. Có thể thấy tốc độ phát triển của Unity khá nhanh. b) Giải thƣởng Unity đã đoạt đƣợc nhiều giải lớn với những giải chính nhƣ sau: - Năm 2006, Unity đạt Best Use of Mac OS X Graphics tại Apple’s WWDC. Đây là lần đầu tiên một dụng cụ phát triển game đạt đƣợc giải chất lƣợng do giải thƣởng uy tín này đƣa ra. - 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 đƣợc trên 250.000 ngƣời đăng ký sử dụng gồm Bigpoint, Cartoon Network, Coca-Cola, Disney, Electronic Arts, LEGO, Microsoft, NASA, Ubisoft, Warner Bros, các hãng phim lớn nhỏ, các chuyên gia độc lập, sinh viên và những ngƣời đam mê Nguyễn Phi Hậu – Lớp CCCT17A 5
  13. Xây dựng Game ném gạch 1.2. TỔNG QUAN VỀ GAME ENGINE 1.2.1. Khái niệm Một game engine là một phần mềm đƣợc viết để thiết kế và phát triển video game, hiểu đơn giản nó là loại phần mềm trung gian kết nối tƣơng tác của nhiều ứng dụng trong cùng 1 hệ thống với nhau. Có rất nhiều loại game engine dùng để thiết kế game cho các hệ máy nhƣ hệ consoles hay máy tính cá nhân(PC). Chức năng cốt lõi của game engine phần lớn nằm trong công cụ dựng hình (kết xuất đồ họa) cho các hình ảnh 2 chiều (2D) hay 3 chiều(3D), công cụ vật lý (hay công cụ tính toán và phát hiện va chạm), âm thanh, mã nguồn, hình ảnh động (animation), 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. Quá trình phát triển Game tiết kiệm đƣợc rất nhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng một Engine để tạo nhiều Game khác nhau. 1.2.2. Mục đích Game Engine cung cấp một bộ các công cụ phát triển trực quan và có thể tái sử dụng từng thành phần trong đó. Nói chung các bộ công cụ này cung cấp một môi trƣờng phát triển tích hợp đƣợc đơn giản hóa. Phát triển ứng dụng nhanh (Rapid Application Development) cho Game theo cách lập trình hƣớng dữ liệu. Những Game Engine này đôi khi còn đƣợc gọi là các phần mềm trung gian cho Game (Game Middleware), nhƣ ý nghĩa của thuật ngữ, chúng cung cấp một nền tảng phần mềm linh hoạt và dễ dàng sử dụng lại với mọi chức năng cốt lõi cần thiết ngay trong nó để có thể phát triển một ứng dụng Game đồng thời giảm giá thành, độ phức tạp, và kịp thời hạn phát hành tất cả các yếu tố quan trọng trong ngành công nghiệp Game đầy cạnh tranh. Giống nhƣ các phần mềm trung gian khác, Game Engine thƣờng cung cấp một nền tảng trừu tƣợng hóa, cho phép một Game có thể chạy trên nhiều hệ máy bao gồm các hệ console hoặc máy tính cá nhân với một vài thay đổi trong mã nguồn của Game đó. Thông thƣờng, phần mềm trung gian cho Game đƣợc thiết kế với một nền tảng kiến trúc dựa trên các thành phần khác, cho phép các hệ thống khác nhau trong Engine có thể thay thế hoặc mở rộng với các phần mềm trung gian khác chuyên biệt hơn nhƣ là Havok cho hệ thống vật lý trong Game, Miles Sound System cho âm thanh, hay Bink cho các đoạn video. Một số Game Engine chỉ cung cấp khả năng dựng hình 3D thời gian thực hay một khả năng riêng biệt nào khác thay vì rất nhiều chức năng trong Nguyễn Phi Hậu – Lớp CCCT17A 6
  14. Xây dựng Game ném gạch phạm vi rộng mà Game yêu cầu. Loại Engine này thƣờng đƣợc gọi là: Graphics Engine . Một vài ví dụ cho các Engine đồ họa là: RealmForge, Truevision3D, OGRE, Crystal Space, Genesis3D, Vision Engine, Irrlich 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) Thông thƣờng, Engine 3D hay hệ thống kết xuất đồ họa trong hame Engine thƣờng đƣợc xây dựng trên một nền tảng giao diện lập trình ứng dụng đồ họa nhƣ Direct3D hay OpenGl cung cấp sẵn một hệ ảo hóa cho GPU hay card đồ họa. Thƣ viện mã nguồn cấp thấp nhƣ DirectX, SDL, và OpenAL (thƣ viện âm thanh mã nguồn mở) cũng thƣờng đƣợc sử dụng trong các Game khi chúng cung cấp khả năng truy cập phần cứng độc lập. 1.2.4. Lịch sử Thuật ngữ Game Engine xuất hiện vào giữa những năm 90, đặc biệt là trong mối quan hệ giữa Game 3D. Nhƣ các thƣơng hiệu nổi tiếng của Software: Doom và Quake, thay vì phải làm việc từ đầu, các nhà phát triển khác sẽ có quyền truy nhập vào phần lõi của Game và thiết kế hình ảnh, nhân vật, vũ khí, và các màn chơi của riêng họ - gọi là Game Content (nội dung Game) hay Game Assets . Các game sau này, nhƣ Quake III Arena và sản phẩm năm 1988 của Epic Games: Unreal đƣợc thiết kế với cách tiếp cận mới này, Game Engine và nội dung Game đƣợc chia thành các phần riêng biệt để phát triển. Engine có thể tái sử dụng khiến việc phát triển Game tiếp theo nhanh hơn và dễ dàng hơn, một thuận lợi to lớn trong ngành công nghiệp cạnh tranh này. Game Engine hiện đại là một trong những ứng dụng đƣợc viết ra (bằng các ngôn ngữ lập trình) phức tạp nhất, thƣờng xuyên phải có rất nhiều tinh chỉnh trong hệ thống để đảm bảo kiểm soát chính xác trải nghiệm ngƣời dùng. Sự phát triển liên tục của Game Engine đã tạo ra một sự phân chia mạnh mẽ giữa các công việc dựng hình, viết kịch bản, thiết kế hình ảnh, và thiết kế màn chơi. Hiện nay thông thƣờng một đội ngũ phát triển Game điển hình phải có số lƣợng họa sĩ gấp vài lần số lƣợng lập trình viên. 1.2.5. Xu hƣớng hiện tại Với công nghệ tạo Game Engine càng phát triển và trở nên thân thiện hơn với ngƣời dùng, ứng dụng của nó càng đƣợc mở rộng, và giờ đây đƣợc sử dụng để tạo các Game mang mục đích khác với giải trí đơn thuần nhƣ: mô phỏng, huấn luyện ảo, y tế ảo, và mô phỏng các ứng dụng quân sự. Nhiều Game Engine đang đƣợc tạo ra bằng Nguyễn Phi Hậu – Lớp CCCT17A 7
  15. Xây dựng Game ném gạch các ngôn ngữ lập trình cấp cao nhƣ Java cà C# hay.NET (ví dụ: TorqueX, và Visual3D.NET) hay Python (Panda3D). Vì hâu hết các game 3D hiện nay đều có giới hạn cho GPU, khả năng gây chậm của các ngôn ngữ lập trình cấp cao trở nên không đáng kể, trong khi việc tăng năng suất đƣợc cung cấp bởi các ngôn ngữ này lại có lợi nhuận cho các nhà phát triển Game Engine. 1.2.6. Phần mềm trung gian Một số hãng hiện nay chuyên tập trung vào phát triển các bộ phần mềm gọi là phần mềm trung gian (Middleware). Các nhà phát triển Middleware cố gắng phát triển một bộ phần mềm mạnh mẽ bao gồm hầu hết các yếu tố một nhà phát triển Game cần đến để xây dựng một Game. Phần lớn các Middleware cung cấp các cơ sở để phát triển Game một cách dễ dàng, nhƣ hình ảnh, âm thanh, hệ thống vật lý và chức năng AI. Gamebryo và RenderWare là hai phần mềm trung gian đƣợc sử dụng rộng rãi. Một số Middleware chỉ làm một chức năng nhƣng nó còn hiệu quả hơn cả toàn bộ Engine. Ví dụ, SpeedTree đƣợc sử dụng để dựng hình ảnh cây cối thêm thực tế trong Game nhập vai The Elder Scrolls IV: Oblivion. Bốn gói phần mềm trung gian đƣợc sử dụng rỗng rãi nhất, thƣờng đƣợc cung cấp dƣới dạng một chức năng bổ sung trong một hệ thống Engine gồm có Bink của hãng RAD Game Tools, hãng Firelight với FMOD, Havok, và GFx của Scaleform. RAD Game Tools phát triển Bink cho dựng hình video cơ bản, đi cùng với âm thanh Miles, và dựng hình ảnh 3D Granny. FMOD của Firelight là một thƣ viện và bộ công cụ phần mềm âm thanh mạnh mẽ giá rẽ. Havok cung cấp một hệ thống mô phỏng vật lý mạnh, cùng với các bộ phần mềm về hình ảnh động và mô phỏng hành vi. Scaleform đem lại GFx dùng cho các biểu diễn cao cấp trên nền giao diện Flash, cùng với các giải pháp trình chiếu video chất lƣợng cao, và một Input Method Editor (IME) phần bổ sung nhằm hỗ trợ trò chuyện trong Game bằng ngôn ngữ Châu Á 1.3. TỔNG QUAN KIẾN TRÚC GAME ENGINE - Quá trình phát triển game tiết kiệm đƣợc rất nhiều thời gian và kinh phí vào việc tái sử dụng và tái thích ứng một engine để tạo nhiều game khác nhau. - Game Engine không chỉ bao gồm thành phần tạo hình ảnh mà bao gồm rất nhiều thành phần khác nhƣ điều khiển luồng, quản lý bộ nhớ, điều khiển âm thanh… Nếu Engine chỉ có chức năng render hình ảnh thì thƣờng đƣợc gọi là Graphic Engine. Nguyễn Phi Hậu – Lớp CCCT17A 8
  16. Xây dựng Game ném gạch - Việc lựa chọn một Game Engine trƣớc khi phát triển sẽ giúp chúng ta giảm thiểu những sai sót không đáng có trong quá trình phát triển phần mềm. Có một số tiêu chí chúng ta cần chú ý nhƣ sau:  Giá thành: Một số Game Engine có giá thành cao, tuy có rất nhiều chức năng và khả năng hỗ trợ tốt. Do vậy chúng ta cần xem xét đến vấn đề này trƣớc tiên. Nếu là ngƣời lập trình thông thƣờng thì với mức giá khoảng 1500$ cho 1 Engine rõ ràng là một vấn đề lớn. Thông thƣờng hiện nay có khá nhiều Engine không tính phí cho hiệu năng cao. Từ phần tiếp theo chúng ta sẽ chỉ bàn đến các Engine free này mà thôi.  Hiệu năng: Trƣớc khi chúng ta lựa chọn một Engine, chúng ta cần kiểm tra hiệu năng của Engine này trên nền tảng mà chúng ta hƣớng đến. Ví dụ: Một engine có hiệu năng cao trên PC nhƣng lại cho hiệu năng thấp hoặc không hỗ trợ đầy đủ trên Android. Hoặc 1 Engine chỉ cho 1-2 FPS (Frame Per Second) trong khi 1 Engine khác cho 30 FPS với cùng một cách lập trình.  Cộng đồng: Số lƣợng ngƣời sử dụng rõ ràng nói lên chất lƣợng của Engine đó. Đồng thời, nhiều ngƣời sử dụng và nhiều lập trình viên có nghĩa là khi bạn vƣớng mắc một vấn đề nào đó, khi đƣa câu hỏi lên, sẽ nhanh có câu trả lời hơn, và câu trả lời chất lƣợng hơn.  Tài liệu: Nếu một Engine không có tài liệu cụ thể, r ràng đó là một engine không tốt. Tài liệu cụ thể sẽ giúp bạn rất nhiều khi mới làm quen với Engine, cũng nhƣ giải quyết các vấn đề về thiết kế cũng nhƣ các vấn đề xảy ra trong khi lập trình.  Mã nguồn: đôi khi các tài liệu không có đủ thông tin, chúng ta cần tìm hiểu mã nguồn để hiểu cách xử lý của Engine. Một số Engine mặc dù Free nhƣ lại có mã nguồn đóng. Do đó chúng ta cần có sự lựa chọn. Hoặc đôi khi mã nguồn của Engine không thực sự phù hợp với yêu cầu của chúng ta, khi đó chúng ta cần sửa đổi mã nguồn của Engine đó. Mã nguồn mở cũng giúp cho việc sửa lỗi nhanh hơn do có nhiều ngƣời có thể đóng góp hơn.  Các tính năng: R ràng mục đích của chúng ta khi sử dụng Engine là tiết kiệm thời gian phát triển và dễ dàng hơn trong quá trình phát triển. Do đó một Engine có nhiều tính năng hơn sẽ giúp chúng ta nhiều hơn, phù hợp hơn trong nhiều ứng dụng. - 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 đó. Nguyễn Phi Hậu – Lớp CCCT17A 9
  17. Xây dựng Game ném gạch - Engine Unity hỗ trợ cho chúng ta UnityAPI để viết script game. UnityAPI là API lập trình game trong Unity rất mạnh. UnityAPI chứa các đối tƣợng và phƣơng thức hỗ trợ hầu hết các đối tƣợng và các loại thành phần trong Unity. - Trong một scene thƣờng có nhiều đối tƣợng game. Mỗi đối tƣợng này có thể có hoặc không có đoạn script nào gắn lên đó. Nếu muốn gắn script vào đối tƣợng, ta bắt buộc phải kế thừa class đó từ lớp MonoBehaviour của UnityAPI và tên class phải trùng với tên file script. Mỗi script khi gắn lên đối tƣợng game đều đƣợc đối tƣợng game xem nhƣ một thành phần bên trong và đƣợc cấp phát vùng nhớ khi chạy game. 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. Nguyễn Phi Hậu – Lớp CCCT17A 10
  18. Xây dựng Game ném gạch - 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. 1.4. TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C# 1.4.1 Tổng quan về 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# ra đời năm 2000, đƣợc thiết kế chủ yếu bởi Anders Hejlsberg – kiến trúc sƣ phần mềm nổi tiếng với các sản phẩm Turbo Pascal, Delphi… Đƣợc xây dựng trên nền tảng của hai ngôn ngữ lập trình mạnh nhất đó là C++ và Java. Do đó C# đƣợc miêu tả là ngôn ngữ có sự cân bằng giữ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. 1.4.2 Các đặc điểm của C# - 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. Nguyễn Phi Hậu – Lớp CCCT17A 11
  19. Xây dựng Game ném gạch - 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. - Một số nhƣợc điểm: + 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. 1.5. TÌM HIỂU VỀ CÔNG CỤ HỖ TRỢ VISUAL STUDIO 1.5.1 Giới thiệu Visual Studio là (IDE – Integrated Development Environment) một bộ công cụ phát triển phần mềm do Microsoft phát triển. Visual Studio cũng là một phần mềm đƣợc sử dụng bởi các lập trình viên để xây dựng nên các sản phẩm phần mềm. 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. Nguyễn Phi Hậu – Lớp CCCT17A 12
  20. Xây dựng Game ném gạch - Visual Studio là một công cụ hỗ trợ việc Debug một cách mạnh mẽ, dễ dàng nhất (Break Point, xem giá trị của biến trong quá trình chạy, hỗ trợ debug từng câu lệnh). - Giao diện Visual Studio rất dễ sử dụng đối với ngƣời mới bắt đầu. - Visual Studio hỗ trợ phát triển ứng dụng desktop MFC, Windows Form,Universal App, ứng dụng mobileWindows Phone 8/8.1, Windows 10, Android (Xamarin), iOS và phát triển website Web Form, ASP.NET MVC và phát triển Microsoft Office. - 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 cho phép chúng ta tích hợp những extension từ bên ngoài nhƣ Resharper (hổ trợ quản lý và viết mã nhanh cho các ngôn ngữ thuộc.Net), hay việc cài đặt thƣ viện 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. Nguyễn Phi Hậu – Lớp CCCT17A 13
nguon tai.lieu . vn