Mulai Belajar SDL

SDL2 adalah salah satu library yang bisa kita gunakan untuk membuat game dengan C/C++ atau bahasa pemrograman lain. SDL yang dibuat dengan bahasa C bisa digunakan dalam banyak bahasa pemrograman karena tidak mengharuskan adanya OOP. Saat ini, SDL2 yang merupakan pengembangan dari SDL 1.2 mempunyai banyak perbedaan dibandingkan dengan pendahulunya.

Untuk menggunakan SDL2, kalian bisa mendownload SDL2 sesuai versi system operasi kalian di https://www.libsdl.org/download-2.0.php. Dalam situs tersebut, ada beberapa pilihan yang bisa kalian download. Untuk membuat program dengan SDL, kalian bisa memilih file yang namanya berisi "dev" di dalamnya. Setelah kalian berhasil mengunduh file-nya, keluarkan isinya dengan winrar, 7zip, atau program sejenis!

Jika kalian menggunakan Ubuntu atau "sejenisnya", kalian bisa menginstall library-nya dengan "sudo apt-get install libsdl2-dev" di terminal. Untuk memastikan bahwa library-nya adalah SDL2 yang terbaru, sebelum menginstal, sebaiknya gunakan "sudo apt-get update".

Berikut ini adalah contoh source code bahasa C++ yang menggunakan SDL2.
#include <SDL2/SDL.h>
int main( int argc, char* args[] ){
    SDL_Window* window = NULL;
    SDL_Surface* screenSurface = NULL;

    if( SDL_Init( SDL_INIT_VIDEO ) < 0 ){
        printf( "Error: %s\n", SDL_GetError() );
    }else{
        window = SDL_CreateWindow( "SDLku", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN );
        if( window == NULL ){
            printf( "Error : %s", SDL_GetError() );
        }else{
            screenSurface = SDL_GetWindowSurface( window );
            SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) );
            SDL_UpdateWindowSurface( window );
            SDL_Delay( 5000 );
        }
    }

    SDL_DestroyWindow( window );
    SDL_Quit();

    return 0;
}
Seperti library lainnya, SDL menggunakan header sehingga kalian perlu menggunakan #include <SDL2/SDL.h> di awal kode program. Selain itu, minimal kalian perlu mengatur linker settings jika kalian menggunakan IDE. 
 
Jika kalian sudah mengubah linker settingnya, kalian bisa menggunakan function-function yang tersedia dalam library.

SDL_Init harus digunakan sebelum kita bisa menggunakan function SDL lainnya. Jika SDL init mengembalikan nilai 0 maka function-function pada library SDL siap digunakan. Jika kembaliannya bukan 0, maka program lebih baik ditutup karena ada error yang bisa kita lihat pada SDL_GetError.

Langkah pertama yang harus kita lakukan agar window terlihat adalah membuat window dengan SDL_CreateWindow(const char *title, int x, int y, int w, int h, uint32 flags). Parameter pertama dari SDL_CreateWindow adalah nama window yang terdapat di Title Bar. Dua parameter berikutnya adalah posisi dari windows yang bisa kalian isi dengan angka atau konstanta seperti SDL_WINDOWPOS_UNDEFINED. Parameter sebelum terakhir adalah lebar dan tinggi dari windows-nya. Kemudian, yang terakhir adalah flags untuk style dari windowsnya. Kalau kalian belum paham, kalian bisa membiarkannya tetap apa adanya.

Setelah window berhasil dibuat, kita perlu menggunakan SDL_GetWindowSurface() untuk mendapatkan permukaan window yang akan kita ubah warnanya dengan SDL_FillRect().  Function SDL_UpdateWindowSurface diperlukan untuk memperbaharui tampilan surface/ permukaan window dari program. Dalam function SDL_FillRect, kalian perlu menggunakan SDL_MapRGB untuk menentukan warna berdasarkan warna RGB. Agar program tidak segera menutup selama beberapa milidetik, gunakan SDL_Delay!

Singkatnya, function-function yang perlu kalian gunakan, yaitu :
  • SDL_Init => Mempersiapkan penggunaan library
  • SDL_GetError => Menampilkan error setelah menggunakan function library SDL
  • SDL_CreateWindow => Membuat dan mempersiapkan window.
  • SDL_GetWindowSurface => Mendapatkan permukaan window untuk digunakan dengan SDL.
  • SDL_FillRect => Mengubah warna permukaan window
  • SDL_MapRGB => Mendapatkan warna berdasarkan RGB yang bisa digunakan dalam function SDL lainnya.
  • SDL_UpdateWindowSurface => Memperbaharui permukaan window.
  • SDL_Delay => Menunda jalannya program selama beberapa milidetik sebelum lanjut ke statement berikutnya.
  • SDL_DestroyWindow => Mengakhiri penggunaan window dan membebaskan memori yang digunakan.
  • SDL_Quit => Mengakhiri penggunaan SDL
Cara Build atau Compile
Saat akan meng-compile kode program yang menyertakan library, kalian perlu mengatur lokasi header dan library-nya. Pengaturannya akan sesuai dengan IDE atau compiler yang kalian gunakan gunakan. Runtime library atau dll-nya perlu diletakkan di folder yang sama dengan project-nya supaya program yang kalian hasilkan bisa dijalankan.

Untuk pengguna linux, runtime library-nya seharusnya sudah diinstal dalam sistem saat kalian menginstal "development library-nya" dengan terminal. Jadi, pengguna linux tidak perlu menyertakan library apapun di folder program atau projectnya asalkan SDL sudah diinstal lewat terminal.

Jika kalian menggunakan Codeblock, mingw, atau compiler bawaan linux; pengaturan yang kalian perlu tambahkan adalah sebagai berikut :
  1. Untuk linux, gunakan : `sdl2-config --libs` -lSDL2
  2. Untuk windows, gunakan : -lmingw32 -lSDL2main -lSDL2
Kalau kalian menggunakan g++ untuk meng-compile kode program C++ di terminal, perintah lengkapnya adalah "g++ Nama_file.cpp `sdl2-config --libs` -lSDL2 -o Nama_program". Untuk pengguna linux, khususnya ubuntu, cara menjalankan program dari terminal kalian adalah dengan mengetik "./Nama_program". Nama_program bisa kalian ganti dengan nama program yang akan kalian jalankan.
Ingat! Untuk pengguna windows, kalian perlu meletakkan dll di folder project atau program kalian. Selain itu, kalian perlu menentukan letak folder yang berisi library dan header SDL di dalam Build option, atau tepatnya di tab Search directories, saat kalian menggunakan Code::Block. Untuk pengguna ubuntu dan code::block, cukup tambahkan option yang dibutuhkan di linker settings.
Jika kalian membuat program dengan File => New => Project => Empty project, atur build target-nya menjadi GUI application lewat menu "Project => Properties" supaya program tidak menampilkan console.
Untuk yang malas mengetik atau bingung dengan cara membuat projectnya, kalian bisa mengetik project yang berisi kode programnya di sini.