1. Trang chủ
  2. » Cao đẳng - Đại học

Xây dựng game đua xe online ứng dụng machine learning

75 16 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 3,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bắt nguồn từ năm 1973 với game Space Race, trải qua gần 4 thập kỷ, dòng game này vẫn giữ được sức hút với người chơi với nhiều tựa game mới thuộc thể loại này như Asphalt, Mario Kart, Ne

Trang 1

ĐẠ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

⦁

BÙI ĐĂNG HUY

KHOÁ LUẬN TỐT NGHIỆP

XÂY DỰNG GAME ĐUA XE ONLINE ỨNG DỤNG MACHINE LEARNING (DEVELOPING AN ONLINE RACING GAME IMPLEMENTING

MACHINE LEARNING)

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

TP HỒ CHÍ MINH, 2021

Trang 2

ĐẠ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

BÙI ĐĂNG HUY - 17520563

KHOÁ LUẬN TỐT NGHIỆP

XÂY DỰNG GAME ĐUA XE ONLINE ỨNG DỤNG MACHINE LEARNING (DEVELOPING AN ONLINE RACING GAME IMPLEMENTING

MACHINE LEARNING)

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

GIẢNG VIÊN HƯỚNG DẪN

TS Nguyễn Trịnh Đông ThS Đinh Nguyễn Anh Dũng

TP HỒ CHÍ MINH, 2021

Trang 3

THÔNG TIN HỘI ĐỒNG CHẤM KHOÁ LUẬN TỐT NGHIỆP

Hội đồng chấm khoá 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 – Uỷ viên

4 – Uỷ viên

Trang 4

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

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

TP HCM, ngày… tháng… năm……

NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP

(CỦA CÁN BỘ HƯỚNG DẪN/PHẢN BIỆN) Tên khóa luận:

ỨNG DỤNG MACHINE LEARNING TRONG VIỆC HUẤN LUYỆN AI CHO GAME ĐUA XE

Bùi Đăng Huy 17520563 TS Nguyễn Trịnh Đông

ThS Đinh Nguyễn Anh Dũng

Đánh giá Khóa luận

1 Về cuốn báo cáo:

Số trang XX Số chương XX

Số bảng số liệu XX Số hình vẽ XX

Số tài liệu tham khảo XX _ Sản phẩm X

Một số nhận xét về hình thức cuốn báo cáo:

2 Về nội dung nghiên cứu:

Trang 5

3 Về chương trình ứng dụng:

4 Về thái độ làm việc của sinh viên:

Đánh giá chung: Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư/ cử nhân,

xếp loại Giỏi/ Khá/ Trung bình

Điểm từng sinh viên:

Bùi Đăng Huy: ……… /10

Người nhận xét

(Ký tên và ghi rõ họ tên)

Trang 6

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

TRƯỜNG ĐẠI HỌC

CÔNG NGHỆ THÔNG TIN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc Lập - Tự Do - Hạnh Phúc

ĐỀ CƯƠNG CHI TIẾT

TÊN ĐỀ TÀI: XÂY DỰNG GAME ĐUA XE ONLINE ỨNG DỤNG MACHINE

LEARNING (Developing an Online Racing Game Implementing Machine Learning)

Cán bộ hướng dẫn: TS Nguyễn Trịnh Đông, ThS Đinh Nguyễn Anh Dũng

Thời gian thực hiện: Từ ngày 30/08/2021 đến ngày 16/01/2022

Sinh viên thực hiện: Bùi Đăng Huy - 17520563

Nội dung đề tài:

1 Lí do chọn đề tài

Cùng với sự phát triển của xã hội, nhu cầu giải trí của con người cũng ngày càng tăng

Mỗi người tìm đến một hay nhiều hình thức khác nhau để giải trí Một số người tìm đến

nghệ thuật, một số khác tìm niềm vui trong việc sáng tạo, một số khác lại đam mê học

hỏi một kỹ năng nào đó, và một số tìm đến sự thách thức

Có nhiều lí do khiến con người đưa bản thân vào những tình thế đòi hỏi những kỹ năng

của họ bị thử thách Nghiên cứu cho thấy rằng một số người cần nhiều hơn liều lượng

bình thường của sự phấn khích trong cuộc sống, và việc thử thách bản thân làm thỏa mãn

cơn khát của họ Khi vượt qua một thử thách nhất định, não bộ sản xuất ra dopamine,

một chất kích thích tạo cảm giác hưng phấn và dễ chịu khi con người đạt được một mục

tiêu lớn Vì lẽ đó, con người thường tìm đến game như một công cụ để thoả mãn thú vui

được thử thách bản thân trong một môi trường thú vị và an toàn

Trang 7

Từ lâu, dòng game đua xe (racing games) đã là một trong những dòng game được phần lớn những người chơi game yêu thích Chúng được phân loại dọc theo một phổ giữa dòng game mô phỏng và các trò chơi đua xe kiểu arcade đơn giản hóa Trò chơi đua xe go-kart nổi lên vào những năm 1990 như một thể loại phụ phổ biến của sau này Trò chơi đua xe cũng có thể thuộc danh mục trò chơi thể thao Bắt nguồn từ năm 1973 với game Space Race, trải qua gần 4 thập kỷ, dòng game này vẫn giữ được sức hút với người chơi với nhiều tựa game mới thuộc thể loại này như Asphalt, Mario Kart, Need For Speed, v.v… Mặc dù hầu hết những tựa game trên đã có chế độ chơi online để người chơi có thể

so tài với những người chơi khác, một bộ phận người chơi vẫn trung thành với chế độ chơi với máy bởi sự tiện lợi, không phụ thuộc vào kết nối mạng cũng như độ khó mà những “người chơi ảo” chế độ chơi này có thể mang lại

Đứng trên góc nhìn một người thiết kế game hứng thú với thể loại game lâu đời này, ta không khỏi đặt ra câu hỏi: Làm thế nào để tạo ra một game đua xe hấp dẫn? Những yếu

tố nào có thể tạo nên sự đột phá cho dòng game vốn đã rất than thuộc với người chơi này?

Trang 8

- Python TensorFlow

4 Đối tượng

- Những người chơi game nói chung và những người chơi game đua xe nói riêng

- Cơ chế của những game đua xe đi trước cùng AI kèm theo

5 Phương pháp thực hiện

- Xây dựng game đua xe trên nền tảng Unity3D

- Dựa vào thư viện ML Agents của Unity để tiến hành huấn luyện cho AI

- Nghiên cứu thư viện TensorFlow của Python để tìm cách cải thiện thư viện MLAgents đã có sẵn

- Ừng dụng thư viện MLAPI và xây dựng game server cho game

6 Kết quả mong đợi

Kết quả mong đợi của đề tài khóa luận là một sản phẩm game đua xe go-kart online áp dụng thành công AI được huấn luyện bằng phương pháp Machine Learning chạy trên nền tảng Windows và WebGL Game được phát hành trên website Itch.io

Kế hoạch thực hiện:

Giai đoạn 1: Phân tích và

nghiên cứu

30/08/2021 – 01/09/2021 Thu thập thông tin, nghiên

cứu cơ chế của những gane hiện có

02/09/2021 – 06/09/2021 Nghiên cứu thư viện

MLAgents và thự viện mã nguồn mở Mirror

07/09/2021 – 10/09/2021 Nghiên cứu hướng phát

triển AI trong game

Trang 9

Giai đoạn 2: Xây dựng

game

11/09/2021 – 15/09/2021 Xây dựng cơ chế điều

khiển xe (tăng tốc, phanh, quẹo, drift)

16/09/2021 – 26/09/2021 Xây dựng đường đua,

tương tác trong game (vật

18/10/2021 – 31/10/2021 Xây dựng các chế độ chơi

(regular mode, time-attack)

Giai đoạn 3: Phát triển AI 01/11/2021 – 07/11/2021 Xây dựng thuật toán Học

Tăng cường (Reinforment Learning)

Trang 10

08/11/2021 – 31/11/2021 Tiến hành huấn luyện AI

trên các màn chơi với 3 mức độ: Dễ - Vừa - Khó

Giai đoạn 4: Phát triển hệ

thống online game server

01/12/2021 – 14/12/2021 Chức năng tạo phòng &

tham gia phòng chơi

14/12/2021 – 21/12/2021 Xử lí đầu vào in-game trên

03/01/2022 – 09/01/2022 Cho nhóm đối tượng

nghiên cứu kiểm thử, thu thập ý kiến

10/01/2022 – 16/01/2022 Đưa ra chỉnh sửa (nếu có)

Xác nhận của CBHD

(Ký tên và ghi rõ họ tên)

TP HCM, ngày 18 tháng 03 năm 2021

Sinh viên

(Ký tên và ghi rõ họ tên)

Bùi Đăng Huy

Trang 11

LỜI CẢM ƠN

Để khoá luận này được hoàn thành một cách tốt đẹp, tôi đã nhận được nhiều sự giúp

đỡ, đóng góp ý kiến của thầy cô và bạn bè

Tôi xin chân thành cảm ơn thầy Nguyễn Trịnh Đông và thầy Đinh Nguyễn Anh Dũng,

giảng viên khoa Công nghệ Phần mềm – Trường ĐH Công nghệ Thông tin – ĐH Quốc

Gia TP.HCM đã trực tiếp hướng dẫn, chỉ bảo trong quá trình nghiên cứu khoá luận

Tôi cũng xin cảm ơn các thầy cô giảng viên Trường ĐH Công nghệ Thông tin – ĐH

Quốc Gia TP.HCM nói chung và các thầy cô trong khoa Công nghệ Phần mềm nói

riêng đã truyền đạt cho tôi những kinh nghiệm và kiến thức quý báu, từ đại cương đến

chuyên ngành, để tôi có được cơ sở lý thuyết vững chắc cùng kỹ năng nghề nghiệp

thực tế

Cuối cùng, xin cảm ơn những người bạn của tôi: Vinh, Trung là Linh Mọi người đã hỗ

trợ rất nhiều về tinh thần cũng như đóng góp những ý kiến để khoá luận này được hoàn

thành một cách trọn vẹn nhất

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

Sinh viên thực hiện

Bùi Đăng Huy

Trang 12

MỤC LỤC

TÓM TẮT KHOÁ LUẬN 1

MỞ ĐẦU 2

Lí do chọn đề tài 2

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

Nội dung thực hiện 3

Phạm vi đề tài 4

Phạm vi công nghệ 4

Phạm vi thời gian 4

Bố cục báo cáo 4

CHƯƠNG 1: 5

1.1 Một số ví dụ kinh điển về AI trong game đua xe 5

1.2 Demo Kart Microgame của Unity 8

1.3 Đánh giá 8

1.3.1 Các thuật toán AI cho game đua xe 8

1.3.2 Demo Karting Microgame 9

1.4 Đặt vấn đề 9

CHƯƠNG 2: 11

2.1 Cơ sở lý thuyết thiết kế game 11

2.1.1 Vật lý game 11

2.1.2 Thiết kế & Cân bằng game 14

2.2 Reinforcement Learning và thư viện ML-Agents 16

Trang 13

2.2.1 Reinforcement Learning là gì? 16

2.2.2 Thư viện ML-Agents của Unity 17

2.2.3 Proximal Policy Optimization (PPO) sử dụng Clipped Surrogate Objective 21

CHƯƠNG 3: 23

3.1 Triển khai hệ thống 23

3.1.1 Cài đặt Unity 23

3.1.2 Cài đặt môi trường ảo Python 26

3.1.3 Các thư viện Unity có liên quan 29

3.2 Xây dựng môi trường huấn luyện AI 31

3.2.1 Ý tưởng 31

3.2.2 Xây dựng đường đua & hệ thống checkpoint 37

3.2.3 Thiết lập huấn luyện AI 40

3.3 Xây dựng đồ hoạ game 41

3.4 Xây dựng game UI 43

3.4.1 Màn hình nhập cảnh 43

3.4.2 Màn hình chọn xe 44

3.4.3 Màn hình HUD 44

3.4.4 Màn hình kết thúc game 45

CHƯƠNG 4: 47

4.1 Thực nghiệm 47

Đánh giá kết quả thực nghiệm 51

Trang 14

4.2.1 Ưu điểm 51

4.2.2 Nhược điểm 51

4.2.3 Hướng khắc phục 52

CHƯƠNG 5: 53

5.1 Kết luận 53

5.2 Hướng phát triển 53

TÀI LIỆU THAM KHẢO 55

Trang 15

DANH MỤC HÌNH VẼ

Hình 1.1 Game Pole Position (1982) 6

Hình 1.2 Lưu đồ thuật toán xác định vận tốc AI trong Mario Kart: Double Dash!! – Nguồn: [6] 7

Hình 1.3 Giao diện game của Demo Karting Microgame – Nguồn: Unity 8

Hình 2.1 Hai chiếc xe đua thể thao đang thực hiện drift 13

Hình 2.2.Các loại xe khác nhau trong game – Nguồn: Asphalt 9 15

Hình 2.3 Sơ đồ hoạt động của Reinforcement Learning – Nguồn: [12] 17

Hình 2.4 Môi trường huấn luyện AI chơi bóng đá bằng thư viện ML-Agents – Nguồn: [18] 18

Hình 2.5 Biểu đồ quan hệ giữa các thành phần trong ML-Agents 20

Hình 2 6 Sờ đồ tóm tắt thuật toán PPO sử dụng Clipped Surrogate Objective 21

Hình 3.1 Giao diện website store.unity.com 23

Hình 3.2 Giao diện tải Unity Hub 24

Hình 3.3 Giao diện của Unity Hub 25

Hình 3.4 Giao diện tạo project trong Unity Hub 25

Hình 3.5 Giao diện Unity Editor 26

Hình 3.6 Giao diện website tải Python 27

Hình 3.7 Giao diện Command Prompt khi kích hạot môi trường ảo thành công 28

Hình 3.8 Danh sách thư viện cần có trong môi trưởng ảo 29

Hình 3.9 Cửa sổ Package Manager 30

Hình 3.10 Một số thư viện bên thứ 3 trong My Assets 31

Hình 3.11 Các sensor của Agent 32

Hình 3.12 Component KartAgent 33

Hình 3.13 Component Behaviour Parameters 36

Hình 3.14 Giao diện của EasyRoads3D trên Unity Editor 38

Trang 16

Hình 3.16 Hệ thống checkpoint và tường chắn 39

Hình 3.17 Vật phẩm tăng tốc và giảm tốc trên đường đua 40

Hình 3.18 Giao diện TensorBoard 41

Hình 3.19 6 loại xe trong đề tài, theo thứ tự từ trái sang phải: Bubblegum, Carbon, Clou, Red, Sunshine, Violet 42

Hình 3.20 Gói asset Skybox Series – Nguồn: Unity Asset Store [21] 42

Hình 3.21 Gói asset Sand Materials – Nguồn: Unity Asset Store [22] 43

Hình 3.22 Màn hình nhập cảnh 43

Hình 3.23 Màn hình chọn xe chế độ Versus 44

Hình 3.24 Màn hình chính của game 45

Hình 3.25 Màn hình kết thúc game 46

Hình 3.26 Bảng xếp hạng 46

Hình 4.1 Biểu đồ thay đổi phần thưởng tích lũy ở mỗi episode của AI theo thời gian huấn luyện 48

Hình 4.2 Biểu đồ thay đổi độ dài của episode của AI theo thời gian huấn luyện 48

Trang 17

DANH MỤCH BẢNG

Bảng 3.1 Các thông số của Kart Agent 35

Bảng 3.2 Các thông số của Behaviour Parameters 37

Bảng 4.1 Kết quả thực nghiệm ở đường đua Cross 49

Bảng 4.2 Kết quả thực nghiệm ở đường đua Rock 50

Bảng 4.3 Bảng so sánh kết quả giữa người chơi và các AI mức độ Khó 51

Trang 18

5 PPO Proximal Policy Optimization

6 SAC Soft Actor Critic

Trang 19

TÓM TẮT KHOÁ LUẬN

Dòng game đua xe là một dòng game có lịch sử phát triển lâu đời Trải qua nhiều thế

kỷ phát triển, dòng game này vẫn thu hút một lượng người chơi trung thành Thế nhưng, có một câu hỏi được đặt ra mà có lẽ cả những người trong ngành công nghiệp triệu đô ngày cũng chưa biết đáp án chính xác: “làm thế nào để tạo ra một AI cho game đua xe tốt?” Bị hấp dẫn bởi câu hỏi này, cùng với sự tò mò về máy học và sự phát triển của các thuật toán máy học, tôi đã chọn đề tài “XÂY DỰNG GAME ĐUA XE ONLINE ỨNG DỤNG MACHINE LEARNING” làm đề tài khoá luận Trải qua quá trình nghiên cứu cơ sở lý thuyết, đánh giá một số sản phẩm đã có trước đây, tôi đã tiến hành thực hiện khoá luận này nhằm giải đáp thắc mắc của bản thân cũng như trau dồi kiến thức Để thực hiện khóa luận, tôi đã thực hiện xây dựng một game đua xe cơ bản trên Unity và tiến hành xây dựng mô hình Reinforcement Learning áp dụng PPO để huấn luyện AI và thu thập dữ liệu huấn luyện AI từ Tensorflow Kết thúc khoá luận, tôi

đã thu được các kết quả sau:

− Học được kiến thức cơ bản về Machine Learning và Reinforcement Learning

− Học được kiến thức vế lập trình và thiết kế game, đặc biệt là lập trình và thiết kế trong game đua xe

− Xây dựng thành công mô hình huấn luyện AI cho game đua xe với 6 biến thể xe đua khác nhau, cùng với đó là số liệu về quá trình huấn luyện AI

− Xây dựng demo game ứng dụng AI đã được huấn luyện

Sau đây là chi tiết của báo cáo toàn văn khoá luận

Trang 20

Có nhiều lí do khiến con người đưa bản thân vào những tình thế đòi hỏi những kỹ năng của họ bị thử thách Nghiên cứu cho thấy rằng một số người cần nhiều hơn liều lượng bình thường của sự phấn khích trong cuộc sống, và việc thử thách bản thân làm thỏa mãn cơn khát của họ Khi vượt qua một thử thách nhất định, não bộ sản xuất ra

dopamine, một chất kích thích tạo cảm giác hưng phấn và dễ chịu khi con người đạt được một mục tiêu lớn Vì lẽ đó, con người thường tìm đến game như một công cụ để thoả mãn thú vui được thử thách bản thân trong một môi trường thú vị và an toàn.[1]

Từ lâu, dòng game đua xe (racing games) đã là một trong những dòng game được phần lớn những người chơi game yêu thích Chúng được phân loại dọc theo một phổ giữa dòng game mô phỏng và các trò chơi đua xe kiểu arcade đơn giản hóa Bản thân game đua xe cũng có thể thuộc danh mục game thể thao Bắt nguồn từ năm 1973 với game Space Race, trải qua gần 4 thập kỷ, dòng game này vẫn giữ được sức hút với người chơi với nhiều tựa game mới thuộc thể loại này như Asphalt, Mario Kart, Need For Speed, v.v…[2] Mặc dù hầu hết những tựa game trên đã có chế độ chơi online để người chơi có thể so tài với những người chơi khác, một bộ phận người chơi vẫn trung thành với chế độ chơi với máy bởi sự tiện lợi, không phụ thuộc vào kết nối mạng cũng như độ khó mà những “người chơi ảo” chế độ chơi này có thể mang lại

Có nhiều yếu tố quyết định độ tốt của máy (từ thời điểm này người viết sẽ sử dụng từ viết tắt AI – Artificial Intellegent) trong một game đua xe hơn mọi người tưởng Ngoài việc tối ưu hóa cho AI, ta còn phải nghĩ đến trải nghiệm của người chơi Nếu AI quá tệ,

Trang 21

người chơi sẽ thắng chúng một cách dễ dàng và nhanh chóng chán trò chơi Ngược lại, nếu AI quá tối ưu, người chơi sẽ ức chế khi liên tục thua những AI này Từ đó, bài toán được đặt ra là: làm thế nào để tạo ra một AI cho game đua xe tốt?

Tôi xin thừa nhận rằng, với tư cách một người chơi game, nghiên cứu này mang nhiều

ý nghĩa cá nhân hơn hơn ý nghĩa khoa học kỹ thuật Nhưng điều đó không làm mất đi giá trị về kiến thức mà nghiên cứu này mang lại, nhất là trong lĩnh vực máy học và lĩnh vực thiết kế game Đồng thời, niềm tò mò vui thích cũng là một trong những động lực lớn nhất thôi thúc con người nghiên cứu và sáng tạo Vì những lí do trên, tôi đã chọn

đề tài này

Mục tiêu đề tài

− Nắm được các kiến thức cơ bản trong máy học và phương pháp học tăng cường

− Nắm được quy trình thiết kế một game đua xe

− Xây dựng được sản phẩm là một game đua xe có ứng dụng AI mang đến trải nghiệm chơi game tốt cho người dùng

Nội dung thực hiện

− Tìm hiểu về các game đi trước thuộc cùng thể loại và cách AI hoạt động trong game

− Tìm hiểu về các công nghệ và kiến thức có liên quan, phục vụ cho quá trình nghiên cứu và thực hiện sản phẩm

− Tìm kiếm và xây dựng đồ hoạ cho game

− Xây dựng game UI

− Xây dựng môi trường game & tiến hành huấn luyện AI

− Phân tích kết quả ban đầu và cải thiện kết quả

− Thực hiện và hoàn tất sản phẩm

Trang 22

Phạm vi thời gian

Nghiên cứu được thực hiện trong 4 tháng, từ tháng 8 đến tháng 12/2021

Bố cục báo cáo

Báo cáo gồm 5 chương chính:

− Chương 1 Tổng quan: giới thiệu và trình bày thông tin thu thập được thông qua việc quan sát một số game kinh điển thuộc dòng game đua xe, từ đó đặt vấn đề

và đưa ra hướng tiếp cận

− Chương 2 Cơ sở lý thuyết: trình bày các kiến thức và kỹ năng cần thiết để giải quyết bài toán đã đặt ra

− Chương 3 Hiện thực hoá: trình bày chi tiết về các công nghệ sử dụng, các bước tiến hành nghiên cứu và thực hiện sản phẩm

− Chương 4 Thực nghiệm và đánh giá: trình bày phương pháp thiệt lập thực nghiệm, phương pháp đánh giá

− Chương 5 Kết luận & hướng phát triển: thu hoạch kết quả đạt được từ đề tài, trình bày hướng phát triển đề tài

Trang 23

CHƯƠNG 1:

TỔNG QUAN

1.1 Một số ví dụ kinh điển về AI trong game đua xe

Để xác định chính xác hướng đi để đưa đến kết quả như ý cho sản phẩm, chúng ta cần phải có cái nhìn rõ nét hơn về những vấn đề có thể gặp phải trong quá trình thực hiện Bằng cách rút kinh nghiệm từ những bậc tiền bối, ta có thể nhanh chóng có cho mình một hướng đi đúng đắn, tiết kiệm thời gian đào sâu vào những ngõ cụt

Năm 1982 đánh dấu sự xuất hiện đầu tiên của AI trong game đua xe với tựa game Pole Position phát hành bởi Namco.[3] Trong game này, AI áp dụng một thuận toán dò đường đơn giản: AI chỉ đi theo một đường được định sẵn, sử dụng hàm nối trục và vận tốc xe để tính toán Điểm mạnh lớn nhất của thuật toán này nằm ở chi phí cực nhỏ của

nó, điều hiển nhiên với những game thời bấy giờ, cùng với đó là giới hạn về sự sống động của AI, bởi xe chỉ đi theo một đường duy nhất và không thể mô phỏng va chạm

Dù vậy, ở thời điểm đấy, kỹ thuật lập trình trong game được xem là một bước tiến lớn [4]

Trang 24

6

Hình 1.1 Game Pole Position (1982)

Đến những năm 90 và đầu những năm 2000, cùng với sự phát triển của phần cứng, nhiều phương pháp lập trình AI cho game đua xe cũng từ đó ra đời Nhiều game ở thời điểm này sử dụng một các thuật toán tìm đường đi khác nhau để điều khiển xe, xe đã

có thể thích ứng với va chạm và tự điều khiển để tìm về đường đi được lập trình sẵn Một ví dụ về AI đua xe sử dụng thuật toán tìm đường là thuật toán A* kết hợp với thuật toán tìm đường động.[5] Kết quả của sự kết hợp của 2 thuật toán trên là AI có khả năng né tránh va chạm và điều khiển vượt chướng ngại vật

Trong quá trình tìm hiểu, tôi không tìm được báo cáo nghiên cứu nào đề cập trực tiếp đến các thuật toán được sử dụng cho AI trong các game đua xe hiện đại nhưng

Một điều nữa ta có thể thấy được tương đối rõ ràng đó là sự hiện diện của những thuật toán cân bằng game Những thông số thể hiện kỹ năng của người chơi như vận tốc và thời gian dự kiến người chơi hoàn thành vòng đua sẽ được ước tính, từ đó AI được điều

Trang 25

chỉnh để thích ứng với người chơi Mô tả đầy đủ về thuật toán này được tìm thấy trong tài liệu bản quyền phần mềm trong game Mario Kart: Double Dash!! Của Nintendo.[6]

Trang 26

8

1.2 Demo Kart Microgame của Unity

Hình 1.3 Giao diện game của Demo Karting Microgame – Nguồn: Unity

Để hướng dẫn người dùng làm quen với việc lập trình và thiết kế game trên nền tảng của họ, Unity đã tạo ra nhiều bản game demo áp dụng cho nhiều thể loại game khác nhau, trong đó có thể loại game đua xe với demo Kart Microgame

Demo bao gồm những công cụ cần thiết để tạo ra một game đua xe cơ bản, từ đồ hoạ cho đến code, đi kèm với đó là những video hướng dẫn ở mức cơ bản, trong đó có thư viện máy học ML-Agents và hướng dẫn cài đặt thư viện này trong môi trường game của Unity

1.3 Đánh giá

1.3.1 Các thuật toán AI cho game đua xe

Các thuật toán đã được đề cập ở phần 1.1 đều được lập trình cứng và không áp dụng máy học Điều này giúp người lập trình kiểm soát được hành vi của AI, nhưng cũng

Trang 27

làm cho hành vi này dễ đoán hơn đối với những người có kinh Một AI dễ đoán là một

AI dễ bị khai thác bởi người chơi và từ đó game mất đi sự hấp dẫn

Về lý thuyết, mục đích của những thuật toán cân bằng game đi kèm với AI là để người chơi kỹ năng cao hay thấp đều có thể tận hưởng game một cách vui vẻ, nhưng kết quả thực tế lại không như vậy Những thuật toán này đôi lúc quá rõ ràng, dẫn đến hiệu ứng dây thun xảy ra thường xuyên trong game.[7] Hiệu ứng dây thun ám chỉ hiện tượng vận tốc của AI tăng hay giảm bất thường khi người chơi dẫn trước hay tụt lại khiến khoảng cách của người chơi và AI dường như không thể bị kéo dài quá lâu mà co giãn như dây thun Điều này khiến người chơi có thể dẫn trước trong khoảng 2/3 quãng đường đua nhưng vẫn bị bắt kịp và vượt mặt bởi AI Chẳng ai muốn thấy chiếc

Lamborghini được độ đến tận răng của mình bị một chiếc Volkswagen Golf cà tàng

vượt mặt cả.[8]

1.3.2 Demo Karting Microgame

Vì là một demo hỗ trợ cho việc học Unity nên đây không phải một sản phẩm hoàn chỉnh Demo có ứng dụng máy học để huấn luyện AI, nhưng khi chạy, việc huấn luyện kết thúc ngay khi phát hiện va chạm với tường Điều này giúp agent nhanh chóng kết thúc một episode và bắt đầu một episode mới nhưng cũng dẫn đến việc AI không học được cách điều khiển xe thoát khỏi tường (để hiểu thêm về vấn đề này, xin đọc phần 2.2 của chương 2)

Ngoài ra, điều khiển trong demo không cho phép xe thực hiện động tác drift một cách

dễ dàng (không thể vừa thắng vừa tăng ga) Đồ hoạ nhàm chán cũng là một điểm trừ

Dù vậy, demo vẫn là một nền tảng tốt để người thiết kế game có thể tiếp tục phát triển thành một sản phẩm hoàn chỉnh

1.4 Đặt vấn đề

Trang 28

10

Qua việc quan sát là đánh giá, ta định hướng được những vấn đề cần cải thiện của sản phẩm so với những sản phẩm đã có trước đây dựa trên định hướng ban đầu của đề tài,

đó là ứng dụng máy học:

− AI được huấn luyện bằng một hoặc nhiều thuật toán máy học

− AI được chia thành 3 độ khó khác nhau: Dễ, Thường và Khó

− AI ở mức Dễ phải có thể tự hoàn thành được tối thiểu 3 vòng đua Thời gian hoàn thành vòng đua trung bình của AI ở mức Thường phải cao hơn mức Dễ và

ở mức Khó phải cao hơn mức Thường

− Xây dựng một game đua xe hoàn chỉnh, có áp dụng AI đã tạo

Trang 29

CHƯƠNG 2:

CƠ SỞ LÝ THUYẾT

2.1 Cơ sở lý thuyết thiết kế game

Để có một hệ thống AI cho game đua xe tốt, trước hết ta phải có một game đua xe tốt,

và để đạt được điều này, người làm game cần phải có kiến thức cần thiết về lập trình 3D và thiết kế game

2.1.1 Vật lý game

Hệ thống vật lý của Unity tương đối dễ làm quen cho người mới bắt đầu thiết kế game trên nền tảng này Việc di chuyển các đối tượng trong game của Unity có thể được thực hiện bằng nhiều cách khác nhau Cách làm này thường được áp dụng khi ta muốn di chuyển tuyến tính một đối tượng không trực tiếp tương tác với các đối tượng khác trong game và không phụ thuộc vào vật lý của game (camera, các đối tượng UI,

Ngoài ra, Unity còn hỗ trợ hệ thống vật lý giúp việc hiện thực hoá va chạm, trọng lực hay áp dụng lực lên đối tượng trở nên dễ dàng hơn Để điều khiển đối tượng xe đua, ta

sẽ sử dụng hệ thống vật lý này

Trong thực tế, có rất nhiều yếu tố ảnh hưởng đến việc vận hành của một chiếc xe Để lược giản hoá, ta chỉ quan tâm đến những yếu tố có ảnh hưởng lớn đến trải nghiệm đua

xe của người dùng Đó là những yếu tố như:

− Gia tốc: quyết định xe tăng tốc nhanh hay chậm

− Tốc độ tối đa: tốc độ tối đa và xe có thể đạt được, khi tiến và khi lùi

− Trọng lượng: trọng lượng xe trong trường hợp cần tính toán lực va chạm

− Độ nhạy phanh: quyết định xe dừng nhanh hay chậm khi người dùng bấm phanh

Trang 30

Sử dụng kiến thức toán học và vật lý, ta có thể tính toán để xe tăng tốc và rẽ hướng theo ý thích

Ví dụ, ở mỗi frame, vận tốc của xe khi xe đang chạy trên đường có thể được lập trình như sau:

𝑣⃑⃑⃑ = 𝑐𝑙𝑖𝑝[(𝑣𝑓 ⃑⃑⃑⃑⃑⃑⃑⃑ + 𝐹𝑓−1 ⃑⃑⃑⃑⃑⃑⃑⃑ ∗ 𝑎 ∗ ∆𝑡), 𝑣𝑓𝑤𝑑 𝑚𝑎𝑥] Trong đó, 𝑣⃑⃑⃑⃑⃑⃑⃑⃑ chỉ vector vận tốc của xe ở ở frame trước, 𝐹𝑓−1 ⃑⃑⃑⃑⃑⃑⃑⃑ là vector chỉ hướng của 𝑓𝑤𝑑mũi xe, 𝑎 là gia tốc của xe; và độ lớn của 𝑣⃑⃑⃑ không vượt quá 𝑣𝑓 𝑚𝑎𝑥 là tốc độ tối đa mà

xe có thể đạt được

Nhưng để tạo nên một game đua xe thú vị, chỉ tăng tốc và rẽ là không đủ Trong hầu hết các game đua xe hiện đại, người thiết kế game luôn tìm cách thêm vào những cơ chế để tăng độ phức tạp và chiều sâu cho game Cơ chế được thêm vào cho game của chúng ta là một cơ chế mang tính biểu tượng cho dòng game đua xe, đó là drift

Lê bánh, hay trôi bánh, hay drift, là một kỹ thuật phổ biến trong đua xe Hiện tượng lê bánh xảy ra khi góc trượt của bánh sau lớn hơn góc trượt của bánh trước và hầu hết các

Trang 31

game đua xe đều áp dụng cơ chế này theo cách này hoặc cách khác bởi sự thoả mãn mà

nó mang lại cho người chơi khi sử dụng drift thành công

Hình 2.1 Hai chiếc xe đua thể thao đang thực hiện drift

Với hướng hiện thực hoá vật lý ở trên, việc áp dụng thêm vật lý trượt cho xe là tương đối khó khăn Vì thế, ta hướng đến một giải pháp khác: thay đổi thông số vật lý của đối tượng xe đua để tạo cảm giác xe đang lê bánh trên mặt đường Cách thực hiện như sau:

− Những thông số vật lý mà chúng ta sẽ thay đổi là ma sát phương ngang của bánh

xe và góc cua của xe Bằng cách giảm ma sát phương ngang và tăng góc cua của

xe, ta có thể mang lại cảm giác xe đang drift

− Để khuyến khích người chơi sử dụng drift, góc quay của bánh xe trước nên được đặt ở mức thấp, vừa đủ để ôm cua Các thông số vật lý sẽ chuyển sang dạng drift khi ở các điều kiện nhất định sau:

Trang 32

14

− Xe sẽ bắt đầu vào trạng thái drift khi gia tốc xe đủ lớn và người chơi bấm nút tăng tốc và phanh cùng một lúc hoặc khi phương gia tốc của xe và mũi xe tạo thành một góc quá lớn (do va chạm làm đổi hướng vector gia tốc) Xe ngừng drift khi được điều hướng trở lại

2.1.2 Thiết kế & Cân bằng game

Cân bằng game là một phạm trù ít nhiều mang tính cảm tính, bởi không có một quy chuẩn nhất định nào cho việc cân bằng game và kỹ năng của người chơi không thể nào đồng đều, nhưng lại là một phần không thể thiếu trong quá trình làm game Một thử thách có thể khó đối với người chơi này và dễ với người chơi khác Điều duy nhất chúng ta có thể làm là thu hẹp khoảng cách này lại, đồng thời giữ cho trải nghiệm chơi game của người chơi được thú vị bằng cách tiến hành cho người dùng chơi thử và ghi nhận những góp ý thu được

Ngoài ra, để trải nghiệm chơi game được mới mẻ, ta cần phải thiết kế nhiều loại xe với nhiều đặc tính nổi bật Sau quá trình thu thập ý kiến, tôi quyết định sử dụng 1 nguyên mẫu xe đua và tạo ra 6 biến thể với những đặc tính vật lý khác nhau

Để tránh hiện tượng dây thun xảy ra, ta cần đảm bảo sự cách biệt rõ ràng giữa AI cấp

độ Dễ, Vừa và Khó Ta có thể sử dụng thuật toán hay thủ thuật để cân bằng độ khó trong lúc game diễn ra, nhưng chỉ ở mức độ vừa phải Như vậy, với đề tài này, sẽ có 18 phiên bản AI cho 6 loại xe ở 3 cấp độ được triển khai

Đồng thời, để cho gameplay không bị nhàm chán, cần phải có một mức độ ngẫu nhiên

ở mỗi lần đua

Trang 33

Hình 2.2.Các loại xe khác nhau trong game – Nguồn: Asphalt 9

Trang 34

16

2.2 Reinforcement Learning và thư viện ML-Agents

2.2.1 Reinforcement Learning là gì?

Reinforcement Learning là một phương pháp máy học, phân biệt với Supervised

Learning và Unsupervised Learning RL lấy cảm hứng từ cách con người học hỏi từ dữ liệu trong cuộc sống Thông qua một hệ thống thưởng - phạt, từ dữ liệu đầu vào, thuật toán sẽ được cải thiện thông qua phương pháp thử và sai để hướng đến việc tối ưu hoá điểm thưởng nhận được RL đang là xu hướng của máy học trong những năm gần đây, với những dự án thú vị như dự án AI Trốn tìm của OpenAI[10] hay dự án AI học chơi Mario Bros của tác giả Hunter Heidenreich.[11]

Một số từ sẽ được sử thường dùng trong RL:

− Agent: còn có thể gọi là controller, là đối tượng tương tác trực tiếp với môi trường

− Rewards: điểm thưởng mà agent thu thập được khi tương tác với môi trường huấn luyện

− State: tình trạng của agent trong môi trường, có thể bao gồm vị trí, vận tốc trong môi trường, khoảng cách so với đối tượng khác, v.v…

− Policy: chiến thuật hay hành động được agent đề ra tại một state

− Episode: được hiểu như một “khoá huấn luyện”, bắt đầu khi agent nhận state đầu tiên và kết thúc khi agent thực hiện được một số lượng hành động nhất định hoặc khi agent bị huỷ

Trang 35

Hình 2.3 Sơ đồ hoạt động của Reinforcement Learning – Nguồn: [12]

Ở từng bước, agent đánh giá trình trạng hiện tại (state) và chọn thực hiện một hành động (action) Từ đó, môi trường truyền vào điểm thưởng hay điểm phạt (reward) đựa trên hành động của agent Agent sẽ tích luỹ kinh nghiệm từ việc thử các hành động cho mỗi state (policy), những hành động cho nhiều điểm thưởng sẽ được khuyến khích hoặc “củng cố” cho các episode tiếp theo và ngược lại, những hành động xấu sẽ không được khuyến khích hoặc “trừng phạt” Việc này được lặp lại cho đến khi episode kết thúc

Reinforcement Learning được áp dụng nhiều trong trường hợp cần huấn luyện một thực thể (agent) thực hiện một chức vụ nhất định trong môi trường mà ở đó thực thể có thể tương tác trực tiếp với mội trường, phù hợp để áp dụng cho bài toán của chúng ta

2.2.2 Thư viện ML-Agents của Unity

Trang 36

18

Hình 2.4 Môi trường huấn luyện AI chơi bóng đá bằng thư viện ML-Agents – Nguồn: [18]

ML-Agents là một thư viện máy học mã nguồn mở sử dụng môi trường game trong Unity làm môi trường để thực hiện huấn luyện ML-Agents cung cấp và triển khai một

số thuật toán ML hiện đại nhất thông qua thư việc PyTorch của Python

ML-Agents bao gồm 5 thành phần bậc cao:

− Môi trường học (Learning environment): bao gồm scene hiện tại và mọi đối tượng trong nó Môi trường sẽ chứa các agent và các bộ hành vi (behaviour) Agent sẽ được gán cho một đối tượng trong Unity, quan sát đánh giá tình trạng thông qua đối tượng và gán điểm thưởng hay phạt dựa trên hành động đề ra trong state hiện tại Mỗi agent truyền các giá trị quan sát vả điểm đến behaviour

và nhận về từ behaviour hành động cho state tiếp theo Ngoài ra, behaviour còn

Trang 37

quyết định một số yếu tố của agent như độ phức tạp của hành động có thể đưa ra hay số lượng biến quan sát

− Python API: không thuộc môi trường học mà được đóng gói trong thư viện Python mlagents_env

− External Communacator: phương thức giao tiếp giữa môi trường học và API, nằm trong môi trường

− Python Trainer: bao gồm các thuật toán máy học dùng trong việc huấn luyện agent

− Gym wrapper (không được biểu diễn trong biểu đồ): Bao đóng cung cấp bởi OpenAI, bao gồm một số thuật toán mã nguồn mở phức tạp hỗ trợ cho việc huấn luyện

Ngày đăng: 24/01/2022, 22:10

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] A. Koster, “Theory of Fun for Game Design”, 2 nd edition. O'Reilly Media Inc., 2013 Sách, tạp chí
Tiêu đề: Theory of Fun for Game Design
[2] “Kart racing game”, Wikipedia, last edited on Mar. 1 2021 [Online] – Available: https://en.wikipedia.org/wiki/Kart_racing_game Sách, tạp chí
Tiêu đề: Kart racing game
[3] A. Mohamed, “Artificial Intelligence In Racing Games”, University of Burmingham [Online] – Available:https://www.cs.bham.ac.uk/~ddp/AIP/RacingGames.pdf Sách, tạp chí
Tiêu đề: Artificial Intelligence In Racing Games
[5] Y. Sazaki, A. Primanita and M. Syahroyni, “Pathfinding Car Racing Game Using Dynamic Pathfinding Algorithm and Algorithm A*”, 3rd International Conference on Wireless and Telematics (ICWT). IEEE, 2017 [Online] – Available:https://ieeexplore.ieee.org/document/8284160 Sách, tạp chí
Tiêu đề: Pathfinding Car Racing Game Using Dynamic Pathfinding Algorithm and Algorithm A*
[6] Y. Ohyagi and K. Satou, “Racing game program and video game device”, U.S. Patent 7278913, Oct. 9, 2007 [Online] – Available:https://patents.google.com/patent/US7278913B2/en Sách, tạp chí
Tiêu đề: Racing game program and video game device
[7] Anon, “Rubber Band AI (Concept)” [Online] – Available: https://www.giantbomb.com/rubber-band-ai/3015-35/ Sách, tạp chí
Tiêu đề: Rubber Band AI (Concept)
[8] M. Sayer, “5 Games Totally Ruined By Rubberbanding AI” , Paste Media Group, 2016 [Online] – Available: https://www.pastemagazine.com/games/racing-games/5-games-totally-ruined-by-rubberbanding-ai/#need-for-speed Sách, tạp chí
Tiêu đề: 5 Games Totally Ruined By Rubberbanding AI
[9] “What is Drifting?” [Online] – Available: https://www.driftworks.com/blog/drifting/ Sách, tạp chí
Tiêu đề: What is Drifting
[10] B. Baker et al., “Emergent Tool Use from Multi-Agent Interaction”, OpenAI, 2019 [Online] – Available: https://openai.com/blog/emergent-tool-use/ Sách, tạp chí
Tiêu đề: Emergent Tool Use from Multi-Agent Interaction
[11] H. Heidenreich, “Reinforcement Learning (Part 1) – The Mario Bros Example” [Online] – Available: https://cai.tools.sap/blog/the-future-with-reinforcement-learning-part-1/ Sách, tạp chí
Tiêu đề: Reinforcement Learning (Part 1) – The Mario Bros Example
[12] S. Bhatt, “5 Things You Need to Know about Reinforcement Learning”, KDNuggets [Online] – Available: https://www.kdnuggets.com/2018/03/5-things-reinforcement-learning.html Sách, tạp chí
Tiêu đề: 5 Things You Need to Know about Reinforcement Learning
[13] J. Hui, “RL — Proximal Policy Optimization (PPO) Explained” [Online] – Available: https://jonathan-hui.medium.com/rl-proximal-policy-optimization-ppo-explained-77f014ec3f12 Sách, tạp chí
Tiêu đề: RL — Proximal Policy Optimization (PPO) Explained
[14] T. Haarnoja et al., “Soft Actor Critic—Deep Reinforcement Learning with Real- World Robots”, The Berkeley Artificial Intelligence Research Blog [Online] – Available: https://bair.berkeley.edu/blog/2018/12/14/sac/ Sách, tạp chí
Tiêu đề: Soft Actor Critic—Deep Reinforcement Learning with Real-World Robots
[15] S. Gujar, “Trust Region Policy Optimization (TRPO) and Proximal Policy Optimization (PPO)”, Medium, Apr. 21, 2018 [Online] – Available:https://medium.com/@sanketgujar95/trust-region-policy-optimization-trpo-and-proximal-policy-optimization-ppo-e6e7075f39ed Sách, tạp chí
Tiêu đề: Trust Region Policy Optimization (TRPO) and Proximal Policy Optimization (PPO)
[16] M.Wulfmeier, P. Ondrúska and I. Posner, “Maximum Entropy Deep Inverse Reinforcement Learning”, University of Oxford, Mar. 11, 2016 [Online] – Available:https://arxiv.org/pdf/1507.04888.pdf Sách, tạp chí
Tiêu đề: Maximum Entropy Deep Inverse Reinforcement Learning
[17] J. Schulman, F. Wolski, P. Dhariwal, A. Radford amd O. Klimov, “Proximal Policy Optimization Algorithms”, OpenAI, Aug. 28 2017 [Online] – Available:https://arxiv.org/pdf/1707.06347.pdf Sách, tạp chí
Tiêu đề: Proximal Policy Optimization Algorithms
[18] “Unity Machine Learning Agents”, Unity [Online] – Available: https://unity.com/products/machine-learning-agents Sách, tạp chí
Tiêu đề: Unity Machine Learning Agents
[4] Early Arcade Classics: 1985-1987 Developer Interviews, shmuplations.com [Online] – Available: http://shmuplations.com/earlyarcade/ Link
[21] SkyBox Series Free by Avionx, Unity Asset Store [Online] – Available: https://assetstore.unity.com/packages/2d/textures-materials/sky/skybox-series-free-103633 Link
[22] Yughues Free Sand Materials by Nobiax/ Yughues, Unity Asset Store [Online] – Available: https://assetstore.unity.com/packages/2d/textures-materials/floors/yughues-free-sand-materials-12964 Link

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w