Senin, 17 Agustus 2015

Suara Efek, Suara Random dan Suara Background Game Engine

Memainkan / play suara efek, suara secara random dan suara latar belakang di game engine


Selamat pagi semuanya, pagi ini adalah pagi yang spesial...karena bertepatan dengan HUT-RI yang ke 70. Dan untuk ikut memeriahkan acara HUT-RI kali ini ogut akan menghadiri undangan acara demo yang diadakan di salah satu sport klub, dan sebelum pergi ke acara tersebut nge-blog dulu.

Di artikel kali ini ogut akan membahas cara untuk memainkan suara efek, suara random dan suara latar belakang di game engine yang ogut buat sendiri. Sebuah game tidak akan lengkap jika tidak diisi dengan suara, untuk memainkan suara di game engine ini rekan-rekan tidak perlu kode program  yang panjang dan sulit, cukup tambahkan satu atau dua baris kode program di MainProgram.cpp maka suara akan terdengar.


Suara Efek
Suara-suara efek akan berbunyi jika Anda meletakkan sejumlah file Wave di dalam folder “Wave/Effect/”. File-file yang diletakkan pada folder ini harus mempunyai nama yang spesifik seperti tabel di bawah.


Jika nama-nama file yang Anda tempatkan pada folder tidak sesuai dengan tabel di atas maka program akan tetap berjalan tetapi efek suara yang diharapkan tidak akan terdengar.

Anda dapat mengubah folder tempat suara efek berada, ogut menyediakan fungsi geSetPathSoundEffect dan fungsi ini harus diletakkan sebelum proses pengulangan while.

...
...
...
/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP,
HINSTANCE HPrevinstanceP,
LPSTR LpcmdLineP, int NShowcmdP)
{
...
...
...

GameObject.geSetPathSoundEffect("WAVE/Effect2/");

GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
    {
...
...
...
}

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Suara Random
Suara random atau suara acak adalah suara-suara yang akan terdengar secara acak dengan jeda waktu tertentu.

Ada sepuluh buah suara acak yang ogut sediakan untuk membuat game ini lebih hidup, suara acak tersebut dapat rekan-rekan aktifkan dengan fungsi gePlayRandomSoundBG.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP, 
HINSTANCE HPrevinstanceP, 
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();

GameObject.gePlayRandomSoundBG();

GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
    {
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game, 
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

/////////////////////////////
//Tokoh Utama / Jack Fighter
/////////////////////////////
GameObject.geDisplayJackFighter();

/////////////////////////////
GameOpenGL.OpenGLSwapBuffer(); 
GameOpenGL.BreakProgram(); 

GameObject.geTimerGEEmas7(GAME_DELAY); 

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Suara acak ini dihasilkan oleh sepuluh file Wave yang bernama 0.wav hingga 9.wav.

Folder untuk suara acak ini dapat Anda ganti dengan fungsi di bawah.
...
...
...
/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP, 
HINSTANCE HPrevinstanceP, 
LPSTR LpcmdLineP, int NShowcmdP)
{
...
...
...
GameObject.geSetPathRandomSoundBG("WAVE/Random2/");

GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
    {
...
...
...

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Suara Musik
Game engine GEEmas7 dilengkapi dengan fungsi yang bisa dipakai untuk memainkan musik secara berulang-ulang hingga game selesai.

#include"My7OpenGL.h"
#include"GEEmas7.h"

HWND MainHWND = NULL;

My7OpenGL GameOpenGL;
GEEmas7 GameObject;

/////////////////////////////
//Fungsi utama
/////////////////////////////
int WINAPI WinMain(HINSTANCE HInstanceP, 
HINSTANCE HPrevinstanceP, 
LPSTR LpcmdLineP, int NShowcmdP)
{
GameOpenGL.SetHInstance(HInstanceP);
if (!GameOpenGL.CreateOpenGLWindow(MainHWND))
return 0;

if (!GameObject.geInisialisasi(MainHWND))
{
GameOpenGL.CloseOpenGLWindow(MainHWND);
return 0;
}

GameOpenGL.DisplayLoading();

GameObject.geLoadAndPlaySoundBG("wave/BG/BG.wav"); 

GameObject.geSetGameLoop();

while (GameOpenGL.OpenGLMainLoop)
    {
GameOpenGL.MessageHandle();

/////////////////////////////
//Render objek game, 
//di bawah ini
/////////////////////////////

GameObject.geDisplayBG();

/////////////////////////////
//Tokoh Utama / Jack Fighter
/////////////////////////////
GameObject.geDisplayJackFighter();


/////////////////////////////

GameOpenGL.OpenGLSwapBuffer(); 
GameOpenGL.BreakProgram(); 

GameObject.geTimerGEEmas7(GAME_DELAY); 

GameOpenGL.CloseOpenGLWindow(MainHWND);

return 0;
}

Fungsi geLoadAndPlaySoundBG dapat Anda pakai untuk memainkan musik dari sebuah file Wave dan fungsi ini harus Anda tempatkan sebelum proses pengulangan while pada program game.

Tuntas sudah pembahasan tentang suara di game engine, sampai di sini dulu ya rekan-rekan, tidak sulit kan, kode programnya singkat sekali. Di kesempatan lain akan ogut sambung lagi, di artikel berikutnya ogut akan menjelaskan cara untuk menampilkan musuh dan bonus.

Salam Game Engine


Heriady
heriady.yoh@gmail.com




Artikel terkait

Panduan Lengkap Membuat Game Perang Shoot Them Up

Panduan Lengkap Membuat Game Perang Dengan Game Engine