Nhằm tạo ra một ứng dụng trong việc giúp đỡ mọi người giải tỏa tâm lý và thư giản, em sẽ thực hiện lập trình một trò chơi và phát triển nó trên nền tảng Android có tên là Who’s Better..
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM – ĐẠI HỌC ĐÀ NẴNG
KHOA TIN HỌC
BÁO CÁO
ĐỒ ÁN TỐT NGHIỆP
TÊN ĐỀ TÀI WHO’S BETTER – MỘT TRÒ CHƠI ĐƯỢC XÂY DỰNG BẰNG UNITY ENGINE
Giảng viên hướng dẫn: TS PHẠM ANH PHƯƠNG
Sinh viên thực hiện: NGUYỄN ĐỨC TÀI
Lớp sinh hoạt: 15CNTT1
ĐÀ NẴNG, 04/2019
Trang 2LỜI CẢM ƠN
4 năm học vừa qua là những trải nghiệm thật đáng nhớ và đầy khát khao của tuổi sinh viên Em được học nhiều thứ, được tiếp xúc với nhiều thứ mà có lẽ chỉ có ở quãng đường Đại học Và khoa tin trường Đại học
Sư Phạm Đà nẵng đã cho em gặt hái rất nhiều thứ trong cuộc hành trình này Em sẽ mãi không bao giờ quên được
Cho em được gửi lời cảm ơn đến Khoa Tin học, Trường Đại học Sư Phạm Đà Nẵng đã tạo điều kiện cho em được học tập và rèn luyện bản thân trong suốt 4 năm học vừa qua
Em xin chân thành cảm ơn thầy TS Phạm Anh Phương và các thầy
cô giáo Khoa Tin học, Trường Đại học Sư Phạm Đà Nẵng, những người giúp đỡ em trong việc hoàn thành đồ án tốt nghiệp đợt này
Xin trân trọng cảm ơn!
Đà Nẵng, ngày 25 tháng 04 năm 2019
Sinh viên thực hiện
Nguyễn Đức Tài
Trang 3LỜI CAM ĐOAN
Em xin cam đoan:
1 Những nội dung trong báo cáo này là do em thực hiện dưới sự hướng dẫn của TS Phạm Anh Phương và các thầy cô trong khoa Tin học
2 Mọi tham khảo dùng trong báo cáo này đều được trích dẫn rõ ràng, đầy
Trang 4
Đà Nẵng, ngày tháng năm 2019
Trang 5
Đà Nẵng, ngày tháng năm 2019 Hội đồng phản biện
Trang 6MỞ ĐẦU 1
1 Lý do chọn đề tài 1
2 Mục tiêu nghiên cứu 1
3 Đối tượng nghiên cứu 2
4 Giới hạn và phạm vi nghiên cứu 2
5 Phương pháp nghiên cứu 2
6 Bố cục đề tài 2
CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 3
1.1 Game engine và các thành phần cơ bản 3
1.2 Unity Engine 5
1.2.1 Giới thiệu Unity Engine 5
1.2.2 Quá trình phát triển của Unity 7
1.2.3 Một số thống kê về Unity 7
1.2.4 Ưu điểm của Unity 8
1.2.5 Các thành phần trong Unity Editor 10
1.2.5.1 Cửa sổ Scenes 10
1.2.5.2 Cửa sổ Hierarchy 10
1.2.5.3 Cửa sổ Game 11
1.2.5.4 Cửa sổ Project 11
1.2.5.1 Cửa sổ Inspector 12
1.2.6 Các khái niệm cơ bản trong unity 12
1.2.6.1 GameObject 12
1.2.6.2 Component 13
1.2.6.3 Sprite 13
1.2.6.4 Animation 14
1.2.6.5 Key Frame 14
1.2.6.6 Prefabs 15
1.2.6.7 Sounds 15
1.2.6.8 Script 16
1.2.6.9 Scenes 17
1.2.6.10 Assets 17
Trang 71.2.6.12 Transform 18
CHƯƠNG 2: PHÂN TÍCH THIẾT KẾ 19
2.1 Mục tiêu đề tài 19
2.2 Yêu cầu chức năng 19
2.3 Yêu cầu phi chức năng 19
2.4 Phân tích thiết kế hệ thống 19
2.4.1 Ý tưởng của trò chơi 19
2.4.2 Thể loại trò chơi 19
2.4.3 Đối tượng người chơi 19
2.4.4 Lối chơi cơ bản 19
2.4.5 Phong cách đồ họa và âm thanh 20
2.4.6 Gameplay 20
2.4.6.1 Nhiệm vụ của người chơi 20
2.4.6.2 Vật phẩm trong trò chơi 20
2.4.6.3 Cửa hàng trong trò chơi 20
2.4.6.4 Map Level 20
2.5 Sơ đồ use-case 21
2.6 Sơ đồ lớp 22
2.7 Cơ sở dữ liệu 22
2.8 Sơ đồ tuần tự 23
CHƯƠNG 3 : TRIỂN KHAI VÀ KẾT QUẢ ĐẠT ĐƯỢC 24
3.1 Môi trường triển khai: 24
3.2 Sản phẩm đạt được 24
3.2.1 Màn hình logo của trò chơi 24
3.2.2 Màn hình loading của trò chơi 25
3.2.3 Màn hình menu của trò chơi 26
3.2.4 Màn hình settings, themes, statistics của trò chơi 27
3.2.5 Màn hình các mini games 28
3.2.6 Màn hình lúc vượt qua một mini game 29
3.2.7 Màn hình lúc game over 29
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 30
Trang 82 Hạn chế của đề tài: 30
3 Hướng phát triển: 30
TÀI LIỆU THAM KHẢO 31
Trang 9MỞ ĐẦU
1 Lý do chọn đề tài:
Sự phát triển của Công nghệ Thông tin ở nước ta đang bước vào thời kì mới với việc triển khai rộng rãi các ứng dụng tin học cho các tổ chức và xã hội Không ai còn nghi ngờ gì về vai trò của Công nghệ Thông tin trong đời sống, trong khoa học kỹ thuật, kinh doanh, cũng như trong mọi mặt của xã hội, ngay cả đối với một cá nhân
Công nghệ Thông tin đang từng bước đi vào cuộc sống của chúng ta như một người bạn đồng hành, nó có vai trò rất lớn trong sự phát triển của đất nước và trong đời sống của con người
Nhằm tạo ra một ứng dụng trong việc giúp đỡ mọi người giải tỏa tâm lý
và thư giản, em sẽ thực hiện lập trình một trò chơi và phát triển nó trên nền
tảng Android có tên là Who’s Better
Với sự lôi cuốn, sáng tạo của trò chơi, em hi vọng người chơi sẽ có những giây phút thoải mái và tràn đầy niềm vui sau những giờ học, giờ làm việc căng thẳng, góp phần vào xây dựng một xã hội đầy niềm vui
2 Mục tiêu nghiên cứu
Mục tiêu
Xây dựng được một trò chơi bằng công cụ lập trình game Unity Engine
Xây dựng được một trò chơi mà có thể giúp người chơi giải tỏa tâm lý
và thư giản
Rèn luyện bản thân trong môi trường làm việc chuyên nghiệp, môi trường làm việc nhóm, môi trường nhiều người trong một tập thể chung
Nhiệm vụ nghiên cứu
Khảo sát những ứng dụng trò chơi mà đa số người dùng quan tâm
Trang 10 Phát họa ý tưởng và triển khai
Thiết kế giao diện UI
Xây dựng các màn hình với các giao diện
Xây dựng các levels và modes của trò chơi
Quy trình phát triển trò chơi
Nhu cầu sử dụng game trên thị trường và hướng phát triển của game đa nền tảng trong thời gian tới
4 Giới hạn và phạm vi nghiên cứu
Nghiên cứu xây dựng game trên phạm vi có thể chơi ở mức độ cơ bản bằng công cụ Unity Engine
Các tài liệu về Unity
5 Phương pháp nghiên cứu
Phương pháp quan sát, khảo sát nhu cầu thực tiễn
Lập phiếu khảo sát nhu cầu của khách hàng
Phân tích, xử lý thống kê kết quả đã điều tra
6 Bố cục đề tài:
- Đề tài chia làm 3 chương:
+ Chương 1: Cơ sở lý thuyết
+ Chương 2: Phân tích thiết kế
+ Chương 3: Giới thiệu trò chơi, phân tích các thành phần của trò chơi
+ Phần cuối: Kết luận và hướng phát triển
Trang 11CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1 Game engine và các thành phần cơ bản
Game engine là một thành phần cơ bản không thể thiếu trong quá trình hoàn thành một tựa game Game engine là một khung phần mềm (software framework) chuyên dụng để phát triển game trên các nền tảng khác nhau Đứng vai trò giữa nền tảng ứng dụng và các mã logic và tài nguyên để xây dựng nên thế giới game phức tạp Thông thường, một game engine hoàn chỉnh phải đảm bảo các phương thức, tác vụ để xây dựng nên một môi trường
đồ họa 2D hoặc 3D Ngày nay, các game engine nổi tiếng đều có thể tích hợp
cả 2 môi trường này vào một engine
Bằng việc sử dụng đặc dụng cho lập trình game, các game engine sẽ mang nhiều thành phần hữu dụng khi làm game mà các framework ứng dụng khác thường không chú trọng tới Như thay vì có các đối tượng xây dựng nên các cửa sổ, thanh sổ, menu, game engine được tối ưu hóa để hiển thị các giao diện pop-up trên môi trường đồ họa cập nhật liên tục hay xử lý âm thanh sao cho giống thật nhất trong không gian 3D Sau đây là danh sách các thành phần
cơ bản thường gặp ở các game engine:
Bộ xử lý đầu vào: phần mềm game đặc thú khác biệt so với các phần
mềm máy tính khác ở tính yêu cầu người chơi tương tác cao, liên tục với trò chơi Và trong nhiều trò chơi, khả năng xử lý tình huống nhanh nhạy của người chơi chính là chìa khóa để đạt được mục tiêu của trò chơi đó Vì vậy việc đảm bảo các thao tác của người chơi được nhận chính xác và xử lý nhanh nhất luôn là một yếu tố cơ bản bắt buộc đối với game engine Các xử lý đầu vào này có thể là từ nhiều thiết bị khác nhau như phím, chuột, bàn điều khiển game, tay cầm điều khiển,v.v nhưng mô hình chung đều được mapping với các chức năng trong game sao cho hợp lý và đồng bộ giữa các nền tảng
Trang 12 Bộ xử lý đồ họa: đồ họa chính là điểm hấp dẫn người chơi ngay khi
nhìn vào một tựa game Dù trò chơi được định hình phong cách đồ họa 2D hay 3D phức tạp thì việc xử lý đồ họa là cuộc việc đòi hỏi xảy ra thường xuyên và cập nhật liên tục từng mili giây trong quá trình ứng dụng game khởi chạy Bộ xử lý đồ họa chịu trách nhiệm render các thành phần đồ họa đồng thời tiết kiệm tài nguyên máy tính nhất có thể
để đảm bảo một trải nghiệm tốt nhất cho người chơi
Bộ xử lý âm thanh: bên cạnh đồ họa đẹp thì âm thanh hấp dẫn chính là
điều tạo nên cảm xúc cho người chơi Bộ xử lý âm thanh đảm nhận tái tạo những âm thanh chính xác, đặc biệt là ở môi trường 3D Bằng các
kỹ thuật xử lý âm thanh, như tăng giảm âm lượng xa gần, hòa âm, nhiễu âm… và chất lượng các bài nhạc nền, hiệu ứng tốt có thể làm cho người chơi như đang hòa vào thế giới thật
Bộ xử lý mạng: rất nhiều trò chơi ngày nay có tính năng đa người chơi,
tức là nhiều người chơi có thể kết nối với nhau và tận hưởng trò chơi cùng lúc Bộ xử mạng đóng vai trò quan trọng kết nối người chơi với server và đảm bảo trải nghiệm cho mọi người chơi trên hệ thống là như nhau Giảm thiểu độ trễ, tiết kiệm dữ liệu, đồng bộ hóa dữ liệu giữa các client là những công việc chính mà bộ xử lý mạng đảm nhận trong một game engine
Bộ mô phỏng vật lý: vật lý luôn là yếu tốt rút ngắn khoảng cách giữa
đời thực và trò chơi Mô phỏng các thông số môi trường vật lý như trọng lực, lực ma sát, phản lực, va chạm, cân nặng, v.v là tính năng chính của bộ mô phỏng vật lý Hiện có 3 bộ mô phỏng vật lý phổ biến
là Hovak (3D), PhysX(3D) và Box2D (2D), ngoài ra có hàng trăm, hàng nghìn các bộ mô phỏng khác được xây dựng tùy chỉnh tùy theo yêu cầu của tựa game.Trong trò chơi này sử dụng bộ mô phỏng vật lý Chipmunk được viết bằng ngôn ngữ C được tích hợp sẵn trong Unity Engine
Trang 13 Giao diện người dùng: giao diện người dùng là thành phần không thể
thiếu trong các trò chơi, dù từ đơn giản đến phức tạp, 2D hay 3D Được
sử dụng để xây dựng các thành phần bổ trợ tương tác cung như cung cấp thông tin cho người chơi Và tương tự như bộ xử lý đồ họa, giao diện người dùng được cập nhật mỗi khung hình và việc một game engine có bộ xử lý tối ưu đem lại lợi ích lớn về hiệu suất cho trò chơi
Mã: ngoài các thành phần trên cấu tạo nên một thế giới ảo hoàn hảo
nhưng để phối hợp chúng hoạt động cùng với các tài nguyên tạo nên một trò chơi sinh động thì phải có các đoạn mã logic xây dựng nên gameplay cho trò chơi Đây là thành phần cơ bản của một game engine
mà lập trình viên thường hay tiếp xúc nhất để xây dựng nên một trò chơi đúng theo thiết kế và tối ưu hiệu năng cho trò chơi
Phần lớn các nhà sản xuất lớn để sở hữu các game engine tự xây dựng mạnh mẽ Bên cạnh đó, còn có rất nhiều game engine miễn được các nhà làm game ưa chuộng để đưa những ý tưởng trở thành sự thật mà Cococ2d-x là một trong số đó
1.2 Unity Engine
1.2.1 Giới thiệu Unity Engine
- Unity là một phần mềm làm game đa nền tảng được phát triển bởi Unity Technologies, mà chủ yếu để phát triển video game cho máy tính, consoles và điện thoại Lần đầu tiên nó được công bố chạy trên hệ điều hành OS X, tại Apple's Worldwide Developers Conference vào năm 2005, đến nay đã mở rộng 27 nền tảng
- Unity hỗ trợ đồ họa 2D và 3D, các chức năng được viết chủ yếu qua ngôn ngữ C# Hai ngôn ngữ lập trình khác cũng được hỗ trợ: Boo, đã bị loại cùng với việc phát triển Unity 5 and UnityScript bị loại vào tháng 8 năm 2017 sau khi phát hành Unity 2017.1 UnityScript là một ngôn ngữ lập trình độc quyền có cú pháp tương tự JavaScript Phần mềm nhắm mục tiêu các đồ họa APIs sau: Direct3D trên Windows và Xbox
One; OpenGL trên Linux, macOS, và Windows; OpenGL ES trên
Android và iOS; WebGL trên web; và APIs độc quyền trên các máy chơi video game Ngoài ra, Unity hỗ trợ APIs cấp thấp như Metal trên iOS và macOS và Vulkan trên Android, Linux, và Windows, cũng như
Trang 14Direct3D 12 trên Windows và Xbox One Trong 2D games, Unity cho phép nhập sprites và một renderer thế giới 2D tiên tiến Đối với 3D games, Unity cho phép thiết lập các đập điểm kĩ thuật của các kết cấu
và độ phân giải mà công cụ trò chơi hỗ trợ, cung cấp các hỗ trợ cho bump mapping, reflection mapping, parallax mapping, cảnh không gian ambient occlusion (SSAO), hiệu ứng bóng đổ bằng cách sử dụng
shadow maps, render thiết lập toàn cảnh đến hiệu ứng.Unity cũng cung cấp các dịch vụ cho nhà phát triển, bao gồm: Unity Ads, Unity
Analytics, Unity Certification, Unity Cloud Build, Unity Everyplay, Unity IAP, Unity Multiplayer, Unity Performance Reporting and Unity Collaborate
- Unity nổi bật với khả năng xây dựng trò chơi chạy trên nhiều nền tảng Các nền tảng được hỗ trợ hiện nay là Android, Android TV, Facebook Gameroom, Fire OS, Gear VR, Google Cardboard, Google Daydream, HTC Vive, iOS, Linux, macOS, Microsoft HoloLens, Nintendo 3DS family,Nintendo Switch, Oculus Rift Unity trước đây cũng đã hỗ trợ
7 nền tảng khác chạy trên Unity Web Player Unity Web Player là một plugin của trình duyệt chạy trên Windows và OS X, đã bị gỡ bỏ vì lợi ích của WebGL
- Unity là bộ công cụ phát triển phần mềm mặc định (SDK) cho máy chơi game video gameWii U của Nintendo, kèm theo bản miễn phí của Nintendo với mỗi giấy phép phát triển Wii U Unity Technologies gọi việc kết hợp sản xuất SDK với một bên thứ ba là "industry first"
- Ngôn ngữ lập trình: Unity hỗ trợ 1 ngôn ngữ: C#
Logo của Unity
Trang 151.2.2 Quá trình phát triển của Unity
- Ra mắt đầu tiên vào năm 2005 tại sự kiện Apple’s Worldwide
Developer Conference bởi nhà sáng lập David Helgason, trải qua hơn
12 năm phát triển, nay Unity đã có version 5.5 hoàn thiện hơn về rất nhiều mặt 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
1.2.3 Một số thống kê về Unity
- Tính đến quý 3 năm 2016 đã có 5 tỉ lượt download game và ứng dụng được phát triển bởi Unity
- 2,4 tỉ thiết bị di động đã từng tải ít nhất 1 ứng dụng bởi unity
- Số lượng người dùng (gamer) của Unity đạt tới con số 770 triệu, trong khi đó số người thường xuyên sử dụng Twitter là 310 triệu người
- Sự thay đổi trong cách thức chơi game của người chơi hay nói cách khác là xu hướng mọi người tập trung vào game trên di động nhiều hơn
Trang 16
1.2.4 Ưu điểm của Unity
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
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…
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 Unity3D 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ễ
Trang 17dà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 Unity3D 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
Trang 18
1.2.5 Các thành phần trong Unity Editor
1.2.5.1 Cửa sổ Scenes
quan, có thể lựa chọn các đối tượng, kéo thả, phóng to, thu nhỏ, xoay các đối tượng
anh, cách nhìn 2D 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ăng quan trọng nhất của Unity
1.2.5.2 Cửa sổ Hierarchy
hành Khi các đối tượ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
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
Trang 191.2.5.3 Cửa sổ Game
giải man hình, thông số (stats), gizmos, tùy chọn bật tắt các
component
1.2.5.4 Cửa sổ Project
nguyên (Assets) trong game của bạn
mục tương tự như Windows Explorer Khi click vào một nhánh trên cây thư mục thì toàn bộ nội dung của nhánh đó sẽ được hiển thị ở
khung bên phải Ta có thể tạo ra các thư mục mới bằng cách Right click -> Create -> Folder hoặc nhấn vào nút Create ở góc trên bên trái cửa sổ Project và chọn Folder Các tài nguyên trong game cũng có thể được tạo ra bằng cách này
vào những tài nguyên thường sử dụng Chúng ta có thể đưa các tài nguyên vào Favorites bằng thao tác kéo thả
- Đườ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ác thư 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