1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án xây dựng game âm nhạc cho nhiều người chơi

32 4 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

Tiêu đề Đồ án xây dựng game âm nhạc cho nhiều người chơi
Tác giả Trần Quốc Huy
Người hướng dẫn TS. Đỗ Thị Thanh Tuyền
Trường học Trường Đại học Công nghệ Thông tin, Đại học Quốc gia TP. Hồ Chí Minh
Chuyên ngành Kỹ thuật phần mềm, Phát triển game
Thể loại Đồ án
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 32
Dung lượng 2,52 MB

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

Nội dung

Về nền tảng chính game, game sử dụng engine Unity2D, về map, lúc này chỉ hỗ trợ việc tạo bằng file txt, sau có thể mở rộng tạo trong chính game, về database, game sử dụng firebase để lưu

Trang 2

Trần Quốc Huy

Trang 3

2

MỤC LỤC

Chương 1: GIỚI THIỆU ĐỀ TÀI 6

1.1 Mô tả đề tài 6

1.2 Lý do chọn đề tài 6

1.3 Tìm hiểu 6

1.3.1 Youtube 6

1.3.2 Udemy 6

1.3.3 Discord 7

1.3.4 ChatGPT 7

1.4 Video showcase 7

Chương 2: KIẾN THỨC VÀ CÔNG NGHỆ SỬ DỤNG 8

2.1 Unity 8

2.2 Firebase: 9

2.3 Photon: 9

2.4 Github 11

2.5 Figma: 12

Chương 3: XÂY DỰNG ỨNG DỤNG 13

3.1 Luồng màn hình 13

3.1.1 Menu : ( ảnh 4.1, 4.2, 4.3 ) 13

3.1.2 Select song scene: ( ảnh 4.3, 4.4 ) 14

3.1.3 Gameplay scene: ( ảnh 4.5, 4.6, 4.7 ) 14

3.1.4 Score screen: ( ảnh 4.8, 4.9 ) 15

3.1.5 Lobby: ( ảnh 4.10 ) 15

3.1.6 Waiting room: ( ảnh 4.11 ) 15

Trang 4

3

3.2 Logic game 15

3.2.1 Map folder: 15

3.2.2 Map data: 16

3.2.3 Map.txt: 16

3.2.4 Note rating: ( Cơ chế tính điểm note ) 19

3.2.5 Approach rate: ( thời gian xuất hiện ) 20

3.2.6 Offset: ( Độ trễ ) 20

3.2.7 HP: ( Máu ) 20

3.2.8 Database: ( Firebase ) 20

Chương 4: GIAO DIỆN GAME 22

4.1 Màn hình menu 22

4.2 Màn hình chọn map 23

4.3 Màn hình gameplay 24

4.4 Màn hình kết quả 26

4.5 Màn hình tạo/join phòng 27

4.6 Màn hình lobby 27

Chương 5: KẾT LUẬN 28

5.1 Bảng tiến độ công việc 28

5.2 Đánh giá 29

5.2.1 Ưu điểm đồ án: 29

5.2.2 Nhược điểm đồ án: 29

5.2.3 Thuận lợi 29

5.2.4 Khó khăn 30

5.3 Hướng phát triển đồ án 30

Trang 5

4

TÓM TẮT ĐỒ ÁN

Đồ án bao gồm tìm hiểu, phân tích cơ chế vận hành game, làm map,

xây dựng database, cũng như kết nối cho nhiều người chơi, điểm chính của

game là có thể tự làm map và tự chơi offline, nhưng cũng có thể chơi nhiều

người bằng tài khoản Về nền tảng chính game, game sử dụng engine

Unity2D, về map, lúc này chỉ hỗ trợ việc tạo bằng file txt, sau có thể mở

rộng tạo trong chính game, về database, game sử dụng firebase để lưu trữ

thông tin đăng nhập người dùng phục vụ nhiều người chơi, để kết nối nhiều

người chơi, game sử dụng Photon để kết nối

-Chương 1: Giới thiệu đề tài: trình bày lí do chọn đề tài, đối tượng

sử dụng, mục tiêu hướng đến

-Chương 2: Kiến thức và công nghệ sử dụng: giới thiệu các công

nghệ, lí thuyết, các nguồn học và các công nghệ đóng góp vào đồ án

-Chương 3: Xây dựng game: Giới thiệu ý tưởng, phác thảo giao diện,

các logic game, cách vận hành game

-Chương 4: Giao diện game: các hình ảnh giao diện game và chú

thích

-Chương 5: Kết luận: Bàn luận về những gì vạch ra và kết quả đạt

được, kết luận, đánh giá, mục tiêu trong tương lại

Trang 7

1.2 Lý do chọn đề tài

Ban đầu, khi suy nghĩ về thể loại làm, bản thân em nhận ra trường mình quá hướng sinh viên làm app quản lí sử dụng database, nên bản thân muốn học làm cái

gì mới mẻ hơn, từ đó em quyết định chọn đề tài làm game, và với vốn kiến thức sẵn

có về cách game âm nhạc hoạt động, em đã chọn làm game âm nhạc, đồng thời làm nhiều người chơi để tìm hiểu cách thức hoạt động game nhiều người chơi

1.3.2 Udemy

Là trang web khóa học online, chuyên cung cấp các khóa học, trước khithanh toán có thể xem review cũng như nội dung để cho người dùng nhận biết có nên mua hay không

Trang 8

7

1.3.3 Discord

Khi tham gia Discord của cộng đồng unity, có thể đăng hỏi các câu hỏi và người dùng sẽ nhiệt tình trả lời Ngoài ra có thể cung cấp các tài nguyên cũng như chia sẽ project của mình cho mọi người

1.3.4 ChatGPT

Không thể phủ nhận việc tìm kiếm các giải pháp tối ưu cũng như hỗ trợ người dùng check code của mình và tìm hiểu những lỗi một cách dễ dàng mà không phải đọc hẳn một document về cách vận hành

- Join room và list các thành viên ( ở 1:27 )

- Chọn bài và các người chơi đều được chọn bài này

- Cuối game có list các điểm của các người chơi ( ở 4:07 )

[2] Video

https://drive.google.com/file/d/14Zmje3WWmixeDLOf9O5jEpJaSw033BjP/view?usp=sharing

Video này show chức năng lưu điểm ( cũng có ở video 1 ), các level, đồng thời cũng show một số tính năng mới cũng như trải nghiệm người dùng

Trang 9

8

Chương 2: KIẾN THỨC VÀ CÔNG NGHỆ SỬ DỤNG

2.1 Unity

Hình 2.1: Biểu tượng Unity

Unity là một công cụ phát triển trò chơi đa nền tảng mạnh mẽ và phổ biến, được phát triển bởi công ty Unity Technologies, Unity cho phép nhà phát triển tạo

ra các trò chơi 2D và 3D chất lượng cao cho các nền tảng như máy tính, điện thoại

di động, máy chơi game và thực tế ảo

Unity cung cấp một môi trường làm việc dễ sử dụng và linh hoạt, giúp nhà phát triển xây dựng các trò chơi và ứng dụng một cách nhanh chóng và hiệu quả Nó

Trang 10

2.2 Firebase:

Firebase cung cấp một loạt các dịch vụ cho phép quản lý dữ liệu, xây dựng

hệ thống xác thực và quản lý người dùng, lưu trữ và đồng bộ dữ liệu thời gian thực, phân tích và theo dõi hiệu suất ứng dụng, và thậm chí cả việc tích hợp các tính năng của trí tuệ nhân tạo

Với Firebase, nhà phát triển không cần phải lo lắng về việc xây dựng và quản

lý hạ tầng cơ sở dữ liệu, máy chủ và việc triển khai ứng dụng Firebase đã tự động quản lý và mở rộng cơ sở hạ tầng để đảm bảo hiệu suất và sự ổn định của ứng dụng

Ngoài ra, Firebase cũng cung cấp các công cụ phát triển và tài liệu phong phú, giúp nhà phát triển nhanh chóng tiếp cận và tận dụng tối đa các tính năng của nền tảng

2.3 Photon:

Hình 2.2:Biểu tượng Photon

Trang 11

10

Photon là một plugin và dịch vụ mạng phổ biến trong ngữ cảnh của Unity, giúp nhà phát triển xây dựng và triển khai các trò chơi đa người chơi thời gian thực trên nền tảng đa nền tảng

Photon cung cấp các giải pháp mạng mạnh mẽ cho việc kết nối và đồng bộ hóa giữa các người chơi trong trò chơi Nó cho phép gửi và nhận dữ liệu qua mạng nhanh chóng và ổn định, tạo ra trải nghiệm đồng bộ và tương tác chất lượng cao giữa các người chơi

Với Photon, nhà phát triển không cần phải xây dựng cơ sở hạ tầng mạng phức tạp từ đầu Photon đã xây dựng và quản lý một mạng lưới phân tán để đảm bảo sự kết nối ổn định và giảm thiểu độ trễ

Ngoài ra, Photon cũng cung cấp các tính năng quản lý phòng chơi, matchmaking (tìm đối thủ phù hợp), chat và nhiều tính năng khác để hỗ trợ việc phát triển trò chơi đa người chơi một cách thuận tiện

Với tính tương thích đa nền tảng, Photon có thể được sử dụng trên nhiều nền tảng như máy tính, điện thoại di động và các máy chơi game Điều này giúp nhà phát triển tạo ra các trò chơi đa người chơi đa nền tảng một cách dễ dàng và tiện lợi

Với tích hợp dễ dàng vào Unity và khả năng cung cấp kết nối mạng ổn định, Photon đã trở thành một công cụ phổ biến cho việc phát triển trò chơi đa người chơi thời gian thực trong cộng đồng Unity

Trang 12

11

2.4 Github

Hình 2.3: Biểu tượng Github

GitHub là một nền tảng lưu trữ mã nguồn và quản lý phiên bản phổ biến trong lĩnh vực phát triển phần mềm Nó cung cấp một môi trường linh hoạt và mạnh mẽ cho các nhà phát triển để làm việc và chia sẻ mã nguồn dự án

GitHub cho phép nhà phát triển lưu trữ mã nguồn của dự án trực tiếp trên nền tảng, tạo ra một kho chứa (repository) để lưu trữ và quản lý mã nguồn Điều này giúp nhà phát triển theo dõi các phiên bản và sự thay đổi trong mã nguồn, và dễ dàng làm việc theo nhóm

Trang 13

12

2.5 Figma:

Hình 2.4: Biểu tượng Figma

Là nền tảng web/ứng dụng giúp tạo các mẫu prototype cho ứng dụng của mình, để có thể hiểu rõ hơn về kích thước align cũng như các luồng tiến trình, với Unity, việc phần lớn các assest được tạo từ figma cho thấy tầm quan trọng của nó

Trang 14

- ExitCanvas: canvas để người chơi chọn việc thoát game

Hình 3.2: Hình ảnh thanh exit

- Canvas: chức các gameobject linh tinh như đăng nhập, nút game, …

- FirebaseController: để kết nối với database, lúc này chỉ để dùng để đăng nhập

- OptionCanvas: dùng để phục vụ cho option

- LoadMultiplayer: object phục vụ logic liên quan tới việc đăng nhập và kết nối tới server

Trang 15

14

3.1.2 Select song scene: ( ảnh 4.3, 4.4 )

Màn hình sẽ load list các song ( load theo đường dẫn được ghi trong tip ), khi bấm vào sẽ load thông tin map đó và truyền vào scene gameplay

o Map preview: cấu trúc gồm tên nhạc, tên tác giả nhạc đó, độ khó, hình ảnh, người làm map, bpm

Hình 3.3: Hình ảnh cấu trúc hiển thị của một map

o Pause canvas: hiện tại chỗ này được coi là quick setting để chỉnh những thứ liên quan đến gameplay như AR ( approach rate ), offset ( độ trễ ), BG Opacity ( đậm nhạt background )

3.1.3 Gameplay scene: ( ảnh 4.5, 4.6, 4.7 )

Khi vào màn hình gameplay, sẽ load folder của map chọn từ màn hình select song scene, truyền vào:

Trang 16

15

- Khi bắt đầu, sẽ load bg của file map ( bg.jpg )

- Load beat đập theo BPM của file txt để người dùng có thể cảm nhận trước tốc độ của nhạc

- Chạy nhạc của map đó ( file song.mp3 )

- Load các note được ghi trong file txt

- Hiển thị từ từ các note và bắt đầu vào logic game ( Ghi rõ ở mục sau )

- Sau khi xong hết toàn bộ note, tiếng nhạc sẽ nhỏ dần và load vào màn hình Score screen

3.2 Logic game

3.2.1 Map folder:

Đặt tên default: Game_data ( không có ngoại lệ )

Chỗ để default: Assests->Game_data->Beatmaps ( không có ngoại lệ )

Khi vào game, nếu người chơi không biết/không load được map sẽ có chỉ dẫn

Trang 17

16

Hình 3.4: Hình ảnh Cấu trúc folder để map

3.2.2 Map data:

Một map folder sẽ có mặc định những file sau:

- song.mp3 : dùng để chứa nhạc sẽ chạy trong ván chơi

- bg.jpg : background của bài nhạc ( chỉ cần là đuôi jpg )

- map.txt : chứa các thông tin của map ( sẽ nói rõ trong mục sau )

- score.txt : chứa thông tin số điểm của người chơi đã được mã hóa

Hình 3.5: Hình ảnh Cấu trúc folder để map

3.2.3 Map.txt:

Cấu trúc của Map.txt sẽ bao gồm các phần:

Trang 18

17

[MAP INFO]: chứa thông tin sơ bộ của map bao gồm diff ( độ khó ), hp ( máu, set từ 0->10, càng cao máu giảm trên từng giây càng nhiều ), artist ( tên nhạc sĩ của nhạc đó ), bpm ( dùng để cho người chơi định hình được tốc độ của map ), creator ( tên người làm map )

[MAP VISUAL]: Phục vụ việc làm đẹp và tô điểm game play, cấu trúc sẽ gồm [time][r,g,b,o], khi tới một thời gian nào đó sẽ thay đổi màu sắc của BG theo

hệ số r,g,b,o đã liệt kê

[MAP DATA]: chứa thông tin của map, cấu trúc của map sẽ là [time][keytopress]

o Time: thời gian mà người chơi sẽ phải nhấn, thông thường sẽ không phản ánh đúng mà sẽ phải cộng thêm một khoảng offset từ bpm,

o Keytopress: phím mà người chơi phải bấm, chạy trên khoảng 26 chữ cái latin trên bàn phím, có 2 loại phím là in thường và in hoa, với phím in hoa buộc người chơi phải nhấn giữ phím shift để bấm

VD:

[3][t]: ở giây thứ 3, người chơi phải bấm phím t [5][T]: ở giây thứ 5, người chơi phải bấm shift + t [6][a,b]: ở giây thứ 6, người chơi phải nhấn đồng thời 2 phím a và b [7][A,B]: ở giây thứ 7, người chơi phải nhấn đồng thời 2 phím shift + a b

Trang 19

18

Hình 3.6: Hình ảnh cấu trúc trong file map.txt, map được chia thành 3 phần ( MAP INFO,

MAP DATA, MAP VISUAL )

Trang 20

19

3.2.4 Note rating: ( Cơ chế tính điểm note )

Hình 3.7: Hình ảnh thể hiện cơ chế tính điểm của một note

Một note được tạo tại thời gian t sẽ có khoảng thời gian t+-0.1s để người chơi có thể bấm, khi bấm, lập tức nốt sẽ ghi nhận và biến mất

+ vạch xanh lá cây: người chơi sẽ nhận được kết quả là good + vạch đỏ: người chơi nhận kết quả là great

+ vạch vàng: người chơi nhận kết quả là perfect + vạch cam: người chơi nhận kết quả là critical perfect VD: một note có cấu trúc [5][a]

- Nếu người chơi nhất a ở khoảng thời gian 4.9 -> 4.93 hoặc 5.071 -> 5.1 sẽ nhận được good

- Nếu người chơi nhất a ở khoảng thời gian 4.931 -> 4.96 hoặc 5.041 -> 5.07

Trang 21

20

- Nếu người chơi nhất a ở khoảng thời gian >5.02 sẽ bị coi là miss

Tính điểm

Số điểm nhận được khi bấm được good là (100/tổng số note)*0.5

Số điểm nhận được khi bấm được great là (100/tổng số note)*0.75

Số điểm nhận được khi bấm perfect/critical perfect = (100/tổng số note)*1

3.2.5 Approach rate: ( thời gian xuất hiện )

Người chơi có thể chỉnh mục này trong setting, nó biểu thị cho thời gian từ lúc phóng to một dấu hiệu để nhận biết rằng có note cần bấm cho đến lúc kết thúc

+ Ví dụ: một note được tạo ra ở thời điểm t, thì thời gian nó sẽ xuất hiện trên màn hình và phóng to vào lúc t-approach rate và kết thúc tại lúc t

3.2.6 Offset: ( Độ trễ )

Độ trễ sẽ được áp dụng để dịch chuyển thời gian tạo note và thời gian tính điểm + Ví dụ: một note được tạo ra ở thời điểm t có offset là o thì thời gian hiển thị hình ảnh là t-approach rate + offset và kết thúc tại t+offset, sẽ có thời gian khả thi cho việc bấm là t+offset-0.1 -> t+offset+0.1

3.2.7 HP: ( Máu )

Khi bắt đầu game, sẽ có mặc định 1000 đơn vị máu

Trong file beatmap.txt sẽ có đề cập mức độ khó của máu ( từ 0>10 ) (hpvalue)

+ Trong 1s, số đơn vị máu sẽ bị trừ bằng hpvalue*10 + Khi bấm good, đơn vị máu sẽ cộng bằng (11-hpvalue)*3 + Khi bấm great, đơn vị máu sẽ cộng bằng (11-hpvalue)*5 + Khi bấm perfect/critical perfect, đơn vị máu sẽ cộng bằng (11-hpvalue)*10

3.2.8 Database: ( Firebase )

Trang 23

22

Chương 4: GIAO DIỆN GAME

4.1 Màn hình menu

Hình 4.1: Giao diện menu ( màn hình default )

Hình 4.2: Giao diện các lựa chọn

Trang 26

25

Hình 4.7: Giao diện pause

Hình 4.8: Giao diện Game over

Trang 27

26

4.4 Màn hình kết quả

Hình 4.9: Giao diện màn hình kết quả điểm

Hình 4.10: Giao diện màn hình kết quả điểm nếu chơi multiplayer

Trang 29

28

Chương 5: KẾT LUẬN

5.1 Bảng tiến độ công việc

kế các assest thông qua figma

phác thảo mang vào (UI game)

Hoàn thành

thể hoạt động như phác thảo ý

tưởng

Hoàn thành ( demo )

tài khoản ( việc quản lí điểm của map cần liên quan tới vấn

đề không thể thay đổ map )

Bảng 5.1.1: Bảng tiến độ công việc

Trang 30

Phục vụ nhiều người chơi: Game đã áp dụng nhiều người chơi để ngoài việc chơi một mình, người dùng có thể mở room, tạo phòng, đón chờ bạn bè/người lạ ghé room để cùng chơi một map nào đó, share nhau kết quả để so tài, giải trí

5.2.2 Nhược điểm đồ án:

Xây map còn nhiều khó khăn: bản thân người tạo map phải tạo map bằng tay, canh từng milisecond, dù có thể sử dụng nhiều tool hỗ trợ như osu editor hay convert osu delay ( do chính bản thân người làm app tạo ) để phục vụ việc làm map nhưng về căn bản thì việc làm map vẫn khá mệt và thách thức

Server nhiều người chơi: bản thân app sử dụng công nghệ photon phiên bản miễn phí, nên hiện tại, app không thể công khai cũng như cung cấp cho người dùng tạo tài khoản vì như thế người chơi sẽ vào multiplayer và làm hao tổn kinh phí của người làm app

NoteBlock: Một định nghĩa trong game âm nhạc mà rất khó để giải quyết là note block khi mà nhiều note cùng xuất hiện tại một chỗ trong thời gian ngắn, khi nhấn 1 phím, 1/nhiều note sẽ cùng bị ảnh hưởng và tính điểm ( không đúng với bản chất phải bấm nhiều lần ) bản thân người làm app đã cố gắng fix nhưng không thể

5.2.3 Thuận lợi

Là một người chơi rhythm game lâu năm, từ osu, maimai, arcaea, bản thân đã tích lũy/biết được cơ chế tính điểm, delay, … từ đó có thể vẽ ra ý tưởng dựa trên những thứ đó, kết hợp với việc gõ bàn phím như monkeytype,…

Trang 31

30

5.2.4 Khó khăn

Làm một mình: bản thân em không tin tưởng và không quen làm với bất cứ sinh viên nào trong trường, phần vì khó kiếm người có chung suy nghĩ và đam mê, hai là rủi ro người đồng hành không làm dẫn đến chậm tiến độ, nên mọi việc từ tìm hiểu, phác thảo, xây UI, logic bản thân đều phải tự làm, rất nhiều công việc

Chưa tìm hiểu sâu về database hay kết nối: bằng việc sử dụng kiến thức cơ bản, bản thân đã tự áp dụng vào game, nhưng nếu có thể biết rõ hơn về cơ chế thì có thể hoàn thiện đồ án hơn

Ngày đăng: 04/09/2023, 20:29

TỪ KHÓA LIÊN QUAN

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