Tải bản đầy đủ (.pdf) (19 trang)

Lập Trình Game Bằng Unity (Báo Cáo Thực Tập).Pdf

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 (982.11 KB, 19 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

LẬP TRÌNH GAME BẰNG UNITY

Cơng ty thực tập

: NCC Plus Viet Nam

Người phụ trách

: Hồng Đình Trung

Thực tập sinh

: Nguyễn Minh Thiện

TP. Hồ Chí Minh, tháng 12 năm 2022


2

LỜI MỞ ĐẦU

Ngày nay, ngành công nghiệp game là một bộ phận không thể thiếu của ngành công
nghiệp phần mềm. Với tốc độ phát triển vô cùng mạnh mẽ, ngành game đã và đang là 1 trong
những nhân tố chính kích thích sự phát triển của cơng nghệ thơng tin thế giới, cả về phần cứng
và phần mềm.
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ. Ngành công


nghiệp game Việt Nam đã và đang phát triển mạnh mẽ, để hòa nhập với những công ty hàng
đầu về game trên thế giới. Bên cạnh những công ty game trẻ tuổi trong nước (Amanotes,
Wolffun,…), những công ty game lớn trên thế giới cũng gia nhập vào thị trường Việt Nam, góp
phần rất lớn vào sự phát triển tích cực của ngành game Việt.
Ngành game được sinh ra là do nhu cầu giải trí của giới trẻ bằng những thiết bị công
nghệ mới nhất. Và cũng chính giới trẻ sẽ là nguồn nhân lực quan trọng cho việc phát triển của
ngành game sau này. Vì lý do này, em quyết định chọn lập trình game làm định hướng cho việc
học tập của mình.
Sau ba năm học tập trên trường, do mong muốn có thêm kinh nghiệm thực tế, cũng như
muốn được tham gia làm game trong một mơi trường chun nghiệp, em có dự định là sẽ thực
tập trong hè năm 2022. Vì vậy, em quyết định chọn NCC Plus Việt Nam - một môi trường lý
tưởng, hiện đại, chuyên nghiệp - là nơi sẽ giúp em thực hiện được dự định này.

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


3

LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty NCC Plus Việt Nam đã tạo điều kiện cho em có cơ
hội được thực tập tại cơng ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của nhóm trainer nhóm
thực tpaja chúng em đã tiếp thu được những kiến thức quan trọng để có thể làm được một game
3D sử dụng game engine Unity. Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra
nhiều thời gian, cơng sức để hướng dẫn em hồn thành đợt thực tập này.
Đặc biệt cảm ơn anh Hoàng Đình Trung đã training Unity, hướng dẫn, giúp đỡ cho
chúng em tận tình cả những khó khăn trong cơng việc, đến những khó khăn việc làm quen với

mơi trường mới; cảm ơn anh Nguyễn Lê Linh , đã chỉ dẫn chúng em về cách sống, những kỹ
năng không thể thiếu khi làm việc trong công ty.
Cũng xin cảm ơn thầy cơ trong khoa Cơng nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
<Nguyễn Minh Thiện >
<TpHCM, ngày 12 tháng 12 năm 2022>

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


4

NHẬN XÉT CỦA KHOA

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

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

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


5

MỤC LỤC
LỜI MỞ ĐẦU ............................................................................................................................................ 2
LỜI CẢM ƠN ............................................................................................................................................ 3
NHẬN XÉT CỦA KHOA .......................................................................................................................... 4
MỤC LỤC .................................................................................................................................................. 5
CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP ............................................................................. 6
1. Giới thiệu cơng ty NCC Plus Viet Nam ...................................................................................... 6
2. Sản phẩm của công ty .................................................................................................................. 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP ................................................................................................. 7
1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty ............................................................... 7
2. Nghiên cứu kỹ thuật ..................................................................................................................... 7
3. Thực hiện project ....................................................................................................................... 10
4. Lịch làm việc ............................................................................................................................. 10
CHƯƠNG 3: CHI TIẾT VỀ PROJECT ............................................................................................... 12
1. Giới thiệu về game ..................................................................................................................... 12
2. Thực hiện ................................................................................................................................... 17
3. Kế hoạch .................................................................................................................................... 17
TÀI LIỆU THAM KHẢO .................................................................................................................... 18

TỔNG KẾT .......................................................................................................................................... 19

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


6

CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP

1. Giới thiệu công ty NCC Plus Viet Nam
NCC Plus Việt Nam là một mạng lưới các kỹ sư phần mềm được kết nối, trẻ trung
và đầy nhiệt huyết. Cơng ty có trụ sở tại Hà Nội, Việt Nam và được thành lập bởi 4
kỹ sư phần mềm giàu kinh nghiệm và nhiệt huyết vào năm 2014-09-01.
Là một đội ngũ chuyên gia lành nghề trong lĩnh vực phát triển phần mềm. NCC Plus
sử dụng niềm đam mê của mình với các nhà phát triển để cung cấp các ứng dụng
phần mềm tốt nhất. Với sự kết hợp của cơng nghệ, bí quyết và giao tiếp tuyệt vời, họ
có thể tạo ra các giải pháp hồn chỉnh cho khách hàng của mình.
Mục tiêu: Trở thành công ty phần mềm hàng đầu và nhà cung cấp dịch vụ gia công
phần mềm. Xây dựng mối quan hệ lâu dài với khách hàng của chúng tôi và cung cấp
dịch vụ khách hàng đặc biệt với các giải pháp sáng tạo và công nghệ tiên tiến.

2. Sản phẩm của công ty
NCC Plus Việt Nam cung cấp dịch vụ thuê ngoài để phát triển web , thiết bị di
động và trị chơi . Chúng tơi là chun gia về .NET và Java và cung cấp dịch vụ dành
riêng cho nhà phát triển cho C / C ++, JAVA , .NET, PHP và thiết bị di động.

<Tên phụ trách/GVHD>


<Nguyễn Minh Thiện>


7

CHƯƠNG 2: NỘI DUNG THỰC TẬP
Đợt thực tập với chủ đề “Lập trình game bằng Unity” nhằm mục đích giúp sinh viên thực
tập được đào tạo toàn diện về lập trình game sử dụng Unity, đồng thời rèn luyện những kỹ năng
mềm như làm việc nhóm, thuyết trình, giao tiếp. Tại cơng ty, sinh viên có cơ hội được học tập,
khám phá và làm việc trong một môi trường phát triển phần mềm chun nghiệp.

1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty
Được nghe người phụ trách giới thiệu về cơng ty, q trình thành lập và phát triên
(như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của
công ty .
Ngồi ra, thực tập sinh cịn được giới thiệu về cách thức làm việc trong công ty
như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công
việc…
Kết quả : Hiểu thêm về công ty NCC Plus, quá trình thành lập và phát triển. Có thêm các
kỹ năng về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có kỷ luật, có trách
nhiệm hơn.

2. Nghiên cứu kỹ thuật
1.1.

Các cơng cụ làm việc
Thời gian : 2 ngày
Nội dung : Tìm hiểu về các cơng cụ sẽ được sử dụng trong q trình làm việc.

Trong thời gian này, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các cơng
cụ sẽ giúp ích cho trong công việc sau này. Một số phần mềm trong số đó như:
Open VPN GUI - sử dụng trong làm việc hoặc truy cập các trang web của công
ty
GIT - Lập trình Git
Unity – game engine đa nền tảng được sử dụng rộng rãi, phổ biến trong việc phát triển
game mobile và những game trên nhiều platforms khác

Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


8

Kết quả : Lập trình sử dụng các cơng cụ miễn phí, giúp dễ dàng kết hợp các cơng cụ
với nhau, so với việc dung các IDE.
1.2.

Tìm hiểu ngơn ngữ C# nâng cao và Unity
Thời gian : 7 ngày
Nội dung : Được training về các kỹ thuật C# nâng cao, những kiến thức quan trọng
cho việc tối ưu trên Unity và clean code .
- Lập trình hướng đối tượng
Các kiến thức cơ bản về lập trình hướng đối tượng như khái niêm, các đặc tính
như tính kế thừa, tính đóng gói, tính ảo hóa, tính đa hình. Ngồi ra, thực tập sinh
còn được hướng dẫn về cách thiết kế lớp cho các đối tượng game và các mẫu thiết
kế sử dụng nhiều trong lập trình game.

- Khái niệm game loop và vòng đời của C# script trong Unity:
Game loop là một chuỗi các quy trình chạy liên tục miễn là trò chơi đang chạy.
Hiểu được game loop và vòng đời của C# script trong Unity vơ cùng quan trọng
vì nó sẽ giúp hiểu hơn cách các game object trong 1 scene của game hoạt động
như thế nào và cách người lập trình có thể điều khiển, thay đổi những thơng tin,
thơng số của script để lập trình được những behavior của 1 game object
- Quản lý bộ nhớ
Thực tập sinh sẽ được hướng dẫn về cách cấp phát, quản lý bộ nhớ sao cho tối ưu
khi tạo các object trong game, tránh rò rỉ bộ nhớ, một trong những phần rất quan
trọng trong lập trình game
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

1.3.

Nâng cao kỹ năng lập trình với ngơn ngữ C#.
Có được những kiến thức quan trọng cho việc lập trình game bằng Unity.
Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho đúng
chuẩn, dễ đọc, dễ hiểu.

Lập trình game Tower Defense 3D sử dụng Unity Engine
Nội dung: Các kiến thức cơ bản để làm 1 game Tower Defense 3D cơ bản trong Unity
-

Khái niệm cơ bản về Đồ họa trong game 3D

<Tên phụ trách/GVHD>


<Nguyễn Minh Thiện>


9

Trainer cung cấp cho thực tập sinh những khái niệm cơ bản khi làm việc với
những game 3D trong Unity như hệ tọa độ 3D, vertex, pixel, fragment…, là
những khái niệm rất cơ bản và quan trọng trong lập trình game 3D.
-

Rendering pipeline:
Làm thế nào để tạo ra được hình ảnh 3D trong khi màn hình chỉ là một mặt phẳng
2D. Thực chất là chúng ta dữ liệu vào là những thơng tin về hình ảnh 3D, sau đó
cái mà ta nhận được là một hình ảnh 2D mơ phỏng lại hình ảnh 3D đó. Q trình
đó gọi là renderring pipeline. Vậy, có thể định nghĩa renderring pipeline là một
chuỗi các phép biến đổi của các thơng tin về hình ảnh 3D ra thành hình ảnh 2D
trên màn hình.

-

Shader
Là các phép biến đổi vertex, color để cho ra những hiệu ứng đặc biệt. Việc này
được thực hiện trong pipeline. Shader có thể coi là tên gọi chung của loại script
được viết ra để chạy trên GPU hay can thiệp vào quá trình vẽ để tạo các vật thể,
hiệu ứng đặc biệt.

-

Shader Graph


-

Shader Graph là một công cụ cho phép xây dựng các shader một cách trực quan.
Thay vì viết mã, chỉ cần tạo và kết nối các nút trong khung biểu đồ. đổ bóng. Biểu
đồ đưa ra phản hồi tức thì phản ánh những thay đổi và nó đủ đơn giản cho những
người dùng chưa quen với việc tạo shader.
Visual Effect Graph
Visual Effect Graph cho phép người dùng tạo các hiệu ứng hình ảnh bằng cách sử
dụng node-based logic. Có thể sử dụng nó để tạo các hiệu ứng hình ảnh đơn giản
hoặc những mô phỏng phức tạp

-

Texture
Những thông tin vertices đưa vào chứa thông tin về một tập hợp các tam giác, khi
render lên sẽ cho ta một mô hình 3D dạng khung dây. Nhưng mà nếu chỉ render
dạng khung dây thì nhìn hình ảnh sẽ khơng thực. Bởi vậy ta cần phải phủ hình ảnh
vào những khung dây này. Khái niệm texture giúp ta thực hiện điều này. Ta sẽ
load một hình ảnh bitmap và ứng với những tọa độ texture (còn gọi là tọa độ UV)
trên mỗi tam giác, ta sẽ có được hình ảnh một đối tượng 3D với bề mặt thực hơn.

-

FBX model

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>



10

Là một file model chứa thơng tin các mơ hình 3D, chẳng hạn như nhân vật, tịa
nhà hoặc một món đồ nội thất. Mơ hình được nhập dưới dạng nhiều nội dung.
Trong Project View, đối tượng được import chính là Model Prefab. Thơng thường
cịn có thể có tới vài Mesh objects được tham chiếu bởi Model Prefab.
Tệp mơ hình cũng có thể chứa dữ liệu hoạt ảnh có thể được sử dụng để tạo
Animation cho mơ hình này hoặc các mơ hình khác. Dữ liệu Animation được
nhập dưới dạng một hoặc nhiều Animation Clips.
Thực hiện :
-

Tham gia đầy đủ các buổi trainning.
Làm các bài tập thực hành như vẽ những hình cơ bản, load mơ hình 3D từ file, …
Tìm kiếm tài liệu trên mạng để tìm hiểu thêm.

Kết quả :
-

Hiểu được những khái niệm cơ bản trong lập trình game 3D bằng Unity.
Viết được script điều khiển hành vi của các game object trong game.
Thiết base cho 1 game tower defense 3D đơn giản

3. Thực hiện project
Sau 2 tuần được training và thực hành, thực tập sinh đã nắm được những kiến thực cơ
bản về C# và cách làm game 3D trong Unity. Trong những tuần tiếp theo, trainer đã
hướng dẫn thực tập sinh áp dụng những kiến thức đã học để thực hiện một project game
3D endless runner.
Chi tiết đồ án sẽ được nói ở phần sau.


4. Lịch làm việc

Tuần
1

-

Mức
độ
Cơng việc
Người hướng dẫn
hồn
thành
Tìm hiểu về cơng Chị Nguyễn Thị 100%
ty, cách tổ chức của Nhung
công ty.
Làm quen với các
công cụ làm việc
trong công ty.

<Tên phụ trách/GVHD>

Nhận xét của người
hướng dẫn

<Nguyễn Minh Thiện>


11


-

-

2

-

-

-

3-8
Từ tuần 9
trơ đi

-

Học cách trao đổi,
làm việc qua email.
Tìm hiểu ngơn ngữ
lập trình C# nâng
cao
Thực hành C#
Tìm hiểu các khái
niệm cơ bản khi lập
trình game 3D trong
Unity
Tìm hiểu về design

pattern sử dụng
trong game
Tìm hiểu Shader
Graph và Visual
Effect Graph
Làm 1 game tower
defense 3D đơn
giản bằng Unity
Thực hiện project cá
nhân
Tham gia các dự án
của cơng ty

<Tên phụ trách/GVHD>

Anh Hồng Dình
Trung

Anh Hồng Dình
Trung

<Nguyễn Minh Thiện>


12

CHƯƠNG 3: CHI TIẾT VỀ PROJECT
1. Giới thiệu về game
Game lấy ý tưởng từ 1 quảng cáo trên điện thoại mà lúc trước em thường thấy. Game
thuộc thể loại endless runner với số lượng nhân vật tăng giảm tùy theo game mechanic.

Core mechanic của game sẽ có 2 cổng hiện những phép tính tốn đơn giản như cộng,
trừ, nhân, chia, … và khi đi qua 1 trong 2 cổng đó số lượng nhân vật của người chơi sẽ
tăng giảm tùy theo phép tính. Ngồi ra cịn có những con qi khi đụng vào sẽ làm giảm
số lượng nhân vật của người chơi, nếu số lượng nhân vật của người chơi <= 0 thì sẽ
thua. Người chơi cịn có thể chọn 1 trong 3 skills có sẵn trước khi bắt đầu game, những
skill này sẽ được dùng để giảm thiếu số lượng tổn thất nhân vật của người chơi bằng
cách tiêu diệt những con quái trước khi chúng có thể chạm vào nhân vật của người chơi.
1.1.

Multiply Plate
Core mechanic chính của game sẽ có những multiply plate mà khi người chơi đi
vào sẽ tăng số lượng entity của người chơi lên tùy theo phép tính. Multiply Plate sẽ dựa
trên số lượng entity mà player đang có tại thời điểm chạn vào để tăng giảm số lượng
entity của người chơi.

Hiện tại có 6 phép tính: cộng, trừ, nhân, chia, bằng, và căng bậc 2
1.2.

Power level

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


13

Do số lượng entity của người chơi tăng giảm sẽ dẫn đến trường hợp có thể có đến
cả ngàn game object đại diện cho entity của người chơi cùng xuất hiện trên màn
hình làm giảm hiệu suất game. Vì vậy em quyết định thêm vào 1 hệ thống power

level để limit lại số lượng tối đa entity có thể xuất hiện trên màn hình để tối ưu
quá hiệu suất game.

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


14

Hiện tại có 5 tier power level cho entity của người chơi dựa vào power level của
entity. Khi lên hoặc giảm 1 tier bề mặt ngồi và kích cỡ của entity sẽ thay đổi
dựa theo màu và size multiplier được định sẵn trong Scriptable Object
“EntityTier” đã tạo
1.3.

Enemy

Enemy có hệ thống power level tương tự như của người chơi. Những enemy sẽ
xuất hiện dựa trên số lượng entity và power level tối đa mà người chơi có thể đạt
được khi đi qua multiply plate. Khi đụng vào phải entity của người chơi enemy
sẽ nổ và có hiệu ứng particle hiện ra. Power level của entity người chơi sẽ giảm
dựa trên chỉ số power level của enemy chạm phải

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


15


1.4.

Skills
Người chơi được chọn 1 trong 3 skills có sẵn để giúp giảm thiểu số lượng power
level và entity bị mất khi đụng vào enemy
Hiện tại có 3 skill đó là: laser, shield và bomb

Laser và Bomb sẽ làm giảm power level của enemy trúng phải dựa trên power level
của entity sử dụng skill đó. Nếu power level của enemy nhỏ hơn 0 sau khi bị trúng
phải skill enemy đó sẽ bị destroy.
1.5.

Game UI
Game có 1 số UI cơ bản như màn hình pause, UI hiện skill đã chọn và cooldown
của skill khi sử dụng, UI để điều khiển âm thanh và resolution của game

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


16

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


17


2. Thực hiện
Thực tập sinh: Nguyễn Minh Thiện
Và sự giúp đỡ tận tình của team trainer NCC Plus.

3. Kế hoạch
- Dựng base game mechanic là chạy vô tận.
- Thêm multiply plate, tăng giảm số lượng entity dựa trên những phép tính
đơn giản như cộng, trừ, nhân, chia
- Thêm Enemy
- Dựng power level system
- Làm hệ thống skill để người chơi sử dụng
- Sound Effect
- Visual Effect
- UI để điều khiển 1 số setting của game như âm lượng âm thanh, resolution
của game và bật tắt hiệu ứng bloom
- Game speed để điều khiển tốc độ chạy của game
- Chướng ngài vật để gây khó khăn thêm cho người chơi khi chơi
Kết quả :
-

Hầu hết các tính năng trên đã được thực hiện

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


18


TÀI LIỆU THAM KHẢO
Scripts
/> />For Models

/>For Particle
/> />Visual Effect and Shader
/> /> /> /> /> />Tower Defense Reference
/>Design Pattern
/> /> /> />
<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>


19

TỔNG KẾT
Như vậy, chỉ trong vòng 2 tháng ngắn ngủi, em đã kịp hoàn thành một game 3D chạy
trên nền tảng PC. Game đã có khá đầy đủ các tính năng đã đề ra ban đầu. Do thời gian có hạn
nên tính năng game cịn đơn giản, hình ảnh cịn thiếu 1 số tính năng chưa được như mong đợi.
Nhưng do base game được thiết kế có khả năng mở rộng nên có thêm nhiều features nữa sau
này. Sau đó em đã tham gia vào một số tasks của công ty để có thể biết thêm
được nhiều kiến thức trong các dự án thực tế.
Chân thành cảm ơn sự giúp đỡ của các anh chị nhóm trainer NCC Plus Việt Nam. Những
lời góp ý, nhắc nhở của các anh chị chính là những kinh nghiệm quý báu được đúc kết qua từng
năm để có thể hướng dẫn các thực tập sinh chưa có kinh nghiệm như bọn em.

<Tên phụ trách/GVHD>

<Nguyễn Minh Thiện>




×