Nội dung
MỤC LỤC GIỚI THIỆU 7 CHƯƠNG 1 TỔNG QUAN NGÀNH CÔNG NGHIỆP TRÒ CHƠI ĐIỆN TỬ 9 1.1. LỊCH SỬ NGÀNH CÔNG NGHIỆP TRÒ CHƠI ĐIỆN TỬ 10 1.1.1. Thời kỳ trước sự ra đời của SpaceWar 10 1.1.2. Thời kỳ từ SpaceWar đến Atari 14 1.1.3. Thời kỳ máy chơi game chuyên dụng và máy tính cá nhân 17 1.1.4. Giai đoạn lung lay và củng cố 22 1.1.5. Sự ra đời của Game Engine 24 1.1.6. Cuộc cách mạng của các thiết bị cầm tay 25 1.1.7. Hiện tượng điện thoại thông minh 27 1.1.8. Game nhiều người chơi 29 1.1.9. Tương lai ở phía trước 31 1.2. NHÂN LỰC VÀ VAI TRÒ TRONG PHÁT TRIỂN GAME 32 1.2.1. Chiến lược gia (vision) 32 1.2.2. Đội ngũ quản trị sản xuất- Production 34 1.2.3. Đội thiết kế 43 1.2.4. Đội ngũ kỹ thuật 50 1.2.5. Đội ngũ mỹ thuật 55 1.2.6. Đội ngũ kiểm tra chất lượng sản phẩm 59 1.3. QUY TRÌNH PHÁT TRIỂN GAME VÀ CÁC TÀI LIỆU LIÊN QUAN 64 1.3.1. Xây dựng khái niệm 64 1.3.2. Giai đoạn Tiền sản xuất (Preproduction – Proof of Concept) 69 1.3.3. Quá trình phát triển 75 CHƯƠNG 2 NHẬP MÔN LẬP TRÌNH WINDOWS VÀ DIRECTX 81 2.1. LẬP TRÌNH WINDOWS BẰNG C++ 82 2.1.1. Hệ thống thông điệp của Windows (Windows Messaging) 82 2.1.2. Đa nhiệm 83 2.1.3. Đa tiểu trình (multi-threading) 85 2.1.4. Xử lý sự kiện 87 2.2. TỔNG QUAN VỀ DIRECTX 88 2.3. CẤU TRÚC CHƯƠNG TRÌNH WINDOWS BẰNG C++ 90 2.3.1. Tạo một project Win32 91 2.3.2. Các tham số của WinMain 94 2.3.3. Khung hàm WinMain đầy đủ 95 2.4. VÒNG LẶP CHÍNH CỦA GAME (GAME LOOP) 98 2.5. KHỞI TẠO DIRECTX 101 2.5.1. Direct3D interface 103 2.5.2. Tạo đối tượng Direct3D và device 103 2.5.3. Game_Run 104 2.5.4. Game_End 105 2.5.5. Chạy trong chế độ toàn màn hình 106 2.5.6. Kiểm tra phím để thoát game khi ở chế độ fullscreen 107 2.6. Surface và Bitmaps 107 2.6.1. Bề mặt chính 108 2.6.2. Bề mặt phụ ngoài (offscreen surface) 109 2.6.3. Tạo surface 109 2.6.4. Vẽ lên Surface 109 2.6.5. Ví dụ Create_Surface 111 2.6.6. Tải ảnh lên từ ổ cứng 119 2.6.7. Chương trình Load_Bitmap 120 CHƯƠNG 3 TẠO CHUYỂN ĐỘNG 125 3.1. Cách vẽ một sprite chuyển động 126 3.1.1. Project Anim_Sprite 126 3.1.2. Cài đặt project 126 3.1.3. File source code 129 3.1.4. Đồ họa của Sprite 141 3.1.5. Diễn giải về sprite chuyển động 149 3.2. Vẽ Sprite Trong Suốt 154 3.2.1. Tạo Đối Tượng Sprite Handler 155 3.2.2. Bắt đầu Sprite Handler 155 3.2.3. Vẽ Sprite 156 3.2.4. Dừng Sprite Handler 157 3.2.5. Tải Sprite Image 157 3.2.6. Chương trình Trans_Sprite 160 3.2.7. Tạo Project Trans_Sprite 161 3.3. Vẽ Tiled Sprite 170 3.3.1. Hiểu về Tile 170 3.3.2. Chương trình Tiled_Sprite 171 CHƯƠNG 4 CÁC PHÉP BIẾN ĐỔI 177 4.1. Biến đổi tọa độ (Transform) là gì? 179 4.1.1. Flip 179 4.1.2. Tịnh tiến 180 4.2. Biến đổi từ hệ toạ độ thế giới (World) sang View Port trong Game 186 4.2.1. Xác định toạ độ của Object trong View Port 188 4.2.2. Code biến đổi từ world sang view port 190 CHƯƠNG 5 LẬP TRÌNH CHUỘT VÀ BÀN PHÍM 192 5.1. Lập trình bàn phím 193 5.1.1. Đối tượng DirectInput và DirectInput Device 193 5.1.2. Khởi tạo đối tượng bàn phím 195 5.1.3. Thiết lập Định dạng Dữ liệu 195 5.1.4. Thiết lập mức độ hợp tác 196 5.1.5. Giành kiểm soát thiết bị 196 5.1.6. Đọc Phím nhấn 197 5.2. Lập trình chuột 198 5.2.1. Khởi tạo chuột 199 5.2.2. Thiết lập Định dạng Dữ liệu 199 5.2.3. Thiết lập Mức độ Hợp tác 199 5.2.4. Giành kiểm soát thiết bị 200 5.2.5. Đọc chuột 200 5.3. Ví dụ minh hoạ Paddle Game 202 5.3.1. Framework code mới cho DirectInput 203 5.3.2. Mã nguồn Paddle Game 209 5.3.3. Giải thích Paddle Game 219 CHƯƠNG 6 LẬP TRÌNH ÂM THANH 221 6.1. Tổng quan DirectSound 222 6.1.1. Khởi tạo DirectSound 223 6.1.2. Tạo bộ nhớ đệm âm thanh 224 6.1.3. Nạp file định dạng wave 224 6.1.4. Chạy hiệu ứng âm thanh 225 6.1.5. Kiểm tra DirectSound 226 6.2. Xây dựng ứng dụng minh họa 226 6.2.1. Sao chép tái sử dụng mã nguồn 227 6.2.2. Sao chép file dsutil 228 6.2.3. Thêm những file copy vào project 229 6.2.4. Thêm liên kết tới thư viện DirextX 231 6.2.5. Tạo những file hỗ trợ cho DirectX Audio 233 6.2.6. Tinh chỉnh hệ thống 236 6.3. Chạy chương trình 244 CHƯƠNG 7 ĐẠI CƯƠNG XỬ LÝ VA CHẠM 245 7.1. Giới thiệu 246 7.1.1. Tại sao cần xử lý va chạm? 246 7.1.2. Vấn đề đối với thuật toán “ngây thơ” 246 7.2. Cài đặt thuật toán Swept AABB 249 7.3. Xử lý va chạm 255 7.3.1. Phản xạ 256 7.3.2. Đẩy 257 7.3.3. Trượt 258 7.4. Các vấn đề khác 259 7.4.1. Kiểm tra diện rộng (Broad-Phasing) 259 7.4.2. Giới hạn của thuật toán 262 CHƯƠNG 8 BÀI TOÁN PHÂN HOẠCH KHÔNG GIAN 264 8.1. Tại sao cần phải phân hoạch không gian? 265 8.2. Một số tiếp cận phân hoạch không gian trong game 2D 267 Phân chia theo nhóm: 267 Phân chia bằng grid 267 Cây nhị phân 268 Cây tứ phân 268 8.3. Cài đặt kỹ thuật Quad tree 269 8.3.1. Build Tree 270 8.3.2. Lưu Quadtree vào file 273 8.3.3. Load QuadTree vào game 275 8.3.4. Lấy danh sách những đối tượng trong màn hình 277 8.4. Tóm tắt 278 TÀI LIỆU THAM KHẢO 280