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

Khóa luận xây dựng 2d game engine phục vụ cho công tác giảng dạy lập trình 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 (2.64 MB, 95 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

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

VŨ ĐỨC TRUNG – 19520324
LƯƠNG MẠNH HÙNG - 19520098

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG 2D GAME ENGINE PHỤC VỤ CHO CÔNG
TÁC GIẢNG DẠY LẬP TRÌNH GAME
BUILD A 2D GAME ENGINE FOR TEACHING GAME
PROGRAMMING

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

TP. HỒ CHÍ MINH, 2023


ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH

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

VŨ ĐỨC TRUNG – 19520324
LƯƠNG MẠNH HÙNG - 19520098

KHÓA LUẬN TỐT NGHIỆP

XÂY DỰNG 2D GAME ENGINE PHỤC VỤ CHO CÔNG


TÁC GIẢNG DẠY LẬP TRÌNH GAME
BUILD A 2D GAME ENGINE FOR TEACHING GAME
PROGRAMMING

KỸ SƯ NGÀNH KỸ THUẬT PHẦN MỀM

GIẢNG VIÊN HƯỚNG DẪN
ThS. ĐINH NGUYỄN ANH DŨNG

TP. HỒ CHÍ MINH, 2023


THƠNG TIN HỘI ĐỒNG CHẤM KHĨA LUẬN TỐT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ……………………
ngày ………………….. của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
1 ..............................................................................- Chủ tịch.
2 ..............................................................................- Thư ký.
3 ..............................................................................- Ủy Viên.
4 ..............................................................................- Ủy Viên.


LỜI CẢM ƠN
Khóa luận tốt nghiệp là một hành trình đầy thử thách và yêu cầu sự đầu tư đáng
kể về thời gian và công sức. Đây là cơ hội để chúng em áp dụng những kiến thức
và kỹ năng đã học trong suốt những năm học đại học, cùng với việc tiếp thu thêm
nhiều kiến thức mới và trau dồi kinh nghiệm phục vụ cho sự phát triển về chun
mơn sau khi tốt nghiệp. Khóa luận tốt nghiệp cũng là bước chuẩn bị cuối cùng
trước khi chúng em bước vào cánh cửa sự nghiệp cá nhân với ngành lập trình. Vì
vậy, đây khơng chỉ là một thử thách mà cịn là cơ hội để rèn luyện và hồn thiện
bản thân bằng những kỹ năng tích luỹ trong suốt quá trình nghiên cứu và thực

hiện khóa luận.
Đầu tiên, chúng em xin gửi lời cảm ơn chân thành đến Thạc sĩ Đinh Nguyễn Anh
Dũng, người đã đảm nhận vai trò giảng viên hướng dẫn cho khóa luận tốt nghiệp
của chúng em. Sự tận tâm và sự hỗ trợ của thầy đã giúp nhóm vượt qua những
thách thức và phát triển kỹ năng nghiên cứu và lĩnh vực liên quan. Những kiến
thức và sự chỉ dẫn từ thầy không chỉ mang lại sự hồn thiện cho khóa luận của
chúng em, mà cịn làm nền tảng vững chắc cho sự phát triển trong tương lai.
Chúng em cũng muốn bày tỏ lòng biết ơn đến tất cả các giảng viên trong khoa
Công nghệ phần mềm, anh/chị và các bạn đã chia sẻ kiến thức q báu và hỗ trợ
nhóm trong q trình nghiên cứu và phát triển khóa luận. Sự hướng dẫn và những
góp ý đáng giá từ các thầy cô, anh/chị và các bạn đã đóng góp quan trọng vào sự
hồn thiện của khóa luận và giúp chúng em mở rộng hiểu biết về lĩnh vực chun
mơn.
Ngồi ra, chúng em xin chân thành cảm ơn gia đình, bạn bè và những người thân
yêu đã luôn đồng hành và hỗ trợ tinh thần trong suốt q trình thực hiện khóa
luận. Sự ủng hộ và động viên không ngừng của mọi người đã truyền động lực
mạnh mẽ cho chúng em vượt qua những khó khăn và thách thức.
Cuối cùng, chúng em xin gửi lời cảm ơn sâu sắc đến tất cả những thầy/cô, anh/chị
và các bạn đã dành thời gian đọc và đánh giá khóa luận này. Sự quan tâm và phản


hồi của mọi người sẽ giúp chúng em rút kinh nghiệm và phát triển hơn trong
tương lai.
Một lần nữa, chúng em xin bày tỏ lòng biết ơn sâu sắc và trân trọng đến tất cả
những người đã đồng hành và ủng hộ nhóm trong hành trình này.


MỤC LỤC

TÓM TẮT KHÓA LUẬN ...............................................................................................................1

Chương 1. MỞ ĐẦU ........................................................................................................................2
1.1. Lý do chọn đề tài...............................................................................................................2
1.2. Mục tiêu của dự án...........................................................................................................2
1.3. Đối tượng hướng đến .....................................................................................................3
1.4. Phạm vi nghiên cứu .........................................................................................................3
Chương 2. TỔNG QUAN................................................................................................................5
2.1. Giới thiệu sơ lược về Game Engine ..........................................................................5
2.2. Các thành phần có trong một Game Engine .........................................................6
2.3. Lợi ích của việc sử dụng Game Engine trong giảng dạy lập trình game ..7
2.4. Tổng quan về các Game Engine hiện có trên thị trường ................................8
2.5. Các tính năng, ưu nhược điểm của các Game Engine đã đề cập ............... 12
Chương 3. NGHIÊN CỨU LÝ THUYẾT ................................................................................. 14
3.1. Sơ lược về khái niệm, nguyên tắc, phương pháp phát triển game .......... 14
3.1.1.

Khái niệm về phát triển game ..................................................................... 14

3.1.2.

Nguyên tắc thiết kế game .............................................................................. 14

3.1.3.

Công nghệ phát triển game .......................................................................... 15

3.1.4.

Hình ảnh và đồ họa .......................................................................................... 16

3.1.5.


Âm thanh và hiệu ứng âm thanh ................................................................ 16

3.2. Cách một game hoạt động ......................................................................................... 16
3.2.1.

Game Object ........................................................................................................ 16

3.2.2.

Component .......................................................................................................... 17


3.2.3.

Script ...................................................................................................................... 18

3.3. Sự cần thiết của Game Engine trong phát triển game................................... 19
3.4. Các khái niệm cơ bản trong lĩnh vực phát triển Game Engine .................. 20
3.4.1.

Game Loop ........................................................................................................... 20

3.4.2.

Update Method .................................................................................................. 20

3.4.3.

Render ................................................................................................................... 21


3.4.4.

Asset Management ........................................................................................... 21

3.4.5.

Collision Detection ........................................................................................... 21

3.4.6.

Physics Simulation ........................................................................................... 21

3.5. Các mơ hình thiết kế thường được sử dụng để phát triển Game Engine
21
3.5.1.

Component-based Design (CBD) ............................................................... 21

3.5.2.

Entity-Component-System (ECS) .............................................................. 22

3.5.3.

So sáng CBD với ECS ........................................................................................ 22

3.6. Các Design Pattern phổ biến được dùng trong phát triển Game/Game
Engine ............................................................................................................................................ 23
3.6.1.


Observer Pattern............................................................................................... 23

3.6.2.

Singleton Pattern .............................................................................................. 23

3.6.3.

Dirty Flag Pattern ............................................................................................. 24

3.6.4.

Object Pool Pattern .......................................................................................... 24

3.6.5.

Type Object Pattern ......................................................................................... 24

3.6.6.

Component Pattern.......................................................................................... 25

3.7. Cách thức dạy mơn Lập trình game phổ biến tại các trường đại học tại
Việt Nam hiện nay..................................................................................................................... 25


3.8. Lý luận về tầm quan trọng và ưu điểm của việc phát triển Game Engine
26
3.8.1.


Tầm quan trọng của việc phát triển Game Engine ............................. 26

3.8.2.

Ưu điểm của việc phát triển Game Engine riêng ................................ 26

3.8.3.

Các lý do để phát triển một Game Engine riêng .................................. 27

3.9. Giả thiết.............................................................................................................................. 27
3.9.1.

Giả thiết về tính khả thi và hiệu quả của việc phát triển Game

Engine dựa trên kiến thức và kinh nghiệm có sẵn ................................................ 28
3.9.2.

Giả thiết về mức độ tiếp cận và sự dễ dùng của Game Engine đối

với người mới bắt đầu ....................................................................................................... 28
3.9.3.

Giả thiết về việc ứng dụng sản phẩm vào việc giảng dạy lập trình

game

28


Chương 4. PHƯƠNG PHÁP NGHIÊN CỨU......................................................................... 30
4.1. Phương pháp nghiên cứu .......................................................................................... 30
4.2. Ngôn ngữ lập trình và cơng nghệ sử dụng ......................................................... 30
4.2.1.

Ngơn ngữ lập trình: Java ................................................................................ 30

4.2.2.

Cơng nghệ/Thư viện sử dụng trong quá trình phát triển sản

phẩm

30

4.3. Kiến trúc sử dụng .......................................................................................................... 32
Chương 5. PHÂN TÍCH THIẾT KẾ HỆ THỐNG................................................................. 34
5.1. Sơ đồ và danh sách Use-case .................................................................................... 34
5.2. Đặc tả use-case ............................................................................................................... 35
5.2.1.

Use-case “Tạo Project” ................................................................................... 35

5.2.2.

Use-case “Mở Project” .................................................................................... 36


5.2.3.


Use-case “Tạo Game Object” ........................................................................ 37

5.2.4.

Use-case “Sửa Game Object” ........................................................................ 38

5.2.5.

Use-case “Xoá Game Object” ........................................................................ 39

5.2.6.

Use-case “Quản lý Animation” .................................................................... 39

5.2.7.

Use-case “Quản lý Prefab”............................................................................. 40

5.2.8.

Use-case “Quản lý Spritesheet” .................................................................. 41

5.2.9.

Use-case “Quản lý Resource” ....................................................................... 42

5.2.10.

Use-case “Tạo/Chỉnh sửa game” ................................................................ 43


5.2.11.

Use-case “Chạy game” ..................................................................................... 44

5.2.12.

Use-case “Dừng game”.................................................................................... 46

5.3. Sơ đồ Activity .................................................................................................................. 47
Chương 6. KẾT QUẢ, ĐÁNH GIÁ VÀ KẾT LUẬN ............................................................. 48
6.1. Danh sách tính năng của sản phẩm ....................................................................... 48
6.1.1.

Giao diện người dùng đồ họa ...................................................................... 48

6.1.2.

Quản lý Game Object ....................................................................................... 48

6.1.3.

Quản lý Component ......................................................................................... 49

6.1.4.

Vật lý, va chạm ................................................................................................... 50

6.1.5.

Animation ............................................................................................................. 54


6.1.6.

Quản lý project ................................................................................................... 55

6.1.7.

Quản lý tài nguyên ............................................................................................ 56

6.1.8.

Hỗ trợ âm thanh ................................................................................................ 56

6.1.9.

Kịch bản (Script) ............................................................................................... 56

6.1.10.

Prefab ..................................................................................................................... 56

6.1.11.

Spritesheet ........................................................................................................... 56


6.1.12.

Thiết kế thế giới game trên màn hình EditorScene ........................... 57


6.1.13.

Chạy thử game ngay trên màn hình GamePlayingScene ................. 58

6.2. Sơ lược giao diện Engine ........................................................................................... 59
6.3. Danh sách màn hình giao diện ................................................................................ 60
6.3.1.

Màn hình EditorScene .................................................................................... 61

6.3.2.

Màn hình GamePlayingScene ...................................................................... 62

6.3.3.

Màn hình SpritesheetWindow .................................................................... 63

6.3.4.

Màn hình AddSpritesheetWindow............................................................ 64

6.3.5.

Màn hình PrefabsWindow ............................................................................ 66

6.3.6.

Màn hình AssetsWindow............................................................................... 66


6.3.7.

Màn hình ConsoleWindow ........................................................................... 69

6.3.8.

Màn hình HierarchyWindow ....................................................................... 70

6.3.9.

Màn hình InspectorsWindow ...................................................................... 70

6.3.10.

Màn hình OpenProjectWindow .................................................................. 73

6.3.11.

Màn hình AddProjectWindow..................................................................... 75

6.3.12.

Màn hình FileDialog ......................................................................................... 75

6.4. Đánh giá hiệu suất và độ ổn định ........................................................................... 76
6.5. Ưu nhược điểm và đánh giá với các Engine khác ........................................... 77
6.5.1.

Ưu điểm................................................................................................................. 77


6.5.2.

Nhược điểm ......................................................................................................... 78

6.5.3.

Đánh giá so với các Engine khác ................................................................ 78

6.6. Kết luận .............................................................................................................................. 79
Chương 7. HƯỚNG PHÁT TRIỂN .......................................................................................... 80


DANH MỤC HÌNH
Hình 2.1 Logo Unity (Nguồn Unity) ..........................................................................9
Hình 2.2 Logo Unreal Engine (Nguồn Unreal Engine) ..............................................9
Hình 2.3 Logo Cry Engine (Nguồn CryEngine) .......................................................10
Hình 2.4 Logo Cocos Creator (Nguồn Wikipedia) ...................................................10
Hình 2.5 Logo Amazon Lumberyard (Nguồn Wikipedia) ........................................11
Hình 2.6 Logo Godot (Nguồn Wikipedia) ................................................................11
Hình 2.7 Logo GameMaker: Studio (Nguồn Wikipedia) .........................................12
Hình 5.1 Sơ đồ Use Case ..........................................................................................35
Hình 5.2 Sơ đồ Activity ............................................................................................47
Hình 6.1 Ví dụ Game Object.....................................................................................49
Hình 6.2 Ví dụ Component .......................................................................................50
Hình 6.3 Ví dụ RigidBody2D ...................................................................................51
Hình 6.4 Ví dụ Box2dCollider ..................................................................................52
Hình 6.5 Ví dụ CircleCollider ...................................................................................53
Hình 6.6 Ví dụ Raycast .............................................................................................53
Hình 6.7 Ví dụ Animation .........................................................................................54
Hình 6.8 Ví dụ Quản lý Project .................................................................................55

Hình 6.9 Ví dụ thế giới game trên màn hình EditorScene ........................................57
Hình 6.10 Chạy thử game trên màn hình GamePlayingScene ..................................58
Hình 6.11 Giao diện làm việc NiceEngine ...............................................................59
Hình 6.12 Màn hình EditorScene ..............................................................................62
Hình 6.13 Màn hình GamePlayingScene ..................................................................63
Hình 6.14 Màn hình SpriteSheetWindow .................................................................64
Hình 6.15 Màn hình AddSpriteSheetWindow ..........................................................65
Hình 6.16 Màn hình EditSpriteSheetWindow ..........................................................65
Hình 6.17 Màn hình PrefabsWindow .......................................................................66
Hình 6.18 Màn hình tuỳ chọn trong PrefabsWindow ...............................................66
Hình 6.19 Màn hình AssetsWindow .........................................................................68


Hình 6.20 Màn hình tuỳ chọn trong AssetsWindow .................................................69
Hình 6.21 Màn hình ConsoleWindow ......................................................................69
Hình 6.22 Màn hình HierarchyWindow ...................................................................70
Hình 6.23 Màn hình mơ tả InspectorsWindow .........................................................71
Hình 6.24 Màn hình Add Component trong InspectorWindow ...............................72
Hình 6.25 Màn hình mơ tả thơng tin Component trong InspectorWindow ..............73
Hình 6.26 Màn hình OpenProjectWindow ...............................................................74
Hình 6.27 Màn hình tuỳ chọn trong OpenProjectWindow .......................................74
Hình 6.28 Màn hình AddProjectWindow .................................................................75
Hình 6.29 Màn hình FileDialog ................................................................................76


DANH MỤC BẢNG
Bảng 2.1 Ưu nhược điểm của các Game Engine đã nghiên cứu...............................12
Bảng 5.1 Danh sách các use-case chính ....................................................................35
Bảng 5.2 Đặc tả use-case Tạo Project .......................................................................35
Bảng 5.3 Đặc tả use-case Mở Project .......................................................................36

Bảng 5.4 Đặc tả use-case Tạo Game Object .............................................................37
Bảng 5.5 Đặc tả use-case Sửa Game Object .............................................................38
Bảng 5.6 Đặc tả use-case Xoá Game Object ............................................................39
Bảng 5.7 Đặc tả use-case Quản lý Animation ..........................................................39
Bảng 5.8 Đặc tả use-case “Quản lý Prefab” ..............................................................40
Bảng 5.9 Đặc tả use-case Quản lý Spritesheet ..........................................................41
Bảng 5.10 Đặc tả use-case “Quản lý Resource” .......................................................42
Bảng 5.11 Đặc tả use-case “Tạo/Chỉnh sửa game”...................................................43
Bảng 5.12 Đặc tả use-case “Chạy game” ..................................................................44
Bảng 5.13 Đặc tả use-case “Dừng game” .................................................................46
Bảng 6.1 Danh sách màn hình giao diện ...................................................................60


DANH MỤC TỪ VIẾT TẮT
• CBD: Component-based Design
• ECS: Entity-Component-System
• GPU: Graphics Processing Unit
• RAM: Random Access Memory
• CPU: Central Processing Unit
• API: Application Programming Interface
• GUI: Graphical User Interface
• OpenGL: Open Graphics Library
• GLFW: Graphics Library Framework
• OpenAL:Open Audio Library


TĨM TẮT KHĨA LUẬN
Khóa luận này tập trung vào việc nghiên cứu và phát triển một 2D Game Engine đơn
giản và dễ sử dụng, nhằm đáp ứng nhu cầu của những người mới bắt đầu tiếp cận lĩnh
vực lập trình game. Sản phẩm được đặt tên là NiceEngine. Dự án được thực hiện bởi

em (Vũ Đức Trung) và bạn (Lương Mạnh Hùng) dưới sự hướng dẫn của Thạc sĩ Đinh
Nguyễn Anh Dũng, một người thầy có nhiều kinh nghiệm trong ngành phát triển
game.
Trong phần mở đầu, em đề cập đến lý do chọn đề tài và mục tiêu của dự án. Mục tiêu
chính là tạo ra một 2D Game Engine đơn giản dễ sử dụng với người mới bắt đầu tiếp
xúc với lập trình game, có thể đáp ứng việc phát triển các game 2D và có hiệu suất
ổn định, tiêu thụ ít tài nguyên máy tính. Đối tượng sử dụng dự án này là các bạn sinh
viên mới bắt đầu học lập trình game và đã có kiến thức về ngơn ngữ Java, đồng thời
cịn được ứng dụng trong việc giảng dạy lập trình game của các thầy cơ, giảng viên
đại học.
Trong chương Tổng quan, em trình bày về các Game Engine hiện có trên thị trường
và xem xét các tính năng và khuyết điểm của những Game Engine đã được nghiên
cứu.
Phần Cơ sở lý thuyết và phương pháp nghiên cứu trình bày cơ sở lý thuyết, lí luận,
giả thiết khoa học và phương pháp nghiên cứu đã được sử dụng trong khóa luận. Em
cũng mơ tả ngơn ngữ lập trình và cơng nghệ được sử dụng trong dự án, cùng với kiến
trúc tổng quan của sản phẩm.
Chương Kết quả trình bày các tính năng của sản phẩm, bao gồm tính năng dễ hiểu và
dễ sử dụng đối với người mới bắt đầu, hiệu suất ổn định, tiêu thụ ít tài nguyên máy
tính, giao diện đơn giản và dễ sử dụng. Em cũng trình bày về thử nghiệm thực tế của
hai game mẫu là Mario và Cờ vua, cùng đánh giá hiệu suất, độ ổn định và phân tích
thiết kế hệ thống.
Cuối cùng, trong phần Kết luận, em tổng kết kết quả đạt được từ dự án và đề xuất
hướng phát triển tiếp theo cho NiceEngine.

1


Chương 1. MỞ ĐẦU
1.1. Lý do chọn đề tài

Lý do chọn đề tài này xuất phát từ nhận thức về sự phát triển mạnh mẽ của ngành
công nghiệp game và sự quan tâm ngày càng tăng của đại chúng đối với lĩnh vực này.
Trong thời đại công nghệ số hiện nay, game khơng chỉ đơn thuần là một hình thức
giải trí, mà cịn trở thành một phương tiện truyền tải thông điệp, tạo ra trải nghiệm
tương tác đa dạng và mang lại lợi ích trong việc giáo dục, phát triển kỹ năng và thúc
đẩy sự sáng tạo.
Tuy nhiên, tại Việt Nam, tỷ lệ sinh viên đi theo ngành phát triển game vẫn khá thấp
trong số các ngành lập trình khác. Có nhiều ngun nhân dẫn đến tình trạng này.
Trước hết, cái nhìn vẫn cịn thiếu thiện cảm về ngành game tại Việt Nam. Đồng thời,
độ phức tạp và khó hiểu của quá trình phát triển game so với các loại hình khác trong
cùng nhóm ngành cũng là một ngun nhân đáng kể.
Ngoài ra, cộng đồng phát triển game tại Việt Nam còn chưa đủ lớn và phát triển, thiếu
sự hỗ trợ và giao lưu giữa các nhà phát triển. Một yếu tố quan trọng khác là sự khó
tiếp cận vào các công cụ và Game Engine phục vụ cho phát triển game hiện tại trên
thị trường. Mặc dù có nhiều tính năng tốt, nhưng những cơng cụ này địi hỏi tài
ngun máy tính cao, gây khó khăn cho người mới bắt đầu và sinh viên khi tiếp cận
và sử dụng.
Thực tế, ngay trong trường đại học Công nghệ thông tin - ĐHQG TPHCM, môn
"Nhập môn phát triển Game" đã trở thành một cơn ác mộng đối với các sinh viên,
đặc biệt là các anh chị khóa 2018 trở về trước, khi mơn học này vẫn cịn là một mơn
bắt buộc.
1.2. Mục tiêu của dự án
Từ những lý do trên, chúng em quyết định phát triển một 2D Game Engine mà đơn
giản, dễ sử dụng đối với những sinh viên mới bắt đầu tiếp xúc với ngành lập trình

2


game, giao diện thân thiện, ngoài ra cũng cần đáp ứng những yêu cầu về hiệu suất ổn
định và ngốn ít tài nguyên máy tính.

1.3. Đối tượng hướng đến
Đối tượng sử dụng dự án này là các thầy/cô giảng dạy lập trình game, có thể giúp cho
các bạn sinh viên dễ dàng hình dung về quá trình lập trình ra một game như thế nào.
Ngồi ra, dự án cịn hướng tới các bạn sinh viên có niềm đam mê, yêu thích, đang bắt
đầu tìm hiểu về ngành lập trình game và đã có nền tảng về ngơn ngữ lập trình Java.
Và cuối cùng, dự án cũng hướng tới những người muốn tiếp xúc và phát triển game
2D đơn giản khi mà kiến thức, kinh nghiệm chưa có nhiều hoặc tài nguyên máy tính
hạn chế.
1.4. Phạm vi nghiên cứu
Phạm vi nghiên cứu của dự án tập trung vào việc phát triển một 2D Game Engine đơn
giản và dễ sử dụng, đáp ứng nhu cầu của đối tượng mục tiêu. Cụ thể, phạm vi nghiên
cứu bao gồm:
1. Xây dựng 2D Game Engine: Đề tài tập trung vào việc xây dựng một 2D Game
Engine mới. Công cụ này sẽ cho phép người dùng tạo ra các trò chơi 2D đơn
giản bằng cách sử dụng các tính năng và cơng cụ được cung cấp. Phạm vi
nghiên cứu bao gồm thiết kế kiến trúc của Game Engine, xây dựng các thành
phần cốt lõi như quản lý đối tượng, xử lý va chạm, điều khiển hình ảnh và
âm thanh.
2. Hỗ trợ ngơn ngữ lập trình Java: 2D Game Engine được phát triển sẽ hỗ trợ
ngôn ngữ lập trình Java. Người dùng có thể sử dụng ngơn ngữ này để lập
trình và điều khiển các thành phần trong trị chơi.
3. Tối ưu hóa hiệu suất và tiêu thụ tài nguyên: Một trong những mục tiêu quan
trọng của dự án là tối ưu hóa hiệu suất và tiêu thụ tài nguyên của 2D Game
Engine. Công cụ sẽ được thiết kế để hoạt động một cách ổn định và hiệu quả

3


trên các máy tính có cấu hình thấp, giúp người dùng với tài nguyên hạn chế
vẫn có thể trải nghiệm và phát triển trò chơi một cách mượt mà.

4. Tài liệu hướng dẫn và ví dụ: Phạm vi nghiên cứu cũng bao gồm việc tạo ra
tài liệu hướng dẫn và ví dụ cho 2D Game Engine. Tài liệu này sẽ giúp người
dùng hiểu rõ cách sử dụng công cụ, các tính năng và cú pháp lập trình, cũng
như cung cấp các ví dụ và dự án mẫu để họ có thể tham khảo và tạo ra các
trò chơi của riêng mình.
Phạm vi nghiên cứu được giới hạn trong việc xây dựng 2D Game Engine và các chức
năng cơ bản liên quan. Các khía cạnh phát triển game phức tạp hơn như kỹ thuật 3D,
trí tuệ nhân tạo, mạng lưới và đa người chơi sẽ không được điều tra sâu trong đề tài
này.
Thông qua phạm vi nghiên cứu này, dự án nhằm cung cấp một cơng cụ hữu ích và dễ
sử dụng cho đối tượng mục tiêu, giúp họ tiếp cận và phát triển các trị chơi 2D đơn
giản trong mơi trường Java một cách thuận tiện và hiệu quả.

4


Chương 2. TỔNG QUAN
2.1. Giới thiệu sơ lược về Game Engine
Game Engine là một phần mềm đặc biệt được sử dụng để xây dựng và thiết kế trò
chơi điện tử. Nó cung cấp cho các nhà phát triển game những cơng cụ và ngun liệu
cần thiết để tạo ra trị chơ. Game Engine giúp đơn giản hóa q trình phát triển game
bằng cách cung cấp một nền tảng và các tính năng đã được xây dựng sẵn, từ đó giảm
thiểu việc viết mã lặp đi lặp lại và tăng tốc độ phát triển.
Lợi ích của việc sử dụng Game Engine bao gồm:
• Tạo ra game mà hạn chế hoặc khơng cần sử dụng lập trình: Game Engine
cung cấp các cơng cụ và giao diện đồ họa trực quan, cho phép các nhà phát
triển game thiết kế và tạo ra trò chơi mà khơng cần có kiến thức lập trình
sâu. Điều này mở ra cơ hội cho nhiều người có đam mê trị chơi nhưng
khơng có kỹ năng lập trình để thực hiện ý tưởng của mình.
• Tiết kiệm thời gian, công sức và tiền bạc: Game Engine giúp giảm thiểu

thời gian và công sức cần thiết để xây dựng một trị chơi từ đầu. Các tính
năng và cơng cụ sẵn có trong Game Engine giúp tăng tốc độ phát triển và
giảm thiểu việc phải viết lại mã nguồn từ đầu. Điều này giúp giảm chi phí
phát triển và tạo điều kiện thuận lợi hơn cho việc phát triển trị chơi.
• Đồ họa chân thực: Game Engine cung cấp các công cụ và khả năng xử lý
đồ họa mạnh mẽ, cho phép tạo ra các hiệu ứng hình ảnh chân thực, đẹp mắt
và sống động trong trò chơi. Điều này giúp nâng cao trải nghiệm của người
chơi và tạo ra sự hấp dẫn đối với trị chơi.
• Hỗ trợ đa nền tảng: Một lợi ích quan trọng của Game Engine là khả năng
phát triển trò chơi cho nhiều nền tảng khác nhau. Game Engine cho phép
viết mã một lần và triển khai trò chơi trên các nền tảng khác nhau như PC,
điện thoại di động, máy tính bảng, console và nhiều hơn nữa. Điều này giúp
tiết kiệm thời gian và công sức cho việc phát triển đa nền tảng và mở rộng
tầm với của trò chơi.

5


Với những lợi ích trên, Game Engine đã trở thành một công cụ quan trọng trong
ngành công nghiệp game, giúp các nhà phát triển tạo ra những trò chơi độc đáo và
hấp dẫn.
2.2. Các thành phần có trong một Game Engine
Một Game Engine bao gồm các thành phần quan trọng để hỗ trợ q trình phát triển
trị chơi. Các thành phần này là những yếu tố cốt lõi của một Game Engine và cung
cấp các tính năng và cơng cụ cần thiết cho việc xây dựng và thiết kế trò chơi.
Dưới đây là một số thành phần chính trong một Game Engine:
• Đồ họa và động học (Graphics and Animation): Đây là thành phần quan trọng
trong Game Engine, bao gồm công nghệ đồ họa để hiển thị đồ họa, cảnh quan
và hiệu ứng trong trị chơi. Nó cung cấp các cơng cụ và khả năng để tạo ra các
hình ảnh chân thực, các hiệu ứng đặc biệt và các hoạt cảnh động.

• Vật lý (Physics): Thành phần vật lý trong Game Engine giúp mô phỏng và xử
lý các luật vật lý trong trị chơi. Nó bao gồm tính tốn va chạm, trọng lực, độ
ma sát và các hiệu ứng vật lý khác. Thành phần này giúp tạo ra các phản ứng
và tương tác vật lý chân thực giữa các đối tượng trong trị chơi.
• Âm thanh (Audio): Thành phần âm thanh trong Game Engine cung cấp khả
năng phát âm thanh, nhạc nền và hiệu ứng âm thanh trong trò chơi. Nó cho
phép chơi các tệp âm thanh, kiểm sốt âm lượng và tạo ra các hiệu ứng âm
thanh đặc biệt để tăng trải nghiệm của người chơi.
• Điều khiển (Input): Thành phần điều khiển trong Game Engine quản lý việc
nhận và xử lý các tương tác từ người chơi. Nó cho phép điều khiển bàn phím,
chuột, bộ điều khiển gamepad và các thiết bị đầu vào khác. Thành phần này
giúp trò chơi phản hồi và phản ứng đúng với hành động của người chơi.
• Quản lý tài nguyên (Resource Management): Thành phần quản lý tài nguyên
trong Game Engine giúp tải và quản lý các tài nguyên như hình ảnh, âm thanh,
mơ hình 3D, v.v. Nó đảm bảo rằng các tài nguyên được tải và sử dụng một
cách hiệu quả trong trò chơi.

6


• Kịch bản và logic (Scripting and Logic): Thành phần này cho phép viết mã và
xử lý các quy tắc và logic trong trị chơi. Nó cung cấp một ngơn ngữ kịch bản
để tạo ra các sự kiện, hành vi và quy tắc chơi game. Thành phần này giúp điều
chỉnh và kiểm sốt luồng trị chơi.
• Mạng (Networking): Thành phần mạng trong Game Engine cho phép kết nối
và giao tiếp giữa các người chơi trong trò chơi đa người chơi. Nó hỗ trợ việc
gửi và nhận dữ liệu qua mạng để đồng bộ hóa trạng thái và tương tác giữa các
người chơi.

2.3. Lợi ích của việc sử dụng Game Engine trong giảng dạy lập trình game

Lập trình game là một mơn học rất phức tạp và khó khăn khi mới bắt đầu tiếp xúc.
Việc sử dụng Game Engine trong giảng dạy lập trình game giúp mang lại nhiều lợi
ích quan trọng cho việc học tập và phát triển game:
1. Dễ tiếp cận và bắt đầu: Game Engine cung cấp một giao diện trực quan và
dễ sử dụng, giúp người học mới bắt đầu có thể nhanh chóng làm quen và bắt
tay vào việc tạo game mà không cần đầu tư quá nhiều thời gian vào việc học
cú pháp phức tạp.
2. Hiệu quả trong việc học và giảng dạy lập trình: Game Engine giúp học sinh
và sinh viên tập trung vào việc học lập trình chun sâu và xây dựng trị chơi,
chứ khơng phải lo lắng về các khía cạnh kỹ thuật phức tạp như việc tạo cửa sổ
đồ họa hay quản lý đối tượng. Đồng thời cũng giúp giảng viên có được giao
diện trực quan, khiến việc giảng dạy và thuyết trình kiến thức trở nên dễ dàng
hơn.
3. Tập trung vào sáng tạo: Sử dụng Game Engine giúp người học tập trung vào
việc sáng tạo, thử nghiệm ý tưởng và tạo ra các trị chơi mới một cách nhanh
chóng. Điều này khuyến khích tinh thần sáng tạo và động lực trong quá trình
học tập.

7


4. Thúc đẩy học hỏi, hợp tác: Game Engine đa số hỗ trợ việc làm nhóm và chia
sẻ dự án, cho phép học sinh và sinh viên làm việc cùng nhau để xây dựng các
trò chơi phức tạp hơn. Điều này khuyến khích học hỏi, hợp tác và trao đổi kiến
thức giữa các thành viên trong nhóm.
5. Ngơn ngữ đa dạng: Game Engine cho phép tích hợp nhiều ngơn ngữ lập trình
và hỗ trợ nhiều nền tảng, giúp giảng viên có thể giảng dạy một cách linh hoạt
và đáp ứng nhu cầu của từng học sinh.
6. Tối ưu hóa hiệu suất: Game Engine thường được tối ưu hóa hiệu suất, giúp
việc trải nghiệm chơi game mượt mà và ổn định.

7. Phát triển kỹ năng chuyên môn: Sử dụng Game Engine giúp học sinh và
sinh viên phát triển các kỹ năng chun mơn liên quan đến lập trình game, như
xử lý đồ họa, kiểm soát vật lý, quản lý tài nguyên và tạo trải nghiệm người
chơi đa dạng.
8. Áp dụng kiến thức thực tế: Game Engine giúp kết nối kiến thức lý thuyết với
thực tiễn thông qua việc xây dựng các trò chơi thực tế. Điều này giúp học sinh
và sinh viên hiểu rõ hơn về cách áp dụng kiến thức lập trình vào việc tạo ra
các sản phẩm thực tế.
Tóm lại, việc sử dụng Game Engine trong giảng dạy lập trình game khơng chỉ giúp
đơn giản hóa q trình học tập mà còn thúc đẩy sự sáng tạo và phát triển kỹ năng
chuyên môn cho học sinh và sinh viên.
2.4. Tổng quan về các Game Engine hiện có trên thị trường
Hiện nay, có rất nhiều Game Engine được phát triển và sử dụng trên thị trường. Dưới
đây là một số Game Engine nổi bật:
Unity

8


Hình 2.1 Logo Unity (Nguồn Unity)

Unity là một trong những Game Engine phổ biến nhất trên toàn thế giới, được phát
triển bởi cơng ty Unity Technologies, một cơng ty trị chơi điện tử có trụ sở tại Mỹ.
Nó cho phép các nhà phát triển tạo ra các trò chơi 3D và 2D một cách thuận tiện.
Unity cũng hỗ trợ phát triển trò chơi VR (Virtual Reality) và AR (Augmented
Reality). Với cộng đồng lớn và Assets Store (cửa hàng tài nguyên) riêng, Unity cịn
cung cấp các gói tài ngun miễn phí và trả phí để giúp các nhà phát triển nhanh
chóng triển khai trò chơi. Một số trò chơi nổi tiếng được phát triển bởi Unity:
Assassin’s Creed Identity, Temple Run, Rise of Kingdoms và nhiều trị chơi khác.
Unreal Engine


Hình 2.2 Logo Unreal Engine (Nguồn Unreal Engine)

Unreal Engine cũng là một Game Engine phổ biến được phát triển bởi Epic Games.
Nó là một trong những nền tảng phát triển trò chơi đa nền tảng và hỗ trợ đa dạng hệ
điều hành như MacOS, Windows, Linux, iOS,Android, StreamOs, Nintendo Switch,
PlayStation, Xbox One. Unreal Engine có thị trường riêng của mình (Marketplace),
nơi người dùng có thể mua và bán các gói tài nguyên, hỗ trợ cho việc phát triển trò

9


chơi. Một số trò chơi nổi tiếng được tạo ra bởi Unreal Engine: Fortnite, Batman
Arkham City và nhiều trò chơi khác.
CryEngine

Hình 2.3 Logo Cry Engine (Nguồn CryEngine)

CryEngine là một Game Engine được phát triển bởi Crytek. Đây là một Sandbox
(trình chỉnh sửa) đầy đủ tính năng dùng để phát triển trị chơi cho hầu hết các nền
tảng chính bao gồm PC, Xbox và PlayStation. CryEngine cung cấp các công cụ mạnh
mẽ cho việc phát triển trò chơi với đồ họa ấn tượng. Một số trò chơi nổi tiếng được
phát triển bởi CryEngine có thể kể đến như: Last Kingdom, War of Rights và nhiều
trị chơi khác.
Cocos Creator

Hình 2.4 Logo Cocos Creator (Nguồn Wikipedia)

Cocos Creator là một Game Engine tập trung vào việc tạo trị chơi và được phát triển
bởi cơng ty Xiamen. Nó hỗ trợ người dùng phát triển trị chơi đa nền tảng trên web,

iOS, Android, Windows và Mac, bao gồm cả trò chơi dạng 2D và 3D. Một số trò chơi
nổi tiếng được phát triển bởi Cocos Creator: Ark of Conquest, Magic Rush, Idle
Heroes và nhiều trò chơi khác.
Amazon Lumberyard

10


Hình 2.5 Logo Amazon Lumberyard (Nguồn Wikipedia)

Amazon Lumberyard là một Game Engine được phát triển bởi Amazon và được sử
dụng để phát triển trị chơi dạng 3D và VR. Nó hỗ trợ chế độ VR preview mode (Xem
trước dạng VR), visual script (kịch bản trực quan)và tích hợp tính năng Twitch của
Adobe Photoshop. Amazon Lumberyard hỗ trợ người dùng phát triển trò chơi trực
tuyến đa người chơi (multiplayer) một cách dễ dàng. Nó sử dụng ngơn ngữ để viết
kịch bản (script) là C++. Một số trò chơi nổi tiếng được phát triển bởi Amazon
Lumberyard: Star Citizen, New World và nhiều trị chơi khác.
Godot

Hình 2.6 Logo Godot (Nguồn Wikipedia)

Godot là một Game Engine mã nguồn mở miễn phí được phát triển thông qua giấy
phép MIT (là một loại giấy phép sử dụng cho các phần mềm mã nguồn mở được phát
triển dựa trên một loại giấy phép có nguồn gốc tại Viện Cơng nghệ Massachusetts).
Nó chạy trên các nền tảng Windows, Linux và Mac. Godot hỗ trợ phát triển trò chơi
dạng 2D và 3D, và có trình chỉnh sửa hình ảnh và hệ thống hoạt ảnh (Animation) để

11



×