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

Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run

63 1,5K 1

Đ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 63
Dung lượng 2,56 MB

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

Nội dung

LỜI MỞ ĐẦUSự phát triển của công nghệ mô phỏng và giải trí, ngày càng có nhiều ứng dụng đồ họa vàtrò chơi 3D được xây dựng nhằm phục vụ mục đích nghiên cứu, mô phỏng và giải trí… Cùng vớ

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

DỰNG GAME SONIC RUN

Lớp KTPM 1 – K6 Giảng viên hướng dẫn: THS NGÔ ĐỨC VĨNH Cán bộ phản biện:

Hà Nội, 5/2015

Trang 2

LỜI MỞ ĐẦU

Sự phát triển của công nghệ mô phỏng và giải trí, ngày càng có nhiều ứng dụng đồ họa vàtrò chơi 3D được xây dựng nhằm phục vụ mục đích nghiên cứu, mô phỏng và giải trí… Cùng với đó,công nghệ phần cứng cũng phát triển rất nhanh, đặc biệt là các phần cứng xử lý đồ họa có thể lậptrình được và các ngôn ngữ lập trình trên các phần cứng này Tuy nhiên, để xây dựng một ứngdụng đồ họa và trò chơi 2D đảm bảo các yêu cầu: hỗ trợ một dải phần cứng và phần mềm (cụ thể

là hệ điều hành) lớn, có khả năng lựa chọn API đồ họa mức thấp (OpenGL, OpenGL ES ), dễ dàngquản lý và phát triển các tài nguyên Từ những yêu cầu trên, nhóm em đã quyết định lựa chọn đề

tài “Nghiên cứu một số kỹ thuật tạo cảnh trong game Ứng dụng xây dựng game Sonic Run”

Xuất phát từ thực tế đó, đề tài nàytập trung nghiên cứu xây dựng các kỹ thuậttạo cảnhtrong game Tập trung nghiên cứu các kỹ thuật, đưa ra được các phương pháp tối ưu để tạo cảnh,sau đó áp dụng vào game thực tế Khi phát triển các ứng dụng game 2D, người lập trình không cầnphải quan tâm đến quá trình quản lý tài nguyên, cũng như xử lý đồ họa ở mức thấp bên dưới Thayvào đó, họ chỉ cần tập trung vào quản lý ở mức lôgíc các thành phần của ứng dụng, hoặc thêm mớicác thành phần dựa trên thành phần cơ sở do hệ thống cung cấp

Đến thời điểm hiện tại, nhóm đã hoàn thành việc nghiên cứu xây dựng cảnh và đã ứngdụng thành công vào game Sonic Run Do chưa có nhiều kinh nghiệm trong việc xây dựng gamenên vẫn còn một vài thiếu sót Trong thời gian tới, nhóm sẽ tiếp tục để phát triển hoàn thiện hơnnữa

Trang 3

MỤC LỤC

LỜI MỞ ĐẦU 2

LỜI CẢM ƠN 3

TÓM TẮT ĐỒ ÁN 4

MỤC LỤC 5

DANH SÁCH HÌNH VẼ 8

DANH SÁCH BẢNG BIỂU 10

DANH SÁCH TỪ VIẾT TẮT 11

PHẦN 1: MỞ ĐẦU 12

Tên đề tài 12

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

Mục đích của đề tài 12

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

Bốc cục đề tài 12

PHẦN 2: NỘI DUNG 14

CHƯƠNG 1: NỘI DUNG NGHIÊN CỨU 14

1.1 Giới thiệu chung 14

1.2 Quy trình thiết kế và xây dựng game 16

1.2.1 Tổng quan về quy trình thiết kế và xây dựng game 16

1.2.2 Quy trình thiết kế và xây dựng game 17

1.2.2.1 Giai đoạn tiền sản xuất 18

1.2.2.2 Giai đoạn sản xuất 18

1.2.2.3 Giai đoạn sau sản xuất 20

1.3 Tổng quan về thư viện Box2D 22

1.3.1 Giới thiệu về Box2D 22

1.3.2 Các thành phần chính trong Box2D 22

1.3.2.1 Rigit Body 22

1.3.2.2 Fixture 23

1.3.2.3 World 23

Trang 4

1.4 Tổng quan về thư viện OpenGL ES 24

1.4.1 Giới thiệu về OpenGL ES 24

1.4.2 Các khái niệm cơ bản về OpenGL ES 24

1.4.2.1 Nhập dữ liệu từ bàn phím 24

1.4.2.2 Dựng hình (Rendering) 25

1.4.2.3 Phép chiếu song song (Orthographic Projection) 25

1.4.2.4 Màu sắc và tạo bóng (Color and Shader) 26

1.3.2.5 Các phép biến đổi (Transform) 27

1.4.2.6 Chiều sâu (Depth) 27

1.4.2.7 Ánh sáng (Lighting) 27

1.4.2.8 Vertex 27

1.4.2.9 Shader 28

1.4.2.10 Vertex Buffer Object 29

1.4.2.11 Texture 29

1.4.2.12 Model 29

1.5 Tổng quan về thư viện Free Type 2 30

1.6 Tổng quan về thư viện irrKlang 32

1.7 Một số kỹ thuật tạo cảnh trong game 33

1.7.1 Các khái niệm 33

1.7.1.1 Tile 33

1.7.1.2 Sprite sheet 33

1.7.1.3 Frame 33

1.4.1.4 Map 34

1.7.2 Kỹ thuật lọc màu 34

1.7.3 Kỹ thuật cuộn map 34

1.7.4 Kỹ thuật phát hiện va chạm 35

1.7.4.1 Phát hiện va chạm giữa 2 hình tròn 35

1.7.4.2 Phát hiện va chạm hai hình tứ giác 36

1.7.4.3 Phát hiện va chạm giữa hình tròn và hình tứ giác 36

Trang 5

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ GAME SONIC RUN 38

2.1 Phát biểu bài toán 38

2.2 Xây dựng kịch bản 38

2.3 Đặc tả các yêu cầu với game SonicRun 39

2.3.1 Xác định actor và mô hình use case 39

2.3.1.1 Danh sách Actor 39

2.3.1.2 Sơ đồ Use Case 39

2.4 Thiết kế xử lý 40

2.4.1 Tư tưởng thiết kế xử lý game: 41

2.4.2 Chi tiết thiết kế xử lý - Timer: 42

2.4.3 GameState 43

2.5 Thiết kế giao diện 44

2.6 Thiết kế các thuật toán 46

2.6.1 Cách quản lý tài nguyên trong game 2D 46

2.6.2 Thuật toán vẽ các đối tượng lên màn hình game 49

2.6.3 Thuật toán sử dụng FreeType2 để vẽ chữ trong game: 52

2.6.4 Thuật toán tính điểm, tăng độ khó trong game 55

2.6.5 Các kỹ thuật tạo cảnh sử dụng trong game 55

CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM 57

3.1 Môi trường phát triển: 57

3.1.1 IDE 57

3.1.2 Quản lý source code: 58

3.2 Một số giao diện và chức năng 59

3.2.1 Giao diện chính 59

3.2.2 Giao diện Kết thúc game 59

3.2.3 Giao diện tạm dừng 60

LỜI KẾT 61

TÀI LIỆU THAM KHẢO 62

BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH VIỆT 63

Trang 6

DANH SÁCH HÌNH VẼ

Hình 1.1 Cấu trúc một game 16

Hình 1.2 Quy trình thiết kế và xây dựng game 17

Hình 1.3 Mô tả các tham số bằng hình ảnh 26

Hình 1.4 Mối liên hệ Vertex Shader và Fragment Shader 28

Hình 1.5 Ví dụ 2 file Vertex Shader và Fragment Shader 29

Hình 1.6 Texture trong thiết kế 3D 29

Hình 1.7 Ví dụ một file Model 30

Hình 1.8 Hình trước và sau lọc màu 34

Hình 1.9 Sơ đồ thuật toán cuộn Background theo chiều ngang từ phải sang trái 35

Hình 1.10 Kỹ thuật phát hiện va chạm giữa hai hình tròn 36

Hình 1.11 Kỹ thuật phát hiện va chạm giữa hình tròn và hình tứ giác 37

Hình 2.1 Sơ đồ Use Case chính của hệ thống 39

Hình 2.2 Thiết kế xử lý trong game 41

Hình 2.3 Tổng thể Singleton 42

Hình 2.4 Tối ưu tính toán timer 42

Hình 2.5 Cấu trúc thiết kế GameState 43

Hình 2.6 Màn hình thiết kế giao diện chính 44

Hình 2.7 Màn hình thiết kế giao diện chơi game 44

Hình 2.8 Màn hình thiết kế tạm dừng game 45

Hình 2.9 Màn hình thiết kế kết thúc game 45

Hình 2.10 Sơ đồ thuật toán vẽ các đối tượng lên màn hình 49

Hình 2.11 Code đọc dữ liệu các đối tượng 50

Hình 2.12 Code tham khảo vẽ một button 50

Hình 2.13 Code điều khiển dữ liệu các hình sẽ được vẽ 51

Hình 2.14 Các cách sử dụng Freetype2 52

Hình 2.15 Cách sử dụng Freetype2 trong SONIC RUN 53

Hình 2.16 Vẽ chữ trong game SONIC RUN 54

Hình 2.17 Thuật toán tính điểm, tăng độ khó trong game 55

Trang 7

Hình 3.1 Các Source File cơ bản của 2 Project chính của game 57

Hình 3.2 Cửa sổ ShowLogs của tortoiseSVN 58

Hình 3.3 Giao diện chính hoàn chỉnh 59

Hình 3.4 Giao diện kết thúc game hoàn chỉnh 59

Hình 3.5 Giao diện tạm dừng hoàn chỉnh 60

Trang 8

DANH SÁCH BẢNG BIỂU

Bảng 1.1 Danh sách các tham số trong thiết kế song song 26 Bảng 2.1 Danh sách các Actor 39 Bảng 2.2 Danh sách Use Case 39

Trang 10

PHẦN 1: MỞ ĐẦU

Tên đề tài

Nghiên cứu một số kỹ thuật tạo cảnh trong game Ứng dụng xây dựng game Sonic Run.

Lý do chọn đề tài

Sự phát triển nhảy vọt của công nghệ thông tin đã tác động mạnh mẽ đến các hoạt động

xã hội, làm thay đổi một cách sâu sắc đến phong cách làm việc của một xã hội Công nghệ thôngtin đã trở thành trụ cột chính của nền kinh tế tri thức ứng dụng công nghệ thông tin vào các hoạtđộng giải trí của xã hội được nhiều người quan tâm Phạm vi ứng dụng của công nghệ thông tinngày càng mở rộng trên nhiều lĩnh vực: quản lý các hoạt động của con người và xã hội, tự độnghóa, truyền thông, giải trí…

Đời sống của con người ngày càng được nâng cao Bên cạnh đó nhu cầu về vui chơi giải trícủa con người ngày càng được đòi hỏi Các trò chơi được thiết kế bằng máy tính đã ra đời và đangtrên đà phát triển để đáp ứng những nhu cầu đòi hỏi đó của con người.Game từ lâu đã là một dịch

vụ giải trí rất phổ biến đối với người dùng Việt Nam Dịch vụ game có thể được phát triển trênnhiều nền tảng như PC, mobile, browser Cùng với game PC và game browser, ngày nay, gamedành cho các thiết bị di động cũng đang thực sự bùng nổ

Trong phạm vi đồ án của mình, em xin trình bày một số kiến thức cơ bản về quy trình thiết

kế và xây dựng game, cách sử dụng các engine game phổ biến và cách xây dựng game SonicRuntrên nền tảng Win32 Game thuộc thể loại Endless Run với nội dung đơn giản được áp dụng các kỹthuật xây dựng hình ảnh bằng OpenGL ES 2.0 và mô phỏng vật lý bằng thư viện Box2D, tạo chữchạy bằng FreeType2 cũng như âm thanh 3D sống động bằng irrKlang để làm cho game thêm hấpdẫn và thú vị

Mục đích của đề tài

Đề tài “Nghiên cứu một số kỹ thuật tạo cảnh trong game Ứng dụng xây dựng game Sonic Run” Nhằm tìm hiểu về quy trình thiết kế game, các kỹ thuật tạo cảnh trong game để áp

dụng vào xây dựng game hoàn chỉnh

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

 Tìm hiểu về quy trình thiết kế và xây dựng game

 Tìm hiểu về các engine làm game chính

 Tìm hiểu về một số kỹ thuật tạo cảnh trong game

 Áp dụng vào ây dựng game Sonic Run

Bốc cục đề tài

Nội dung đề tài được chia làm 4 chương chính

CHƯƠNG 1: NỘI DUNG NGHIÊN CỨU

Trong chương này sẽ giới thiệu, trình bày hiểu biết về quy trình phát triển game, các engine làm game, và các thuật toán sinh map

CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ GAME SONICRUN

Trang 11

Trình bày quy trình hoàn chỉnh từ phân tích đến thiết kế game SonicRun, chi tiết thiết kế các thuật toán có trong game.

CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM

Từ các thiết kế ở trên, cài đặt, xây dựng game trên hệ điều hành Win32 sử dụng IDE VisualStudio C++ 2008

CHƯƠNG 4: KẾT LUẬN

Tổng kết những thành quả đã đạt được trong khi làm đồ án, phương hướng phát triển tiếpcủa game hiện có

Trang 12

PHẦN 2: NỘI DUNG CHƯƠNG 1: NỘI DUNG NGHIÊN CỨU

1.1 Giới thiệu chung

Phát triển video game cũng như các ngành giải trí khác, thông thường là một lĩnh vực liênngành Các nhà phát triển video game, như cách gọi phổ biến trong ngành công nghiệp, chủ yếubao gồm các lập trình viên và các nhà thiết kế đồ họa Qua nhiều năm,với sự mở rộng ngành côngnghiệp này, nó bao gồm hầu hết mọi loại kỹ năng mà có thể thấy để làm một bộ phim hoặcchương trình tivi, bao gồm thiết kế âm thanh, âm nhạc, và các loại kỹ thuật khác; và cũng đồngthời có những kỹ năng chuyên ngành cho video game, như thiết kế game v.v Tất cả đều đượcquản lý và điều hành bởi nhà sản xuất

Thời kỳ đầu của ngành công nghiệp game, thông thường thì chỉ có một người thực hiện tất

cả vai trò cần thiết để tạo ra một game Nhưng với các hệ máy ngày càng phức tạp và mạnh mẽhơn, thì cần các đội ngũ phát triển lớn hơn để thiết kế hết được các phần như đồ họa, lập trình, kỹthuật điện ảnh Điều này không có nghĩa là thời kỳ một người làm toàn bộ một game đã kết thúc,vẫn có thể thấy các game do một người làm ở thị trường các game casual và các game cho hệ máycầm tay nơi các game nhỏ hơn đang phổ biến do giới hạn phần cứng như giới hạn bộ nhớ haythiếu khả năng dựng hình 3D chuyên dụng trên hệ máy đó(ví dụ như điện thoại di động hay PDA)

Với sự lớn mạnh về quy mô của các đội ngũ phát triển trong ngành công nghiệp, vấn đềkinh tế cũng tăng theo Các studio phát triển game cần tiền đủ để trả một mức lương cạnh tranhvới studio khác cho các nhân viên để thu hút và giữ lại các tài năng lớn của mình, trong khi các nhàphát hành lại không ngừng tìm kiếm cách giữ mức giá thấp để nhằm duy trì lợi nhuận với khoảnđầu tư của họ Thông thường, một đội ngũ phát triển game trên hệ console có thể có số lượngngười nằm trong khoảng từ 5 tới 50, có lúc còn lên đến 100 Tháng 5/2009, dự án game Assasin'sCreed II còn công bố đội ngũ phát triển của mình lên tới 450 Sự tăng trưởng về quy mô của độingũ phát triển kết hợp với áp lực lớn khi phải hoàn thành dự án kịp ra thị trường đồng thời áp lựcgiảm bớt chi phí sản xuất đã dẫn đến sự ra đời của hàng loạt các sản phẩm game phải lùi ngày pháthành hoặc phát hành thiếu hoàn chỉnh

Rất nhiều các game sản xuất cho hệ PC được thiết kế với tiêu chí cho phép người sử dụngđược chỉnh sửa game Những bản chỉnh sửa (mod) này có thể tăng thêm khả năng chơi lại và sựthú vị cho game Các hãng phát triển nổi tiếng như id Software, Valve Software, Crytek, Bethesda,Epic Games và Blizzard Entertainment đưa game của họ với một số công cụ đã dùng để phát triểngame đó, kèm theo một hướng dẫn để hỗ trợ các nhà phát triển các bản mod (phần lớn là cácgame thủ yêu thích game) Mạng Internet cung cấp một nơi không tốn kém để quảng cáo và phânphối các bản chỉnh sửa, và chúng cũng có thể là yếu tố đóng góp vào thành công của game Có thểthấy rất rõ việc các bản mod khiến game trở nên phổ biến như trường hợp của Counter-Strike làbản chỉnh sửa của Half-Life

Ba khu vực sản xuất lớn nhất và cũng là thị trường lớn nhất của video game là: khu vựcBắc Mỹ (bao gồm Mỹ và Canada), Nhật Bản và Anh Quốc Các thị trường quan trọng khác bao gồm

Úc, Tây Ban Nha, Đức, Hàn Quốc, México, Pháp và Ý Cả Ấn Độ và Trung Quốc đều được coi là cácthị trường mới nổi trong ngành công nghiệp game và doanh số được kỳ vọng là sẽ tăng trưởng rõ

Trang 13

rệt trong những năm sắp tới Và Ailen thì có số lượng người sử dụng video game lớn nhất tínhtheo đầu người.

Doanh thu theo hệ máy của các game rất khác nhau ở các thị trường này do thói quen củangười tiêu dùng địa phương Các khách hàng Nhật Bản thường mua các game console hơn là gamemáy tính, với một ưu tiên mạnh mẽ cho các trò chơi phục vụ cho thị hiếu địa phương Ở Hàn Quốc(Nam Triều Tiên), game máy tính lại được ưu tiên hơn, đặc biệt là các game nhập vai trực tuyếnnhiều người chơi(MMORPG) và game chiến thuật thời gian thực Có hơn 20.000 tiệm cafe internet

ở Hàn Quốc nơi game máy tính có thể chơi và trả phí theo giờ

Tập đoàn NPD (tập đoàn dẫn đầu Bắc Mỹ về nghiên cứu thị trường) đã nghiên cứu thịtrường bán lẻ video game ở Mỹ nhiều năm Với báo cáo năm 2004 rằng: Phần mềm cho hệ console

và hệ máy cầm tay: $6.2 tỷ, hơn 8% so với năm 2003 Phần cứng và phụ kiện cho hệ console và hệcầm tay: $3.7 tỷ, kém 35% so với năm 2003 Doanh số game PC: $1.1 tỷ, kém 15% so với năm2003

Game PC là sản phẩm kỹ thuật số được phân phối bằng cả đường trực tiếp hay qua mạnginternet như hệ thống Steam không được theo dõi bởi NPD, và Steam không lên danh sách doanhthu các game mà đã được tải về qua dịch vụ của mình Và phân phối trái phép cũng tràn lan trên

hệ PC nên doanh số game bán lẻ cho máy tính cá nhân giảm đáng kể cũng là điều dễ hiểu

Các con số trên được tính bằng USD, không phải đơn vị Các đơn vị vận chuyển cho mỗidanh mục hàng hóa cao hơn nhiều so với số lượng USD thu về đã chỉ ra ở trên, bởi vì nhiều phầnmềm cũng như phần cứng đã giảm giá vào năm 2003 Nhưng với sự ra đời của các thế hệ consoletiếp theo (Xbox 360, PS3, và Wii), các con số này tăng lên nhanh chóng Ngành công nghiệp game

và điện ảnh giờ đây cũng trở nên gắn bó với nhau, với các Tập đoàn như Sony đã có những thànhcông đáng kể trên cả hai Một số lượng lớn các "phim bom tấn" mùa hè sinh ra các game cùng tên

đi kèm, và thường phát hành cùng với phim để giảm giá thành quảng cáo

Thị trường toàn cầu cho game console đã trông thấy một sự tăng trưởng trung bình 6,9%hằng năm và được kỳ vọng là sẽ thu về 34,7 tỉ USD vào năm 2012 Game bán qua mạng dự kiến sẽtăng với tốc độ lớn hơn 16,9%, leo thang từ 6,6 tỷ USD trong năm 2008 lên 14,4 tỉ USD năm 2012

Dự kiến tăng trưởng lớn nhất, tuy nhiên lại nằm ở game trên di động với tăng trưởng đánh giákhoảng 19%; tăng từ 5.6 tỉ USD lên 13,5 tỉ trong vòng 4 năm

Cấu trúc một game được chia nhỏ như sơ đồ dưới đây:

Trang 14

Hình 1.1 Cấu trúc một game

1.2 Quy trình thiết kế và xây dựng game

1.2.1 Tổng quan về quy trình thiết kế và xây dựng game

Phát triển game là một quá trình phát triển phần mềm, một trò chơi điện tử như là phầnmềm với nghệ thuật, âm thanh, và gameplay Phương pháp phát triển phần mềm chính thốngthường không được sử dụng khi phát triển một game Nếu phát triển trò chơi với phương phápphát triển kém có khả năng vượt quá dự toán ngân sách và thời gian, cũng như có chứa một sốlượng lớn các lỗi Kế hoạch là quan trọng đối với cá nhân Các dự án và nhóm giống nhau

Trò chơi phát triển tổng thể không thích hợp với các phương pháp điển hình trong vòngđời phần mềm, chẳng hạn như các mô hình thác nước

Một phương pháp được sử dụng để phát triển trò chơi là phát triển nhanh Nó được dựatrên mẫu lặp đi lặp lại, một tập hợp con của các phần mềm tạo mẫu phát triển Agile phụ thuộcvào thông tin phản hồi và sàng lọc các bước lặp trò chơi với tăng dần tính năng được thiếtlập.Phương pháp này là hiệu quả bởi vì hầu hết các dự án không bắt đầu với một phác thảo yêucầu rõ ràng.Một phương pháp phổ biến của sự phát triển phần mềm nhanh nhẹn là Scrum

Một phương pháp thành công là cá nhân phần mềm (PSP) đòi hỏi phải đào tạo bổ sungcho nhân viên để nâng cao nhận thức về quy hoạch của dự án.Phương pháp này là tốn kém hơn vàđòi hỏi sự cam kết của các thành viên trong nhóm PSP có thể được mở rộng với việc lập các đội(Team) trong khi phát triển quy trình phần mềm, nơi mà các đội là tự kiểm soát mình với mộtngười đội trưởng (team leader)

Trang 15

Phát triển trò chơi thường liên quan đến sự chồng chéo của các phương pháp này Ví dụ,tạo ra tài sản có thể được thực hiện thông qua mô hình thác nước, vì yêu cầu và đặc điểm kỹ thuật

rõ rang, nhưng thiết kế gameplay có thể được thực hiện bằng cách sử dụng mẫu lặp đi lặp lại

Quá trình thiết kế trò chơi được dựa trên quá trình thiết kế chung nhưng có một quá trìnhchỉ tập trung xung quanh khu vực của trò chơi Các tiêu đề được đặt ra là khác nhau từ nhữngngười trong quá trình thiết kế chung, nhưng họ đều hoạt động hiệu quả trong các bước tương tự,chia nhỏ hơn nữa và đổi tên thành cho một công việc cụ thể Toàn bộ quá trình diễn về hình thứcgồm 3 giai đoạn chính với nhau có chứa một tập hợp con của các giai đoạn cụ thể hơn Các giaiđoạn đó được gọi là tiền sản xuất, sản xuất và sau sản xuất Như tên cho thấy các quá trình mụctiêu trọng tâm là việc tạo ra các trò chơi

Hình 1.2 Quy trình thiết kế và xây dựng game

1.2.2 Quy trình thiết kế và xây dựng game

Những trò chơi thành công thường cần có một sự phối hợp chặt chẽ giữa sự sáng tạo, kỹthuật và chiến lược kinh doanh Một sự cân bằng tốt giữa những yếu tố trên là chìa khóa để thànhcông và nếu một trong những yếu tố trên nổi trội lên thì dự án game sẽ gặp vấn đề Thực tế sự cânbằng này rất hiếm khi đạt được

1.2.2.1 Giai đoạn tiền sản xuất

Hay còn gọi là giai đoạn thiết kế Là một giai đoạn lập kế hoạch của các dự án tập trungvào ý tưởng và phát triển nội dung cũng như sản xuất các tài liệu thiết kế ban đầu Các mục tiêucủa phát triển nội dung là để sản xuất rõ ràng và dễ hiểu tài liệu, trong đó mô tả tất cả các nhiệm

vụ, tiến độ và dự kiến cho nhóm phát triển Các bộ tài liệu được sản xuất trong giai đoạn này đượcgọi là kế hoạch sản xuất Giai đoạn này thường không được tài trợ bởi một nhà xuất bản Tuynhiên các nhà xuất bản tốt có thể yêu cầu các nhà phát triển để tạo ra các kế hoạch trong thời giantrước khi sản xuất

Các tài liệu khái niệm có thể được chia thành ba giai đoạn hoặc các tài liệu có highconcept, pitch và concept; Tuy nhiên, không có tiêu chuẩn ngành quy ước đặt tên, ví dụ, cả Bethke(2003) và Bates (2004) đề cập đến tài liệu pitch là ”đề nghị game”

Trang 16

Giai đoạn cuối của tiền sản xuất cũng có thể được gọi là bằng chứng của khái niệm, hoặcđánh giá kỹ thuật khi văn bản trò chơi chi tiết hơn được sản xuất.

Nhà xuất bản đã bắt đầu mong đợi đề xuất trò chơi rộng lớn hơn thậm chí có tính năngnguyên mẫu có thể chơi được

Các bước trong giai đoạn tiền sản xuất:

 Bước 1: Phân tích tóm tắt (Analysis of Brief/Sector)

 Bước 2: Nghiên cứu (ReSearch)

 Bước 3: Suy nghĩ ý tưởng (BrandStorming)

 Bước 4: Nội dung game (Game Concepts)

 Bước 5: Nội dung về đồ họa (Concept Art)

 Bước 6: Phát triển bản đồ chơi (Map Development)

 Bước 7: Thiết kế cấp phác thảo

 Bước 8: Thương lượng

1.2.2.2 Giai đoạn sản xuất

Sản xuất là giai đoạn chính của sự phát triển, khi tài sản và các mã nguồn cho các trò chơiđược sản xuất

Sản xuất chủ đạo thường được định nghĩa là khoảng thời gian khi dự án được đầy đủ nhânviên Các lập trình viên viết mới mã nguồn , các nghệ sĩ phát triển tài sản game, chẳng hạn như,sprites hoặc mô hình 3D Kỹ sư âm thanh phát triển hiệu ứng âm thanh và nhạc sĩ phát triển âmnhạc cho các trò chơi thiết kế Cấp tạo các cấp, và nhà văn viết đối thoại cho các đoạn cắt cảnh vàNPC thiết kế game tiếp tục phát triển dựa trên thiết kế của trò chơi trong cả quá trình sản xuất

Sau khi đã có được văn bản thiết kế game (Game Design Document), trong giai đoạn sảnxuất sẽ phải trải qua các công việc: thiết kế game, lập trình, sản xuất, âm thanh, đồ họa

Thiết kế game

Nhiều người lầm tưởng rằng ý tưởng cốt truyện là một thiết kế của game Xây dựng cốttruyện chỉ là một phần rất nhỏ công việc của nhà thiết kế game Bộ phận thiết kế game suy nghĩ vềmọi khía cạnh của game như: cốt truyện, góc quay, hệ thống điều khiển, vũ khí hoặc đồ vật, nhânvật, tốc độ duy chuyển, cấu trúc nhiệm vụ cá nhân, giao diện, hệ thống menu, gần như mọi thứcủa game Mọi chi tiết của game phải được viết ra và nếu bạn đang làm việc với nhà phát hành, họ

sẽ muốn thông qua nó trước Điều này giúp cho bản thiết kế game trở nên chi tiết nhất và đượccập nhật liên tục suốt quá trình làm dự án

Bản thiết kế game sẽ đóng vai trò là một bản tham khảo cho tất cả thành viên trong nhóm.Nếu họ muốn biết điều gì sẽ xảy ra khi bạn bấm nút khai hỏa hỏa tiễn, họ sẽ có thể nhìn vào nó vàthấy được những đặc tả chi tiết về nó Khi sản phẩm trên đường phát triển, những vai trò thiết kế

cụ thể sẽ phụ thuộc vào thể loại của game Một vài công ty mong đợi những nhà thiết kế của họ cókhả năng viết script nhiệm vụ và điều này có thể sẽ can thiệp sâu vào lập trình Một số khác thuênhững nhà thiết kế màn chơi là những người thiết kế layout cơ bản về môi trường Những nhàthiết kế nên luôn chơi thử những chức năng đã được cài đặt và yêu cầu những thay đổi nếu cầnthiết cho đến khi cảm thấy đúng thì thôi

Trang 17

Lập trình

Bộ phận lập trình có trách nhiệm cài đặt theo bản thiết kế Một vài công ty sẽ phát triểnengine game của riêng họ Số còn lại sẽ mua bản quyền của những engine game có sẵn như Unrealhoặc Source Mua bản quyền một engine tốn chi phí cao nhưng lại tiết kiệm lượng thời gian lớn vàcho phép cả đội ngũ của họ truy xuất vào nguồn dữ liệu có sẵn và tập hợp những công cụ hữu íchdùng để tạo ra trò chơi Các công ty khác nhau có thực tế làm việc khác nhau nhưng thông thườngcông việc của những người lập trình viên là xem qua một chức năng trong bản thiết kế, hỏi nhàthiết kế những câu hỏi liên quan và sau đó lên kế hoạch để cài đặt chức năng này Bất kỳ nhưngđiều gì lệch hướng, hiểu sai sẽ được chỉnh sửa, giải thích lại trong suốt quá trình họp mặt và khi kếhoạch được thông qua lập trình viên sẽ bắt đầu làm việc với nó Họ cài đặt mỗi chức năng trongbản thiết kế và chúng sau đó được kiểm định và tinh chỉnh lại nếu cần Lập trình viên thườngchuyên biệt vào một lĩnh vực nhưng điều đó phụ thuộc hoàn toàn vào qui mô của công ty và loại

dự án mà họ làm

Đồ họa

Bộ phận đồ họa chịu trách nhiệm cho phong cách hình ảnh của game Có rất nhiều vai tròbên trong của bộ phận đồ họa và tất cả đều bắt đầu với họa sỹ phác thảo Những phác thảo có thểđơn giản được vẽ sơ bộ hoặc đầy đủ chi tiết màu sắc Họ thiết lập phong cách hình ảnh của game

và đem lại cho những thành viên còn lại của đội ngũ đồ họa cảm hứng để tạo ra những nhân vật vàmôi trường

Họa sỹ phụ trách vẽ nhân vật phác thảo hình 2D và sử dụng nó để tạo ra mô hình 3D Họa

sỹ phụ trách vẽ môi trường vẽ thủ công từng texture và mô hình để mang lại sự sống cho mỗi mànchơi Họa sỹ phụ trách mảng hiệu ứng hình ảnh tạo ra những hình ảnh để thể hiện vụ nổ, thời tiết,

… Họa sỹ phụ trách mảng hoạt hình tạo ra những nhân vật hoạt họa riêng lẻ Sau đó sẽ kết hợp với

mã nguồn của lập trình viên để nó hoạt động

Mỗi qui trình đơn giản trong game đều đòi hỏi sự cộng tác giữa các bên Ví dụ, thậm chímột vài thứ đơn giản như tạo một nhân vật đi bộ thôi cũng phải có sự tham gia của cả 3 bộ phận.Họa sỹ sẽ tạo ra một chuỗi hình lặp thể hiện hành động đi bộ của nhân vật và lập trình viên sẽ đảmbảo nhân vật duy chuyển đúng khoảng cách, tốc độ và kích hoạt hành động đi khi bạn nhấn nút W.Những thông số đặc tả sẽ được quyết định bởi một nhà thiết kế (designer)

Sản xuất

Bộ phận sản xuất thiết lập lịch và quản lý nguồn ngân sách Họ tạo ra danh sách công việc

và ước lượng thời gian cho mỗi giai đoạn phát triển game Công việc của họ là đảm bảo tất cảthành viên biết họ cần làm gì, có cái mà họ cần làm và biết khi nào nó được hỗ trợ để hoàn tất

Những nhà quản lý (Producers) còn cần giữ mối liên hệ với những ông chủ của công ty vànhững người cộng tác bên ngoài (những nhà phát hành) Họ cung cấp những báo cáo tiến độthường xuyên, đối mặt với việc sắp xếp nhân lực, thuê thêm nhân lực và thường phải đảm bảo dự

án chạy đúng tiến độ

Xây dựng âm thanh

Gần đến cuối giai đoạn của sản xuất, những nhà thiết kế âm thanh sẽ tạo ra những hiệuứng âm thanh, nhạc nền hoặc thu âm giọng nói nếu cần Việc này thường để gần cuối vì sự thayđổi là rất phổ biến trong phát triển game Nhà thiết kế âm thanh sẽ tạo ra âm thanh hiệu ứng để

Trang 18

khớp với mỗi hành động trong game và nhạc nền để tạo ra chiều sâu cho môi trường xung quanh.

Họ còn sắp xếp diễn viên nam và nữ để thu âm những đoạn hội thoại Thiết kế âm thanh thườngđược đặt hàng làm từ bên ngoài vì nó đòi hỏi phải có những thiết bị chuyên dụng và vì quá trìnhnày thường được hoàn tất trong vài tháng cuối của quá trình sản xuất

1.2.2.3 Giai đoạn sau sản xuất

Sau khi đã có được một sản phẩm game chưa hoàn chỉnh, người ta sẽ đi vào kiểm thử vàđóng gói sản phẩm này và xuất ra thị trường cũng như nâng cấp thêm các tính năng sau này…trong giai đoạn này, các công việc sẽ bao gồm: kiểm thử, thiết kế lại (khi cần thiết), đóng gói, thúcđẩy, ra mắt, bảo trì…

Kiểm thử

Vào thời gian cuối của dự án game, đảm bảo chất lượng đóng một vai trò quan trọng.Testers bắt đầu công việc để xem có thể sẽ có điều gì xảy ra Đây có thể là một cấp hoặc tập hợpcon của các phần mềm trò chơi có thể được sử dụng cho bất kỳ mức độ hợp lý Ban đầu, kiểm tramột trò chơi chiếm một số lượng tương đối nhỏ thời gian sản xuất kiểm tra game có thể làm việc

để kiểm một số trò chơi cùng một lúc Khi thời gian cho quá trình sản xuất đến hồi kết thúc, mộttrò chơi thường chiếm toàn bộ thời gian của đội kiểm thử(và thường có làm thêm giờ) Họ phấnđấu để thử nghiệm các tính năng mới và những thử nghiệm đáp lại những yêu cầu hiện thời Thửnghiệm là rất quan trọng, trò chơi phức tạp nếu như có những thay đổi có thể dẫn đến những hậuquả khó lường trước được và ảnh hưởng rất lớn

Thúc đẩy

Bất kỳ trò chơi cần phải được phát huy tốt thông qua quảng cáo bắt măt, bìa bọc đĩa đẹp,bao bì hộp DVD, quảng cáo thông qua mạng Internet, áp phích Nếu không có chương trìnhquảng cáo và giới thiệu tốt, vấn đề đặt ra là như thế nào để cho các trò chơi là để cho ai đó có thểnghe về nó và do đó sẽ có được cơ hội để họ tiếp xúc và chơi nó

Phát hành

Dự án phát triển game thương mại có thể được yêu cầu để đáp ứng sự kiện quan trọngđược thiết lập bởi nhà xuất bản Các cột mốc đánh dấu sự kiện quan trọng trong quá trình pháttriển trò chơi và được sử dụng để theo dõi tiến độ của trò chơi sự kiện quan trọng như vậy có thểđược, ví dụ, bản đầu tiên có thể chơi được , bản alpha , hoặc beta Cột mốc dự án phụ thuộc vàolịch trình phát triển

Trang 19

Bảo trì

Trong trường hợp của một trò chơi trực tuyến nhiều người chơi (MMOG), chẳng hạn nhưmột MMORPG hay MMORTS, các lô hàng của trò chơi là giai đoạn khởi đầu của bảo trì Trò chơitrực tuyến trong việc bảo trì liên tục như thế giới game liên tục thay đổi và lặp và các tính năngmới được thêm vào Các nhân viên bảo trì cho một MMOG phổ biến có thể đánh số đến hàng chụcngười, đôi khi bao gồm cả các thành viên của đội ngũ lập trình ban đầu

1.3 Tổng quan về thư viện Box2D

1.3.1 Giới thiệu về Box2D

Box2D là cái tên mà mọi người biết đến là engine vật lý 2D tốt nhất hiện nay Engine nàykhá nhẹ, hiệu quả, mạnh và tính tương thích cao, miễn phí và là mã nguồn mở Website chính thứccủa Box2D là http://www.box2d.org

Một engine vật lý mô phỏng môi trường vật lý của các đối tượng sao cho giống thật nhất.Mặc dù nó có thể được sử dụng cho các ứng dụng khác, Box2D được tạo ra chủ yếu làm thư viện

sử dụng trong game Engine này được viết và bảo trì bởi Erin Catto với lý do ông không hài lòng vềengine vật lý mà ông đang làm việc

Box2D được viết bằng C++, nhưng được chuyển sang nhiều ngôn ngữ khác bởi cộng đồng người sửdụng.Engine vật lý không phải là một game engine Box2D rất mạnh trong việc mô phỏng vật lýnhưng nó không được thiết kế để tận dụng sức mạnh đồ họa, network, xây dựng game hoặc loadgame level

 Mass : khối lượng.

 Velocity : vận tốc và hướng di chuyển.

 Rotational inertia : quán tính quay.

 Angular velocity : vận tốc tiếp tuyến và độ lớn của vận tốc.

 Location : vị trí.

 Angle : hướng của vật thể.

Mặc dù chúng ta đều biết tất cả đặc tính của một đối tượng, chúng ta vẫn không biết được

nó như thế nào và cách mà nó xảy ra khi va chạm với các đối tượng khác Để thiết lập kích thước

và hình dạng của một đối tượng chúng ta sử dụng fixtures

Có 3 loại body : static (tĩnh), dynamic (động) và kinematic (động học) Hai loại đầu khá dễhiểu khi đọc tên trong khi loại cuối cùng khá khó hiểu

Trang 20

1.3.2.2 Fixture

Fixture được dùng để mô tả kích thước, hình dạng và đặc điểm vật chất của một đối tượngtrong vật lý Một body có thể có nhiều fixture được gắn vào chúng, và trọng tâm của body sẽ bịảnh hưởng bởi những fixture này Khi 2 body va chạm với nhau, fixture của chúng được sử dụng

để quyết định kết quả của sự va chạm Những thuộc tính chính của fixture :

Đôi khi chúng ta muốn một fixture biểu diễn một đoạn thẳng với độ rộng dày bằng 0.Chúng ta sử dụng phương thức SetAsEdge để làm điều này, phương thức này sử dụng 2 điểm là 2đầu của đoạn thẳng Chúng ta sẽ tạo một static body là một fixture đường thằng, nằm gần đáy củamàn hình vì vậy các dynamic object có thể rơi xuống nó

Tuy nhiên, phương thức SetAsEdge cho polygon đã được loại bỏ từ Box2D version 2.1.2trở lên bởi vì chúng có một kiểu shape riêng, b2EdgeShape

Density của một fixture nhân cho diện tích sẽ bằng với khối lượng của fixture đó

Restitution định nghĩa độ đàn hồi của một fixture Giống friction, giá trị của restitution nằm trongkhoảng [0-1], khi giá trị 0 nghĩa là fixture sẽ hoàn toàn không đàn hồi, và 1 nghĩa mà toàn bộ lực

mà body tác dụng sẽ tác dụng ngược lại hoàn toàn Khi 2 fixture va chạm với nhau, restitution tổng

có xu hướng cao hơn giá trị restitution của chúng

1.3.2.3 World

World đã được nhắc đến trong các phần trước như là một thực thể chính mà ở đó chứatoàn bộ các Box2D body Khi chúng ta tạo hoặc hủy một body, chúng ta gọi một phương thức từđối tượng world để làm điều này, vì vậy đối tượng world quản lý toàn bộ việc cáp phát vùng nhớcho các đối tượng này Vì vậy đối tượng world khá quan trọng, dưới đây là một số tác dụng của đốitượng này có thể làm:

 Định nghĩa trọng lực.

 Mô phỏng vật lý.

 Tìm các fixture trong một phạm vi cho trước.

 Tìm các fixture giao nhau.

Trọng lực được thiết lập có ảnh hưởng lên các đối tượng động trong world, và nó có thểđược thay đổi bằng cách sử dụng phương thức SetGravity

Biến sleep có nghĩa là một body có được phép “sleep” hay không nếu không có gì xảy ravới chúng (để tối ưu) Nếu nó được thiết lập là true, các body sẽ “sleep” khi không có gì xảy ra và

sẽ được loại ra khỏi simulation cho đến khi có một cái gì đó đánh thức nó Điều này có thể là vachạm với một body khác, hoặc một lực tác dụng lên nó…

Trang 21

Kể từ Box2D v2.2.1 thì biến sleep đã đặt mặc định là true Để thay đổi nó chúng ta có thể

1.4 Tổng quan về thư viện OpenGL ES

1.4.1 Giới thiệu về OpenGL ES

OpenGL ES là một sản phẩm miễn phí bao gồm các hàm API cho phép tạo các ứng dụng2D, 3D trên các ứng dụng nhúng – bao gồm các thiết bị cầm cầm tay Nó được định nghĩa như làmột tập con của openGL, tạo ra tính linh hoạt, mạnh mẽ trên giao diện cấp thấp giữa các phầnmềm và đồ họa OpenGL ES 2.0 nhấn mạnh về tốc độ phần cứng của các hàm API, trong khiOpenGL ES 1.1 chỉ tập trung vào các phần mềm cho phép triển khai OpenGL ES 2.0 hoàn toàntương thích với bản OpenGL ES 1.1 và nó có thể dễ dang thêm các API giữa hai phiên bản

OpenGL (Open Graphics Library) là một bộ thư viện đồ hoạ, bao gồm một tập khoảng 200hàm, dùng trong các ứng dụng đồ hoạ 2 chiều và 3 chiều

OpenGL được viết bằng C/C++, là một ngôn ngữ cấp thấp, vì thế mà OpenGL hỗ trợ đượcrất nhiều nền tảng khác nhau từ Mac OS, Linux, Windows…

OpenGL ES (Open Graphics Library for Embedded System) là một phiên bản của OpenGLdành cho các hệ thống nhúng mà tiêu biểu là các thiết bị di động Phiên bản này gọn nhẹ hơn do

đã được bỏ bớt một số thành phần để phù hợp hơn với các thiết bị có cấu hình thấp hơn so vớiPC

1.4.2 Các khái niệm cơ bản về OpenGL ES

1.4.2.1 Nhập dữ liệu từ bàn phím

Đầu tiên phải xây dựng một chức năng để xử lí mọi dữ liệu được đưa vào từ bàn phím,chức

năng này phải chấp nhận một số các tham số nhất định:

- Tham số thứ nhất là biến UGWindow

- Tham số thứ hai phải là một biến nguyên (interger), đại diện cho phím đã được bấm

- Tham số thứ ba và thứ tư cũng là hai biến nguyên (interger), xác định giá trị x, y của con trỏthiết bị khi được ấn

1.4.2.2 Dựng hình (Rendering)

Các bước khởi tạo và thiết lập OpenGL ES, khi vẽ trên màn hình OpenGL ES sử dụng kĩthuật của một bộ đêm kép Khi vẽ chúng ta vẽ trên bộ nhớ đệm Sau khi có được tất cả các thôngtin của việc vẽ, nó sẽ trao đổi giữa các bộ nhớ đệm và bắt đầu vẽ trên bộ nhớ đệm khác Điều này

để ngăn chặn ảnh hưởng của việc chớp màn hình bởi hằng số xóa màn hình và vẽ hình khác trênmột bộ nhớ đệm

Trong hàm Init(), chúng ta sử dụng một lời gọi glClearColor, nó được sử dụng để xác địnhmàu sắc cho màn hình hiện thị, nó bao gồm 4 tham số, các tham số này đại diện cho hệ màu RGBA

Trang 22

và có giá trị trong khoảng từ 0 đến 1 Ba tham số đầu là màu đỏ xanh lá cây và xanh da trời, còntham số thứ 4 là độ sáng tối của window.

1.4.2.3 Phép chiếu song song (Orthographic Projection)

Có hai cách để hiển thị đối tượng đó là sử dụng phép chiếu phối cảnh và phép chiếu songsong

Phép chiếu song song, view volume được định nghĩa là một hình hộp chữ nhật, vật thể nằm trongview volume được chiếu trực giao lên khung nhìn do đó trong phép chiếu trực giao khoảng cách từcamare đến vật thể không ảnh hưởng đến độ lớn của ảnh

Trong phần này chúng ta sẽ tìm hiểu làm thế nào để hiển thị một hình lên màn hình, hìnhđược tạo ra bằng cách xác định các đỉnh, đây là những điểm trong không gian 3 chiều vì vậy cầnchỉ rõ các điểm trên hình

Trang 23

GL_TRIANGLES Tam giác

GL_TRIANGLE_STRIP Một dải tam giác được liên kết với nhau

Bảng 1.1 Danh sách các tham số trong thiết kế song songKhi vẽ điểm, chức năng glPointSize có thể thay đổi kích cỡ của điểm được vẽ, kích cỡ mặc định

là 1

Khi vẽ đường bạn có thể sử dụng glLineWidth để xác định độ rộng của đường, kích cỡ mặc định

là 1

1.4.2.4 Màu sắc và tạo bóng (Color and Shader)

Tất cả màu sắc trong OpenGL được đại diện bởi 4 giá trị, 3 giá trị màu đỏ, xanh lá cây vàxanh lam, cuối cùng là giá tri alpha, điều này chỉ thể hiện rõ ràng 1 màu

1.3.2.5 Các phép biến đổi (Transform)

Phần này sẽ giới thiệu về cách chuyển đổi hình theo các cách khác nhau

Phép tỉ lệ - glScalef: Phép này dùng để tăng giảm kích cỡ của vật theo trục được chọn (trục

x, y, z)

Phép dịch –glTranslatef: Dịch chuyển toạ độ trục (x,y,z)

Phép quay –glRotatef: Quay hình theo góc được chọn.

1.4.2.6 Chiều sâu (Depth)

Depth dùng để thêm chiều sâu vài hình ảnh Để ác định xem hình nào ở trước, hình nào ởsau, tạo hiệu ứng không gian 3D Muốn sử dụng chức năng này thì trong OpenGL sẽ sử dụng

GL_DEPTH_TESTtrong hàm glEnable.

1.4.2.7 Ánh sáng (Lighting)

Bước đầu tiên cần thực hiện là kích hoạt backface culling Có một số loại ánh sáng có thểđược thêm vào hình trong OpenGL ES như:

Ambient Light: Ánh sáng bao xung quanh, nó không đến từ bất kì một hướng nào cụ thể, khi ánh

sáng bao xung quanh một bề mặt ánh sáng sẽ được phản xạ theo nhiều hướng

Diffuse Light: Ánh sáng khuếch tán, nó đến từ một hướng, ánh sáng khuếch tán tương tự như anh

sáng bao quanh nó cũng được phản xạ theo nhiều hướng

Specular Light: Ánh sáng phản chiếu, cũng giống như ánh sáng khuếch tán nhưng nó được phản xạ

theo một hướng, ví dụ như ánh sáng nổi bật trên bề mặt trước

Emissive Light: Ánh sáng tỏa, ánh sáng này đến từ một đối tượng cụ thể, các đối tượng cso thể

giảm lượng ánh sáng nhưng nó không thể phản chiếu ra bất kì bề mặt ngoài nào

Pháp tuyến là một vector vuông góc với một bề mặt nó được sử dụng trong việc tính toán ánhsáng nên cần phải xác định một pháp tuyến cho mọi đa giác được vẽ nếu muốn nó bị ảnh hưởngbởi nguồn sáng

Trang 24

 Tọa độ của Texture

Việc truyền dữ liệu từ RAM -> GPU rất tốn kém, vì thế nên tối thiểu số vertex để tiết kiệm bộnhớ

là định nghĩa vị trí cuối cùng của 1 vertex Vertex Shader cũng chịu trách nhiệm chuẩn bị và đưa rathông số chuẩn bị Fragment Shader Trong OpenGL chúng ta định nghĩa biến trong Vertex Shadernhưng không đến trực tiếp fragment Shader Bởi vì biến của chúng ta phải đi qua Vertex Shader.Nhưng không thể truy cập vào fragmet shader trực tiếp

Fragment shader: Bên trong Shader Fragment, chúng ta sẽ làm việc với tất cả mọi thứ liênquan đến bề mặt lưới, giống như vật liệu, hiệu ứng bump, đổ bóng và các hiệu ứng ánh sáng, phản

xạ, khúc xạ, kết cấu và các loại khác của hiệu ứng mà chúng ta muốn Kết quả cuối cùng để cácfragment là một màu pixel trong RGBA

Các thông số và mối liên hệ giữa Vertex shader và Fragment Shader được thể hiện bởihình dưới đây:

Trang 25

Hình 1.4 Mối liên hệ Vertex Shader và Fragment Shader

Ví dụ về File VS và FS:

Hình 1.5 Ví dụ 2 file Vertex Shader và Fragment Shader

1.4.2.10 Vertex Buffer Object

Hay còn gọi là VBO: Các dữ liệu của Vertex được lưu ở bộ nhớ hệ thống Mỗi lần muốn sửdụng cần sử dụng hàm glDrawArray() hoặc glDrawElements Khi đó, dữ liệu sẽ được chép vào bộnhớ đồ họa

1.4.2.11 Texture

Là một hình ảnh 2D được ứng dụng để tạo nên một đối tượng hình 3D

Model + Texture = 3D Object

Trang 26

Hình 1.6 Texture trong thiết kế 3D

Kích thước của Texture thường là mũ của 2, ví dụ như 1, 2, 4, 8, 16, 32, 64…

Trang 27

1.5 Tổng quan về thư viện Free Type 2

FreeType là một engine phông chữ được thiết kế rất nhỏ, hiệu quả, tùy biến cao, và diđộng trong khi khả năng sản xuất ra có chất lượng cao (hình ảnh glyph) Nó có thể được sử dụngtrong các thư viện đồ họa, máy chủ hiển thị, công cụ chuyển đổi font chữ, công cụ tạo file văn bản,

và nhiều sản phẩm khác nữa

FreeType là một dịch vụ phông chữ và không cung cấp API để thực hiện các tính năng caocấp hơn như bố trí văn bản hoặc xử lý đồ họa (ví dụ : vẽ ra các ký tự được tô màu, đổ bóng,…) Tuynhiên, nó rất đơn giản hóa các nhiệm vụ bằng cách cung cấp một giao diện đơn giản, dễ sử dụng,

và thống nhất để truy cập vào nội dung của các file font

FreeType cũng được gọi là FreeType2, điều này nhằm phân biệt với FreeType1, một phiênbản tiền nhiệm đã không còn được duy trì và hỗ trợ

Một số tính năng của FreeType có thể kể đến như :

 FreeType cung cấp một API đơn giản và dễ sử dụng để truy cập vào nội dung phông chữ một cách thống nhất, độc lập với các định dạng file Ngoài ra, một số các API định dạng cụ thể có thể được sử dụng để truy cập dữ liệu đặc biệt trong các file font.

 Các thiết kế của FreeType dựa trên mô-đun có thể được hoặc là liên kết tĩnh để thư viện tại thời gian biên dịch, hoặc nạp theo yêu cầu tại thời gian chạy Module được sử dụng để hỗ trợ các định dạng phông chữ cụ thể, hoặc thậm chí các định dạng hình ảnh glyph mới.

 FreeType được viết với các hệ thống nhúng Điều này có nghĩa rằng nó không sử dụng khả năng ghi dữ liệu tĩnh (tức là, nó có thể chạy trực tiếp

từ ROM), và các ứng dụng khách hàng có thể cung cấp cho người quản lý của riêng mình bộ nhớ và luồng I / O thực hiện Sau này cho phép bạn dễ dàng đọc từ ROM, nén hoặc điều khiển từ xa các file font với cùng API Một số luồng triển khai có thể được sử dụng đồng thời với một thể hiện đơn FreeType.

 FreeType hỗ trợ rất nhiều loại phông chữ, không chỉ đơn giản là TrueType và OpenType, bao gồm :

o Font TrueType (TTF) và các bộ sưu tập TrueType (TTC)

o Font CFF

o Font WOFF

o Font OpenType (OTF, cả TrueType và CFF biến thể) và các bộ sưu tập OpenType (OTC)

o Loại 1 font chữ (PFA và PFB)

o CID-keyed Loại 1 font

o SFNT dựa trên phông chữ bitmap, bao gồm màu sắc Emoji

Trang 28

o Phông chữ X11 PCF

o Phông chữ Windows FNT

o Font BDF (bao gồm cả những người anti-aliased)

o Font PFR

o Loại 42 fonts (hỗ trợ giới hạn)

 Từ một phác thảo glyph được chỉ định, FreeType có khả năng sản xuất một bitmap đơn sắc chất lượng cao hoặc một anti-aliased pixmap sử dụng

 FreeType cung cấp hệ thống bộ nhớ đệm riêng của mình Nó có thể được

sử dụng để lưu lại bộ nhớ đệm cho phông chữ hoặc hình ảnh các glyph một cách hiệu quả.

FreeType được viết theo tiêu chuẩn công nghiệp ANSI C và có thể được biên dịch một cách

dễ dàng với bất kỳ một trình biên dịch C hoặc C ++ nào

Ngoài một thư viện chuẩn ANSI C, FreeType không có bất kỳ sự phụ thuộc bên ngoài và cóthể được biên dịch và cài đặt trên bất kỳ loại hệ thống nào của chính mình Một số module cần thưviện bên ngoài (ví dụ, để xử lý các phông chữ được nén với gzip hoặc bz2), tuy nhiên chúng là tùychọn và có thể được vô hiệu hóa

1.6 Tổng quan về thư viện irrKlang

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

irrKlang hiện tại hỗ trợ các định dạng :

o RIFF WAVE (*.wav)

o Ogg Vorbis (*.ogg)

o MPEG-1 Audio Layer 3 (*.mp3)[2]

o Free Lossless Audio Codec (*.flac)

o Amiga Modules (*.mod)

o Impulse Tracker (*.it)

o Scream Tracker 3 (*.s3d)

Trang 29

irrKlang hiện tại hỗ trợ các trình biên dịch và ngôn ngữ :

o Interactive 3D Audio Level 2 reverberation

o Parametric Equalizer effects

1.7 Một số kỹ thuật tạo cảnh trong game

1.7.1 Các khái niệm

1.7.1.1 Tile

Tile là các khái niệm chỉ đến một ảnh có kích thước nhỏ (thường là ảnh bitmap), thường làhình vuông hoặc hình chữ nhật Độ dài các cạnh của tile (tính theo pixel) thường là một ước số củakhung nhìn (cửa sổ màn hình)

Trang 30

Các hình ảnh lớn trong game được tạo nên từ các tile nhỏ Việc chia nhỏ các hình ảnh lớnnày thành các tile nhỏ hơn sẽ thuận lợi cho việc lưu trữ và linh hoạt trong việc tạo ra các kiểu ảnh

đồ họa trong game, sẽ giúp tiết kiệm bộ nhớ rất nhiều và tốc độ chương trình cũng được cải thiệnnhờ tốc độ load ảnh

Với những ưu điểm như vậy, tile thường được ứng dụng trong việc tạo map (bản đồ) chogame 2D

1.7.1.2 Sprite sheet

Sprite, khác với tile, là một hình ảnh toàn vẹn của một đối tượng Mỗi đối tượng động cómột tập các sprite riêng tương ứng với từng dạng chuyển động, mỗi sprite là một hình ảnh mô tảmột trạng thái trong dạng chuyển động đó

Việc thay đổi liên tiếp các sprite này với một khoảng thời gian chờ hợp lý giữa các sprite sẽtạo ra các hình ảnh chuyển động với cảm giác thật Các hình ảnh chuyển động thường thấy tronggame, đặc biệt là game 2D như nhân vật di chuyển, các quái vật,… đều có thể được thể hiện bằngcách dung sprite

1.7.1.3 Frame

Tất cả các thiết bị hiển thị hình ảnh chuyển động hiện nay như TV, màn hình máy tính đềudựa trên khả năng lưu ảnh của mắt người Sau khi hình ảnh biến mất, mắt của chúng ta còn lưu lạitại võng mạc 1/24 giây Vì vậy để tạo các đoạn film người ta chỉ cần thay đổi liên tục các hình ảnhtheo tốc độ 24 hình / giây hoặc cao hơn Trong game cũng áp dụng kỹ thuật này để tạo chuyểnđộng và mỗi lần cập nhật màn hình gọi là 1 frame

1.4.1.4 Map

Map là vùng thể hiện tất cả các đối tượng trong game, một phần hoặc toàn bộ về mặt củamap được hiển thị trên màn hình Map chứa tất cả các đối tượng khác Tất cả các đối tượng chỉ cóthể di chuyển trong phạm vi của map và có mức độ ưu tiên khi xuất hiện trên map khác nhau

Cách tổ chức map trong game là phần rất quan trọng, đối với mỗi game khác nhau lại cócách tổ chức khác nhau

1.7.2 Kỹ thuật lọc màu

Có hai phương pháp giải quyết vấn đề này là dung các định dạng ảnh có kênh alpha vàdùng phương pháp lọc màu khi vẽ lên màn hình Hình cần sử dụng được vẽ trên một màu nềnđồng nhất, khi vẽ chúng lên màn hình, ta chỉ cần loại bỏ các pixel có màu là màu nề, ta sẽ đượchình cần vẽ

Hình 1.8 Hình trước và sau lọc màu

Trang 31

1.7.3 Kỹ thuật cuộn map

Cuộn map là kỹ thuật mà hầu hết các game đều có sử dụng Đối với các game có map lớnhơn cửa sổ hiển thị thì cuộn map là điều bắt buộc Cuộn map có thể được hiểu giống như việc dichuyển cửa sổ hiển thị trên map để hiển thị đúng hình ảnh nhân vật trong vùng cửa sổ khi nhânvật di chuyển Map có thể được cuộn theo nhiều hướng, tùy theo cách thiết kế map, và cũng cónhiều cách để cuộn map

Hình 1.9 Sơ đồ thuật toán cuộn Background theo chiều ngang từ phải sang trái

1.7.4 Kỹ thuật phát hiện va chạm

1.7.4.1 Phát hiện va chạm giữa 2 hình tròn

Phát hiện va chạm với kỹ thuật dò vùng bao quanh bằng cách kiểm tra điểm cắt nhau của các hình tròn hoặc các hình đa giác Như trong Hình, hình tròn nhỏ là vùng bao quanh của một

Ngày đăng: 05/10/2016, 19:04

HÌNH ẢNH LIÊN QUAN

Hình 1.4 Mối liên hệ Vertex Shader và Fragment Shader - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 1.4 Mối liên hệ Vertex Shader và Fragment Shader (Trang 22)
Hình 1.5 Ví dụ 2 file Vertex Shader và Fragment Shader - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 1.5 Ví dụ 2 file Vertex Shader và Fragment Shader (Trang 22)
Hình 1.10 Kỹ thuật phát hiện va chạm giữa hai hình tròn - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 1.10 Kỹ thuật phát hiện va chạm giữa hai hình tròn (Trang 30)
Hình 2.1 Sơ đồ Use Case chính của hệ thống - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.1 Sơ đồ Use Case chính của hệ thống (Trang 32)
Hình 2.3 Tổng thể Singleton - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.3 Tổng thể Singleton (Trang 35)
Hình 2.4 Tối ưu tính toán timer - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.4 Tối ưu tính toán timer (Trang 35)
Hình 2.6 Màn hình thiết kế giao diện chính - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.6 Màn hình thiết kế giao diện chính (Trang 37)
Hình 2.7 Màn hình thiết kế giao diện chơi game - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.7 Màn hình thiết kế giao diện chơi game (Trang 38)
Hình 2.14 Các cách sử dụng Freetype2. - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.14 Các cách sử dụng Freetype2 (Trang 48)
Hình 2.16 Vẽ chữ trong game SONIC RUN. - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.16 Vẽ chữ trong game SONIC RUN (Trang 50)
Hình 2.17 Thuật toán tính điểm, tăng độ khó trong game - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 2.17 Thuật toán tính điểm, tăng độ khó trong game (Trang 51)
Hình 3.1 Các Source File cơ bản của 2 Project chính của game - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 3.1 Các Source File cơ bản của 2 Project chính của game (Trang 53)
Hình 3.2 Cửa sổ ShowLogs của tortoiseSVN - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 3.2 Cửa sổ ShowLogs của tortoiseSVN (Trang 54)
Hình 3.3 Giao diện chính hoàn chỉnh - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
Hình 3.3 Giao diện chính hoàn chỉnh (Trang 55)
BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH VIỆT - Nghiên cứu một số kỹ thuật tạo cảnh trong game. Ứng dụng xây dựng game Sonic Run
BẢNG ĐỐI CHIẾU THUẬT NGỮ ANH VIỆT (Trang 59)

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