Game C++ SDL – Bài 13: Xử lý âm thanh cho game
Chào mừng các bạn đến với chủ đề học lập trình game c++ SDL.
Bài số 13. Chúng ta sẽ tìm hiểu về cách xử lý âm thanh trong game.
Đây là một trong những kỹ thuật cần thiết.
Âm thanh là không thể thiếu cho game. Và chúng ta cùng phân tích xem, âm thanh trong Game có những dạng nào.
I. LÝ THUYẾT CƠ BẢN.
Chúng ta cần thực hiện xử lý âm thanh cho những tình huống sau.
1. Âm thanh nền cho game
2. Âm thanh khi nhân vật chính bắn đạn
+ Bắn đạn loại 1 => âm thanh 1
+ Bắn đạn loại 2 => âm thanh 2
+ Các kiểu tấn công như, chém, đấm, đâm, …. => âm thanh 3
3. Âm thanh khi va chạm
4. Âm thanh khi xảy ra vụ nổ
5. Âm thanh khi giao chiến với boss
6. Âm thanh khi gặp tình huống nguy hiểm
7. Âm thanh của những loại quái vật trở ngại đặc biệt
8 Âm thanh khi ăn đồ hỗ trợ
9 Âm thanh khi chết
10 Âm thanh khi Game Over.
Và còn nhiều hơn nữa do chúng ta tự sáng tạo ra. Game càng phức tạp thì âm thanh càng đa dạng.
Và trong bài này tôi sẽ chia sẻ về việc xử lý âm thanh cho bắn đạn, và các vụ nổ. Còn các dạng khác, các bạn có thể làm tương tự.
II. XỬ LÝ ÂM THANH KHI BẮN ĐẠN VÀ VỤ NỔ.
1. Nguồn âm thanh.
Có rất nhiều tài nguyên file âm thanh mà các bạn có thể tìm kiếm trên mạng, trong đó có gói trả phí, có gói miễn phí.
Một lưu ý: Khi vào bất cứ các trang web tài nguyên nào, hãy đọc điều khoản và luật bản quyền,
lisence đầu tiên để xem phạm vi và quyền hạn áp dụng tài nguyên đó.
Mình giới thiệu một page sau: Free sound page
Các bạn có thể vào đó download các file audio cho game.
Page này: Cho phép các bạn dùng file audio ở bất kỳ sản phẩm nào, video youtube hay là game là sản phẩm.
Chỉ không cho phép:
+ Lấy file của họ rồi mang đi bán
+ Chỉnh sửa file của họ, ghép nối lại rồi mang đi bán
+ Ko copy đặt trên blog hay web của cá nhân.
Các bạn download các file có định dạng *wav.
Ok. Sau khi đã copy file audio về, các bạn copy file audio vào folder chứa source code.
Nơi mà chứa các hình ảnh game như ở các bài trước đã chia sẻ.
2. Các step thực hiện.
Step1. Khai báo các biến global quản lý âm thanh bên SDLCommonFunction. Nhớ include <SDL_mixer.h> trước đó.
Step2. Khởi tạo chế độ audio trong hàm Init file main.cpp. Sau đó load các file audio
+ g_name_ audio_bullet_main1 là 1 mảng ký tự chứa tên của file audio.
Các bạn có thể truyền trực tiếp “laser.wav” vào cũng được, mà ko cần dùng biến lưu trữ.
+ Kiểm tra việc load có thành công hay ko, nếu không thành công thì stop chương trình.
Step3.
+ Xử lý âm thanh đạn bắn main object
Tạo thêm một đối số cho hàm :
MainObject::HandleInputAction(SDL_Event events, Mix_Chunk* bullet_sound[3])
Truyền g_sound_bullet vào cho hàm HandleInputAction.
Vì việc xử lý đạn bắn của mainObject nằm trong hàm này.
Các bạn sẽ thấy, mỗi khi ấn chuột, thì một viên đạn được bắn ra. Nên lập tức gọi hàm xử lý âm thanh ngay tại thời điểm đó.
+ Xử lý âm thanh cho vụ nổ.
Đặt ngay sau việc check va chạm và hiệu ứng vụ nổ hình ảnh được xảy ra.
Trên đây là xử lý vụ nổ khi va chạm chữa threats và butllet của MainObject.
Tương tự như vậy các bạn cũng sẽ xử lý được audio cho va chạm giữa mainobject và threats.
II. Thực Hành
Và để có thể dễ dàng làm và hiểu chi tiết hơn. Hãy thực hành cùng tôi với video sau
_______________________________________________________________
Pass Pham
anh ơi em dùng vs2013 làm y hệt như anh lúc build nó hiện up – to – date thì phải làm như nào hả anh cho em biết với ạ
em vao group face post lỗi lên xem nào