Xem mẫu
- TRƯỜNG CAO ĐẲNG CÔNG NGHỆ THÔNG TIN
HỮU NGHỊ VIỆT - HÀN
KHOA CÔNG NGHỆ THÔNG TIN
XÂY DỰNG GAME 2D SPACE WAR
TÓM TẮT ĐỒ ÁN TỐT NGHIỆP
NGÀNH: CÔNG NGHỆ THÔNG TIN (ƢDPM)
HSSV thực hiện : Nguyễn Hải Huy
MÃ HSSV : CCCT17A006
Cán bộ hƣớng dẫn : TS. Nguyễn Văn Lợi
Khóa đào tạo : 2017 - 2020
Đà Nẵng, 01/2020
- MỞ ĐẦU
Hiện nay Công nghiệp giải trí hiện đang rất phát triển trên thế
giới, gồm các thành phẩn cơ bản như: Game, thời trang, âm nhạc, các
chương trình truyền hình, điện ảnh, Gameshow, liveshow,… Các
mảng nằm trong giải trí không chỉ mang tính giải trí mà còn mạng
nhiều giá trị về văn hóa, phong tục của từng cùng miền, đồng thời
quảng bá hình ảnh của đất nước tới bạn bè khắp thế giới.
Có thể nói một trong những ngành giải trí chiếm phần lớn thị
trường nhất là ngành Game cộng thêm sự hội nhập của công nghệ
4.0, các sản phẩm công nghệ ngày càng chịu sự đánh giá khắt khe
hơn từ phía người dùng, đặc biệt là sản phẩm game được nhận rất
nhiều sự đánh giá từ phía game thủ. 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, hàng loạt
tựa game hay và đình đám đã được ra mắt trong thời gian qua.
Những Game phát triển và nổi tiếng như vậy đều có một Game
Engine. Game Engine là một công cụ hỗ trợ 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 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.
1. Lý do chọn đề tài
Với xu hướng hiện nay, công việc mỗi người ngày càng nhiều
nhu cầu giải trí sau những giờ làm việc căng thẳng, game 2d là sự lựa
chọn hoàn hảo với tính chất game nhanh, độ giải trí cao, xã stress tốt.
Trải qua thời gian, game 2D dường như chưa bao giờ là lỗi thời đối
với người chơi, ngày càng khẳng định được vị trí của mình trên thị
trường game rộng lớn. Từ đó em đã chọn đề tài xây dựng game
Space War 2D trên unity. Đồ án sẽ nghiên cứu về Engine Unity – là
1
- một Game Engine rất phổ biến và mạnh mẽ để thực hiện việc phát
triển một game 2D Space War.
Vậy nên, em chọn đề tài “Xây dựng game Space War trên
Unity” để làm đồ án tốt nghiệp của mình.
2. Mục tiêu và nhiệm vụ nghiên cứu
- Mục tiêu:
o Hiểu biết về Unity.
o Biết được các ưu nhược điểm của phần mềm.
o Biết cách cài đặt được phần mềm.
o Biết xây dựng game bằng Unity.
- Nhiệm vụ:
o Nghiên cứu các bài giảng và các tài liệu để xây dựng game
trên Unity.
o Xây dựng được một game minh họa.
3. Đối tƣợng và phạm vi nghiên cứu
- Đối tượng nghiên cứu:
o Những game đã hoàn thành trên mạng.
o Những video hướng dẫn cơ bản.
o Quy trình xây dựng game 2D trên unity.
4. Phƣơng pháp nghiên cứu.
- Nghiên cứu các lý thuyết về Unity.
- Phương pháp nghiên cứu lý luận: Tìm hiểu các tài liệu
nghiên cứu, giáo trình, các bài viết và các nguồn thông tin trên
Internet có liên quan, ngôn ngữ lập trình là C#.
- Phương pháp lấy ý kiến chuyên gia: Lấy ý kiến giảng viên
trực tiếp hướng dẫn và các chuyên gia khác để có thể hoàn thành về
mặt nội dung cũng như hình thức của đề tài
5. Ý nghĩa khoa học và thực tiễn.
2
- - Nghiên cứu cách làm game 2D.
- Trình bày lý thuyết về xây dựng game trên Unity.
- Nâng cao kiến thức tích lũy kinh nghiệm về làm game.
- Học hỏi thêm nhiều kỹ năng tạo ra một trò chơi.
- Xây dựng được game để phục vụ cho nhu cầu giải trí của xã
hội.
3
- CHƢƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. TỔNG QUAN VỀ UNITY
1.1.1. Unity là gì?
1.1.2. Lịch sử của Unity
1.1.3. Tính năng của Unity
1.1.4. Các thành phần trong Unity
1.2. CÁC KHÁI NIỆM TRONG UNITY
1.3. CÀI ĐẶT UNITY
1.4. TỔNG QUAN KIẾN TRÚC GAME ENGINE
4
- CHƢƠNG 2: MỘT SỐ VẤN ĐỀ VÀ GIẢI PHÁP KHI XÂY
DỰNG GAME TRÊN ENGINE UNITY
2.1. CHUYỂN ĐỘNG MÔ HÌNH NHÂN VẬT 2D
2.1.1. Vấn đề
Chúng ta đã load được mô hình 2D vào trong game, vậy làm
sao để mô hình 2D này có thể chuyển động trong game.
2.1.2. Giải pháp
Cần phải có sẵn Animation bên trong mô hình 2D. Khi import
mô hình vào Unity, Animation trong mô hình tự động chuyển thành
một AnimationClip.
Trước hết ta phải tạo AnimationClip từ animation có sẵn của
mô hình.
Lấy một mô hình làm mô hình chính, có thể không cần
animation kèm theo cũng được.
Các mô hình còn lại, tên phải có 2 phần cách nhau bởi „@‟,
phần đầu phải trung với mô hình chinsg đã chọn phần thứ 2 sẽ là tên
của animation
Với cách đặt tên như vậy, khi đưa các mô hình này vào project
để sử dụng thì unity sẽ tự động đổi tên animation mặc định trong mô
hình thành tên trùng với phần tên mô hình nằm sau chữ‟@‟.
Tiếp theo để thực hiện gọi một animationclip trong một đối
tượng ta dùng hàm CrossFade() của thuộc tính animationm trong
GameObject.
2.1.3. Kết luận
2.2. THÊM SỰ KIỆN VÀO CHUYỂN ĐỘNG CỦA NHÂN VẬT
2.2.1. Vấn đề
Trong lúc lập trình game, chúng ta muốn biết khi nào một
nhân vật chuyển động xong để có bước xử lí tiếp theo. Ví dụ như sau
5
- khi nhân vật thực thi chuyển động chết thì chúng ta phải hủy đối
tượng đó khỏi bộ nhớ. Trong unity, khi một chuyển động chạy xong
không tự phát ra sự kiện.
2.2.2. Giải pháp
Unity hỗ trợ lớp AnimationEven giúp thêm sự kiện vào frame
bất kì trong một AnimationClip. Trước hết phải có một file Scrips
chứa hàm sẽ thực thi sau khi sự kiện xảy ra.
Sau đó chúng ta tạo file Scrips khác dùng để thêm event và
gắn file scrips này vào đối tượng bất kì.
Khi đã gắn code, chúng ta đã thêm một sự kiện vào frame cuối
của AnimationClip. Khi đó chúng ta phải thêm file Scrips chứa hàm
xảy ra sự kiện.
2.2.3. Kết luận
2.3. XÂY DỰNG GIAO DIỆN GAME
2.3.1. Vấn đề
Giao diện đồ họa người dùng là một phần không thể thiếu
trong khi xây dựng một ứng dụng game hay bất cứ một ứng dụng nào
để vẽ các đối tượng đồ họa như button, label, slider,… lên màn hình.
2.3.2. Giải pháp
Để làm được điều này chúng ta dùng lớp GUI, GUI là viết tắt
của “Graphical User Interface”-“Giao diện đồ họa người dùng”. Để
sử dụng được các phương thức trong GUI ta phải gọi thực hiện từ
trong hàm OnGUI() giống như sự kiện Pain trong C#. Ví dụ sau đây
sẽ tạo ra một button đơn giản:
Hình 2.1. GUI button
6
- Để tạo một button hay một thành phần trong GUI đẹp hơn,
chúng ta sử dụng GUIStyle – style cài đặt cho cac thành phần của
GUI. GUIStyle chứa thông tin về font chữ, vị trí đặt biểu tượng, hình
nền, khoảng cách,… Chỉ cần định nghĩa và áp dụng cho một bất kỳ
thành phần nào như button, label, checkbox,… ta có thể xem
GUIStyle như CSS khi thiết kế web vậy.
2.3.3. Kết luận
2.4. ÂM THANH TRONG GAME
2.4.1. Vấn đề
Âm thanh là yếu tố không kém phần quan trọng. Thật là nhàm
chán khi một cảnh đánh nhau, bắn nhau hay các hiệu ứng mà không
có âm thanh.
2.4.2. Giải pháp
Để chơi được một file âm thanh trong unity chúng ta phải có
sẵn các file âm thanh và import vào project. Sau khi import, nếu file
hợp lệ chúng sẽ thấy như hình sau và có thể nhấn nút play để nghe
thử.
Hình 2.2. Thông tin file âm thanh
7
- Tạo menu của Unity, vào GameObject →Create Empty
Chọn đối tượng vừa tạo và gắn thành phần AudioSourcer cho
đối tượng. AudioSoucer là một đối tượng âm thanh. Muốn play hay
stop, thay đổi cách lặp tăng giảm volume thì phải thông qua đối
tượng này.
Hình 2.3. Thêm thành phần Audio Source
Sau khi gắn thành phần âm thanh cho đối tượng vừa tạo,
chúng ta dễ dàng chỉnh sửa các thông số và gán file âm thanh cho
thành phần AudioSource này.
Hình 2.4. Thêm file âm thanh cho thành phần AudioSource
Thực hiện xong các bước trên, chúng ta có thể chạy game để
nghe thử. Việc tạo đối tượng âm thanh trên giao diện khá đơn giản.
2.4.3. Kết luận
8
- CHƢƠNG 3: XÂY DỰNG GAME TRÊN UNITY
3.1. GIỚI THIỆU GAME
Đặc trưng của dòng game mà em xây dựng tại một thời điểm
chỉ có một người chơi, trò chơi sẽ có 1 màn hình chơi, người chơi sẽ
được cung cấp 1 mạng và vũ khí nhất định, người chơi sẽ bắn đễ loại
bỏ những quân địch và các vật thể khác, cố gắng lấy được càng nhiều
điểm càng tốt. Khi người chơi trúng đạn sẽ chết và màn hình
GameOver sẽ xuất hiện thông báo cho người chơi số điểm.
Hình 3.1. Màn hình để bắt đầu chơi
3.2. CÁC QUY LUẬT CHƠI CHÍNH
3.2.1. Di chuyển
Hình 3.2. Màn hình để chơi game
9
- 3.2.2. Tấn công
Hình 3.3. Đạn của máy bay địch
Hình 3.4. Đạn của người chơi
3.2.3. Điểm
Hình 3.5. Điểm của người chơi
10
- 3.2.4. Tạm dừng game
Hình 3.6. Màn hình pause
3.3. DỮ LIỆU GAME
3.3.1. Màn hình bắt đầu lập trình
Hình 3.7. Các Sence để lập trình
3.3.2. Code trong game
Hình 3.8. Code C# trong game
11
- 3.3.3. Một số Script trong game
Hình 3.9. Code của player
3.3.4. SpawnEnemy
12
- Hình 3.10. Code tạo ra địch.
3.3.5. Bullet
Hình 3.11. Code tạo ra đạn
13
- KẾT LUẬN
Sau nhiều ngày suy nghĩ kĩ để chọn đề tài tốt nghiệp, cuối
cùng em cũng đã chọn được đề tài làm game 2D trên Unity game bắn
máy bay.
Bước đầu tìm hiểu về Unity và Game Engine em gặp rất nhiều
khó khăn trong việc tìm tài liệu và xây dựng lên ý tưởng game vì tài
liệu về unity đa phần bằng tiếng anh, nhưng sau khoảng 1 tháng cố
gắng tìm tòi học hỏi các anh chị của các khóa trước thì em cũng đã
làm xong cho mình một game gần hoàn chỉnh để phục vụ cho đề tài
tốt nghiệp. Trong thời gian làm đề tài em cũng có một số những vấn
đề đạt được và chưa đạt được.
Đạt đƣợc
- Hiểu được cấu trúc, cách thức hoạt động, cách thức phát
triển ứng dụng trên Unity.
- Nâng cao kiến thức lập trình và tiếng anh chuyên ngành
thông qua các trang web, các tài liệu liên quan đến Unity bằng tiếng
anh.
- Xây dựng được các nhân vật trong game bằng các công cụ
chỉnh sửa hình ảnh như photoshop, paint.
- Tổ chức load các tương tác thông qua các button.
- Xây dựng được các chức năng như điểm, tạm dừng,… thông
qua ngôn gnwx lập trình C# trên Visual Studio.
- Tạo ra âm thanh cho trò chơi và 1 số chức năng khác.
Ngoài những thứ đạt được thì bên cạnh đó em cũng còn rất
nhiều những vấn đề chưa đạt được.
Chƣa đạt đƣợc
- Do kiến thức của em về Unity còn hạn hẹp nên các chức
năng trong game còn nghèo nàn.
14
- - Chưa xây dựng được một game hoàn chỉnh như mong muốn
- Các Scrips vẫn chưa được tổ chức rõ ràng
- Sắp xếp địch và chế độ chơi chưa được logic.
Thuận lợi
- Vận dụng được các kiến thức về C# mà em được học ở
trường để làm đồ án này
- Được sự hướng dẫn tận tình của thầy và sự giúp đỡ nhiệt tình
của các bạn.
- Có khá nhiều tài liệu trên internet.
Khó khăn
- Unity là một môi trường lập trình mới và hoàn toàn khác với
môi trường em được học ở lớp, đối với em khi bắt tay làm thì em
không biết bắt đầu như thế nào làm từ đâu và cảm thấy bối rối, bỡ
ngỡ.
- Lần đầu xây dựng game nên vẫn thiếu sót nhiều cái.
- Việc tìm hiểu và sử dụng được unity khá khó đối với em.
Kinh nghiệm rút ra
- Phải biết sắp xếp thời gian rõ ràng hợp lí nếu không sẽ gặp
rất nhiều khó khăn.
- Để hoàn thành tốt một game thì không thì làm được một
mình mà phải biết chia sẽ và phân công công việc cho mọi người.
- Phải tập trung mới hoàn thành được thì nếu không tập trung
thì sẽ mất phương hướng khiến công việc khó khăn hơn.
Hƣớng phát triển
- Tăng thêm màn chơi cho người chơi nhiều lựa chọn.
- Thêm vũ khí, nâng cấp máy bay.
- Cung cấp thêm nhiều loại máy bay cho người chơi có thể
chọn.
15
- - Tạo thêm độ khó cho trò chơi.
16
nguon tai.lieu . vn