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