Tải bản đầy đủ (.docx) (16 trang)

Đồ án phát triển game 3d, VR

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (476.94 KB, 16 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
--------------------

BÁO CÁO CUỐI KÌ

ĐỒ ÁN 2
Đề tài: Phát triển game 3D, VR



Giảng viên hướng dẫn:
Nguyễn Thị Thanh Trúc



Sinh viên thực hiện:
Nguyễn Du Phúc Ngân
Hứa Văn Tuấn Anh
TPHCM, 24/7/2020

~1~

17520792
17520232


NHẬN XÉT CỦA GIẢNG VIÊN
...........................................................................................................
...........................................................................................................


...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................
...........................................................................................................

~2~


LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin bày tỏ lịng biết ơn sâu sắc đến cơ Nguyễn
Thị Thanh Trúc – Giảng viên hướng dẫn môn Đồ án 2 SE122.L11.PMCL,
người đã cùng đồng hành và tận tình hướng dẫn cho nhóm qua những buổi
thảo luận. Chính nhờ sự giúp đỡ hết lịng của cơ mà nhóm chúng em mới có
thể hồn thiện được được đồ án này một cách sn sẻ nhất.

Mặc dù kiến thức của nhóm chúng em vẫn cịn hạn hẹp nên khơng thể tránh
khỏi những thiếu sót nhưng nhóm chúng em đã cố gắng hồn thiện đồ án đúng
thời hạn, hạn chế mắc lỗi nhất có thể. Vì vậy, mọi thành viên trong nhóm đều
ln mong đợi nhận được những ý kiến đóng góp quý báu từ cơ và qua đó lắng
nghe, tiếp thu để rút kinh nghiệm, tự sửa chữa, hồn thiện bản thân mình trên
tinh thần nghiêm túc, tự giác học hỏi.
Bên cạnh đó, xin gửi lời cảm ơn đến tất cả sự đóng góp của các thành viên
trong nhóm, những người đã nỗ lực tìm kiếm tài liệu cũng như đưa ra những ý
tưởng để hoàn thành đồ án một cách tốt nhất. Mong rằng sau khi hồn thành đồ
án này cả nhóm sẽ cải thiện phần nào kĩ năng học tập, kĩ năng làm việc nhóm
của bản thân.
Trong q trình làm đề tài báo cáo, chắc không tránh khỏi nhiều điều thiếu sót,
rất mong nhận được phản hồi từ cơ và các bạn để góp phần làm cho bản báo
cáo thêm hồn thiện hơn.
Em xin chân thành cảm ơn !
TP. Hồ Chí Minh, tháng 11 năm 2020
Nguyễn Du Phúc Ngân
Hứa Văn Tuấn Anh

~3~


Mục Lục:

Chương 1: Giới thiệu đề tài
1. Dẫn nhập:





Nhận thấy tiềm năng của ngành phát triển game ở thị trường nước ta do
Việt Nam có nguồn nhân lực dồi dào ham học hỏi xong thị trường chưa
thật sự bùng nổ, trong khi đó lĩnh vực phát triển game trên thế giới đang
dần tách ra thành một ngành riêng biệt bởi sự phát triển vượt bậc và khả
năng mang lại doanh thu cao
Đồng thời nhóm muốn thử sức với những dự án mới mẻ, các công nghệ
mới đang thịnh hành trên thị trường cũng như bồi dưỡng thêm kỹ năng tư
duy và phát triển bộ mơn phát triển game nên nhóm đã nhất trí chọn đề tại
phát triển game trên nền tảng Unity

2. Nêu tổng quan các vấn đề chính trong đề tài:







Nghiên cứu làm quen với Cocos2dx: Nhóm tìm kiếm thông tin trên mạng
làm quen với công nghệ Cocos2dx thực hành với các bài hướng dẫn có
sẵn nắm vững các lý thuyết và yêu cầu cơ bản đối với công nghệ này
Lên ý tưởng cho game: Nhóm bàn bạc lên ý tưởng chọn thể loại cho
game hướng tiếp cận, tham khảo các game có cùng thể loại
Bắt đầu xây dựng game: Dựa theo ý tưởng và mục tiêu yêu cầu đã đề ra
nhóm bắt đầu phân chia cơng việc đặt các hạn mức thời gian hoàn thành
và tiến hành bắt đầu làm game
Chạy thử và sửa lỗi: Chạy thử các tính năng nhỏ đánh giá nhận xét tính
hiệu quả của công việc và xem xét loại bỏ hoặc phát triển các tính năng
đó


~4~






Hồn thiện và gia cơng: Sau khi game đã gần được hồn thiện nhóm xem
xét đánh giá so sánh với mục tiêu đề ra ban đầu ( Game làm có giống với
mục tiêu đề ra ban đầu khơng, các tính năng có hoạt động đúng yêu cầu
ko,…)
Đưa game lên nền tảng Android: Nghiên cứu đưa game lên nền tảng
di động chạy thử và kiểm tra  Hoàn tất và Báo cáo.

3. Bài tốn
a) Giới hạn/Phạm vi:
• Nền tảng Android, Windows ( Unity )
b) Các nội dung nghiên cứu và thực hiện
• Google Cardboard
• Unity
• Tham khảo các tựa game cùng thể loại
• Kiến thức làm game cơ bản
c) Kết quả hướng tới.
• Xây dựng thành cơng 1 game VR dạng First person Shooter với cơng
nghệ Unity.
• Sử dụng thành thạo công cụ Unity ( sử dụng đươc các lớp hỗ trợ, cơng
dụng và các hàm )
• Xây dựng tư duy logic trong lập trình và phát triển game

Chương 2: Các kiến thức/cơng nghệ nền tảng

1. Trình bày các kiến thức/cơng nghệ nền tảng, liên quan trực tiếp đến đề tài.


Unity: Unity là công cụ đa nền tảng được phát triển bởi Unity Technologies,
được công bố và phát hành lần đầu tiên vào tháng 6 năm 2005 tại Hội nghị
các nhà phát triển toàn cầu của Apple Inc. với tư cách là cơng cụ trị chơi
dành riêng cho Mac OS X. Tính đến năm 2018, động cơ đã được mở rộng để
hỗ trợ hơn 25 nền tảng. Cơng cụ này có thể được sử dụng để tạo ra các trò
chơi thực tế ảo và thực tế ảo ba chiều, hai chiều, cũng như các mô phỏng và
các trải nghiệm khác. Unity cịn được áp dụng bởi các ngành bên ngồi trị
chơi điện tử, chẳng hạn như phim, ô tô, kiến trúc, kỹ thuật và xây dựng.

~5~




Google Cardboard: Google Cardboard là một nền tảng thực tế ảo (VR) do
Google phát triển. Được đặt tên cho thiết bị xem bìa cứng có thể gập lại để
lắp điện thoại thông minh vào, nền tảng này được thiết kế như một hệ thống
chi phí thấp để khuyến khích sự quan tâm và phát triển trong các ứng dụng
VR.

2. Unity




Các khái niệm cơ bản
- Scene là một thùng chứa nhiều đối tượng trò chơi.

- GameObject là các đối tượng cơ bản đại diện cho nhân vật, đạo cụ, đèn,
máy ảnh hoặc các hiệu ứng đặc biệt. Trong ứng dụng này, chúng tôi sẽ sử
dụng các đối tượng 3D bao gồm các hình dạng nguyên thủy như mặt
phẳng, hình khối và hình cầu.
- Component xác định hành vi của đối tượng trò chơi. Về cơ bản, thành
phần Transform xác định vị trí, xoay và tỷ lệ của từng đối tượng trị chơi
và các giá trị được biểu thị dưới dạng tọa độ X, Y và Z cho mỗi thuộc
tính. Theo mặc định, vị trí được đặt thành (0,0,0), cịn được gọi là điểm
gốc từ nơi tất cả các phép tính tọa độ diễn ra trong cảnh.
- Material kết cấu và màu sắc cho bất kỳ đối tượng nào. Trong ứng dụng
này, chúng tôi sẽ giới hạn việc sử dụng vật liệu để tô màu cho các đối
tượng và sẽ không đi sâu vào các chi tiết kỹ thuật khác.
Các ưu điểm của Unity
1. Phát triển game bằng cách kéo thả
2. Scripting language sử dụng Javascript hoặc C#
3. Bản miễn phí có thể được sử dụng để phát triển game thương mại.
4. Đây là công cụ phát triển game được cộng đồng làm game ưa thích
sử dụng, hiểu đơn giản Unity 3D Game là một công cụ trung gian
tương tác để thiết kế và phát triển game, gắn kết với nhiều ứng dụng
trong cùng 1 hệ thống với nhau. Unity 3D Game hỗ trợ tốt cho game
online đa nền tảng, có thể hoạt động trên nhiều nhóm thiết bị, từ trình
duyệt web trên PC cho tới điện thoại hay máy tính bảng.
5. Tuy sinh sau đẻ muộn với các nền tảng khác, Unity 3D hiện đang là
nền tảng phổ biến trên toàn thế giới với trên 47% được các nhà phát
triển game ưu tiên sử dụng.
6. Chi phí thấp: Những cá nhân và doanh nghiệp có doanh thu dưới
100.000 USD/năm được dùng miễn phí engine Unity 3D, vàUnity

~6~



Technology chỉ thu phí 1.500 USD/năm cho bản Pro- một con số rất
khiêm tốn so với những gì engine này mang lại.
7. Cộng đồng rất lớn mạnh: Là engine phổ biến nhất trên thế giới, Unity
có cộng đồng sử dụng rất lớn mạnh. Mọi thắc mắc của bạn về Unity
đều sẽ được trả lời trên website cộng đồng
. Các tân binh sẽ dễ dàng kế thừa scripts và
kho đồ họa đẳng cấp có sẵn để giúp cho sản phẩm bản thân phong phú
hơn
8. Cập nhật thường xuyên
9. Unity 5 là phiên bản mới nhất của được Unity giới thiệu vào đầu
tháng 3 năm 2015 tại Game Developers Conferencer. Những tính
năng ấn tượng được giới thiệu trong phiên bản mới này tạo thêm niềm
tin tưởng vững chắc và sức mạnh khó vượt qua được từ Unity.
10. Đa nền tảng: Game có thể dễ dàng export ra Android, iOS hay
Windows Phone.

Chương 3: Xây dựng ứng dụng
1. Tổng quan-khảo sát các ứng dụng liên quan:


Half life: Alyx: Half-Life: Alyx là một trị chơi thực tế ảo (VR) hỗ trợ tất cả tai
nghe VR tương thích với SteamVR, bao gồm Valve Index, HTC Vive, Oculus
Rift, Oculus Quest (có dây thơng qua Oculus Link hoặc không dây bằng Virtual
Desktop) và tất cả Tai nghe Windows Mixed Reality.



Portal: Portal là một trị chơi nền tảng câu đố năm 2007 được phát triển và xuất
bản bởi Valve. Nó được phát hành trong một gói, The Orange Box, cho

Windows, Xbox 360 và PlayStation 3, và kể từ đó đã được chuyển sang các hệ
thống khác, bao gồm Mac OS X, Linux và Android (thông qua Nvidia Shield).

2. Tổng quan ứng dụng


Bối cảnh: Game được lấy bối cảnh vào một tương lai xa vời khi con người chạm
đến ngưỡng tuyệt đối về khoa học, kĩ thuật. Một nhóm các nhà khoa học với sự
tiến bộ vượt bật đã phát hiện ra cách để trở nên bất tử bằng việc đưa những
“Soul” của mình vào các bộ máy lưu trữ như một dạng dữ liệu, những “Soul”
được lưu trữ nơi này sẽ sống trong một thế giới ảo được gọi là Eden, tạo ra bởi cỗ
~7~


máy tồn tại với năng lượng vĩnh cữu mang tên The Creator. Một trong các nhà
khoa học, tiến sĩ Banana, vì muốn bản than trở thành chúa trời trong thế giới
Eden mà đã truyền một function khiến cho Soul của ông hòa làm một với The
Creator. Nhưng người đồng nghiệp của ơng, cũng chính là người chơi, tiến sĩ
Apple do đoán trước điều này đã tạo ra một hệ thống Protector năng chặn các
function bất thường nhưng mọi thứ nằm ngồi dự tốn của Apple function mà
Banana đữa vào khiến các chức năng của The Creator conflict và tạo ra các Virus
trong thế giới Eden và phá hủy thế giới này. Nhưng may mắn do hệ thống
Protector của Apple mà Soul của cư dân Eden đã được lưu lại và truyền vào một
file chứa tạm thời và khóa các Virus vào một vùng khơng gian kín nhằm năng
chặn chúng tìm và phá hủy file lưu trữ các Soul. Apple bây giờ phải đi vào từng
vùng không gian và tiêu diệt hết các Virus đang kẹt nơi này và cũng như là tiêu
diệt Soul của Banana hiện đang thao túng The Creator.




Gameplay: Trị chơi là theo dạng thuần 1st person shooter. Người chơi sẽ phải
nhật những Key rải rác khắp map để mở khóa và cũng như tiêu diệt hết các Virus
trong map để hồn thành các vịng chơi.

3. Các áp dụng chính của framework/lib trong đề tài vào trong ứng dụng:
a) Unity Asset Store
Unity Asset Store chứa một thư viện các Asset thương mại và miễn phí mà Unity
Technologies cũng như các thành viên của cộng đồng tạo ra. Có sẵn nhiều loại nội
dung, bao gồm Kết cấu, Mơ hình, hoạt ảnh, tồn bộ ví dụ dự án, hướng dẫn và tiện ích
mở rộng Trình chỉnh sửa. Bạn có thể truy cập nội dung đã mua và tải xuống từ giao diện
được tích hợp trong Unity Editor, cho phép bạn tải xuống và nhập nội dung trực tiếp
vào dự án của mình.
Người dùng Unity có thể trở thành nhà xuất bản trên Asset Store và bán nội dung họ đã
tạo. Để biết thêm thông tin, hãy xem Xuất bản Asset Store.
Trang web Asset Store
Để truy cập Asset Store, hãy mở trình duyệt web và điều hướng đến
/>
~8~


~9~


Từ trang web Asset Store, bạn có thể tìm thấy các gói Asset để mua và xem danh sách
Asset bạn đã sở hữu
Từ trang web của Asset Store, bạn có thể tìm thấy các gói Asset để mua và xem danh
sách Asset bạn đã sở hữu
(A) Menu bộ sưu tập giúp bạn thu hẹp danh sách các gói Nội dung phù hợp
. Chúngnhóm các gói Nội dung có liên quan lại với nhau và hiển thị chúng trong danh
sách. Ví dụ: bạn có thể chọn Địa hình

từ menu Cơng cụ để xem Gói nội dung có chứa các cơng cụ xây dựng địa hình.
(B) Hộp tìm kiếm cho phép bạn tìm kiếm một gói Nội dung bằng cách nhập một từ
khóa, chẳng hạn như tên của gói Nội dung, một từ hoặc cụm từ trong mơ tả của nó hoặc
tên tệp phù hợp với bất kỳ tệp nào trong gói Nội dung.
(C) Các liên kết nhanh cung cấp quyền truy cập vào các khu vực sau:
Danh sách nội dung đã mua hoặc tải xuống cho tài khoản của bạn (trang Nội dung của
tôi)
Danh sách nội dung bạn đã đánh dấu là Mục yêu thích
Giỏ hàng của bạn
Các ứng dụng của Asset Store, chẳng hạn như Trang tổng quan, Kết nối, Câu trả lời,
Diễn đàn và Phân phối
ID Unity (tài khoản) của bạn, nơi bạn có thể xem và sửa đổi cài đặt, chẳng hạn như
danh sách tùy chỉnh, giấy phép, thông báo, quyền riêng tư dữ liệu hoặc đổi phiếu
thưởng và xem các khoản tín dụng trong Asset Store của bạn.
(D) Danh sách các gói Nội dung phù hợp với bất kỳ tìm kiếm, bộ lọc, sắp xếp hoặc
danh mục nào bạn chọn. Ngoài ra, Unity hiển thị các đề xuất và danh sách đặc biệt của
các gói Asset tại đây.
(E) Thanh bên bộ lọc giúp thu hẹp danh sách các gói Nội dung được hiển thị. Bạn có
thể áp dụng các bộ lọc này cho bất kỳ tìm kiếm, danh mục, lựa chọn hoặc lược đồ sắp
xếp nào mà bạn thực hiện.

~ 10 ~


b) NavMeshAgent
Các thành phần NavMeshAgent giúp bạn tạo các nhân vật tránh nhau trong khi tiến tới
mục tiêu của chúng. Các agent sẽ cảm về thế giới trò chơi bằng cách sử dụng NavMesh
và chúng biết cách tránh nhau cũng như các chướng ngại vật di chuyển khác. Việc tìm
đường dẫn và lập luận không gian được xử lý bằng cách sử dụng API tập lệnh của
NavMesh Agent.


Property

Function

Agent Size
Radius

Radius of the agent, used to calculate collisions
between obstacles and other agents.

Height

The height clearance the agent needs to pass below an obstacle overhead.

Base offset

Offset of the collision cylinder in relation to the transform pivot point.

Steering

~ 11 ~


Property

Function

Speed


Maximum movement speed (in world units per second).

Angular
Speed

Maximum speed of rotation (degrees per second).

Acceleratio
n

Maximum acceleration (in world units per second squared).

Stopping
distance

The agent will stop when this close to the goal location.

Auto
Braking

When enabled, the agent will slow down when reaching the destination. You should
disable this for behaviors such patrolling, where the agent should move smoothly
between multiple points

Obstacle Avoidance
Quality

Obstacle avoidance quality. If you have high number of agents you can save CPU time by
reducing the obstacle avoidance quality. Setting avoidance to none, will only resolve
collision, but will not try to actively avoid other agents and obstacles.


Priority

Agents of lower priority will be ignored by this agent when performing avoidance. The
value should be in the range 0–99 where lower numbers indicate higher priority.

Path Finding

~ 12 ~


Property

Function

Auto
Traverse
OffMesh
Link

Set to true to automatically traverse off-mesh links. You should turn this off when you

Auto Repath

When enabled the agent will try to find path again when it reaches the end of a partial

ou want to use animation or some specific way to traverse off-mesh links.

path. When there is no path to the destination, a partial path is generated to the closest
reachable location to the destination.

Area Mask

Area mask describes which area types the agent will consider when finding a path. When
you prepare meshes for NavMesh baking, you can set each meshes area type. For
example you can mark stairs with special area type, and forbid some character types from
using the stairs.

Chi Tiết:
Các agent được xác định bởi một hình trụ thẳng đứng có kích thước được chỉ định bởi
thuộc tính Bán kính và Chiều cao. Hình trụ chuyển động cùng với vật nhưng ln đứng
thẳng ngay cả khi vật tự quay. Hình dạng của hình trụ được sử dụng để phát hiện và ứng
phó với các va chạm giữa các tác nhân và chướng ngại vật khác. Khi GameObject.
Điểm neo của không nằm ở đáy của hình trụ, bạn có thể sử dụng thuộc tính Base Offset
để tính chênh lệch chiều cao.

~ 13 ~


Chiều cao và bán kính của hình trụ thực sự được chỉ định ở hai nơi khác nhau: cài đặt
nướng NavMesh và thuộc tính của các tác nhân riêng lẻ.





NavMesh Bake setting mô tả cách tất cả các agent NavMesh đang va chạm hoặc
tránh hình dạng thế giới tĩnh. Để giữ cho bộ nhớ ở mức ngân sách và tải CPU
trong tầm kiểm sốt, chỉ có thể chỉ định một kích thước trong cài đặt nướng.
Các giá trị thuộc tính NavMesh Agent mô tả cách tác nhân va chạm với các
chướng ngại vật đang di chuyển và các tác nhân khác.


Thơng thường, bạn đặt kích thước của đại lý giống nhau ở cả hai nơi. Tuy nhiên, ví dụ:
một người lính hạng nặng có thể có bán kính lớn hơn, do đó các đặc vụ khác sẽ để lại
nhiều khoảng trống hơn xung quanh anh ta, nhưng nếu không anh ta sẽ tránh môi
trường giống nhau.

~ 14 ~


Chương 4: Thử nghiệm, đánh giá
1. Môi trường thử nghiệm
3.
4.

Unity: Chạy Project trực tiếp trên Unity
Android: phiên bản 9.0 chạy trên điện thoại Xiaomi thông qua Google
Cardboard

2. Kết quả thử nghiệm


Khi chạy thử nghiệm trên mơi trường Unity chương trinh chạy ổn định tuy
có hiện tượng dựt lag nhẹ ở một số phân đoạn do số lượng objects trong
game tăng đột ngột nhưng ko ảnh hưởng quá nhiều đến trải nghiệm, Ngồi
ra khơng có hiện tượng bị crash game. Bản build cuối cùng ko bị rơi vào các
lỗi exception

3. Đánh giá kết quả sản phẩm



Sản phẩm cuối cùng đã gần như hồn thiện game đã có thể chơi được trên cả
trên mơi trường Unity và Android. Tuy nhiên game cịn đơn giản và vẫn cịn
rất nhiều điểm có thể làm tốt hơn ví dụ như kẻ địch có thể có đường bay linh
hoạt hơn, tạo thêm nhiều loại đạn khác với các đường đạn đa dạng hơn, các
loại PowerUp đa dạng hơn cho người chơi

Chương 5: Kết luận và hướng phát triển
1. Kết quả đạt được






Game được hồn thiện khá tốt chạy ổn định có một số trường đoạn sẽ bị
giựt lag nhẹ tuy nhiên không đáng kể
Game được port thành công lên môi trường Android
Các mục tiêu đề ra được hồn thành tốt đạt chỉ tiêu ban đầu
Cơng việc được phân chia đồng đều và rõ ràng
Các công việc được hoàn thành đúng yêu cầu và đúng thời hạn

2. Hạn chế và hướng phát triển





Game cịn đơn giản
Nhiều hạn chế về mặt kĩ thuật (Vẫn chưa test game trên Oculus)
Nhiều khía cạnh của game cịn có thể phát triển tốt hơn

Cịn nhiều bất đồng trong q trình phát triển và quyết định ý tưởng cho
game
~ 15 ~


~ 16 ~



×