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

Xây dựng trò chơi cá ngựa bằng opengl

80 3 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 đề Xây dựng trò chơi cá ngựa bằng OpenGL
Tác giả Lê Quang Tùng
Người hướng dẫn ThS. Trần Giang Sơn, ThS. Vũ Văn Tiến
Trường học Đại Học Bách Khoa University of Ho Chi Minh City
Chuyên ngành Khoa Học Máy Tính
Thể loại Luận văn tốt nghiệp đại học
Năm xuất bản 2022
Thành phố Hồ Chí Minh
Định dạng
Số trang 80
Dung lượng 3,13 MB

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

Nội dung

1.1.2 Các thành phần của bộ cờ tiêu chuẩn: Một bộ cờ cá ngựa thông thường sẽ gồm có 2 viên xúc xắc và 1 cờ hình vuông có sẽ sẵn các ô và họa tiết bên trong để phân chia vị trí chơi cũng

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KĨ THUẬT MÁY TÍNH

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

ĐỀ TÀI:

XÂY DỰNG TRÒ CHƠI CÁ NGỰA

BẰNG OPENGL

NGÀNH: KHOA HỌC MÁY TÍNH HỘI ĐỒNG KHOA HỌC MÁY TÍNH 1

GVHD: ThS Trần Giang Sơn GVPB: ThS Vũ Văn Tiến SVTH: Lê Quang Tùng - MSSV: 1810784

Thành Phố Hồ Chí Minh, 12/2022

Trang 5

LỜI CAM ĐOAN

“Chúng tôi xin cam đoan, ngoài các nội dung và kết quả được ghi chú là tham khảo ở các công trình khác, các nội dung được chúng tôi trình bày trong luận văn tốt nghiệp đại học này đều được chính chúng tôi thực hiện và không có phần nào được sử để nộp lấy bằng cấp ở trường này hoặc một trường khác Nếu có bất kỳ sai phạm nào, tôi xin chịu hoàn toàn trách nhiệm trước Ban Chủ Nhiệm Khoa và Ban Giám Hiệu Nhà Trường.”

Tp Hồ Chí Minh, ngày 12 tháng 12 năm 2022

Sinh viên thực hiện

Lê Quang Tùng

Trang 6

LỜI CẢM ƠN

Trước khi đi vào nội dung chi tiết của báo cáo, nhóm xin được dành hết lòng biết ơn của mình tới ThS Trần Giang Sơn - giảng viên khoa Khoa học và Kỹ thuật Máy tính trường Đại học Bách Khoa TPHCM Trong suốt khoảng thời gian vừa qua đã đưa ra đề tài, và tận tình hướng dẫn nhóm trong việc định hướng đề tài Chính nhờ sự tân tâm đó, nhóm thực hiện mới có thể hoàn thành được báo cáo luận văn tốt nghiệp này một cách tốt nhất Bên cạnh đó nhóm cũng xin chân gửi lời cảm ơn đến quý thầy cô hiện đã và đang công tác tại Khoa Khoa Học và Kỹ Thuật Máy tính - Đại Học Bách Khoa TPHCM trong những năm qua đã dạy dỗ và truyền đạt kiến thức, kỹ năng để nhóm có thể thực hiện đề tài với một nền tảng kiến thức bền vững

Cuối cùng, xin được gửi lời cảm ơn đến gia đình, bạn bè và những người đã cùng đồng hành với nhóm trong quá trình thực hiện luận văn Những lời tư vấn cũng như động viên là món quà quý báu nhất của tất cả mọi người dành cho nhóm!

Sinh viên thực hiện

Lê Quang Tùng

Trang 7

TÓM TẮT NỘI DUNG

Cờ cá ngựa hay còn gọi là Cờ đua ngựa là một trò chơi giải trí với bàn cờ khá phổ biến

mà chắc chắn đã có nhiều lần bắt gặp và trải nghiệm Trò chơi này bắt nguồn từ trò Pachisi của Ấn Độ, du nhập sang Mỹ trở thành Parcheesi và phiên bản giản thể Ludo (cờ) Người Pháp gọi là petits chevaux (ngựa nhỏ), cuối cùng du nhập sang Việt Nam và được gọi là Cờ

cá ngựa Trò chơi này có thể từ hai đến bốn người chơi, diễn ra trên một bàn cờ hình vuông Sau này, cờ cá ngựa được sáng tạo cả về cấu tạo bàn cờ, quân cờ và cách chơi tạo nên những

bộ cờ cá ngựa “biến thể” rất độc đáo và thú vị

Nắm bắt được điều đó, rất nhiều “biến thể” của cờ cá ngựa được ra đời trên PC hay Web thu hút rất nhiều người chơi như Cờ cá ngưa (ZingPlay), Ludo Games (Steam), Pummel Party (Steam),… Những cách chơi mới lạ đó đem lại sự hấp dẫn cho người chơi , tăng tính cạnh trạnh và độ khó trong một board game Từ đó ý tưởng xây dựng một trò chơi

cá ngựa với luật chơi của riêng mình được sinh ra và được nhóm thực hiện đầy đủ

Trang 8

BỐ CỤC LUẬN VĂN

Luận văn được tổ chức thành năm chương chính bao gồm Giới thiệu, Cở sở lý thuyêt, Thiết kế chương trình và phương pháp đề xuất, Hiện thực và kết quả, và cuối cùng là chương Tổng kết

Chương Giới thiệu: sẽ cung cấp cái nhìn toàn cảnh về đề tài luận văn theo đuổi, chia

sẻ lý do, động lực để nhóm tác giả thực hiện đồng thời vạch ra những bước đi cụ thể nhằm hoàn thành tốt đề tài

Những kiến thức liên quan cần thiết trong việc thực hiện đề tài được trình bày ở chương Cơ sở lý thuyết Chúng bao gồm các kiến thức nền tảng trong đồ hoạ máy tính và lập trình game

Chương Phân tích hệ thống: mô tả yêu cầu nghiệp vụ và các cải tiến luật chơi đa dạng Chương Thiết kế hệ thống: từ các phân tích yêu cầu từ chương trên được hiện thực tại chương này

Chương Hiện thực và kết quả trình bày môi trường và công cụ nhóm tác giả sử dụng

để lập trình

Cuối cùng, chương Tổng kết nêu ra những gì đã làm được, những gì cần phải cải tiến

và hướng phát triển của đề tài trong tương lai

Trang 9

MỤC LỤC

Chương 1: Giới Thiệu 13

1.1 Giới thiệu đề tài: 13

1.1.1 Lịch sử: 13

1.1.2 Các thành phần của bộ cờ tiêu chuẩn: 13

1.1.3 Luật chơi tiêu chuẩn (Luật cờ cá ngựa của Việt Nam): 13

1.1.3.1 Luật về số lượng người tham gia: 13

1.1.3.2 Nguyên tắc chơi: 13

1.1.3.4 Phân thắng bại: 15

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

1.3 Mục tiêu của đề tài: 16

Chương 2: Cơ sở lý thuyết 17

2.1 Luật chơi của đề tài: 17

2.1.1 Giới thiệu: 17

2.1.2 Các thay đổi trong quá trình chơi: 17

2.1.3 Phân thắng bại: 18

2.2 Các công nghệ được sử dụng trong đề tài: 19

2.2.1 Mô hình phát triển: 19

2.2.2 Client: 21

2.2.2.1 OpenGL: 21

2.2.2.1.1 Giới thiệu: 21

2.2.2.1.2 Cách thức hoạt động: 22

2.2.2.1.3 Lý do chọn OpenGL: 23

2.2.2.1.4 Một số thư viện hỗ trợ: 23

2.2.2.1.4.1 GLFW: 23

2.2.2.1.4.2 GLAD: 23

2.2.2.1.4.3 GLTF: 24

2.2.2.2 IrrKlang: 24

2.2.2.3 FreeType: 26

2.2.3 Server: 27

2.2.3.1 Windows Socket API (WinSock2): 27

Trang 10

Chương 3: Phân tích hệ thống 28

3.1 Phân tích yêu cầu của đề tài: 28

3.2 Hệ thống các màn hình trong trò chơi: 28

3.2.1 Sơ đồ của các màn hình: 28

3.2.2 Màn hình menu chính (Main Menu Screen): 29

3.2.2.1 Ý tưởng thiết kế: 29

3.2.2.2 Phân tích: 30

3.2.3 Màn hình cài đặt (Setting Screen): 30

3.2.3.1 Ý tưởng thiết kế: 30

3.2.3.2 Phân tích: 31

3.2.4 Màn hình chơi (Game Screen): 32

3.2.4.1 Ý tưởng thiết kế: 32

3.2.4.2 Phân tích: 33

3.2.5 Màn hình menu phụ (Sub Menu Screen): 34

3.2.5.1 Ý tưởng thiết kế: 34

3.2.5.2 Phân tích: 34

3.3 Hệ thống các đối tượng trong trò chơi: 35

3.3.1 Hệ thống quân cờ, bàn cờ, xúc xắc: 35

3.3.2 Hệ thống thẻ bài, hiệu ứng thẻ bài: 36

3.3.3 Hệ thống kĩ năng bị động: 38

3.3.4 Hệ thống tài nguyên và nâng cấp: 38

3.4 Hệ thống các giai đoạn trong trò chơi: 38

3.4.1 Giai đoạn bắt đầu (Start Phase): 38

3.4.2 Giai đoạn bắt đầu (Begin Phase): 39

3.4.3 Giai đoạn mua (Buy Phase): 39

3.4.4 Giai đoạn rút thẻ (Draw Phase): 40

3.4.5 Giai đoạn kích hoạt thẻ (Spell Active Phase): 42

3.4.6 Giai đoạn lăn xúc xắc (Roll Phase): 43

3.4.7 Giai đoạn di chuyển (Move Phase): 43

3.4.8 Giai đoạn kết thúc (End Phase): 43

3.5 Máy chủ (Server): 43

Trang 11

Chương 4: Thiết kế hệ thống 44

4.1 Tổng quan kiến trúc hệ thống: 44

4.1.1 Thiết kế chức năng Game: 44

4.1.1.1 Yêu cầu chức năng: 44

4.1.1.2 Đặc tả chức năng: 45

4.1.2 Biểu đồ lớp (Class diagrams): 52

4.1.2.1 Màn hình chính: 52

4.1.2.2 Màn hình phòng chờ: 53

4.1.2.3 Màn hình game: 54

4.1.2.4 Màn hình cài đặt: 55

4.1.2.5 Màn hình menu phụ: 56

Chương 5: Kết quả và hiện thực 57

5.1 Các màn hình trong game: 57

5.1.1 Màn hình menu chính (Main Menu Screen): 57

5.1.2 Màn hình phòng chờ (Lobby Screen): 61

5.1.3 Màn hình game (Game Screen): 65

5.1.4 Màn hình cài đặt (Setting Screen): 66

5.1.5 Màn hình Credit (Credit Screen): 67

5.2 Các giai đoạn trong trò chơi: 68

5.2.1 Giai đoạn bắt đầu (Start Phase): 68

5.2.2 Giai đoạn bắt đầu (Begin Phase): 69

5.2.3 Giai đoạn mua (Buy Phase): 70

5.2.4 Giai đoạn rút thẻ (Draw Phase): 71

5.2.5 Giai đoạn kích hoạt thẻ (Active Spell Phase): 72

5.2.6 Giai đoạn lăn xúc xắc (Roll Phase): 73

5.2.7 Giai đoạn di chuyển (Move Phase): 74

5.2.8 Giai đoạn bắt đầu (End Phase): 75

Chương 6: Tổng kết 76

6.1 Kết quả đạt được: 76

6.2 Ưu điểm: 76

6.3 Nhược điểm: 76

Trang 12

6.4 Hướng phát triển: 77

Trang 13

DANH MỤC HÌNH ẢNH

Hình 2.1: Quá trình một lượt chơi diễn ra 18

Hình 2.2: Hình minh hoạ cho mô hình Client - Server 19

Hình 3.1: Sơ đồ các màn hình trong trò chơi cá ngựa 29

Hình 3.2: Hình ảnh màn hình chính của game Skorecery – Nguồn: Medium 29

Hình 3.3: Bản dựng thô thiết kế từ ý tưởng của màn hình chính 30

Hình 3.4: Hình ảnh màn hình cài đặt của Runner Game – Nguồn: Petrochenko 31

Hình 3.5: Bản dựng thô thiết kế từ ý tưởng của màn hình cài đặt 32

Hình 3.6: Hình ảnh màn hình game – Nguồn: Pinterest 33

Hình 3.7: Bản dựng thô thiết kế từ ý tưởng của màn hình chơi 34

Hình 3.8: Hình ảnh màn hình menu phụ – Nguồn: Freepik 34

Hình 3.9: Bản dựng thô thiết kế từ ý tưởng của màn hình menu phụ 35

Hình 3.10: Hình ảnh minh hoạ của bàn cờ tiêu chuẩn 36

Hình 3.11: Hình ảnh minh hoạ của xúc xắc tiêu chuẩn 36

Hình 4.1: Hình ảnh biểu đồ Usecase (Usecase diagrams) 44

Hình 4.2: Hình ảnh biểu đồ lớp của màn hình chính (Class diagrams) 52

Hình 4.3: Hình ảnh biểu đồ lớp của màn hình phòng chờ (Class diagrams) 53

Hình 4.4: Hình ảnh biểu đồ lớp của màn hình game (Class diagrams) 54

Hình 4.5: Hình ảnh biểu đồ lớp của màn hình cài đặt (Class diagrams) 55

Hình 4.6: Hình ảnh biểu đồ lớp của màn hình menu phụ (Class diagrams) 56

Hình 4.7: Hình ảnh về skybox sử dụng trong đề tài Error! Bookmark not defined Hình 5.1: Hình ảnh màn hình chính 60

Hình 5.2: Hình ảnh màn hình phòng chờ 63

Hình 5.3: Hình ảnh màn hình phòng chờ khi người chơi sẵn sàng 64

Hình 5.4: Hình ảnh màn hình game 65

Hình 5.5: Hình ảnh màn hình cài đặt 66

Hình 5.6: Hình ảnh màn hình credit 67

Hình 5.7: Hình ảnh giai đoạn bắt đầu (Start Phase) 68

Hình 5.8: Hình ảnh giai đoạn bắt đầu (Begin Phase) 69

Hình 5.9: Hình ảnh giai đoạn mua (Buy Phase) 70

Hình 5.10: Hình ảnh giai đoạn rút thẻ (Draw Phase) 71

Hình 5.11: Hình ảnh giai đoạn kích hoạt thẻ (Active Spell Phase) 72

Hình 5.12: Hình ảnh giai đoạn lăn xúc xắc (Roll Phase) 73

Hình 5.13: Hình ảnh giai đoạn di chuyển (Move Phase) 74

Hình 5.14: Hình ảnh giai đoạn kết thúc (End Phase) 75

Trang 15

Chương 1: Giới Thiệu

1.1 Giới thiệu đề tài:

1.1.1 Lịch sử:

Trò chơi này bắt nguồn từ trò Pachisi của Ấn Độ, du nhập sang Mỹ trở thành Parcheesi

và phiên bản giản thể Ludo (cờ) Người Pháp gọi là petits chevaux (ngựa nhỏ), cuối cùng

du nhập sang Việt Nam và được gọi là Cờ cá ngựa Trò chơi này có thể từ hai đến bốn người chơi, diễn ra trên một bàn cờ hình vuông

1.1.2 Các thành phần của bộ cờ tiêu chuẩn:

Một bộ cờ cá ngựa thông thường sẽ gồm có 2 viên xúc xắc và 1 cờ hình vuông có sẽ sẵn các ô và họa tiết bên trong để phân chia vị trí chơi cũng như đặt quân cờ của các người chơi khi tham gia trò chơi cờ cá ngựa

Bên trong mỗi bộ cờ sẽ có 16 quân cờ, gồm có 4 quân màu đỏ, 4 quân màu xanh lá, 4 quân màu xanh dương và 4 quân màu vàng Tùy vào sở thích màu sắc của mỗi người mà chọn khi chơi, không bắt buộc ai phải chọn màu nào

1.1.3 Luật chơi tiêu chuẩn (Luật cờ cá ngựa của Việt Nam):

1.1.3.1 Luật về số lượng người tham gia:

Khi tìm hiểu về luật chơi trò chơi cờ cá ngựa thì người chơi cần biết số lượng người chơi được tham gia trò chơi là bao nhiêu Số người có thể chơi cờ cá ngựa tối đa là 4 và tối thiểu là 2

1.1.3.2 Nguyên tắc chơi:

Di chuyển quân cờ của mình đủ 1 vòng ngược chiều kim đồng hồ quanh bàn cờ để về đến đích Khả năng di chuyển nhanh hay chậm đều phụ thuộc vào lượt tung xúc xắc của mình Người nào có đủ bốn quân cờ về đến đích đầu tiên và đã xếp đúng vào các ô số 6, 5,

4 và 3 trong chuồng là người thắng cuộc Những người còn lại có thể chơi tiếp để tranh vị trí số 2 và số 3 Người về đích cuối cùng coi như thua cuộc

1.1.3.3 Luật chơi tiêu chuẩn:

Mỗi người sẽ có số quân cờ cùng màu bằng với đối phương (mỗi bên có thể có từ 1 đến 4 quân cờ; áp dụng cả trường hợp người chơi không đủ bốn người) và chọn phần ô vuông cùng màu với quân cờ của mình làm nơi bắt đầu đi Tất cả thống nhất để chọn ra một người gieo xúc xắc trước, người tiếp theo là người ngồi ngay cạnh người đó (có thể bên trái hoặc phải nhưng thứ tự này cố định suốt cuộc chơi)

- Tung xúc xắc: đến lượt ai thì người đó tung Xúc xắc được tung vào một cái

khay hoặc cái chén (bát) có độ nảy hoặc lắc xúc xắc trong cốc đi kèm Tuy nhiên, không được làm rơi xúc xắc ra ngoài vật đựng đó, nếu ra ngoài, lập tức mất lượt và kết quả việc gieo xúc xắc không được công nhận (người chơi thường gọi việc này là "thúi") Ai tung được kết quả là "nhất" (một) hoặc "lục" (sáu) khi chơi 1 xúc xắc; "nhất" (một) và "lục"

Trang 16

(sáu), cặp nhất (một), cặp nhị (hai), cặp tam (ba), cặp tứ (bốn), cặp ngũ (năm), cặp lục (sáu) khi chơi 2 xúc xắc thì được đi thêm lượt nữa cho đến khi ngoài kết quả trên

- Ra quân: là quyền đưa ra một quân cờ để tham gia di chuyển trên bàn cờ Để

có được quyền này thì kết quả của việc tung xúc xắc phải là 1 trong các kết quả có thể đi tiếp ở trên mới được ra một quân và quân này phải đứng ngay vị trí bắt đầu

- Di chuyển: một khi trên bàn cờ đã có ít nhất một quân cờ của mình được

tham gia di chuyển thì ta có thể căn cứ vào kết quả của việc tung xúc xắc để di chuyển nó Kết quả bao nhiêu thì đó là số bước phải di chuyển (không di chuyển nhiều hay ít hơn kết quả) Trong khi di chuyển có một số tình huống xảy ra:

+ Bị cản: một quân cờ bị cản tức là có một quân cờ khác (của mình hoặc của

đối phương) đứng trước nó mà khoảng cách bước đi giữa hai quân nhỏ hơn kết quả việc tung xúc xắc của mình Trường hợp này không được vượt qua mặt quân

cờ đứng trước hoặc di chuyển ngược lại mà phải chọn quân khác để đi Nếu không

có quân nào có thể di chuyển hợp lệ thì xem như mất lượt (bị tịt)

+ Đá: tức là làm cho quân cờ đối phương (đứng trước quân cờ mình) bị mất

quyền tham gia di chuyển trên bàn cờ Chỉ xảy ra khi khoảng cách giữa hai quân đúng bằng kết quả lượt tung xúc xắc của mình, khi ấy, quân mình đến thế chỗ cho quân đối phương (không áp dụng để đá quân cờ của mình) Người chơi có thể đá hoặc đi quân khác nếu có thể Trường hợp quân mình đứng ngay sát quân đối phương gọi là sát nút

- Về cửa chuồng: Khi quân cờ của mình di chuyển được một vòng (chỉ một

vòng mà thôi) quanh bàn cờ thì về đến cửa chuồng của mình Về đến cửa chuồng vẫn có thể bị đối phương đá Chỉ khi lên chuồng thì mới có thể loại trừ được điều này

- Vào chuồng: Khi quân của mình đang đứng trước cửa chuồng (không nhất

thiết vào từ cửa khi chơi 2 xúc xắc) và đang trên lượt đi của mình, người chơi có thể chọn lựa:

+ Vào chuồng theo kết quả của việc tung xúc xắc: Lúc này, ta phải xếp quân

tiến từng ô một kế tiếp ô ta đã đưa quân vào (ví dụ: vào ô số 2 nếu kết quả tung là

"hai", sau đó phải tiến đến ô số 3 rồi đến số 4, 5, 6) mà không quên di chuyển các quân còn lại để tiếp tục về chuồng Trường hợp mình tung số thấp hơn vị trí mình đứng ở chuồng thì không được đi quân có vị trí đó

+ Thầu mạ (tùy giao kèo): người nào đưa quân của mình lên thẳng ô thứ 6

trong chuồng đầu tiên được gọi là thầu mạ, phần thưởng tùy theo giao kèo sẽ được nhân đôi hoặc nhân ba

+ Sập hầm (tùy giao kèo): bất kỳ quân nào khi về đến chuồng mà lọt vào ô thứ

1 thì bị gọi là sập hầm, phải chung phạt cho cả làng

+ Bỏ qua đi quân cờ khác: Việc bỏ qua để đi quân cờ khác là việc mạo hiểm

nhưng nó là một chiến thuật, bởi vì chờ đến khi lượt tung xúc xắc của mình có kết quả cao ví dụ như "sáu" chẳng hạn, ta được quyền đi thẳng đến ô số 6 trong chuồng

để thầu mạ

Trang 17

1.1.3.4 Phân thắng bại:

Ai có đủ bốn quân cờ đã vào chuồng và xếp vào đúng bốn ô đầu là 6, 5, 4 và 3 đầu tiên là người chiến thắng Nếu cuộc đấu có 3 hoặc 4 người chơi thì những người còn lại có thể tiếp tục tham gia để phân định hạng nhì, hạng ba

- Tại Việt Nam đã có phiên bản game 2.5D trên Zingplay với trọng tâm gameplay là kết hợp giữa cờ tỷ phú và cờ cá ngựa Trọng tâm của game này đặt nặng vào vấn đề người chơi có thể lấy được càng nhiều tiền của người khác trước khi trò chơi kết thúc Gameplay nhanh do 1 lượt chơi chỉ có 7 giây để thực hiện các hoạt động và tỉnh giản một cách tối đa (chỉ còn 2 ngựa và số ô ở sân bị giảm đi gần một nửa) Thay đổi này của Zingplay phù hợp với việc chơi game trên điện thoại

- Ở đề tài lần này nhóm muốn có thêm nhiều cải tiến hơn so với gameplay của Zingplay để mang đến sự đa dạng hơn về lối chơi thay vì chỉ đánh về mảng tiền tệ và thời gian Dưới đây là một số cải tiến của đề tài lần này so với game của Zingplay

Trang 18

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

Từ nhưng lý do trên nhóm đề tài đã đề ra các mục tiêu để cải tiến nhiền hơn về mặt

đồ hoạ lẫn lối chơi cho cờ cá ngựa trong đề tài lần này

- Có thêm các cải tiến và thay đổi lại luật chơi để đa dạng với về luật chơi Ở đây nhóm đề tài bổ sung thêm các yếu tố như:

+ Ngựa có thêm các chỉ số

+ Bổ sung thêm thẻ bài và kĩ năng bị động

+ Có thêm các loại kinh thế như thu nhập và tiền tệ

+ Trong một lượt chơi phải chia các giai đoạn rõ ràng

+ Trong quá trình chơi game có thể nâng cấp ngựa trong lượt chơi của mình

- Đồ hoạ 3D mạng lại những hình ảnh đẹp hơn, sống động hơn thứ mà với 2D và 2.5D khó có thể thực hiện được một cách rõ ràng Những yếu tố đó là:

+ Ánh sáng, đổ bóng

+ Nền 3D

- Ngoài ra, các yếu tố phụ phải có trong một game hoàn chỉnh như âm thanh, giao tiếp

ổn định giữa các máy chơi game với nhau, …

Trang 19

Chương 2: Cơ sở lý thuyết

2.1 Luật chơi của đề tài:

2.1.1 Giới thiệu:

Về cơ bản luật chơi của bộ cờ tiêu chuẩn vẫn được áp dụng trong đề tài nhưng nhằm

đa dạng hoá về lối chơi, nhóm đã thêm một số thành phần khác

- Các thành phần của bộ cờ tiêu chuẩn:

+ Bàn cờ

+ 16 quân cờ (chia làm 4 nhóm mỗi nhóm 4 quân, mỗi nhóm đều khác màu nhau và các quân cờ trong 1 nhóm sẽ cùng màu với nhau)

+ 1 xúc xắc

- Các thành phần được thêm vào:

+ Thẻ bài (gồm 2 loại là bị động (Passive Spell) và chủ động (Active Spell)) + Tiền tệ (bao gồm thu nhập và tiền, dùng để mua các nâng cấp cho quân cờ) + Quân cờ sẽ có các chỉ số như sát thương, máu, phòng thủ vật lý, phòng thủ phép Ngoài ra các thẻ bài sẽ gây ra các hiệu ứng có lợi hoặc bất lợi lên ngựa gây ảnh hưởng đến các chỉ số trên

+ Cửa hàng dùng để mua các nâng cấp cho ngựa

2.1.2 Các thay đổi trong quá trình chơi:

Trong quá trình chơi của người chơi sẽ có nhiều giai đoạn xử lí hơn thay vì chỉ lắc xúc xắc và di chuyển ngựa (Roll phase và Moving phase) Các giai đoạn được bổ sung thêm bao gồm:

+ Start phase: Các hiệu ứng bất lợi sẽ được kích hoạt trên các ngựa

+ Begin phase: Các Passvice Spell sẽ được kích hoạt tại giai đoạn này

+ Buy phase: Các nâng cấp ngựa sẽ được mua ở giai đoạn này

+ Draw phase: Các Active Spell sẽ được rút ở giai đoạn này

+ Active spell phase: Các Active Spell sẽ được sử dụng ở giai đoạn này

+ Roll phase: Giai đoạn này dùng để lắc xúc xắc

+ Moving phase: Giải đoạn này dùng để di chuyển ngựa

+ End phase: Các hiệu ứng có lợi sẽ được kích hoạt trên các ngựa

Các phase sẽ được giải thích rõ ràng ở phần phân tích hệ thống

Trang 20

Hình 2.1: Quá trình một lượt chơi diễn ra

2.1.3 Phân thắng bại:

Ai có đủ bốn quân cờ đã vào chuồng và xếp vào đúng bốn ô đầu là 6, 5, 4 và 3 đầu tiên là người chiến thắng Ba người còn lại được coi là thua cuộc và trò chơi kết thúc

Trang 21

2.2 Các công nghệ được sử dụng trong đề tài:

2.2.1 Mô hình phát triển:

Chương trình trò chơi cá ngựa hiện được thực hiện theo mô hình Client - Server là

mô hình mạng máy tính gồm có 2 thành phần chính đó là máy khách (client) và máy chủ (server) Server chính là nơi giúp lưu trữ tài nguyên cũng như cài đặt các chương trình dịch

vụ theo đúng như yêu cầu của client Ngược lại, Client bao gồm máy tính cũng như các loại thiết bị điện tử nói chung sẽ tiến hành gửi yêu cầu đến server

Máy tính đóng vai trò là máy khách – Client: Với vai trò là máy khách, chúng sẽ không cung cấp tài nguyên đến các máy tính khác mà chỉ sử dụng tài nguyên được cung cấp từ máy chủ Một client trong mô hình này có thể là một server cho mô hình khác, tùy thuộc vào nhu cầu sử dụng của người dùng

Máy tính đóng vai trò là máy chủ – Server: Là máy tính có khả năng cung cấp tài nguyên và các dịch vụ đến các máy khách khác trong hệ thống mạng Server đóng vai trò

hỗ trợ cho các hoạt động trên máy khách client diễn ra hiệu quả hơn

Hình 2.2: Hình minh hoạ cho mô hình Client - Server

Nguyên tắc hoạt động của mô hình Client - Server, server chấp nhận tất cả các yêu cầu hợp lệ từ mọi nơi khác nhau trên Internet, sau đó trả kết quả về máy tính đã gửi yêu cầu

đó Máy tính được coi là máy khách khi chúng làm nhiệm vụ gửi yêu cầu đến các máy chủ

và đợi câu trả lời được gửi về Để máy khách và máy chủ có thể giao tiếp được với nhau thì giữa chúng phải có một chuẩn nhất định, và chuẩn đó được gọi là giao thức Một số giao thức được sử dụng phổ biến hiện nay như: HTTPS, TCP/IP, FTP,

Trang 22

Nếu máy khách muốn lấy được thông tin từ máy chủ, chúng phải tuân theo một giao thức mà máy chủ đó đưa ra Nếu yêu cầu đó được chấp nhận thì máy chủ sẽ thu thập thông tin và trả về kết quả cho máy khách yêu cầu Bởi vì Server - máy chủ luôn luôn trong trạng thái sẵn sàng để nhận request từ client nên chỉ cần client gửi yêu cầu tín hiệu và chấp nhận yêu cầu đó thì server sẽ trả kết quả về phía client trong thời gian ngắn nhất

- Ưu điểm:

+ Tập trung: Ưu điểm đầu tiên của mô hình Client Server kiểu mạng khách chủ

đó chính là khả năng kiểm soát tập trung (Centralization) đã được tích hợp sẵn Theo như mô hình này thì tất cả mọi thông tin cần thiết đều sẽ được đặt ở một vị trí duy nhất Đây là một ưu điểm vô cùng hữu ích được những người quản trị viên mạng yêu thích bởi vì họ có thể toàn quyền quản lý cũng như điều hành mọi việc Tính năng này giúp cho mọi sự cố trong mạng đều sẽ được giải quyết ở cùng một nơi thống nhất Đồng thời, việc cập nhật cơ sở tài nguyên, dữ liệu cũng sẽ dễ dàng hơn rất nhiều

+ Bảo mật: Trong mạng Client Server, tất cả các dữ liệu đều sẽ được bảo vệ một

cách tối đa nhờ vào hệ thống kiến trúc tập trung của mạng Thông qua đó, nó sẽ giúp người dùng kiểm soát truy cập để chỉ có những ai được cấp quyền truy cập thì mới được thực hiện các thao tác cần thiết Muốn làm như vậy, chúng ta cần phải áp đặt thông tin đăng nhập cũng như Username hay Password Bên cạnh đó, nếu dữ liệu của chúng ta bị mất thì các file sẽ được khôi phục một cách vô cùng

dễ dàng chỉ từ một bản sao lưu duy nhất mà thôi

+ Khả năng mở rộng: Mô hình mạng kết nối Client Server có khả năng mở rộng

vô cùng tốt Chỉ cần người dùng cần sử dụng bất cứ lúc nào thì họ cũng có thể tăng được số lượng tài nguyên của mình Ví dụ như số Client hoặc Server Nhờ đó mà chúng ta có thể tăng kích thước của Server một cách dễ dàng mà không bị gián đoạn nhiều

+ Khả năng truy cập: Hoàn toàn không hề có sự phân biệt giữa các vị trí hay nền

tảng với nhau Tất cả mọi Client đều có khả năng đăng nhập được vào hệ thống mạng máy tính Điều này sẽ giúp cho tất cả các nhân viên đều có thể truy cập thông tin của công ty một cách dễ dàng mà không cần phải dùng một terminal mode hoặc một bộ xử lý nào khác

- Nhược điểm:

+ Tắc nghẽn lưu lượng: Nói về nhược điểm lớn nhất của mô hình mạng Client

Server đó chính là tắc nghẽn lưu lượng Trong trường hợp có quá nhiều Client tạo request từ cùng một Server thì nó có thể sẽ làm cho kết nối chậm hơn Trong trường hợp xấu nhất còn có thể xuất hiện hiện tượng crash Khi một server bị quá tải thì

sẽ tạo ra nhiều vấn đề khi truy cập thông tin

Trang 23

+ Độ bền: Client Server là mạng tập trung chính vì thế, khi Server chính xảy ra sự

cố hoặc bị nhiễu thì cũng đồng nghĩa với việc toàn bộ hệ thống mạng sẽ bị gián đoạn Như vậy, chúng ta cần chú ý đó là mạng thiếu tính ổn định và độ bền Chúng

ta cần chú ý khi thực hiện

+ Chi phí: Chi phí được sử dụng để thiết lập và bảo trì Server trong Client Server

thường sẽ khá cao Lý do là vì các hệ thống mạng có sức mạnh rất lớn cũng đồng nghĩa với việc giá để chi cho việc này là rất đắt Chính vì vậy, không phải ai cũng

có khả năng chỉ trả và sử dụng

+ Bảo trì: Khi các Server thực hiện triển khai để làm việc thì nó cũng sẽ hoạt động

một cách không ngừng nghỉ Điều này đồng nghĩa với việc chúng ta cần phải quan tâm đến việc bảo trì hệ thống đúng mức Khi xảy ra bất cứ vấn đề gì cũng cần phải giải quyết ngay lập tức Vậy nên, cần phải có một nhà quản lý mạng chuyên biệt

để tiến hành duy trì hoạt động của Server khi chúng được đưa vào và sử dụng

+ Tài nguyên: Một điều mà chúng ta rất cần phải lưu ý đó chính là không phải tất

cả tài nguyên hiện có trên Server đều sử dụng được Ví dụ một cách đơn giản đó chính là chúng ta không thể in trực tiếp được tài liệu từ trên web cũng như tiến hành chỉnh sửa bất kỳ một thông tin nào trên ổ cứng của Client cả

- Từ những ưu nhược điểm trên, vì mục tiêu đề tài yêu cầu phải đảm bảo kết nối giữa các máy chơi game với nhau và với mô hình này thì các thông tin cần thiết tập trung ở máy chủ Máy chủ đảm bảo các kết nối của các máy khách nên với mô hình này phù hợp với đề tài của nhóm

Cha đẻ của OpenGL là công ty Silicon Graphics Inc (SGI), với hai phương ngôn khác nhau bao gồm: Microsoft OpenGL để sử dụng cho Windows NT và Cosmo OpenGL do SGI tạo ra

Không gian trong OpenGL được miêu tả thông qua hình học xạ ảnh Điều đó có nghĩa

là một điểm trong không gian này có tới 4 tọa độ khác nhau Với cách thể hiện trong không gian như vậy, hệ thống dễ dàng xử lý được các điểm vô tận Nhờ đó, mã nguồn của nhiều ứng dụng khi sử dụng OpenGL đã được lược giản và đơn giản hóa đi rất nhiều so với trước

Trang 24

Theo các chuyên gia đánh giá, OpenGL giống như một ngôn ngữ đồ họa độc lập và

có khả năng tương thích với mọi nền tảng, mọi kiểu máy tính, thậm chí cả trên những máy tính không hỗ trợ đồ họa cao cấp Chính vì thế mà nó được sử dụng vô cùng phổ biến Không chỉ được sử dụng rộng rãi trong đồ họa 3 chiều, OpenGL còn được sử dụng

cả trên đồ họa 2 chiều Với khoảng hơn 250 hàm đặc biệt trong giao diện lập trình ứng dụng, người dùng có thể ứng dụng để vẽ các cảnh vô cùng khó nhằn chỉ bằng những hàm

cơ bản Nếu chúng ta là một dân chuyên về game hoặc sử dụng các phần mềm đồ họa như AutoCad hoặc CorelDRAW, hẳn đã biết những ý nghĩa mà OpenGL đem lại không chỉ bởi khả năng ứng dụng trong game, thực tế ảo, khoa học, mà còn rất nhiều lĩnh vực CNTT khác

2.2.2.1.2 Cách thức hoạt động:

OpenGL sử dụng tính toán trực tiếp trên GPU - phần cứng xử lý đồ họa cho máy tính

và sử dụng dấu phảy động (floating points)

CPU (Central Processing Unit) là chip xử lý của máy tính, còn GPU (Graphics Processing Unit) là chip xử lý đồ họa Chip xử lý đồ họa này giúp cho CPU giảm thiểu các công việc nặng nhọc: nó có thể xử lý ảnh trước khi hiện ra màn hình Cụ thể hơn, thay vì tính toán trên CPU, GPU nhanh hơn rất rất nhiều với các số thực so với CPU Đây là lý do

cơ bản lý giải lý do tại sao các trò chơi 3D chạy nhanh hơn khi có card đồ họa

Một vài phần mềm khiến người dùng đặt ra câu hỏi: Có nên dùng OpenGL hay không? Điều này phụ thuộc vào việc chúng ta có lựa chọn việc xử lý sẽ ở trên GPU hay không OpenGL không hoàn toàn làm việc với GPU mà chỉ những thao tác xử lý ảnh và vài thứ khác

OpenGL cho chúng ta rất nhiều chức năng để lưu trữ ảnh, dữ liệu, thông tin trong một định dạng cụ thể, đó cũng chính là lí do mà OpenGL phụ thuộc vào phần cứng Vậy nên nếu phần cứng không hỗ trợ OpenGL, chúng ta không thể sử dụng nó Tuy nhiên, trong thực tế, tât cả các chip đồ họa hiện tại đều hỗ trợ OpenGL, vì vậy chúng ta có thể sử dụng OpenGL với rất nhiều ngôn ngữ và thiết bị, thậm chí với Microsoft Windows

OpenGL là thư viện đồ họa khá ngắn gọn và súc tích, còn những gì chúng ta thấy trong các phần mềm xử lý 3D chuyên nghiệp lại là quá trình hoạt động cực kỳ phức tạp trên OpenGL Logic của OpenGL bao gồm:

- Primitives (Các đối tượng cơ bản)

- Buffers (Lưu vào bộ đệm)

- Rasterize (Xử lý đồ họa)

OpenGL hoạt động xoay quanh 3 khái niệm này Mỗi khái niệm ở trên độc lập nhau

và để cả 3 có thể cùng nhau tạo ra các hiệu ứng 3D đẹp mắt, điều này hoàn toàn nằm ở thành công của các nhà thiết kế

Trang 25

2.2.2.1.3 Lý do chọn OpenGL:

- Với yêu cầu của đề tài lần này là làm game mang đồ hoạ 3D, OpenGL có thể đáp ứng được điều đó Có rất nhiều GameEngine mạnh mẽ như Unity, Unreal, Godot, Cocos3dx,… có thể đáp ứng điều này một cách dễ dàng Nhưng ở đây OpenGL có thể kiểm soát được các yếu tố liên quan đến 3D nhờ các bước thưc thi rõ ràng và thông qua đường ống đồ hoạ một cách dễ dàng Qua đó đơn giản hơn về mặt thực hiện và tối ưu hơn về mặt

đồ hoạ khi ép phần cứng hỗ trợ tối đa các chức năng được OpenGL sử dụng Không những vậy, những GameEngine giới hạn chức năng khi sử dụng bản miễn phí gây ra rất nhiều bất cập cho đề tài này

- Như vậy, để tạo ra một game hoàn chỉnh không cần phải sử dụng các GameEngine mạnh mẽ với yêu cầu tạo ra được hình ảnh 3D thì OpenGL đã cung cấp đầy đủ các chức năng đó Và đề tài lần này sử dụng OpenGL là điều phù hợp với mục tiều trên

2.2.2.1.4 Một số thư viện hỗ trợ:

2.2.2.1.4.1 GLFW:

GLFW là một thư viện mã nguồn mở, đa nền tảng để phát triển OpenGL, OpenGL ES

và Vulkan trên máy tính để bàn Nó cung cấp một API đơn giản để tạo cửa sổ, ngữ cảnh và

bề mặt, nhận đầu vào và sự kiện

- Cung cấp cho chúng ta một cửa sổ và ngữ cảnh OpenGL chỉ với hai lệnh gọi hàm

- Hỗ trợ OpenGL, OpenGL ES, Vulkan và các tùy chọn, cờ và tiện ích mở rộng liên quan

- Hỗ trợ nhiều cửa sổ, nhiều màn hình, đường dốc gamma và DPI cao

- Hỗ trợ bàn phím, chuột, gamepad, nhập sự kiện thời gian và cửa sổ, thông qua bỏ phiếu hoặc gọi lại

- Đi kèm với một hướng dẫn, hướng dẫn và tài liệu tham khảo, các ví dụ và chương trình thử nghiệm

- Nguồn mở với giấy phép được OSI chứng nhận cho phép sử dụng thương mại

- Quyền truy cập vào các đối tượng gốc và các tùy chọn thời gian biên dịch cho các tính năng cụ thể của nền tảng

- Các ràng buộc được cộng đồng duy trì cho nhiều ngôn ngữ khác nhau

Như vậy, để sử dụng OpenGL trong đề tài lần này nhóm đã sử dụng framework của OpenGL Để có được cửa sổ để có thể hiện thị trên một hay nhiều màn hình, GLFW cung cấp điều đó Ngoài ra, các API của OpenGL được cung cấp gần như đầy đủ khi sử dụng GLFW

2.2.2.1.4.2 GLAD:

Glad là khá giống với glLoadGen, nó tạo ra một trình tải cho nhu cầu chính xác của chúng ta dựa trên các thông số kỹ thuật chính thức từ Khronos SVN Điều này có nghĩa là chúng luôn được cập nhật! Nó được viết theo cách mà chúng ta có thể dễ dàng mở rộng nó sang các ngôn ngữ khác (ví dụ: tại ngày viết bài này, có 4 phần phụ trợ tạo mã khác nhau)

Trang 26

Có thể sử dụng trang web Glad để tạo bộ tải cho nhu cầu của mình, tải xuống và sử dụng nó trong dự án của chúng ta Một phương pháp khác để sử dụng Glad là sao chép / tải xuống kho lưu trữ và tạo trình tải của riêng chúng ta Bản thân công cụ này khá dễ sử dụng

và hoạt động với bất kỳ phiên bản Python nào trên 2.6, chúng ta cũng có thể đưa mã nguồn trực tiếp vào dự án CMake của mình

Như đã đề cập ở trên GLFW chỉ cung cấp gần như đầy đủ các API (do khi OpenGL lên các phiên bản mới hơn thì các API mới có thể chưa được cập nhật kịp thời) Nếu như nhóm muốn sử dụng các API mới mạnh mẽ hơn thì GLAD cung cấp điều đó Với từng phiển bản OpenGL cụ thể GLAD cung cấp đầy đủ các API mà GLFW còn thiếu

dữ liệu nhị phân (dưới dạng chuỗi được mã hóa base64 trong tệp gltf hoặc dưới dạng mảng byte thô trong tệp glb) Một tiêu chuẩn mở được phát triển và duy trì bởi Khronos Group,

nó hỗ trợ hình học mô hình 3D, giao diện, phân cấp đồ thị cảnh và hoạt ảnh Nó được thiết

kế để trở thành một định dạng được sắp xếp hợp lý, có thể tương tác để phân phối nội dung 3D, đồng thời giảm thiểu kích thước tệp và quá trình xử lý thời gian chạy của các ứng dụng

Do đó, những người tạo ra nó đã mô tả nó là "JPEG của 3D."

Một yếu tố không thể thiếu trong game 3D đó là các vật thể 3D như vậy để có các vật thể này trong game thì nhóm đề tài cần file lưu trữ và bộ đọc file này để có thể render ra màn hình glTF cung cấp điều đó Như vậy, để có những hình ảnh 3D sát gốc mà không bị giảm chất lượng khi xuất ra màn hình sử dụng glTF mang lại những điều đó

2.2.2.2 IrrKlang:

irrKlang là một API cấp cao mạnh mẽ để phát lại âm thanh trong các ứng dụng 3D và 2D như trò chơi, hình ảnh trực quan khoa học và các ứng dụng đa phương tiện irrKlang miễn phí cho mục đích sử dụng phi thương mại Ngoài ra còn có một phiên bản nâng cao của irrKlang có tên là 'irrKlang pro' có thể được mua với một khoản phí cấp phép nhỏ và

có thể được sử dụng trong các sản phẩm thương mại

irrKlang hiện đang phát lại các định dạng tệp sau:

- RIFF WAVE (*.wav)

- Ogg Vorbis (*.ogg)

- MPEG-1 Audio Layer 3 (*.mp3)

- Free Lossless Audio Codec (*.flac)

- Amiga Modules (*.mod)

Trang 27

Có thể dễ dàng mở rộng các định dạng tệp có thể phát bằng các plugin

irrKlang được tích hợp hỗ trợ âm thanh 3D trên tất cả các nền tảng và trình điều khiển

âm thanh Nó được thiết kế để sử dụng trong các trò chơi 3D, vì vậy nó rất hiệu quả và không sử dụng nhiều thời gian của CPU Ảnh chụp màn hình bên dưới cho thấy irrKlang đang chạy bên trong irrEdit, một trình chỉnh sửa thế giới 3D

irrKlang có thể phát các âm thanh đệm ngắn (ví dụ: tiếng súng) cũng như các âm thanh lớn, được truyền trực tuyến (ví dụ: radio mp3) ở chế độ 3D Việc chuyển đổi sang âm thanh đơn âm là không cần thiết ở đây, irrKlang có thể thực hiện việc này một cách nhanh chóng Các tính năng 3D bổ sung là:

Âm thanh 3D nhanh trên phần cứng cấp thấp: Vì một số phần cứng âm thanh cấp thấp không thể phát âm thanh 3D mà không làm giảm hiệu suất đáng kể hoặc một số không hỗ trợ bộ đệm âm thanh 3D, irrKlang có tích hợp trình giả lập bộ đệm âm thanh 3D hiệu suất cao, tạo ra trải nghiệm âm thanh gần như là một bộ đệm âm thanh 3D thực

Nhiều mô hình rolloff: irrKlang hỗ trợ rolloff tuyến tính cũng như logarit

Tất nhiên, tất cả âm thanh 3D có thể được kết hợp với các hiệu ứng âm thanh có sẵn như tiếng vọng và hồi âm

Một công cụ âm thanh 2D và 3D đa nền tảng và thư viện âm thanh, có thể sử dụng trong C ++ và tất cả các ngôn ngữ NET (C #, VisualBasic.NET, v.v.) và cung cấp các tính năng hữu ích như nhiều bộ giải mã định dạng tệp tích hợp (wav, ogg, mp3 , mod, xm, it, s3m ), công cụ phát trực tuyến tinh vi, khả năng đọc âm thanh có thể mở rộng, chế độ đa luồng và đơn, giả lập âm thanh 3D cho phần cứng cấp thấp, hệ thống plugin, nhiều mô hình rolloff và hơn thế nữa Tất cả điều này có thể được truy cập thông qua một API cực kỳ đơn giản

Các tính năng hiện tại của irrKlang là:

- Phát nhiều định dạng tệp, WAV, MP3, OGG, MOD, XM, IT, S3M

- Phát lại âm thanh được đệm và phát trực tuyến, ở định dạng 2D và 3D

- irrKlang độc lập với nền tảng: irrKlang chạy trên một số hệ điều hành bao gồm Windows 95, 98, NT, 2000, XP, Vista, 7, 8, 10, Linux, Mac OS X (Intel cũng như

Trang 28

- API đơn giản đáng kinh ngạc

- Quản lý tài nguyên cấp cao và tự động phát hiện: Công cụ có thể làm mọi thứ cho chúng ta Chỉ cần yêu cầu nó phát một tệp âm thanh và nó sẽ tự động tải, lưu vào

bộ nhớ cache và / hoặc phát trực tuyến dữ liệu âm thanh cho chúng ta, tùy thuộc vào điều gì là tốt nhất cho hiệu suất và mức sử dụng bộ nhớ Nhưng nếu chúng ta muốn chỉ định cách động cơ sẽ xử lý điều này, chúng ta cũng có thể làm điều này

- Công cụ âm thanh 3D tinh vi được thiết kế để sử dụng trong trò chơi

- Có thể mở rộng: Khả năng viết trình đọc / giải mã định dạng tệp riêng để mở rộng công cụ với nó

- Các hiệu ứng âm thanh như hiệu ứng doppler cho âm thanh 3D hoặc các hiệu ứng 2D như tiếng vọng, hồi âm, biến dạng, vỡ tiếng và hơn thế nữa

- Tìm kiếm và truy xuất vị trí chính xác trong các luồng và âm thanh được đệm

- Hệ thống plugin: Chỉ cần sao chép các plugin được tạo bên ngoài vào nơi mà irrKlang đang được sử dụng và mở rộng chức năng của nó với nó

- Hoạt động với nhiều trình biên dịch bao gồm Microsofts VisualStudio 6.0 ™, VisualStudio.NET 7.0 - 2017 và với g ++ 3 - 5 hoặc mới hơn, đồng thời hỗ trợ Code :: Blocks và XCode

- Chế độ đa luồng / đơn luồng: Công cụ có thể chạy cả đa luồng hoặc đơn luồng trong cùng một luồng như ứng dụng của chúng ta, để có thể gỡ lỗi ứng dụng của chúng ta dễ dàng hơn chẳng hạn

- Thao tác đầu ra âm thanh mức độ thấp: Khả năng thay đổi bất kỳ khía cạnh nào của âm thanh đang phát như lia máy, âm lượng và vị trí 3d

- Sự kiện âm thanh gọi lại

- Tất nhiên, chức năng đọc tệp có thể được ghi đè bởi người dùng, ví dụ, có thể cho phép irrKlang đọc từ các kho lưu trữ tệp của riêng mình

Với mục tiêu của đề tài phải có những yếu tố phụ như âm thanh để làm sống động hơn cho tự game này Irrklang cung cấp đầy đủ âm thanh chức năng này cũng như API của API này dễ sử dụng và có đáp ứng được nhiều mục tiêu về âm thanh mà đề tài yêu cầu

Vì OpenGL chỉ có thể render đồ hoạ như vậy để có chữ ở trên màn hình game của chúng ta thì phải làm sao? Thư viện FreeType đáp ứng cũng như trả lời câu hỏi trên của nhóm Như vậy, với thư viện này nhóm có thể sử dụng các kiểu chữ tuỳ thích mà không

Trang 29

2.2.3 Server:

2.2.3.1 Windows Socket API (WinSock2):

WinSock là một loại giao diện lập trình ứng dụng (API) được sử dụng để giao tiếp giữa phần mềm mạng Windows và các dịch vụ mạng Nó chủ yếu dựa trên Giao thức điều khiển truyền / Giao thức Internet (TCP / IP) và bắt nguồn từ giao diện ổ cắm Berkeley Unix Winsock cho phép các chương trình và ứng dụng Windows kết nối với internet thông qua TCP / IP

Dưới đây là một số tính năng quan trọng nhất của nó:

- Winsock tồn tại như một lớp liên kết dữ liệu và còn được gọi là wonock.dll trong máy tính của chúng tôi Đó là một liên kết mở rộng thư viện động

- Winsock được cài đặt sẵn trong mọi hệ điều hành Microsoft Windows và cũng có sẵn cho macOS

- API Windows Socket bao gồm hai giao diện Đầu tiên là một API dành cho các nhà phát triển ứng dụng để phát triển các ứng dụng hỗ trợ mạng Ngược lại, API thứ hai là một giao diện của nhà cung cấp dịch vụ được sử dụng để thiết lập các giao thức mạng mới

Ở đề tài này nhóm sử dụng mô hình Client-Server vậy thư viện đảm báo kết nối giữ Client và Server Vì đây là một window app nên việc sử dụng các thư viện socket khác là không cần thiết vì Winsock2 đã được Win32 và WinUser hỗ trợ một cách tối đa các chức năng và điều này đảm bảo kết nối giữa Client và Server luôn được đảm bảo khi sử dụng hệ điều hành Window

Trang 30

Chương 3: Phân tích hệ thống

3.1 Phân tích yêu cầu của đề tài:

Đề tài sẽ tập trung vào các yêu cầu sau khi thiết kế trò chơi cờ cá ngựa:

- Hệ thống sẽ hỗ trợ bốn người (có thể là người chơi hoặc máy) chơi trực tuyến trong một trận cờ cá ngựa

- Tất cả luật được đề cập ở chương 2 sẽ được áp dụng ở đây

- Mỗi người chơi sẽ được chọn màu cho quân cờ của mình

- Cả bốn người sẽ lần lượt chơi theo thứ tự của mình Thứ tự chơi sẽ là vị trí của họ

ở phòng chờ

- Ở mỗi lượt chơi sẽ có thời gian đếm ngược nếu hết thời gian thì các phase sau kể

cả phase hiện tại sẽ bị huỷ và lượt chơi sẽ chuyển sang cho người chơi tiếp theo

- Người chơi không thể hủy hoặc quay lại các bước di chuyển trước của họ

- Mỗi bên sẽ có bốn con ngựa ở trong chuồng và không có thẻ bài nào trong tay

- Mỗi người chơi sẽ chỉ có một kĩ năng bị động và sẽ được chọn ở phòng chờ

- Trò chơi sẽ kết thúc nếu có người đầu tiên đưa bốn con ngựa về đích đúng theo luật tiêu chuẩn

3.2 Hệ thống các màn hình trong trò chơi:

3.2.1 Sơ đồ của các màn hình:

Khi bắt đầu chương trình thì thứ tự xuất hiện của các màn hình sẽ là:

- Màn hình menu chính (Main Menu Screen)

- Màn hình cài đặt (Setting Screen) hoặc màn hình chơi (Game Screen)

- Màn hình menu phu (Sub Menu Screen)

Trang 31

Hình 3.1: Sơ đồ các màn hình trong trò chơi cá ngựa

3.2.2 Màn hình menu chính (Main Menu Screen):

3.2.2.1 Ý tưởng thiết kế:

Bất kì tựa game nào cũng cần phải có màn hình menu chính để có thể chuẩn bị trước khi vào game cũng như có thể chuyển sang các màn hình khác nhau nhằm giúp người chơi

đa dạng các tuỳ chỉnh của bản thân

Màn hình này sẽ tự động xuất hiện và xuất hiện đầu tiên khi người chơi bắt đầu trò chơi Đối với trò chơi các ngựa ở đề tài này màn hình chính sẽ phải có các lựa chọn như:

- Play (dùng để chuyển người chơi sang Game Screen)

- Setting (dùng để chuyển người chơi sang Setting Screen)

- Exit (dùng để Thoát khỏi trò chơi)

Một số thiết kế cho màn hình chính:

Hình 3.2: Hình ảnh màn hình chính của game Skorecery – Nguồn: Medium

Trang 32

3.2.2.2 Phân tích:

Một màn hình chính sẽ bao gồm:

- Title Game sẽ được thiết kế bằng cách dán hình ảnh Logo lên trên cùng

- Các nút bấm (button) để người chơi tương tác để chuyển sáng screen khác

- Một số hint để người chơi có thể chuyển qua lại giữ các nút bấm này

- Hình ảnh của màn hình

Hình 3.3: Bản dựng thô thiết kế từ ý tưởng của màn hình chính

3.2.3 Màn hình cài đặt (Setting Screen):

- Thanh điều chỉnh âm nhạc nền (Music Bar)

- Thanh điều chỉnh âm lượng của game (Sound Bar)

- Các tuỳ chỉnh cài đặt người dùng

Một số thiết kế cho màn hình cài đặt:

Trang 33

Hình 3.4: Hình ảnh màn hình cài đặt của Runner Game – Nguồn: Olga Petrochenko

3.2.3.2 Phân tích:

Một màn hình chính sẽ bao gồm:

- Nút điều chỉnh âm lượng nhạc nền

- Nút điều chỉnh âm lượng game

- Nút điều chỉnh thiết đặt FPS

Trang 34

Hình 3.5: Bản dựng thô thiết kế từ ý tưởng của màn hình cài đặt

3.2.4 Màn hình chơi (Game Screen):

Trang 35

Hình 3.6: Hình ảnh màn hình game – Nguồn: Pinterest

Trang 36

Hình 3.7: Bản dựng thô thiết kế từ ý tưởng của màn hình chơi

3.2.5 Màn hình menu phụ (Sub Menu Screen):

3.2.5.1 Ý tưởng thiết kế:

Màn hình menu phụ sẽ chỉ xuất hiện khi người chơi đang ở trong game screen Màn hình này giúp người chơi có thể mở màn hình cài đặt khi đang chơi hoặc thoát trận đấu Màn hình menu phụ sẽ bao gồm:

Trang 37

- Một nút Resume

Hình 3.9: Bản dựng thô thiết kế từ ý tưởng của màn hình menu phụ

3.3 Hệ thống các đối tượng trong trò chơi:

Bàn cờ ở trong game được xây dựng đúng với bàn cờ tiêu chuẩn của Việt Nam và không có sự thay đổi nào ở trong đề tài này

Trang 38

Hình 3.10: Hình ảnh minh hoạ của bàn cờ tiêu chuẩn

Xúc xắc cũng sẽ được giữ nguyên và không có sự thay đổi nào với xúc xắc thực tế vẫn có sáu mặt và được đánh dấu chấm tròn với số lượng từ một đến sáu cho cả sáu mặt

Hình 3.11: Hình ảnh minh hoạ của xúc xắc tiêu chuẩn

3.3.2 Hệ thống thẻ bài, hiệu ứng thẻ bài:

Trong trò chơi, ở mỗi lượt người chơi sẽ được rút thẻ bài và số lượng thẻ tài tích trữ

là không giới hạn Các thẻ bài được chia làm 2 loại là thẻ bài gây sát thương và các thẻ bài gây hiệu ứng

Trang 39

Các hiệu ứng của thẻ bài có thể là:

Trang 40

3.3.4 Hệ thống tài nguyên và nâng cấp:

Hệ thống tài nguyên được sử dụng duy nhất ở đây là tiền tệ (coin) và thu nhập (income) Cứ mỗi lượt lương income sẽ công vào lượng tiền tệ hiện có khi bắt đầu lượt chơi của người chơi

Tiền tệ được dùng để mua các nâng cấp ở Buy Phase dùng để nâng cấp cho ngựa hoặc mua các hiệu ứng đặc biệt mà chỉ có trong cửa hàng Một lượt người chơi có thể mua số lượng không giới hạn các nâng cấp

Lượng thu nhập của người chơi là không giảm và sẽ tăng càng nhiều nếu người chơi hành động càng nhiều Lượng thu nhập sẽ được cộng dồn lại chứ không reset về mức 0 ở mỗi lượt chơi

Các nâng cấp trong cửa hàng chỉ có thể mở và mua ở trong Buy Phase Để cân bằng thì giá của từng nâng cấp sẽ tăng sau mỗi lượt mua

3.4 Hệ thống các giai đoạn trong trò chơi:

3.4.1 Giai đoạn bắt đầu (Start Phase):

Trong game, đây là giai đoạn bắt đầu lượt chơi của người chơi Ở giai đoạn này máy tính sẽ tính toán các trạng thái bất lợi mà ngựa đồng minh đang có Một số hiệu ứng bất lợi được tính toán trong giai đoạn này như choáng (Stun), độc (Poison), nguyền (Curse) Các hiệu ứng này sẽ bị giảm lượt tác dụng đi 1 lượt ở giai đoạn này Các hiệu ứng này sẽ bị xoá nếu lượt tác dụng về 0

Ngoài ra một số tài nguyên khác sẽ được tính toán ở trong giai đoạn này như:

- Trừ máu ngựa đối phương nếu đứng trong vùng dung nham của mình

Ngày đăng: 20/06/2023, 20:40

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[6] Winsocket Page: https://learn.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-socket.Truy cập: 01/10/2022 Link
[1] V. Scott Gordon, John Clevenger (2021). Computer graphics programming in OpenGL with C++, Second edition Khác
[2] Pavan Ramchandani (2020). Hands-On C++ Game Animation Programming-Packt, First edition Khác
[3] Edward Angle (2008). Interactive computer graphics a top-down approach using OpenGL, Fifth edition Khác
[4] Alan Zucconi (2016). Unity 5.x Shaders and Effects Cookbook, First edition Khác
[5] David Wolff (2013). OpenGL 4 Shading Language Cookbook, Second edition Khác
[7] OpenGL API document: OpenGL 4 Reference Pages (khronos.org). Truy cập: 10/09/2022 Khác
[8] OpenGL Official Page: OpenGL - The Industry Standard for High Performance GraphicsTruy cập: 10/09/2022 Khác
[9] OpenGL Tutorial: LearnOpenGL - OpenGL Truy cập: 10/09/2022 Khác
[10] GLFW Official Page: An OpenGL library | GLFW Truy cập: 10/09/2022 Khác

TỪ KHÓA LIÊN QUAN

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