TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề 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 Sinh viên thực hiện VŨ HỮU TR[.]
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN _ ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC Đề 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 Sinh viên thực hiện: VŨ HỮU TRUNG KIÊN Lớp KTPM – K6 Giảng viên hướng dẫn: THS NGÔ ĐỨC VĨNH Cán phản biện: Hà Nội, 5/2015 LỜI MỞ ĐẦU Sự phát triển công nghệ mơ giải trí, ngày có nhiều ứng dụng đồ họa trò chơi 3D xây dựng nhằm phục vụ mục đích nghiên cứu, mơ giải trí… Cùng với đó, cơng nghệ phần cứng phát triển nhanh, đặc biệt phần cứng xử lý đồ họa lập trình ngơn ngữ lập trình phần cứng Tuy nhiên, để xây dựng ứng dụng đồ họa trò chơi 2D đảm bảo yêu cầu: hỗ trợ dải phần cứng phần mềm (cụ thể hệ điều hành) lớn, có khả lựa chọn API đồ họa mức thấp (OpenGL, OpenGL ES ), dễ dàng quản lý phát triển tài nguyên Từ yêu cầu trên, nhóm em định lựa chọn đề tài “Nghiên cứu số kỹ thuật tạo cảnh 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 kỹ thuậttạo cảnh game Tập trung nghiên cứu kỹ thuật, đưa 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 ứng dụng game 2D, người lập trình khơng cần phải quan tâm đến trình quản lý tài nguyên, xử lý đồ họa mức thấp bên Thay vào đó, họ cần tập trung vào quản lý mức lơgíc thành phần ứng dụng, thêm thành phần dựa thành phần sở hệ thống cung cấp Đến thời điểm tại, nhóm hồn thành việc nghiên cứu xây dựng cảnh ứng dụng thành công vào game Sonic Run Do chưa có nhiều kinh nghiệm việc xây dựng game nên cịn vài thiếu sót Trong thời gian tới, nhóm tiếp tục để phát triển hoàn thiện MỤC LỤC DANH SÁCH HÌNH VẼ DANH SÁCH BẢNG BIỂU DANH SÁCH TỪ VIẾT TẮT Từ viết tắt VS FS AI HUD MMOG MMORPG MMORTS RAM GPU RGBA Từ đầy đủ Vertex Shader Fragment Shader Artificial Intelligence Head-up Display Massively Multiplayer Online Game Massively Multiplayer Online Role-Playing Game Massively Multiplayer Online Real-Time Game Random Access Memory Graphics Processing Unit Red Green Blue Alpha PHẦN 1: MỞ ĐẦU Tên đề tài Nghiên cứu số kỹ thuật tạo cảnh game Ứng dụng xây dựng game Sonic Run Lý chọn đề tài Sự phát triển nhảy vọt công nghệ thông tin tác động mạnh mẽ đến hoạt động xã hội, làm thay đổi cách sâu sắc đến phong cách làm việc xã hội Công nghệ thông tin trở thành trụ cột kinh tế tri thức ứng dụng công nghệ thông tin vào hoạt động giải trí xã hội nhiều người quan tâm Phạm vi ứng dụng công nghệ thông tin ngày mở rộng nhiều lĩnh vực: quản lý hoạt động người xã hội, tự động hóa, truyền thơng, giải trí… Đời sống người ngày nâng cao Bên cạnh nhu cầu vui chơi giải trí người ngày đòi hỏi Các trò chơi thiết kế máy tính đời đà phát triển để đáp ứng nhu cầu đòi hỏi người Game từ lâu dịch vụ giải trí phổ biến người dùng Việt Nam Dịch vụ game phát triển nhiều tảng PC, mobile, browser Cùng với game PC game browser, ngày nay, game dành cho thiết bị di động thực bùng nổ Trong phạm vi đồ án mình, em xin trình bày số kiến thức quy trình thiết kế xây dựng game, cách sử dụng engine game phổ biến cách xây dựng game SonicRun tảng Win32 Game thuộc thể loại Endless Run với nội dung đơn giản áp dụng kỹ thuật xây dựng hình ảnh OpenGL ES 2.0 mô vật lý thư viện Box2D, tạo chữ chạy FreeType2 âm 3D sống động irrKlang để làm cho game thêm hấp dẫn thú vị Mục đích đề tài Đề tài “Nghiên cứu số kỹ thuật tạo cảnh game Ứng dụng xây dựng game Sonic Run” Nhằm tìm hiểu quy trình thiết kế game, kỹ thuật tạo cảnh game để áp dụng vào xây dựng game hồn chỉnh Mục tiêu đề tài • • • • Tìm hiểu quy trình thiết kế xây dựng game Tìm hiểu engine làm game Tìm hiểu số kỹ thuật tạo cảnh game Áp dụng vào ây dựng game Sonic Run Bốc cục đề tài Nội dung đề tài chia làm chương CHƯƠNG 1: NỘI DUNG NGHIÊN CỨU Trong chương giới thiệu, trình bày hiểu biết quy trình phát triển game, engine làm game, thuật toán sinh map CHƯƠNG 2: PHÂN TÍCH VÀ THIẾT KẾ GAME SONICRUN Trình bày quy trình hồn chỉnh từ phân tích đến thiết kế game SonicRun, chi tiết thiết kế thuật tốn có game CHƯƠNG 3: CÀI ĐẶT THỬ NGHIỆM Từ thiết kế trên, cài đặt, xây dựng game hệ điều hành Win32 sử dụng IDE VisualStudio C++ 2008 CHƯƠNG 4: KẾT LUẬN Tổng kết thành đạt làm đồ án, phương hướng phát triển tiếp game có 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 ngành giải trí khác, thông thường lĩnh vực liên ngành Các nhà phát triển video game, cách gọi phổ biến ngành cơng nghiệp, chủ yếu bao gồm lập trình viên nhà thiết kế đồ họa Qua nhiều năm,với mở rộng ngành cơng nghiệp này, bao gồm hầu hết loại kỹ mà thấy để làm phim chương trình tivi, bao gồm thiết kế âm thanh, âm nhạc, loại kỹ thuật khác; đồng thời có kỹ chuyên ngành cho video game, thiết kế game v.v Tất quản lý điều hành nhà sản xuất Thời kỳ đầu ngành cơng nghiệp game, thơng thường có người thực tất vai trò cần thiết để tạo game Nhưng với hệ máy ngày phức tạp mạnh mẽ hơn, cần đội ngũ phát triển lớn để thiết kế hết phần đồ họa, lập trình, kỹ thuật điện ảnh Điều khơng có nghĩa thời kỳ người làm toàn game kết thúc, thấy game người làm thị trường game casual game cho hệ máy cầm tay nơi game nhỏ phổ biến giới hạn phần cứng giới hạn nhớ hay thiếu khả dựng hình 3D chuyên dụng hệ máy đó(ví dụ điện thoại di động hay PDA) Với lớn mạnh quy mô đội ngũ phát triển ngành công nghiệp, vấn đề kinh tế tăng theo Các studio phát triển game cần tiền đủ để trả mức lương cạnh tranh với studio khác cho nhân viên để thu hút giữ lại tài lớn mình, 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 trì lợi nhuận với khoản đầu tư họ Thơng thường, đội ngũ phát triển game hệ console có số lượng người nằm khoảng từ tới 50, có lúc cịn lên đến 100 Tháng 5/2009, dự án game Assasin's Creed II cịn cơng bố đội ngũ phát triển lên tới 450 Sự tăng trưởng quy mô đội ngũ phát triển kết hợp với áp lực lớn phải hoàn thành dự án kịp thị trường đồng thời áp lực giảm bớt chi phí sản xuất dẫn đến đời hàng loạt sản phẩm game phải lùi ngày phát hành phát hành thiếu hoàn chỉnh Rất nhiều game sản xuất cho hệ PC thiết kế với tiêu chí cho phép người sử dụng chỉnh sửa game Những chỉnh sửa (mod) tăng thêm khả chơi lại thú vị cho game Các hãng phát triển tiếng id Software, Valve Software, Crytek, Bethesda, Epic Games Blizzard Entertainment đưa game họ với số công cụ dùng để phát triển game đó, kèm theo hướng dẫn để hỗ trợ nhà phát triển mod (phần lớn game thủ yêu thích game) Mạng Internet cung cấp nơi khơng tốn để quảng cáo phân phối chỉnh sửa, chúng yếu tố đóng góp vào thành cơng game Có thể thấy rõ việc mod khiến game trở nên phổ biến trường hợp Counter-Strike chỉnh sửa Half-Life Ba khu vực sản xuất lớn thị trường lớn video game là: khu vực Bắc Mỹ (bao gồm Mỹ Canada), Nhật Bản 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 Ý Cả Ấn Độ Trung Quốc coi thị trường ngành công nghiệp game doanh số kỳ vọng tăng trưởng rõ rệt năm tới Và Ailen có số lượng người sử dụng video game lớn tính theo đầu người Doanh thu theo hệ máy game khác thị trường thói quen người tiêu dùng địa phương Các khách hàng Nhật Bản thường mua game console game máy tính, với ưu tiên mạnh mẽ cho 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 ưu tiên hơn, đặc biệt game nhập vai trực tuyến nhiều người chơi(MMORPG) game chiến thuật thời gian thực Có 20.000 tiệm cafe internet Hàn Quốc nơi game máy tính chơi trả phí theo Tập đoàn NPD (tập đoàn dẫn đầu Bắc Mỹ 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 hệ máy cầm tay: $6.2 tỷ, 8% so với năm 2003 Phần cứng phụ kiện cho hệ console hệ cầm tay: $3.7 tỷ, 35% so với năm 2003 Doanh số game PC: $1.1 tỷ, 15% so với năm 2003 Game PC sản phẩm kỹ thuật số phân phối đường trực tiếp hay qua mạng internet hệ thống Steam không theo dõi NPD, Steam không lên danh sách doanh thu game mà tải qua dịch vụ Và phân phối trái phép tràn lan hệ PC nên doanh số game bán lẻ cho máy tính cá nhân giảm đáng kể điều dễ hiểu Các số tính USD, đơn vị Các đơn vị vận chuyển cho danh mục hàng hóa cao nhiều so với số lượng USD thu trên, nhiều phần mềm phần cứng giảm giá vào năm 2003 Nhưng với đời hệ console (Xbox 360, PS3, Wii), số tăng lên nhanh chóng Ngành công nghiệp game điện ảnh trở nên gắn bó với nhau, với Tập đồn Sony có thành cơng đáng kể hai Một số lượng lớn "phim bom tấn" mùa hè sinh game tên kèm, thường phát hành 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 tăng trưởng trung bình 6,9% năm kỳ vọng thu 34,7 tỉ USD vào năm 2012 Game bán qua mạng dự kiến tăng với tốc độ lớn 16,9%, leo thang từ 6,6 tỷ USD năm 2008 lên 14,4 tỉ USD năm 2012 Dự kiến tăng trưởng lớn nhất, nhiên lại nằm game 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ỉ vòng năm Cấu trúc game chia nhỏ sơ đồ đây: Bảo trì Trong trường hợp trị chơi trực tuyến nhiều người chơi (MMOG), chẳng hạn MMORPG hay MMORTS, lơ hàng trị chơi giai đoạn khởi đầu bảo trì Trị chơi trực tuyến việc bảo trì liên tục giới game liên tục thay đổi lặp tính thêm vào Các nhân viên bảo trì cho MMOG phổ biến đánh số đến hàng chục người, bao gồm thành viên đội ngũ lập trình ban đầu 1.3 Tổng quan thư viện Box2D 1.3.1 Giới thiệu Box2D Box2D tên mà người biết đến engine vật lý 2D tốt Engine nhẹ, hiệu quả, mạnh tính tương thích cao, miễn phí mã nguồn mở Website thức Box2D http://www.box2d.org Một engine vật lý mô môi trường vật lý đối tượng cho giống thật Mặc dù sử dụng cho ứng dụng khác, Box2D tạo chủ yếu làm thư viện sử dụng game Engine viết bảo trì Erin Catto với lý ơng khơng hài lịng engine vật lý mà ông làm việc Box2D viết C++, chuyển sang nhiều ngôn ngữ khác cộng đồng người sử dụng.Engine vật lý game engine Box2D mạnh việc mô vật lý khơng thiết kế để tận dụng sức mạnh đồ họa, network, xây dựng game load game level 1.3.2 Các thành phần Box2D 1.3.2.1 Rigit Body Bodies đối tượng sở lớp vật lý, chúng thứ thấy chúng chạy vịng quanh va chạm với đối tượng khác Chúng ta xem body thuộc tính đối tượng mà thấy (draw) va chạm (collide with) Những thuộc tính ẩn gồm: • • • • • • Mass : khối lượng Velocity : vận tốc hướng di chuyển Rotational inertia : quán tính quay Angular velocity : vận tốc tiếp tuyến độ lớn vận tốc Location : vị trí Angle : hướng vật thể Mặc dù biết tất đặc tính đối tượng, khơng biết cách mà xảy va chạm với đối tượng khác Để thiết lập kích thước hình dạng đối tượng sử dụng fixtures Có loại body : static (tĩnh), dynamic (động) kinematic (động học) Hai loại đầu dễ hiểu đọc tên loại cuối khó hiểu 1.3.2.2 Fixture Fixture dùng để mô tả kích thước, hình dạng đặc điểm vật chất đối tượng vật lý Một body có nhiều fixture gắn vào chúng, trọng tâm body bị ảnh hưởng fixture Khi body va chạm với nhau, fixture chúng sử dụng để định kết va chạm Những thuộc tính fixture : • • • • Shape : hình dạng Restitution : tính đàn hồi Friction : độ trượt (ma sát) Density : độ nặng Mỗi fixture có hình dạng dùng để xét va chạm với fixture khác Một fixture hình trịn (circle), hình tam giác (triangle), hình từ giác (rectangle) đa giác (polygon) Đơi muốn fixture biểu diễn đoạn thẳng với độ rộng dày Chúng ta sử dụng phương thức SetAsEdge để làm điều này, phương thức sử dụng điểm đầu đoạn thẳng Chúng ta tạo static body fixture đường thằng, nằm gần đáy hình dynamic object rơi xuống Tuy nhiên, phương thức SetAsEdge cho polygon loại bỏ từ Box2D version 2.1.2 trở lên chúng có kiểu shape riêng, b2EdgeShape Density fixture nhân cho diện tích với khối lượng fixture Restitution định nghĩa độ đàn hồi fixture Giống friction, giá trị restitution nằm khoảng [0-1], giá trị nghĩa fixture hoàn toàn khơng đàn hồi, nghĩa mà tồn lực mà body tác dụng tác dụng ngược lại hoàn toàn Khi fixture va chạm với nhau, restitution tổng có xu hướng cao giá trị restitution chúng 1.3.2.3 World World nhắc đến phần trước thực thể mà chứa toàn Box2D body Khi tạo hủy body, gọi phương thức từ đối tượng world để làm điều này, đối tượng world quản lý toàn việc cáp phát vùng nhớ cho đối tượng Vì đối tượng world quan trọng, số tác dụng đối tượng làm: • • • • Định nghĩa trọng lực Mô vật lý Tìm fixture phạm vi cho trước Tìm fixture giao Trọng lực thiết lập có ảnh hưởng lên đối tượng động world, thay đổi cách sử dụng phương thức SetGravity Biến sleep có nghĩa body có phép “sleep” hay khơng khơng có xảy với chúng (để tối ưu) Nếu thiết lập true, body “sleep” khơng có xảy loại khỏi simulation có đánh thức Điều va chạm với body khác, lực tác dụng lên nó… Kể từ Box2D v2.2.1 biến sleep đặt mặc định true Để thay đổi sử dụng phương thức b2World::SetAllowSleeping(bool) Khi khơng sử dụng đối tượng world, delete trỏ bình thường : //delete myWorld; Khi đối tượng world hủy, xóa tất body bên Lưu ý khơng xóa trỏ body sau hủy đối tượng world 1.4 Tổng quan thư viện OpenGL ES 1.4.1 Giới thiệu OpenGL ES OpenGL ES sản phẩm miễn phí bao gồm hàm API cho phép tạo ứng dụng 2D, 3D ứng dụng nhúng – bao gồm thiết bị cầm cầm tay Nó định nghĩa tập openGL, tạo tính linh hoạt, mạnh mẽ giao diện cấp thấp phần mềm đồ họa OpenGL ES 2.0 nhấn mạnh tốc độ phần cứng hàm API, OpenGL ES 1.1 tập trung vào phần mềm cho phép triển khai OpenGL ES 2.0 hồn tồn tương thích với OpenGL ES 1.1 dễ dang thêm API hai phiên OpenGL (Open Graphics Library) thư viện đồ hoạ, bao gồm tập khoảng 200 hàm, dùng ứng dụng đồ hoạ chiều chiều OpenGL viết C/C++, ngơn ngữ cấp thấp, mà OpenGL hỗ trợ nhiều tảng khác từ Mac OS, Linux, Windows… OpenGL ES (Open Graphics Library for Embedded System) phiên OpenGL dành cho hệ thống nhúng mà tiêu biểu thiết bị di động Phiên gọn nhẹ bỏ bớt số thành phần để phù hợp với thiết bị có cấu hình thấp so với PC 1.4.2 Các khái niệm OpenGL ES 1.4.2.1 Nhập liệu từ bàn phím Đầu tiên phải xây dựng chức để xử lí liệu đưa vào từ bàn phím,chức phải chấp nhận số tham số định: - Tham số thứ biến UGWindow - Tham số thứ hai phải biến nguyên (interger), đại diện cho phím bấm - Tham số thứ ba thứ tư hai biến nguyên (interger), xác định giá trị x, y trỏ thiết bị ấn 1.4.2.2 Dựng hình (Rendering) Các bước khởi tạo thiết lập OpenGL ES, vẽ hình OpenGL ES sử dụng kĩ thuật đêm kép Khi vẽ vẽ nhớ đệm Sau có tất thơng tin việc vẽ, trao đổi nhớ đệm bắt đầu vẽ nhớ đệm khác Điều để ngăn chặn ảnh hưởng việc chớp hình số xóa hình vẽ hình khác nhớ đệm Trong hàm Init(), sử dụng lời gọi glClearColor, sử dụng để xác định màu sắc cho hình thị, bao gồm tham số, tham số đại diện cho hệ màu RGBA có giá trị khoảng từ đến Ba tham số đầu màu đỏ xanh xanh da trời, tham số thứ độ sáng tối window 1.4.2.3 Phép chiếu song song (Orthographic Projection) Có hai cách để hiển thị đối tượng sử dụng phép chiếu phối cảnh phép chiếu song song Phép chiếu song song, view volume định nghĩa hình hộp chữ nhật, vật thể nằm view volume chiếu trực giao lên khung nhìn 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 ảnh Trong phần tìm hiểu làm để hiển thị hình lên hình, hình tạo cách xác định đỉnh, điểm không gian chiều cần rõ điểm hình Danh sách tham số: Hình 1.3 Mơ tả tham số hình ảnh Tên tham số Mơ tả GL_POINTS Các điểm GL_LINES Đoạn thẳng GL_LINE_STRIP Đường gấp khúc khơng khép kín GL_LINE_LOOP Đường gấp khúc khép kín GL_TRIANGLES Tam giác GL_TRIANGLE_STRIP Một dải tam giác liên kết với GL_TRIANGLE_FAN Các tam giác liên kết theo hình quạt Bảng 1.1 Danh sách tham số thiết kế song song Khi vẽ điểm, chức glPointSize thay đổi kích cỡ điểm vẽ, kích cỡ mặc định Khi vẽ đường bạn sử dụng glLineWidth để xác định độ rộng đường, kích cỡ mặc định 1.4.2.4 Màu sắc tạo bóng (Color and Shader) Tất màu sắc OpenGL đại diện giá trị, giá trị màu đỏ, xanh xanh lam, cuối giá tri alpha, điều thể rõ ràng màu 1.3.2.5 Các phép biến đổi (Transform) Phần giới thiệu cách chuyển đổi hình theo cách khác • Phép tỉ lệ - glScalef: Phép dùng để tăng giảm kích cỡ vật theo trụ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 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 trước, hình sau, tạo hiệu ứng khơng gian 3D Muốn sử dụng chức OpenGL sử dụng GL_DEPTH_TESTtrong hàm glEnable 1.4.2.7 Ánh sáng (Lighting) Bước cần thực kích hoạt backface culling Có số loại ánh sáng thêm vào hình OpenGL ES như: Ambient Light: Ánh sáng bao xung quanh, khơng đến từ hướng cụ thể, ánh sáng bao xung quanh bề mặt ánh sáng phản xạ theo nhiều hướng Diffuse Light: Ánh sáng khuếch tán, đến từ hướng, ánh sáng khuếch tán tương tự anh sáng bao quanh phản xạ theo nhiều hướng Specular Light: Ánh sáng phản chiếu, giống ánh sáng khuếch tán phản xạ theo hướng, ví dụ ánh sáng bật bề mặt trước Emissive Light: Ánh sáng tỏa, ánh sáng đến từ đối tượng cụ thể, đối tượng cso thể giảm lượng ánh sáng khơng thể phản chiếu bề mặt ngồi Pháp tuyến vector vng góc với bề mặt sử dụng việc tính tốn ánh sáng nên cần phải xác định pháp tuyến cho đa giác vẽ muốn bị ảnh hưởng nguồn sáng 1.4.2.8 Vertex Một hình phẳng xác định tập hợp Vertex Các vertex nối với đoạn thẳng Khi tất vertex nối hồn thành hình dạng Để quản lý kiểu hình dạng khác chương trình dễ dàng, cần định nghĩa cặp cấu trúc bao gồm kiểu liệu vertex Một vertex bao gồm: • Tọa độ (x, y, z); • Màu sắc • Tọa độ Texture Việc truyền liệu từ RAM -> GPU tốn kém, nên tối thiểu số vertex để tiết kiệm nhớ 1.4.2.9 Shader Shaders giống mẩu code giống chương trình nhỏ, làm việc trực tiếp GPU để thực tính tốn phức tạp Có hai loại: • Vertex shader • Fragment shader Vertex shader: cịn gọi VS, chương trình nhỏ thực thi đỉnh mesh (mắt lưới) Lấy ví dụ hình khối lập phương, hình có đỉnh, hình đỉnh khơng thể thấy Vì khối lập phương xử lý lần GPU Những vertex shader thực định nghĩa vị trí cuối vertex Vertex Shader chịu trách nhiệm chuẩn bị đưa thông số chuẩn bị Fragment Shader Trong OpenGL định nghĩa biến Vertex Shader khơng đến trực tiếp fragment Shader Bởi biến phải qua Vertex Shader Nhưng truy cập vào fragmet shader trực tiếp Fragment shader: Bên Shader Fragment, làm việc với tất thứ liên quan đến bề mặt lưới, giống vật liệu, hiệu ứng bump, đổ bóng hiệu ứng ánh sáng, phản xạ, khúc xạ, kết cấu loại khác hiệu ứng mà muốn Kết cuối để fragment màu pixel RGBA Các thông số mối liên hệ Vertex shader Fragment Shader thể hình đây: Hình 1.4 Mối liên hệ Vertex Shader Fragment Shader Ví dụ File VS FS: Hình 1.5 Ví dụ file Vertex Shader Fragment Shader 1.4.2.10 Vertex Buffer Object Hay gọi VBO: Các liệu Vertex lưu nhớ hệ thống Mỗi lần muốn sử dụng cần sử dụng hàm glDrawArray() glDrawElements Khi đó, liệu chép vào nhớ đồ họa 1.4.2.11 Texture Là hình ảnh 2D ứng dụng để tạo nên đối tượng hình 3D Model + Texture = 3D Object Hình 1.6 Texture thiết kế 3D Kích thước Texture thường mũ 2, ví dụ 1, 2, 4, 8, 16, 32, 64… 1.4.2.12 Model Một model 3D bao gồm: • Đa giác • Đỉnh • Texture Định dạng file Model thường NFG Ví dụ file NFG: Hình 1.7 Ví dụ file Model 1.5 Tổng quan thư viện Free Type FreeType engine phông chữ thiết kế nhỏ, hiệu quả, tùy biến cao, di động khả sản xuất có chất lượng cao (hình ảnh glyph) Nó sử dụng 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, nhiều sản phẩm khác FreeType dịch vụ phông chữ không cung cấp API để thực tính cao cấp bố trí văn xử lý đồ họa (ví dụ : vẽ ký tự tô màu, đổ bóng,…) Tuy nhiên, đơn giản hóa nhiệm vụ cách cung cấp giao diện đơn giản, dễ sử dụng, thống để truy cập vào nội dung file font FreeType gọi FreeType2, điều nhằm phân biệt với FreeType1, phiên tiền nhiệm khơng cịn trì hỗ trợ Một số tính FreeType kể đến : • FreeType cung cấp API đơn giản dễ sử dụng để truy cập vào nội dung phông chữ cách thống nhất, độc lập với định dạng file Ngoài ra, số API định dạng cụ thể sử dụng để truy cập liệu đặc biệt file font • Các thiết kế FreeType dựa mơ-đun liên kết tĩnh để thư viện thời gian biên dịch, nạp theo yêu cầu thời gian chạy Module sử dụng để hỗ trợ định dạng phông chữ cụ thể, chí định dạng hình ảnh glyph • FreeType viết với hệ thống nhúng Điều có nghĩa khơng sử dụng khả ghi liệu tĩnh (tức là, chạy trực tiếp từ ROM), ứng dụng khách hàng cung cấp cho người quản lý riêng nhớ luồng I / O thực Sau cho phép bạn dễ dàng đọc từ ROM, nén điều khiển từ xa file font với API Một số luồng triển khai sử dụng đồng thời với thể đơn FreeType • FreeType hỗ trợ nhiều loại phông chữ, không đơn giản TrueType OpenType, bao gồm : o Font TrueType (TTF) sưu tập TrueType (TTC) o Font CFF o Font WOFF o Font OpenType (OTF, TrueType CFF biến thể) sưu tập OpenType (OTC) o Loại font chữ (PFA PFB) o CID-keyed Loại font o SFNT dựa phông chữ bitmap, bao gồm màu sắc Emoji o Phơng chữ X11 PCF o Phơng chữ Windows FNT • • • • • o Font BDF (bao gồm người anti-aliased) o Font PFR o Loại 42 fonts (hỗ trợ giới hạn) Từ phác thảo glyph định, FreeType có khả sản xuất bitmap đơn sắc chất lượng cao anti-aliased pixmap sử dụng 256 mức “gray” FreeType hỗ trợ tất ánh xạ ký tự xác định thông số kỹ thuật TrueType OpenType Lõi API FreeType cung cấp chức đơn giản để truy cập thông tin tiên tiến tên glyph liệu kerning Một trình thơng dịch bytecode đầy đủ tính hiệu quả, cố gắng để phù hợp với kết từ engine bytecode Windows FreeType cung cấp hệ thống nhớ đệm riêng Nó sử dụng để lưu lại nhớ đệm cho phơng chữ hình ảnh glyph cách hiệu FreeType viết theo tiêu chuẩn công nghiệp ANSI C biên dịch cách dễ dàng với trình biên dịch C C ++ Ngoài thư viện chuẩn ANSI C, FreeType khơng có phụ thuộc bên ngồi biên dịch cài đặt loại hệ thống Một số module cần thư viện bên ngồi (ví dụ, để xử lý phông chữ nén với gzip bz2), nhiên chúng tùy chọn vơ hiệu hóa 1.6 Tổng quan thư viện irrKlang irrKlang API mạnh mẽ, mức cao phục vụ việc phát âm ứng dụng khơng gian 3D 2D trị chơi, trực quan khoa học ứng dụng đa phương tiện irrKlang thư viện miễn phí cho việc sử dụng phi thương mại Ngồi cịn có phiên cao cấp irrKlang “irrKlang pro” mua với khoản lệ phí cấp giấy phép nhỏ sử dụng sản phẩm thương mại irrKlang hỗ trợ định dạng : o o o o o o o o RIFF WAVE (*.wav) Ogg Vorbis (*.ogg) MPEG-1 Audio Layer (*.mp3)[2] Free Lossless Audio Codec (*.flac) Amiga Modules (*.mod) Impulse Tracker (*.it) Scream Tracker (*.s3d) Fast Tracker (*.xm) irrKlang tảng làm việc cho lập trình viên, độc lập với tảng chạy Các tảng sau hỗ trợ với phần phụ trợ đầu âm tương ứng: • Windows 98, ME, NT 4, 2000, XP, Vista, Windows 7, Windows DirectSound o DirectSound o WinMM Linux / * nix o ALSA Mac OS X (x86 PPC) o CoreAudio o • • Các thư viện âm làm việc với tất tảng hỗ trợ cách, lập trình viên phải để viết mã trò chơi / ứng dụng họ lần, chạy tất tảng hỗ trợ mà khơng cần thay đổi dịng mã irrKlang hỗ trợ trình biên dịch ngơn ngữ : • Microsoft Visual C/C++ 6.0 - 2013 • GCC 3-4 • All NET languages (C#, VisualBasic.NET, Delphi.NET, IronPhyton, F#, Haskell.NET …) Ngoài hiệu ứng doppler cho âm 3D irrKlang hỗ trợ hiệu ứng âm sau đây, cho âm 3D 2D: o o o o o o o o Chorus Compressor Distortion Echo Flanger Gargle Interactive 3D Audio Level reverberation Parametric Equalizer effects 1.7 Một số kỹ thuật tạo cảnh game 1.7.1 Các khái niệm 1.7.1.1 Tile Tile khái niệm đến ảnh có kích thước nhỏ (thường ảnh bitmap), thường hình vng hình chữ nhật Độ dài cạnh tile (tính theo pixel) thường ước số khung nhìn (cửa sổ hình) Các hình ảnh lớn game tạo nên từ tile nhỏ Việc chia nhỏ hình ảnh lớn thành tile nhỏ thuận lợi cho việc lưu trữ linh hoạt việc tạo kiểu ảnh đồ họa game, giúp tiết kiệm nhớ nhiều tốc độ chương trình cải thiện nhờ tốc độ load ảnh Với ưu điểm vậy, tile thường ứng dụng việc tạo map (bản đồ) cho game 2D 1.7.1.2 Sprite sheet Sprite, khác với tile, hình ảnh tồn vẹn đối tượng Mỗi đối tượng động có tập sprite riêng tương ứng với dạng chuyển động, sprite hình ảnh mơ tả trạng thái dạng chuyển động Việc thay đổi liên tiếp sprite với khoảng thời gian chờ hợp lý sprite tạo 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 game, đặc biệt game 2D nhân vật di chuyển, quái vật,… thể cách dung sprite 1.7.1.3 Frame Tất thiết bị hiển thị hình ảnh chuyển động TV, hình máy tính dựa khả lưu ảnh mắt người Sau hình ảnh biến mất, mắt cịn lưu lại võng mạc 1/24 giây Vì để tạo đoạn film người ta cần thay đổi liên tục hình ảnh theo tốc độ 24 hình / giây cao Trong game áp dụng kỹ thuật để tạo chuyển động lần cập nhật hình gọi frame 1.4.1.4 Map Map vùng thể tất đối tượng game, phần toàn mặt map hiển thị hình Map chứa tất đối tượng khác Tất đối tượng di chuyển phạm vi map có mức độ ưu tiên xuất map khác Cách tổ chức map game phần quan trọng, game khác lại có cách tổ chức khác 1.7.2 Kỹ thuật lọc màu Có hai phương pháp giải vấn đề dung định dạng ảnh có kênh alpha dùng phương pháp lọc màu vẽ lên hình Hình cần sử dụng vẽ màu đồng nhất, vẽ chúng lên hình, ta cần loại bỏ pixel có màu màu nề, ta hình cần vẽ Hình 1.8 Hình trước sau lọc màu 1.7.3 Kỹ thuật cuộn map Cuộn map kỹ thuật mà hầu hết game có sử dụng Đối với game có map lớn cửa sổ hiển thị cuộn map điều bắt buộc Cuộn map hiểu giống việc di chuyển cửa sổ hiển thị map để hiển thị hình ảnh nhân vật vùng cửa sổ nhân vật di chuyển Map cuộn theo nhiều hướng, tùy theo cách thiết kế map, có nhiều cách để cuộn map Tải FULL (59 trang): https://bit.ly/3fQM1u2 Dự phòng: fb.com/KhoTaiLieuAZ Hình 1.9 Sơ đồ thuật tốn cuộn Background theo chiều ngang từ phải sang trái 1.7.4 Kỹ thuật phát va chạm 1.7.4.1 Phát va chạm hình tròn Phát va chạm với kỹ thuật dò vùng bao quanh cách kiểm tra điểm cắt hình trịn hình đa giác Như Hình, hình trịn nhỏ vùng bao quanh sprite (quả bóng nhỏ) hình trịn lớn vùng bao quanh xô Khi hai vùng bao quanh có điểm chung bóng rơi vào xô Tải FULL (59 trang): https://bit.ly/3fQM1u2 Dự phịng: fb.com/KhoTaiLieuAZ Hình 1.10 Kỹ thuật phát va chạm hai hình trịn Phát va chạm hai vòng tròn kỹ thuật đơn giản kỹ thuật phát va chạm Nếu khoảng cách hai trọng tâm hình trịn nhỏ tổng bán kính hai hình trịn hai hình trịn có điểm chung hai sprite va chạm 1.7.4.2 Phát va chạm hai hình tứ giác Phương pháp: kiểm tra đỉnh hình có nằm bên hình khơng 1.7.4.3 Phát va chạm hình trịn hình tứ giác Phương pháp: Gọi C tâm R bán kính hình trịn Ta tìm cách xác định điểm A điểm gần thuộc hình chữ nhật đến tâm C Sau so sánh độ lớn CA với R Khoảng cách tâm C hình trịn điểm A hình chữ nhật minh họa hình Khi tâm hình trịn nằm bên hình chữ nhật, điểm C A trùng Hình 1.11 Kỹ thuật phát va chạm hình trịn hình tứ giác 3875043 ... tài ? ?Nghiên cứu số kỹ thuật tạo cảnh 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 kỹ thuậttạo cảnh game Tập trung nghiên cứu kỹ thuật, ... kế game, kỹ thuật tạo cảnh game để áp dụng vào xây dựng game hồn chỉnh Mục tiêu đề tài • • • • Tìm hiểu quy trình thiết kế xây dựng game Tìm hiểu engine làm game Tìm hiểu số kỹ thuật tạo cảnh game. . . viện Box2D, tạo chữ chạy FreeType2 âm 3D sống động irrKlang để làm cho game thêm hấp dẫn thú vị Mục đích đề tài Đề tài ? ?Nghiên cứu số kỹ thuật tạo cảnh game Ứng dụng xây dựng game Sonic Run? ?? Nhằm