LỜI MỞ ĐẦU Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày càngchị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
Trang 1LỜI MỞ ĐẦU 4
LỜI CẢM ƠN 5
CHƯƠNG 1: TNG QUAN V UNITY 6
1.1 Unity là gì? 6
1.2 Quá trình phát triển game Unity 6
1.3 Một số thống kê về Unity 6
1.4 Ưu điểm của Unity 8
CHƯƠNG 2: T;M HI<U V UNITY ENGINE 10
2.1 Các thành phần trong Unity Editor 10
2.1.1 Cưa s Sences 10
2.1.2 Cưa s Hierarchy 11
2.1.3 Cưa s Game 11
2.1.4 Cưa s Project 11
2.1.5 Cưa s Inspector 12
2.2 Các khái niệm cơ bản trong Unity 12
2.2.1 GameObject 12
2.2.2 Component 12
2.2.3 Sprite 12
2.2.4 Animation 13
2.2.5 Key Frame 13
2.2.6 Prefabs 13
2.2.7 Sounds 13
2.2.8 Script 13
2.2.9 Scenes 13
Trang 22.2.11 Camera 14
2.2.12 Transform 14
CHƯƠNG 3: TNG QUAN Đ TÀI 15
3.1 Giới thiệu ý tưởng và nội dung game 15
3.1.1 Giới thiệu ý tưởng 15
3.1.2 Nội dung game 15
CHƯƠNG 4: CƠ SỞ LÝ THUYẾT VÀ PHÂN TÍCH THIẾT KẾ 16
4.1 Giới thiệu về ngôn ngữ C# 16
4.2 Các công cụ sử dụng 17
4.2.1 Unity 2018.2.10f1 17
4.2.2 Adobe Photoshop CC 2018 20
4.2.3 Một Scrips sữ dụng trong game 23
CHƯƠNG 5: THIẾT KẾ GIAO DIỆN ĐỒ HỌA GAME 28
5.1 Tổng quan đồ họa màn chơi 28
5.1.1 Menu Game 28
5.1.2 Level Game 28
5.1.3 Options 29
5.1.4 Guide 29
5.1.5 End Game 30
5.1.6 Màn 1 30
5.1.7 Màn 2 31
5.1.8 Màn 3 31
5.1.9 Màn 4 32
5.1.10 Màn 5 32
Trang 35.2 Chi tiết màn hình 33
5.2.1 Màn hình Paused 33
5.2.2 Chướng ngại vật 34
CHƯƠNG 6: KẾT LUẬN 37
6.1 Kết quả 37
6.2 Đánh giá 38
6.2.1 Những điểm làm được 38
6.2.2 Những điểm chưa làm được 38
6.3 Hướng phát triển 38
TÀI LIỆU THAM KHẢO 39
Trang 4LỜI MỞ ĐẦU
Trong thời đại công nghệ thông tin như hiện nay, sản phẩm công nghệ ngày càngchị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ìnhthường Ngành công nghiệp Game hiện nay có thể nói là bùng nổ, với tốc độ phát triểnđến chóng mặt, rất nhiều những Game hay và hấp dẫn đã được ra đời trong thời gian qua.Phía sau những Game phát triển và nổi tiếng như vậy đều có một Game Engine GameEngine là một công cụ hỗ trợ, một Middleware giúp người phát triển viết Game một cáchnhanh chóng và đơn giản, đồng thời cung cấp khả năng tái sử dụng các tài nguyên và mãnguồn cao do có thể phát triển nhiều Game từ một Game Engine
Từ xu hướng phát triển và những bất cập trên, đồ á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ằmthực nghiệm việc phát triển một trò chơi (Demo) bắn máy bay 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ầnvà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ínhnă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ện dựng sẵn của Unity thông qua các ví dụ thực tế khi phát triển mộtgame bắn máy bay 2D 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
Trang 5sử 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
Đặc biệt với lòng biết ơn sâu sắc nhất chúng em xin gửi lời cảm ơn Thầy Nguyễn
Hồ Minh Đức là giảng viên trực tiếp hướng dẫn giúp đỡ chúng em trong quá trình thựchiện đồ án chuyên ngành Công Nghệ Phần Mềm
Trong thời gian nghiên cứu cũng như trong quá trình làm báo cáo đề tài, khôngtránh khỏi thiếu sót Chúng em rất mong nhận được sự góp ý quý báu của quý Thầy Cô,anh chị và các bạn
Xin chân thành cảm ơn!!!
Trang 6CHƯƠNG 1: TNG QUAN V UNITY
1.1 Unity là gì?
Unity là mô vt “cross- flatform game engine” tạm hiểu là công cụ phát triển game đanền tảng được phát triển bơi Unity Technologies Game engine này được sử dụng để pháttrển game trên PC, consoles, thiết bị di đô vng và trên websites
1.2 Quá trình phát triển game Unity
Ra mắt đầu tiên vào năm 2005 tại sự kiê vn Apple’s Worldwide Developer Conferencebơi nhà sáng lâ vp David Helgason, trải qua hơn 12 năm phát triển, nay Unity đã có version5.5 hoàn thiê vn hơn về rất nhiều mă vt
Tháng 5-2012 theo cuô vc khảo sát Game Developer Megazine được công nhâ vn làGame engine tốt nhất cho mobile Năm 2014 Unity thắng giải “Best Engine” tại giải UK’sannual Develop Industry Exellence
Trang 8Hình 1.3b
1.4 Ưu điểm của Unity
Chức năng cốt lõi đa dạng bao gồm: cung cấp công cụ dựng hình (kết xuất đồ họa)cho các hình ảnh 2D hoặc 3D, công cụ vật lý (tính toán và phát hiện va chạm), âm thanh,
mã nguồn, hình ảnh động, trí tuệ nhân tạo, phân luồng, tạo dò ng dữ liệu xử lý, quản lý bộnhớ, dựng ảnh đồ thị và kết nối mạng Nhờ có các engine mà công việc làm game trơ nên
ít tốn kém và đơn giản hơn
Hỗ trợ đa nền tảng: Một trong các thế mạnh của Unity3D chính là khả năng hỗ trợgần như toàn bộ các nền tảng hiện có bao gồm: PlayStation 3, Xbox 360, Wii U, iOS,Android, Windows, Blackberry 10, OS X, Linux, trình duyệt Web và cả Flash Nói cáchkhá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ảiphá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…
Trang 9Tính kinh tế cao: Unity Technologies hiện cung cấp bản miễn phí engine Unity3Dcho người dùng cá nhân và các doanh nghiệp có doanh thu dưới 100.000 USD/năm Vớibả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.
Trang 10CHƯƠNG 2: T;M HI<U V UNITY ENGINE
2.1 Các thành phần trong Unity Editor
Hình 2.1 2.1.1 Cưa s Sences
Phần này phần hiển thị các đối tượng trong scenes một cách trực quan, có thể lựachọn các đối tượng, kéo thả, phóng to, thu nhỏ, xoay các đối tượng
Phần này có để thiết lập một số thông số như hiển thị ánh sáng, âm anh, cách nhìn2D hay 3D -Khung nhìn Scene là nơi bố trí các Game Object như cây cối, cảnh quan,enemy, player, camera, … trong game Sự bố trí hoạt cảnh là một trong những chức năngquan trọng nhất của Unity
Trang 112.1.2 Cưa s Hierarchy
Tab hierarchy là nơi hiển thị các Game Object trong Sences hiện hành Khi các đốitượng được thêm hoặc xóa trong Sences, tương ứng với các đối tượng đó trong cửa sổHierarchy
Tương tự trong tab Project, Hierarchy cũng có một thanh tìm kiếm giúp quản lý vàthao tác với các Game Object hiệu quả hơn đặc biệt là với các dự án lớn
2.1.3 Cưa 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
Đường dẫn của thư mục tài nguyên hiện tại Chúng ta có thể dễ dàng tiếp cận cácthư mục con hoặc thư mục gốc bằng cách click chuột vào mũi tên hoặc tên thư mục
Trang 122.1.5 Cưa s Inspector
Cửa sổ Inspector hiển thị chi tiết các thông tin về Game Object đang làm việc, kể cảnhững component được đính kèm và thuộc tính của nó Bạn có thể điều chỉnh, thiết lậpmọi thông số và chức năng của Game Object thông qua cửa sổ Inspector
Mọi thuộc tính thể hiện trong Inspector đều có thể dễ dàng tuỳ chỉnh trực tiếp màkhông cần thông qua một kịch bản định trước Tuy nhiên Scripting API cung cấp một sốlượng nhiều và đầy đủ hơn do giao diện Inspector là có giới hạn
Các thiết lập của từng component được đặt trong menu Các bạn có thể click chuộtphả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àmviệc như hiển thị mã nguồn của Script, các thông số animation, …
2.2 Các khái niệm cơ bản trong Unity
2.2.3 Sprite
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 đó
Trang 13ta chỉ việc tạo ra một đối tượng ban đầu, các đồng tiền còn lại sẽ sử dụng prefabs Hoặc khi ta lát gạch cho một cái nền nhà, các viên gạch cũng được sử dụng là prefabs.
Trang 142.2.12 Transform
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
CHƯƠNG 3: TNG QUAN Đ TÀI
Trang 153.1 Giới thiệu ý tưởng và nội dung game
3.1.1 Giới thiệu ý tưởng
Game chủ yếu tập trung vào 1 nhân vật là Swordsman của dòng 2d platformer haycòn gọi là game đi màn vượt chướng ngại vật và tiêu diệt các chướng ngại vật trên đường
đi của nhân vật Lối chơi của các game này liên quan chủ yếu tới việc di chuyển nhân vậtphải có 1 số kĩ năng nhật định để có thể vượt qua các chướng ngại vật ví dụ như dụng vàogai nhân vật mất đi 1 máu trong tổng 5 máu hiên có Nếu nhân vật mà người chơi điềukhiển không được tốt và tuột xuống còn 0 máu thì sẽ quay lại vị trí xuất phát của mànchơi hiên tại, người chơi phải thật sự cẩn thận và có sự tập trung cao độ trong các bước dichuyễn mỗi màn chơi đều có rất nhiều bẫy đặt sẵn và quái rất khó giết Qua mỗi màn sốlượng bẫy cũng như quái cản trơ sẽ càng tăng lên tạo cho người chơi sự ức chế, cũng nhưhứng thú khi muốn vượt qua cho được màn chơi đó Game được phát triển dựa tên ýlương của game Mario huyền thoại, nên sẽ tạo nên sự thân thuộc và dễ hòa nhập với cáchchơi mà game đã quy định
3.1.2 Nội dung game
Game dựa trên câu chuyện về nhân vật Swordsman Một samurai đang tìm trên
đường quay về đất nước để cứu nguy cho đất nước trước sự tấn công của quái vật đến từ
lũ quái vật không gian, với vũ khí tiên tiến hiện đại vài các trụ lazer công thành Ngườichơi sẽ hóa thân vào nhật vật để tìm đường quay về, trên đường đi có rất nhiều quái vậtkhông gian hay trụ lazer cỡ nhỏ và cỡ lớn người chơi phải hết sức tập trung để có thể quacác màn và diệt Boss để giải cứu quê hương
Trang 16CHƯƠNG 4: CƠ SỞ LÝ THUYẾT VÀ PHÂN TÍCH THIẾT KẾ
4.1 Giới thiệu về ngôn ngữ C#
C# (đọc là "C thăng" hay "C sharp" ("xi-sáp")) là một ngôn ngữ lập trình hướng đốitượng được phát triển bơi Microsoft, là phần khơi đầu cho kế hoạch NET của họ Têncủa ngôn ngữ bao gồm ký tự thăng theo Microsoft nhưng theo ECMA là C#, chỉ bao gồmdấu số thường Microsoft phát triển C# dựa trên C++ và Java C# được miêu tả là ngônngữ có được sự cân bằng giữa C++, Visual Basic, Delphi và Java
C# đượ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ớicác sản phẩm Turbo Pascal, Delphi, J++, WFC
C# theo một hướng nào đó, là ngôn ngữ lập trình phản ánh trực tiếp nhất đến.NETFramework mà tất cả các chương trình.NET chạy, và nó phụ thuộc mạnh mẽ vàoFramework này Mọi dữ liệu cơ sơ đều là đối tượng, được cấp phát và hủy bỏ bơi trìnhdọn rác Garbage-Collector (GC), và nhiều kiểu trừu tượng khác chẳng hạn như class,delegate, interface, exception, v.v, phản ánh rõ ràng những đặ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 đây:
Các con trỏ chỉ có thể được sử dụng trong chế độ không an toàn 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 Các con trỏ chỉ được sử dụng để gọi các loại kiểu giá trị; còn những đốitượng thuộc bộ thu rác (garbage-collector) thì chỉ được gọi bằng cách thamchiếu
Các đối tượng không thể được giải phóng tường minh
Trang 17 Chỉ có đơn kế thừa, nhưng có thể cài đặt nhiều interface trừu tượng (abstractinterfaces) Chức năng này làm đơn giản hóa sự thực thi của thời gian thực thi.
C# thì an-toàn-kiểu (typesafe) hơn C++
Cú pháp khai báo mảng khác nhau("int[] a = new int[5]" thay vì "int a[5]")
Kiểu thứ tự được thay thế bằng tên miền không gian (namespace)
*.FBX hay *.dae, *.3DS, *.dxf và *.obj, nhưng định dạng *.FBX hay được dùng vì đượctối ưu hóa hơn, còn dùng các định dạng khác ngoài FBX thì phải cài phần mền thiết kếcharacter tưng ứng thì mới dùng được (tức là dùng Maya có định dạng *.mb, *.ma thìmuốn dùng được phải cài Maya)
Trang 18Hình 4.2.1
Ngoài ra khi bạn design được một game thì bạn có thể xuất được ra một file.exe và
có thể chạy và chơi được trên PC khác
Một thế mạnh nữa của Unity là bạn có thể chạy demo game của bạn ngay trongkhidesign, nó có hỗ trợ hai chế độ là Scene và Game, rất thuận tiện cho việc test thử cácmodulGame
Unity3D có 2 loại phiên bản, một cho người dùng free, và một phiên bản pro thì mấtphí
Khi tải Unity về các bạn cài đặt bình thường, đến khi kết thúc cài đặt nền các bạnchọn phiên bản Pro thì cần phải mua, còn nếu là người dùng free thì các bạn chọn kíchhoạt qua web, chỉ cần có kết nối mạng internet, sau đó chọn cài đặt thủ công và nhậpmail, chọn free là bạn có thể sử dụng một bản Unity free
Trang 19Unity hỗ trợ 3 ngôn ngữ phát triển chính là C#, UnityScript (dựa trên Javascript) vàBoo Boo là ngôn ngữ ít được sử dụng nhất và thường được khuyên không nên dùng C#
là ngôn ngữ được dùng phổ biến nhất trong cộng đồng Unity với rất nhiều plugin và ví dụ
sử dụng ngôn ngữ này Bạn có thể cân nhắc sử dụng Unityscript tuy nhiên có thể bạn sẽgặp vấn đề khi tương tác với một số plugin được viết bằng C#
4.2.1.1 Ưu điểm và nhược điểm
Unity có rất nhiều tính năng tuyệt vời:
Unity có một cồng đồng rất lớn về asset và plugin – trong đó có rất nhiềuresources free và có nhiều thứ rất đáng bỏ tiền
Unity có bộ công cụ rất trực quan và editor có thể mơ rộng bằng plugins
Unity hỗ trợ rất nhiều định dạng asset khác nhau và có thể tự động chuyển đổiđến định dạng phù hợp nhất với nền tảng thích hợp
Unity hỗ trợ nhiều nền tảng: di động, desktop, web và console
Việc triển khai đến các nền tảng khác nhau cũng khá dễ quản lý
Bạn có thể dễ dàng xây dựng một game 3D mà không cần cấu hình quá phứctạp
Unity bản free có hầu hết những tính năng quan trọng nhất
Unity bản trả phí phù hợp với các developer chuyên nghiệp
Tuy nhiên Unity cũng có vài nhược điểm mà bạn cần cân nhắc:
Việc hợp tác rất khó khăn Unity sử dụng một server asset rất hiệu quả để hỗ trợcác đội phát triển phần mềm hợp tác với nhau Tuy nhiên nếu bạn không sửdụng nó thì việc chia sẽ code và asset giữa các thành viên trong team có thể gây
ra những vấn đề nghiêm trọng Lựa chọn tốt nhất là sử dụng một số công cụquản lý resource bên ngoài nhưng có một vài binary file không thể merge được
Trang 20với nhau và việc cập nhật asset có thể gây nên một số vấn đề trong scenes, mấtkết nối đến script và các đối tượng khác.
Hiệu năng chưa thật sự ấn tượng cho đến khi Unity 5 ra mắt Unity 5 đã chạyhầu hết trên một luồng duy nhất và hầu như không sử dụng thêm 1 nhân phụnào trên các thiết bị di động Bộ biên dịch chưa được tối ưu tốt cho các bộ xử lýARM trên hầu hết các thiết bị di động Để giải quyết vấn đề này thì Unity đãquyết định transpile (source-to-source compiler) sang C++ và sử dụng LLVM
để tối ưu được nhiều hơn thay vì giải quyết vấn đề này trực tiếp trên các phiênbản sau này
Mã nguồn của engine không được công bố kể cả cho những người dùng chấpnhận trả tiền Điều đó có nghĩa là nếu bạn gặp một bug với engine bạn phải chờUnity fix chúng trong các bản tiếp theo Điều này có thể gây nên những vấn đềnghiêm trọng với project của bạn
4.2.2 Adobe Photoshop CC 2018
Adobe Photoshop (thường được gọi là Photoshop) là một phần mềm chỉnh sửa đồhọa được phát triển và phát hành bơi hãng Adobe Systems ra đời vào năm 1988 trên hệmáy Macintosh Photoshop được đánh giá là phần mềm dẫn đầu thị trường về sửa ảnhbitmap và được coi là chuẩn cho các ngành liên quan tới chỉnh sửa ảnh Từ phiên bảnPhotoshop 7.0 ra đời năm 2002, Photoshop đã làm lên một cuộc cách mạng về ảnhbitmap Phiên bản mới nhất hiện nay là Adobe Photoshop CC
Ngoài khả năng chính là chỉnh sửa ảnh cho các ấn phẩm, Photoshop còn được sửdụng trong các hoạt động như thiết kế trang web, vẽ các loại tranh (matte painting vànhiều thể loại khác), vẽ texture cho các chương trình 3D gần như là mọi hoạt động liênquan đến ảnh bitmap
Adobe Photoshop có khả năng tương thích với hầu hết các chương trình đồ họa kháccủa Adobe như Adobe Illustrator, Adobe Premiere, After After Effects và Adobe Encore