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

Xây dựng trò chơi bắn súng trực tuyến 3d (FPS multiplayer online game)

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 (3.23 MB, 90 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 ĐỀ TÀI ĐỒ ÁN 2
Tên đề tài: Xây dựng trò chơi bắn súng trực tuyến 3D
(FPS Multiplayer Online Game).

Giảng viên hướng dẫn: ThS. Đinh Nguyễn Anh Dũng
Sinh viên thực hiện:

MSSV

Võ Thành Trung

18520180

Nguyễn Thành Trung

18520179

Thành phố Hồ Chí Minh, ngày 20 tháng 12 năm 2021


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

ĐẠ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 ĐỒ ÁN

XÂY DỰNG TRÒ CHƠI BẮN SÚNG TRỰC
TUYẾN 3D
(FPS MULTIPLAYER ONLINE GAME).
ĐỒ ÁN 2 - LỚP SE122.M11

Giảng viên hướng dẫn: ThS. Đinh Nguyễn Anh Dũng
Nhóm sinh viên thực hiện báo cáo:
1. Võ Thành Trung

18520180

2. Nguyễn Thành Trung

18520179

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

Trang 2


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

MỤC LỤC
MỤC LỤC


3

LỜI CẢM ƠN

8

DANH MỤC CÁC TỪ VIẾT TẮT

9

CHƯƠNG I: TỔNG QUAN ĐỀ TÀI

10

1.1.

Đặt vấn đề:

10

1.2.

Mô tả đề tài:

10

1.3.

Mục tiêu và phạm vi đề tài:


10

1.3.1. Mục tiêu đề tài:

10

1.3.2. Phạm vi đề tài:

11

1.4. Nghiên cứu thị trường:

11

1.4.1. CS:GO (Counter-Strike: Global Offensive):

11

1.4.2. VALORANT:

13

1.4.3. Tổng kết:

14

CHƯƠNG II - NGHIÊN CỨU CÁC CÔNG NGHỆ LIÊN QUAN
2.1.

15


Unity Engine:

15

2.1.1. Giới thiệu:

15

2.1.2. Các thành phần chính trong project của Unity:

16

2.1.3. Lý do nhóm lựa chọn sử dụng Unity:

17

Trang 3


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

2.2.

Xây dựng trò chơi bắn súng trực tuyến 3D

Photon Unity Network - PUN:

18


2.2.1. Giới thiệu:

18

2.2.2. Các tính năng chính:

19

2.3.

Blender:

25

2.3.1. Giới thiệu:

25

2.3.2. Các tính năng chính:

26

2.3.3. Lý do nhóm lựa chọn sử dụng Blender:

27

CHƯƠNG III - DESIGN DOCUMENT
3.1.

28


Gameplay:

28

3.1.1. Số lượng người chơi:

28

3.1.2. Thời lượng chơi

28

3.1.3. Các phe trong game:

28

3.1.4. Điều kiện thắng/thua:

35

3.2.

Thiết kế bản đồ

35

3.3.

Các tính năng quan trọng khác của game:


39

3.3.1. Tinh chất dưa chuột có phát sáng để người chơi nhận biết:

39

3.3.2. Cấu hình các nút bấm:

40

3.3.3. Minimap:

41

3.3.4. Thanh trạng thái thu thập:

42

Trang 4


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

3.3.5. Các loại AI trong game:

44


3.3.5.1. Mô tả:

44

3.3.5.2. Các biến cố làm chuyển đổi trạng thái AI

45

3.3.5.3. Các trạng thái của AI

47

3.3.6. Cutscene ở đầu ván đấu:
CHƯƠNG IV - THIẾT KẾ GIAO DIỆN

52
54

4.1.

Sơ đồ liên kết các màn hình:

54

4.2.

Danh sách các màn hình:

54


4.3.

Mơ tả các màn hình:

56

4.3.1. Màn hình đăng nhập:

56

4.3.2. Màn hình chính:

57

4.3.3. Màn hình thơng tin của người chơi:

58

4.3.4. Màn hình trận đấu:

59

4.3.5. Màn hình cài đặt:

60

4.3.6. Màn hình tạo phịng:

61


4.3.7. Màn hình sảnh chờ:

62

CHƯƠNG V - THIẾT KẾ HỆ THỐNG
5.1

63

Hệ thống Photon:

63

5.1.1. Cài đặt Photon Unity Network cho một Project Unity
Trang 5

63


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

5.1.2. Thiết lập các Network Component quản lý các scene trong game.

63

CHƯƠNG VI - XÂY DỰNG ỨNG DỤNG

65


6.1 Xây dựng mơ hình 3D:

65

6.2. Hoạt ảnh cho nhân vật (Animation):

68

6.3. Đưa nhân vật vào Unity:

72

6.5. Cài đặt AI:

74

6.5.1. Các khái niệm sử dụng để cài đặt AI

74

6.5.2. Áp dụng UNITY NAVMESH để cài đặt AI trong game

79

CHƯƠNG VII - CÀI ĐẶT VÀ THỬ NGHIỆM

82

7.1.


Nền tảng hỗ trợ:

82

7.2.

Các bước cài đặt:

82

7.3.

Quy trình thử nghiệm trên các thiết bị:

82

7.3.1. Về yêu cầu phần mềm:

82

7.3.2. Về yêu cầu phần cứng:

82

7.3.3. Đánh giá:

82

7.4.


Chi tiết kết quả thử nghiệm:

82

7.4.1. ASUS Zephyrus G14 GA401IHR:

82

7.4.2. ThinkPad T14 2020:

83

CHƯƠNG VIII - KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trang 6

84


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

8.1. Đánh giá tiến độ thực hiện đề tài (bảng tóm tắt quá trình các giai đoạn thực hiện
cột thời gian và hoạt động)

84

8.2. Các kết quả đạt được


85

8.2.1. Ưu điểm:

85

8.2.2. Nhược điểm:

86

8.3. Hướng phát triển:

87

TÀI LIỆU THAM KHẢO

88

BẢNG PHÂN CÔNG CÔNG VIỆC

89

Trang 7


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D

LỜI CẢM ƠN

Nhóm chúng em trân trọng gửi lời cảm ơn đến thầy Đinh Nguyễn Anh Dũng đã tạo
điều kiện cho chúng em có cơ hội được thực hiện đồ án.
Với những kiến thức lý thuyết đã được hướng dẫn tìm hiểu, nhóm đã vận dụng được
rất nhiều trong việc hoàn thành đề tài.
Trong vịng 15 tuần, nhờ sự chỉ dẫn nhiệt tình của thầy, chúng em đã tiếp thu được
những kiến thức quan trọng cùng những góp ý chân thành để có thể làm được một chương
trình hồn chỉnh.
Cũng xin cảm ơn thầy ThS. Đinh Nguyễn Anh Dũng trong khoa Công nghệ phần mềm
đã nhiệt tình hỗ trợ, tạo điều kiện cho nhóm em làm bài báo cáo này.
Mặc dù đã cố gắng hoàn thành báo cáo với tất cả nỗ lực song báo cáo của nhóm chúng
em chắc chắn khơng tránh khỏi những thiếu sót, chúng em rất mong nhận được sự thơng cảm
và góp ý chân thành từ các thầy cơ. Nhóm em xin chân thành cảm ơn ạ.

Thành phố Hồ Chí Minh, ngày 20 tháng 12 năm 2021
Lớp SE122.L21
Nhóm gồm Võ Thành Trung, Nguyễn Thành Trung

Trang 8


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

DANH MỤC CÁC TỪ VIẾT TẮT
[1] FPS: First Person Shooter
[2] Anim: Animation
[3] PUN: Photon Unity Network

Trang 9



Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
1.1.

Đặt vấn đề:

Theo thống kê của Google Play và Appstore, hai nền tảng ứng dụng lớn nhất thế giới
hiện nay, mỗi tháng có tới hàng triệu ứng dụng được phát hành, bên cạnh những ứng dụng
phục vụ cho cơng việc, cuộc sống thì một lượng lớn cịn lại chính là các trị chơi điện tử
(video game). Game được tạo ra để phục vụ nhu cầu giải trí của con người. 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, đem
lại hàng tỷ đô lợi nhuận và thúc đẩy sự phát triển của thế giới. Trong giai đoạn khó khăn của
đại dịch Covid-19, đa số các ngành nghề khác đều bị ảnh hưởng, thì ngành cơng nghiệp trị
chơi điện tử lại có mức tăng trưởng chóng mặt cả về doanh thu, số lượng trị chơi và cả tập
người dùng.
Trong đó dòng game hành động, bắn súng First Person Shooter (FPS) Multi Player
luôn là một trong những thể loại “hot” trên thị trường game hiện nay. Nắm được xu thế trên
cũng như xem xét khả năng của nhóm, nhóm chúng em quyết định thực hiện đề tài này.
1.2.

Mô tả đề tài:

Đề tài bao gồm tài liệu thiết kế và xây dựng tựa game FPS Multiplayer bao gồm ý
tưởng, thiết kế nhân vật, các model 3D, animation và các logic code của game
1.3.


Mục tiêu và phạm vi đề tài:
1.3.1.

Mục tiêu đề tài:

Mục tiêu đề tài là nghiên cứu và ứng dụng Unity Engine vào việc thiết kế trị chơi nói
chung và trị chơi FPS nói riêng. Bên cạnh đó, nhóm cũng tìm hiểu về khả năng ứng dụng
sản phẩm AI trong việc thiết kế các con BOT trong game. Những tiền đề trên là cơ sở để
nhóm có thể phác thảo nên một ứng dụng trị chơi sử dụng cơng nghệ kể trên.
Trang 10


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

1.3.2.

Xây dựng trò chơi bắn súng trực tuyến 3D

Phạm vi đề tài:

Phạm vi đề tài tập trung vào các nội dung về định nghĩa và cách tạo ra một tựa game
FPS Multiplayer. Ý tưởng, các thiết kế và phát triển ứng dụng trị chơi điện tử.
1.4. Nghiên cứu thị trường:
Nhìn lại từ những năm 1970, những tựa game FPS đã bắt đầu ra mắt ở khắp nơi trên
thế giới. Tuy nhiên, mãi đến khoảng những năm 2000, tựa game Online FPS đầu tiên mới
được phát hành, đánh dấu một kỷ nguyên mới của dòng game này. Thế nên trên thị trường
hiện nay, chỉ cần gõ dòng chữ “fps games” trên bất kỳ cơng cụ tìm kiếm nào, sẽ có hàng
triệu kết quả được trả về. Trong hàng tá tựa game đó, có một vài cái tên mà sự thành cơng
của nó được thể hiện qua các giải đấu quốc tế, được nhiều người biết đến, do đó nhóm chọn

chúng thể tìm hiểu và học theo
1.4.1.

CS:GO (Counter-Strike: Global Offensive):

Hình 1.4.1.1 Giao diện trò chơi của tựa game CS:GO

-

Nhà phát triển: Valve Corporation

-

Năm phát hành: 2012

-

Điểm nhấn chính:
Trang 11


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

● Ra đời từ năm 2012, là phiên bản tiếp theo của dòng game
Counter-Strike hay còn gọi là Half-Life, tựa game này kế thừa
những chế độ chơi từ những phiên bản trước đó. Trong đó chế
độ được chơi nhiều nhất đó chính là đặt/gỡ bom.
● Người chơi được chia làm 2 phe khủng bố (Terrorists) và đội

chống khủng bố (Counter-Terrorists), mỗi phe có tối đa 12 người
chơi
● Hệ thống vũ khí của game cũng kế thừa từ phiên bản cũ. Trong
đó, hệ thống súng của game rất đa dạng và lấy từ những khẩu
súng tồn tại trong thế giới thật với đồ họa phong cách tả thực.
Súng của người chơi chỉ được trang bị trong mỗi trận đấu, ở mỗi
màn, người chơi sẽ có một số lượng tiền nhất định để mua cây
súng mình thích. Vì lý do đó, game được game thủ đánh giá là
fair to play nhất, không giống như những game pay to win khác
như Đột kích,...
● Tuy khá nổi tiếng trên thế giới, nhưng khơng phải ai cũng có thể
chơi được tựa game này vì đây là tựa game có trả phí để chơi,
chứ khơng free to play như các tựa game FPS khác hiện đang có
trên thị trường.
● Doanh thu của tựa game không chỉ đến từ tiền bán game, mà còn
đến từ trang phục súng và từ Gacha Box hay Loot Box, là nơi
mà tựa game bán những trang phục cho các loại súng của mình.

Trang 12


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

1.4.2.

Xây dựng trị chơi bắn súng trực tuyến 3D

VALORANT:

Hình 1.4.2.1 Giao diện trò chơi của tựa game VALORANT


-

Nhà phát triển: RIOT GAMES

-

Năm phát hành: 2020

-

Điểm nhấn chính:
● Tuy chỉ mới ra mắt chính thức chỉ hơn 1 năm, tuy nhiên thành
cơng của tựa game này là điều không thể bàn cãi, với lối chơi
được kế thừa, học hỏi từ những cái tên đi trước như CS:GO và
Overwatch. Tựa game này đã có giải đấu vơ địch thế giới đầu
tiên với rất nhiều thành công.
● Tương tự như CS:GO, tựa game này cũng có rất nhiều chế độ
chơi khác nhau và trong đó, chế độ được chơi nhiều nhất đó
chính là “Competitive” hoặc có thể hiểu là đặt/gỡ bom (tương tự
CS:GO), mỗi phe sẽ có 5 người và vai trị của mỗi team có thể
được đổi qua lại sau 12 màn. Đội nào có được 13 màn thắng
trước tiên sẽ dành chiến thắng chung cuộc. Có tổng cộng 24 màn
Trang 13


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D


bình thường và 1 màn đặc biệt, nếu cả 2 đội có số điểm 12 bằng
nhau thì màn số 25 sẽ được mở khóa, và sẽ quyết định kết quả
của ván đấu.
● Hệ thống vũ khí cũng tương tự CS:GO, khi người chơi chỉ có thể
mua súng khi đã vào game, hệ thống vũ khí của game này có
những cái tên và hoạt ảnh khác xa với những khẩu súng có thật
ngồi đời, mà mang hơi hướng viễn tưởng, tương lai hơn.
● Hệ thống nhân vật: Đây là một trong những điểm nổi bật nhất
của game này khi so sánh với CS:GO, game có 4 lớp nhân vật,
với các vai trị và kỹ năng khác nhau ở mỗi nhân vật thuộc mỗi
lớp, tạo nên sự đa dạng ở lối chơi cũng như tính biến hóa cho
mỗi trận đấu, tương tự như các tựa game MOBA.
● Khác với CS:GO, game thủ chỉ cần có kết nối mạng và thiết bị
đủ mạnh thì đã có thể chơi được trị chơi này, vì nó áp dụng mơ
hình Free to play, do đó doanh thu chính cho nhà sản xuất đến từ
việc bán trang phục cho súng rất nhiều mẫu mã và các hiệu ứng
đặc biệt, bắt mắt hơn so với CS:GO.
1.4.3.
-

Tổng kết:
Có thể thấy hai tựa game trên học hỏi nhau rất nhiều về cả lối chơi, cách

thiết kế vũ khí, nhân vật, tính năng và cả ở mảng vận hành game.
-

Dựa vào những gì đã tìm hiểu và trải nghiệm, nhóm đã có thể học hỏi

và áp dụng khá nhiều các tính năng hay và có thể áp dụng được cho đồ án này
như kỹ năng của các nhân vật, đối đầu giữa 2 phe,...


Trang 14


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

CHƯƠNG II - NGHIÊN CỨU CÁC CƠNG NGHỆ LIÊN QUAN
2.1.

Unity Engine:
2.1.1.

Giới thiệu:

Hình 2.1.1.1 Logo của Unity

Unity Engine là một game engine được dùng để phát triển video game cho các thiết bị
điện tử như máy tính, console và cả điện thoại.
Unity hỗ trợ cả đồ họa 2D và 3D, và các chứng năng được viết chủ yếu bằng ngôn ngữ
C#. Tuy nhiên phát triển game khơng cần tới code vẫn có thể thực hiện được bằng các tools
có sẵn hoặc tải về từ thư viện tools của Unity.
Unity là một trong những Game Engine được yêu thích nhất bởi cộng động phát triển
ứng dụng, đặc biệt là game. Có thể liệt kê các lý do Unity được sự tín nhiệm như vậy là do
khả năng hỗ trợ mạnh mẽ, công đồng thân thiện, lớn mạnh, bên cạnh đó rất dễ tiếp cận và
hồn tồn miễn phí (đối với mơi trường khơng chun hoặc giáo dục).

Trang 15



Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D

Hình 2.1.1.2 Một game được phát triển bằng Unity

2.1.2.

Các thành phần chính trong project của Unity:

- Assets: là những tài nguyên được sử dụng trong việc phát triển game trong Unity.
Các Assets này có thể là hình ảnh 2D, 3D Models, âm thanh, hiệu ứng, ... được tạo nên từ
lập trình viên, hoặc có thể được tải về trên các thư viện Assets của Unity (miễn phí hoặc trả
phí).
- GameObject: là đối tượng sử dụng Assets trong Unity như nhân vật, cây cỏ, công
cụ, đạo cụ, camera, hiệu ứng … Điểm chung giữa các GameObject là đều chứa thuộc tính
Transform, dùng để thay đổi vị trí, hướng và kích thước của chúng.
- Components: là các thuộc tính thêm vào GameObject như Animation, âm thanh, 3D
Models, hiệu ứng,… Nếu Assets là phần xác thịt thì Components chính là phần hồn của
GameObject, việc thêm các Components sẽ giúp GameObject có thể di chuyển, tương tác,...
- Scenes: là một cảnh game, không gian game nơi lập trình viên sắp xếp, tinh chỉnh các
GameObjects, hay giao diện người dùng UI/UX, ví dụ: Menu, Lobby,...
- Scripts: là một Component trong Unity. Đây là thành phần thiết yếu dùng để tương
Trang 16


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D


tác với các hành động của người chơi, hoặc tương tác với hệ thống. Scripts được viết chủ
yếu bằng ngôn ngữ C#.
- Prefabs: là một GameObject hoàn chỉnh sau khi thêm các thuộc tính và được lưu trữ
lại để tái sử dụng. Các GameObject được dùng lại từ Prefab giống nhau hoàn toàn. Để tạo ra
một prefab, chỉ cần kéo một GameObject từ cửa sổ Hierarchy vào cửa sổ Project.
- Camera: dùng để thể hiện khung hình, góc nhìn mà người chơi có thể nhìn thấy được
trong game. Trong một game có thể thiết lập nhiều camera để chia nhỏ màn hình người chơi.
Ứng dụng trong việc tạo các hiệu ứng, hoặc tùy chỉnh như nhìn từ góc nhìn thứ ba, bản đồ
thu nhỏ, …
- Light: là một phần quan trọng trong Scene, giúp xác định độ sáng, màu sắc của màn
chơi. Có thể dùng nhiều Light và nhiều dạng Light để tinh chỉnh cho phù hợp hơn với thiết
kế.

Hình 2.1.2.1 Giao diện Unity Engine

2.1.3.

Lý do nhóm lựa chọn sử dụng Unity:

Unity là một game engine được phát triển bởi Unity Technologies như một hệ sinh
Trang 17


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

thái (Engine) đa nền tảng để phát triển game cũng như các ứng dụng AR. Bên cạnh đó việc
sử dụng đối với quy mơ học tập là hồn tồn miễn phí. Ngồi ra cộng đồng lớn mạnh có thể

hỗ trợ rất nhiều cho nhóm mỗi khi gặp khó khăn.
2.2.

Photon Unity Network - PUN:
2.2.1.

Giới thiệu:

Hình 2.2.1.1 Logo của Photon

Photon Unity Network - PUN là một gói tính năng trên Unity Engine, được sử dụng
cho các game multiplayer. PUN hỗ trợ một số hoạt động cần thiết cho game PvP, bao gồm:
- Tính năng phịng chờ (Lobby): Tạo và tham gia phịng chơi
- Tính năng hỗ trợ game: Hỗ trợ đồng bộ hóa một số object giữa các Client trong màn
chơi.
- Các phương thức giao tiếp giữa các Client.
PUN có 15 server trải rộng khắp các nơi trên thế giới, nhờ đó mọi game sử dụng PUN
có thể kết nối đến server với độ trễ rất thấp. Trong nhu cầu sử dụng tại Việt Nam, các game
sử dụng PUN được kết nối với server “asia” đặt tại Singapore.
Các tùy chỉnh cho xử lý mạng của game được PUN tập trung và trực quan hóa thơng
qua các Component Panel trong Unity. Tất cả đều tường mình, dễ dàng điều chỉnh từ IP,
server, giao thức TCP/UDP, …

Trang 18


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D


Hình 2.1.2.1 Giao diện phần thiết lập cài đặt server cho Photon Unity Engine

2.2.2.

Các tính năng chính:

Trong Photon Unity Engine có một số khái niệm sau, được dùng để quy ước gọi các
class và tùy chỉnh trong game.
Khái niệm

Giải thích

Region

Một cụm server của PUN được đặt ở khắp nơi trên thế giới, có 15 cụm
server trải rộng khắp trên thế giới. Các user chỉ có thể chơi game và
tương tác với các user trong cùng server.

Version

Là một chuỗi ký tự do developer tạo ra, ấn định phiên bản của game.
Trang 19


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

Để tránh khỏi sự khác biệt trong mã nguồn (gây ra do nâng cấp, thay
đổi), các user chỉ có thể chơi game và tương tác với các user khác trong

cùng version.
Tóm lại: các user chỉ có thể tham gia và chơi game với nhau khi phiên
bản PUN trong ứng dụng của họ có cùng Version và cùng kết nối tới
một Region.
Player

Player đại diện cho một user chơi trong game. Mỗi Player mang một
“Uid” (UserID) và một Nickname. Nickname có thể thay đổi trong q
trình chơi game, và có thể trùng Nickname với các user khác. Mặt khac,
Uid là dãy ký tự dài riêng biệt được PUN cấp cho user khi kết nối với
server.

Lobby

Khi ứng dụng của user kết nối thành công với server PUN, và Uid được
cấp, user được xem là “tham gia phòng chờ” ( Lobby ). User khi tham
gia một phòng chơi sẽ được xem là “rời khỏi phòng chờ”. Ngược lại,
user rời khỏi phòng chơi được xem là “tham gia phòng chờ”.

Room -

Đại diện cho một phòng chơi của các user. Phịng chơi có thể tùy chọn

RoomInfo

về số lượng người chơi tối đa, chế độ phòng chơi, và cấm các người
chơi theo tùy chỉnh.

Master Client


Là người chơi sớm nhất tham gia vào phịng chơi đó. Master Client có
thể được xem như là Server của game để thực hiện các hành động
chung.

Trang 20


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

Trong phạm vi tìm hiểu và sử dụng của đồ án 2: Mission Cucumber - Cats versus Mice.
Photon Unity Engine (PUN) được chia làm 2 gói tính năng chính. Sau khi vào ứng dụng, kết
nối được với server PUN, user đã có thể sử dụng được các nhóm tính năng, bao gồm:
Nhóm tính năng phịng chờ (Lobby - Room):
Đây là nhóm tính năng hỗ trợ user tạo và tham gia các phòng chơi. PUN đã hỗ trợ gần
hết các tính năng cần có để người chơi có thể kết nối với nhau.

Tính năng

Mơ tả

Tạo phòng chơi

User nhập vào tên phòng, server PUN tạo cho User một phịng
có tên tương ứng. User tham gia phịng đó và trở thành chủ
phịng (Master Client)

Tham gia phịng chơi User nhập vào tên phịng, server PUN tìm kiếm phịng có tên
với mã cho trước


tương tự trong phạm vi vùng (region) và phiên bản tương
đương. Nếu có, user sẽ được tham gia vào phịng đó.

Tham gia phịng chơi User tự động tham gia vào một phòng chơi ngẫu nhiên đang
ngẫu nhiên

chưa đủ người.

Tham gia phòng chơi User tự động tham gia vào một phòng chơi ngẫu nhiên đang
ngẫu nhiên hoặc tạo chưa đủ người. Nếu khơng tìm được một phòng chơi phù hợp,
một phòng chơi mới.

user sẽ tự tạo phịng chơi mới và tham gia phịng đó.

Trang 21


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D

Nhóm tính năng hỗ trợ game:
Component

Mô tả

Photon View

Component yêu cầu bắt buộc cho tất cả các GameObject

muốn sử dụng khả năng đồng bộ của PUN. Mỗi GameObject
sử dụng Photon View Component được cấp 1 số ID đồng bộ
giữa các client. Số ID của Photon View Component hoàn
toàn khác biệt so với HashCode hay InstanceID của
GameObject. GameObject sử dụng Photon View được phép
sử dụng các Component khác đi kèm ở dưới.
Các GameObject có PhotonView muốn được đồng bộ, phải
được tạo ra bằng hàm PhotonNetwork.Instantiate(...) thay vì
Instantiate(...).

Photon View Transform

Component giúp GameObject giữa các Client được đồng bộ

và Photon View

với nhau ở các thuộc tính: - Vị trí (position) - Góc quay

Transform Classic

(rotation) - Độ phóng (scale)

Photon View Animator

Component giúp GameObject giữa các Client được đồng bộ

và Photon View

với nhau về trạng thái Animation bằng cách ghi nhận và đồng


Animator Classic

bộ các thuộc tính trong Animator của GameObject.
GameObject càn sử dụng Animator để sử dụng Photon View
Animator.

Photon View Handler

Thông thường, các GameObject sử dụng Photon View do 1
Client tạo ra sẽ bị hủy ngay lập tức khi Client đó bị mất kết
nối (do đóng client, ngắt mạng, ...). Photon View Handler sẽ
giữ các GameObject đó khơng bị hủy. GameObject chỉ bị hủy

Trang 22


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

khi Client chủ của nó bị mất kết nói quá một khoảng thời gian
được tùy chỉnh trước.

Các phương thức giao tiếp giữa các Client:
Kỹ thuật Mô tả
giao tiếp
RPC

RPC (Remote Procedure Call) là một phương thức dành cho các Class gọi thực
thi một hàm được gắn nhãn [PunRPC] ở trên một tập các Client xác định. Có

một số tập các Client được PUN định sẵn như sau:
- All: tất cả Client trong phòng chơi (bao gồm Client gọi hàm)
- AllBuffered: tất cả Client trong phòng chơi (bao gồm Client gọi hàm), các
Client vào sau sẽ thực thi ngay lập tức. - AllViaServer: tất cả Client trong
region server (bao gồm Client gọi hàm)
- AllViaServerBuffered: tất cả Client trong region server (bao gồm Client gọi
hàm), các Client vào sau sẽ thực thi ngay lập tức.
- MasterClient: chỉ gọi cho người chơi trong phòng là Master Client.
- Other: tất cả Client trong phòng chơi (trừ Client gọi hàm)
- OtherBuffered: tất cả Client trong phòng chơi (trừ Client gọi hàm), các Client
vào sau sẽ thực thi ngay lập tức.

Raise

Raise Event là một phương thức gọi bằng cách gửi một Photon Event bao gồm

Event

các thành phần:
- Mã Event: là một số ở trong khoảng 0 - 200, là căn cứ để xác định và phân
loại xử lý nội dung Event.
- Nội dung Event: là mảng các object (class cơ bản nhất của C#), Client nhận
Trang 23


Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trò chơi bắn súng trực tuyến 3D

phải xác định đúng mã event để dịch các object trong mảng này về đúng kiểu

dữ liệu của chúng.
- ReceiverGroup: xác định loại đối tượng được nhận event, có 3 loại đối tượng
(All - tất cả Client trong phòng bao gồm bản thân, Other - những Client khác
trong phòng, MasterClient - chỉ gửi cho MasterClient).
- SendOptions: tùy chọn chế độ gửi (Reliable - Unreliable). Các event sẽ được
nhận và đọc bởi các class implement IOnEventCallback tại Client nhận.

2.2.3.

Lý do nhóm lựa chọn Photon Unity Network (PUN):

Photon Unity Network là một trong những tiện ích hàng đầu được sử dụng để phát triển
các sản phẩm game trên Unity. Mặc dù sử dụng bản trả phí, tuy nhiên các tính năng giới hạn
trong bản rất đầy đủ để developer có thể phát triển được các tính năng, đảm bảo chế độ
Multiplayer hồn chỉnh. Bên cạnh đó, hệ thống web Documentation của PUN được viết rất
chi tiết kèm theo các ví dụ trực quan, các developer có thể tìm hiểu và áp dụng ngay mà
khơng cần tra cứu thêm thông tin ở các nguồn khác.
Ở các tính năng trong sảnh chờ - tạo phịng, PUN cung cấp đầy đủ cho developer các
khái niệm về người chơi (Player), sảnh chờ (Lobby), phòng chờ (Room/RoomInfo) cùng với
các chức năng tạo và tham gia phịng (theo mơ tả ở trên). PUN cũng theo dõi và phát các sự
kiện để Client xử lý các trường hợp khi người chơi không thể tham gia phòng, người chơi
mất kết nối, chủ phòng rời khỏi phịng, ...
Ở các tính năng phục vụ trong game, PUN giúp người chơi đồng bộ hình thể của
GameObject (vị trí, góc quay, kích cỡ, animation). PUN đưa ra cho developer 2 lựa chọn
thực hiện giao tiếp với client khác (RPC và Raise Event) với các ưu và nhược điểm khác
nhau, developer có thể linh động sử dụng 2 cách giao tiếp trên ở trong các trường hợp khác
nhau.
Trang 24



Báo cáo Đề tài Đồ án 2 - lớp SE122.M11

Xây dựng trị chơi bắn súng trực tuyến 3D

Tuy nhiên, vì Photon Unity Network là bộ tiện ích Unity cơ bản, nên một số tính năng
chưa sát với thực tế sử dụng trong các game hiện có. Điển hình trong các game hiện có,
người chơi chỉ cần u cầu tạo phịng và game sẽ cấp mã phòng cho người chơi, trong khi
PUN yêu cầu người chơi tự tạo tên phòng cho phịng của mình. Bên cạnh đó các Component
sử dụng cho các GameObject của Photon chỉ hỗ trợ đồng bộ vị trí, góc quay, kích cỡ,
animation, các thuộc tính khác của GameObject phải do developer cài đặt đồng bộ thông qua
RPC hoặc RaiseEvent.
2.3.

Blender:
2.3.1.

Giới thiệu:

Hình 2.3.1.1 Logo của Blender.

Blender là một bộ phần mềm tạo 3D mã nguồn mở miễn phí hỗ trợ khá nhiều mọi khía
cạnh của phát triển 3D. Với nền tảng vững chắc về khả năng tạo mơ hình, cịn có kết cấu
mạnh mẽ, thiết bị, hoạt ảnh, ánh sáng và một loạt các công cụ khác để tạo 3D hoàn chỉnh.
Về cơ bản, phần mềm Blender được phát triển từ Blender Foundation, một tổ chức phi lợi
nhuận được thành lập vào năm 2002. Vào năm 2007, Viện Blender spin-off được thành lập
và hiện là tổ chức của nền tảng này, đã trở thành cơ sở để tiếp tục phát triển và các dự án
sáng tạo.

Trang 25



×